diff options
Diffstat (limited to 'ChangeLog.pre-git')
-rw-r--r-- | ChangeLog.pre-git | 6957 |
1 files changed, 6957 insertions, 0 deletions
diff --git a/ChangeLog.pre-git b/ChangeLog.pre-git new file mode 100644 index 00000000..ee50695d --- /dev/null +++ b/ChangeLog.pre-git @@ -0,0 +1,6957 @@ +2009-04-13 Dan Winship <danw@gnome.org> + + * configure.in: 2.26.1 + + * NEWS: update + +2009-04-13 Dan Winship <danw@gnome.org> + + * libsoup/soup-proxy-resolver-gnome.c (get_proxy_async): fix + use of async context here + +2009-04-13 Dan Winship <danw@gnome.org> + + Bug 578809 – warnings in soup_address_equal_by_ip + + * libsoup/soup-session.c (get_host_for_message): don't try to look + up unresolved addresses in the hosts hash; just return NULL. The + "cancel other messages for the bad host" code in connect_result() + will loop over the whole queue, including messages with unresolved + addresses. + +2009-04-13 Dan Winship <danw@gnome.org> + + Bug 578746 – http_proxy env var set to "http://:80" in session + despite proxy mode "none" + + * libsoup/soup-proxy-resolver-gnome.c (update_proxy_settings): + Don't set anything if proxy_mode is NONE, and properly ignore the + proxy host if it's empty. + +2009-04-11 Dan Winship <danw@gnome.org> + + Bug 578645 – crash in Rhythmbox Music Player + + * libsoup/soup-proxy-resolver-gnome.c + (soup_proxy_resolver_gnome_init): unlock id.lock before freeing + it. (Fixes the case where SoupProxyResolverGNOME is first + initialized from a thread other than the main thread, while the + default main loop is running.) + +2009-04-08 Dan Winship <danw@gnome.org> + + * configure.in: 2.26.0.9, aka "I can't believe it's not 2.26.1!", + a pre-release to give the proxy resolver fix a bit of extra + testing before next week. + + * NEWS: Update + +2009-04-08 Dan Winship <danw@gnome.org> + + Re-fix GNOME proxy resolution (qv bug 571527) + + * libsoup/soup-proxy-resolver-gnome.c: New and improved GNOME + proxy resolver; gets information out of GConf in a thread-safe + manner, and then passes it on to libproxy via environment + variables, so that libproxy won't try to access GConf itself, but + we still can use it for PAC, WPAD, and ignore_hosts. + + * libsoup/soup-proxy-resolver-gconf.c: + * libsoup/soup-proxy-resolver-libproxy.c: gone now + + * libsoup/soup-gnome-features.c: update for the fact that + SoupProxyResolverGNOME is actually a real type now, not + compile-time-defined alias + +2009-04-08 Dan Winship <danw@gnome.org> + + Fix ISO 8601 parsing to accept either "." or "," + + * libsoup/soup-date.c (parse_iso8601_date): accept either "." or + "," as decimal separator, per the spec. qv glib bug 578369. + +2009-04-05 Dan Winship <danw@gnome.org> + + Don't allow CR/LF in header names or values + + * libsoup/soup-message-headers.c (soup_message_headers_append): + Don't let the caller create a header with whitespace or ":" in its + name, or with CR or LF in its value, since that would result in us + generating syntactically invalid headers. + +2009-04-03 Dan Winship <danw@gnome.org> + + Bug 577386 – Fails to handle HTTPS redirect from a certain site. + + * libsoup/soup-gnutls.c (soup_gnutls_read): Treat abnormal + EOFs as though they were normal, rather than as errors. Shrug. + + Reported by Diego Escalante Urrelo. + +2009-04-03 Dan Winship <danw@gnome.org> + + Bug 577360 – handle cookies with same name but different path + + * libsoup/soup-cookie-jar.c (soup_cookie_jar_add_cookie): check + both name and path when matching cookies; "foo=one; path=/bar" + should not replace "foo=two; path=/". They are separate cookies. + + Reported by Alexander V. Butenko. + +2009-04-02 Dan Winship <danw@gnome.org> + + Bug 577630 – libsoup should ignore broken Content-Type headers + + * libsoup/soup-message-headers.c (content_type_setter): Ignore + Content-Type if it's not at least minimally syntactically correct. + (soup_message_headers_get_content_type): Document that. + + * tests/header-parsing.c (do_content_type_tests): test it. + +2009-04-02 Dan Winship <danw@gnome.org> + + Bug 577728 – soup_header_g_string_append_param should handle NULL values + + * libsoup/soup-headers.c (soup_header_g_string_append_param): + allow @value to be %NULL. + + * tests/header-parsing.c (do_append_param_tests): test + soup_header_g_string_append_param() + +2009-04-02 Dan Winship <danw@gnome.org> + + Bug 576760 – soup_message_headers_get_content_type returns bad headers + + * libsoup/soup-message-headers.c (soup_message_headers_get_one) + (soup_message_headers_get_list): New replacements for + soup_message_headers_get(), indicating explicitly whether the + caller expects the header to be a list or not; for non-list-type + headers, if there's more than one, the second one should be + ignored rather than concatenated to the first. + (soup_message_headers_get): deprecate this. + + * libsoup/*.c: + * tests/*.c: Update to use soup_message_headers_get_one() or + _get_list() as appropriate. + + * tests/header-parsing.c (do_content_type_tests): Add some tests + of Content-Type parsing/setting, including making sure that + duplicate Content-Type headers are ignored. + + * docs/reference/libsoup-2.4-sections.txt: update + +2009-03-27 Dan Winship <danw@gnome.org> + + Bug 576583 – Tests fail if "localhost" resolves to ::1 + + * tests/*.c: Use "127.0.0.1" in URIs rather than "localhost", + since the default SoupServer config only listen on IPv4 (qv bug + 522519), and tests/httpd.conf.in only configures apache to listen + on IPv4, and we don't handle multiple IP addresses (qv bug 526321) + but the machine might be configured to return "::1" rather than + "127.0.0.1" first for "localhost". Patch from Andreas Rottmann. + +2009-03-27 Dan Winship <danw@gnome.org> + + * libsoup/soup-cookie.c (soup_cookie_new): Fix docs to not claim + that the cookie domain can be %NULL. Add some g_return_if_fail()s. + +2009-03-27 Dan Winship <danw@gnome.org> + + * docs/reference/client-howto.xml: clarify that SoupSessionAsync + is not thread-safe, and that setting a non-default GMainContext on + a non-threadsafe object means you can only use that object from + that GMainContext's thread. + +2009-03-26 Milan Crha <mcrha@redhat.com> + + Bug 574957 - soup-session-sync doesn't unlock mutex on proxy error + + * libsoup/soup-session-sync.c: (wait_for_connection): + Unlock private lock also on proxy error. + +2009-03-24 Dan Winship <danw@gnome.org> + + Bug 571283 - Allow LF LF instead of CRLF CRLF as header/body separator + + * libsoup/soup-message-io.c (read_metadata): Change how this + works; instead of taking a boundary string, just always pass "\n" + as the boundary to soup_socket_read_until(), but call it multiple + times if the caller wants us to read until a blank line. + (io_read): update to deal with the fact that the headers might be + terminated by LF LF rather than CRLF CRLF. + +2009-03-23 Dan Winship <danw@gnome.org> + + Bug 566530 - Handle (illegal) unencoded spaces in URIs + + * libsoup/soup-uri.c (uri_normalized_copy): optionally fix up + parts with unencoded spaces in them. + (soup_uri_new_with_base): tell uri_normalized_copy() to fix up + spaces in the path and query components + + * tests/uri-parsing.c (abs_tests): test parsing and unparsing a + URI with an unencoded space in it. + + * tests/redirect-test.c (tests, server_callback): add a test of + redirecting to a URI with an unencoded space in it. + +2009-03-15 Dan Winship <danw@gnome.org> + + * configure.in: 2.26.0 + + * NEWS: Update + +2009-03-14 Xan Lopez <xan@gnome.org> + + Add G_{BEGIN,END}_DECLS guards to public headers. + + * libsoup/soup-auth.h: + * libsoup/soup-cookie-jar-sqlite.h: + * libsoup/soup-cookie-jar-text.h: + * libsoup/soup-proxy-resolver.h: + +2009-03-11 Dan Winship <danw@gnome.org> + + * libsoup/soup-session.c (soup_session_cancel_message): add more + detail to the doc comment + + * libsoup/soup-message.c (SoupMessage): Note in the doc comment + that reason phrases are not very useful, and should not be + presented to the user. + + * libsoup/soup-status.c: add a comment explaining why reason + phrases aren't localized. Also some misc doc fixes. + (soup_status_get_phrase): Note in the doc comment that you + shouldn't present reason phrases to the user. + +2009-03-09 Dan Winship <danw@gnome.org> + + Bug 571527 – gvfsd-http crashed with SIGSEGV in + g_hash_table_lookup(). + + As currently written, libproxy's gnome plugin causes intermittent + gvfsd-http crashes, and I didn't have time to come up with either + a fix or a workaround. So for 2.26.0 we will fall back to using + the GConf-based proxy resolver. Hopefully to be fixed for 2.26.1. + + * configure.in: require both gconf and libproxy if building + --with-gnome + + * libsoup/soup-proxy-resolver-gconf.c: bring this back. + + * libsoup/soup-gnome-features.c + (soup_proxy_resolver_gnome_get_type): use gconf instead of + libproxy + + * libsoup/Makefile.am: updates + +2009-03-08 Dan Winship <danw@gnome.org> + + * libsoup/*.c: gtk-doc updates. In particular, document a bunch of + convenience #defines, and add "Since" tags where appropriate. + +2009-03-06 Dan Winship <danw@gnome.org> + + * libsoup/soup-session-async.c (run_queue): Process messages in + the CONNECTING iostate before messages in the QUEUED iostate. + Otherwise, if a bunch of messages are queued all at once, and the + server doesn't support persistent connections, some messages can + get stranded in the queue. Fixes #574365 (reported by Xan Lopez) + and removes a five-year-old FIXME... + +2009-02-20 Gustavo Noronha Silva <gns@gnome.org> + + * libsoup/soup-message-headers.c + (soup_message_headers_get_content_type): now returns NULL if there + is no Content-Type header; fix documentation to account for this + change and to actually be correct about how the Content-Type is + returned. + +2009-02-19 Dan Winship <danw@gnome.org> + + Bug 572153 – SoupServer doesn't support SOUP_ENCODING_EOF + + * libsoup/soup-message-io.c (io_write): Various fixes to make + SOUP_ENCODING_EOF work correctly when sending response + bodies. (Previously, the code assumed that SoupServer responses + would always be chunked or Content-Length-encoded.) + + * libsoup/soup-message-client-io.c (get_request_headers): when + changing a request body from SOUP_ENCODING_NONE to + SOUP_ENCODING_CONTENT_LENGTH, return the new encoding value to + soup-message-io, not the old one. + + * libsoup/soup-message.c (set_property): when setting + priv->server_side to TRUE, set the default encoding on the + response headers to CONTENT_LENGTH. (Moved from SoupServer.) + (soup_message_cleanup_response): If priv->server_side is TRUE, + re-fix the response header encoding after clearing the headers. + Otherwise the response headers revert to SOUP_ENCODING_EOF after + sending a "100 Continue". + (soup_message_is_keepalive): reorganize a little, fix a bug in the + HTTP/1.0 case. + + * libsoup/soup-server.c (start_request): remove request encoding + override from here. + + * tests/streaming-test.c: new test of SoupServer response + streaming, testing chunked, content-length, and eof-terminated + responses + +2009-02-19 Dan Winship <danw@gnome.org> + + * libsoup/soup-socket.c (soup_socket_read_until): explain why @len + normally needs to be at least @boundary_len+1. Suggested by + Benjamin Otte. + (soup_socket_class_init): add longer gtk-docs to the non-blocking + property, to explain the way non-blocking I/O works in SoupSocket. + +2009-02-19 Xan Lopez <xan@gnome.org> + + * libsoup/soup-cookie-jar-sqlite.c: + (callback): + (try_create_table): + (exec_query_with_try_create_table): + (load): + (changed): + + Fix a series of issues that prevented SoupCookieJarSQLite from working: + + - Try to create cookies table on errors. The table was never created before. + - Store max_age in a gulong, not int. + - Parse correctly boolean values from query. It's 0/1, not FALSE/TRUE. + - The host is stored as host in the table, not as domain. + + #572409 + +2009-02-16 Dan Winship <danw@gnome.org> + + * configure.in: 2.25.91 + + * NEWS: update + +2009-02-15 Dan Winship <danw@gnome.org> + + * docs/reference/client-howto.xml: Updates: Mention + SoupSessionFeature (and link to SoupLogger, SoupCookieJar, and + SoupProxyResolverGNOME specifically). Mention forms and XML-RPC + support. Mention header-parsing methods. Give a concrete example + of connecting to SoupMessage signals. Document the (minimal) + thread-safety guarantees + + * docs/reference/build-howto.xml: basic notes on pkg-config and + #include usage. + +2009-02-06 Dan Winship <danw@gnome.org> + + * libsoup/soup-auth-manager.c (authenticate_auth): Fix crash when + getting a 407 when using SoupProxyResolverGNOME (or when not using + any proxy). Launchpad bug #326099. (Note that this doesn't + actually make proxy-auth-with-SoupProxyResolverGNOME *work*, it + just makes it not crash.) + +2009-02-02 Dan Winship <danw@gnome.org> + + * configure.in: 2.25.5 + + * NEWS: update + +2009-02-02 Dan Winship <danw@gnome.org> + + * libsoup/soup-proxy-resolver-gconf.h: + * libsoup/soup-proxy-resolver-gconf.c: Remove this, as it was + incomplete, and libproxy is now officially a dependency of GNOME. + + * libsoup/Makefile.am: + * libsoup/soup-gnome-features.c: remove gconf-vs-libproxy ifdefs + + * configure.in: Remove GConf checks, require libproxy if building + libsoup-gnome. + +2009-01-29 Dan Winship <danw@gnome.org> + + * libsoup/soup-message-body.c (soup_message_body_wrote_chunk): Fix + this; previously it would discard the entire message body after + writing a SOUP_MEMORY_TEMPORARY chunk. Part of WebKit bug 18343. + + * libsoup/soup-message-io.c (io_write): use + io->write_chunk->length *before* freeing io->write_chunk. + + * tests/chunk-test.c (do_temporary_test): new test to make sure + that TEMPORARY buffers are handled properly. + +2009-01-21 Dan Winship <danw@gnome.org> + + * libsoup/soup-session-feature.h: remove the dummy typedef for + struct SoupSessionFeature that was needed because we weren't + scanning soup-types.h. Fixes the build with non-GNU compilers. + + * libsoup/soup-session-feature.c: document + SoupSessionFeatureInterface + + * docs/reference/Makefile.am (IGNORE_HFILES): oops, don't ignore + soup-types.h + + * docs/reference/libsoup-2.4-docs.sgml: + * docs/reference/libsoup-2.4-sections.txt: Split + SoupSessionFeature into its own file. + +2009-01-12 Dan Winship <danw@gnome.org> + + * libsoup/soup-cookie-jar.c (request_started): Don't pass NULL to + soup_message_headers_replace(), call soup_message_headers_remove() + if there are no cookies. Likely fix for webkit bug #23240. + + * libsoup/soup-message-headers.c (soup_message_headers_append): + g_return_if_fail (value != NULL) + +2009-01-05 Dan Winship <danw@gnome.org> + + 2.25.4 + + * NEWS: update + +2008-12-23 Dan Winship <danw@gnome.org> + + * configure.in: belated post-release bump to 2.25.4 + + * libsoup/soup-session.c (soup_session_get_features) + (soup_session_get_feature): add these to query session features. + #565392. + +2008-12-23 Dan Winship <danw@gnome.org> + + * configure.in: add some more warning CFLAGS, inspired by Benjamin + Otte's blog post, although none of them picked out any actual + bugs. Annoyingly, the most interesting warnings came from + -Wwrite-strings and -Wshadow, both of which I decided against + keeping, because they had too many false positives. + + * libsoup/soup-cookie-jar.c (soup_cookie_jar_get_cookies): rename + a variable to avoid shadowing. + + * libsoup/soup-message-headers.c + (soup_message_headers_get_ranges): move a variable declaration to + avoid a possibly-confusing shadowing. + + * tests/forms-test.c: + * tests/header-parsing.c: + * tests/range-test.c: + * tests/test-utils.c: constify some "char *"s that should have + already been const. + + * tests/get.c (find_hrefs): rename an arg whose name shadowed a + global, to avoid possible future confusion + (get_url): Likewise with a functional-internal shadowing. + +2008-12-15 Dan Winship <danw@gnome.org> + + * configure.in: 2.25.3 + + * NEWS: update + +2008-12-09 Dan Winship <danw@gnome.org> + + * libsoup/soup-uri.c (soup_uri_new): Explicitly document the fact + that you have to call soup_uri_set_path() when using + soup_uri_new(NULL), since path is required to be non-%NULL. + + * libsoup/soup-connection.c (connect_message): initialize + uri->path + + * libsoup/soup-cookie.c (soup_cookie_applies_to_uri): + g_return_val_if_fail() rather than crashing if uri->path is %NULL. + Also, fix the cookie/uri path comparison to not potentially read + off the end of uri->path. #562191, Mark Lee. + +2008-12-04 Dan Winship <danw@gnome.org> + + * libsoup/soup-form.c (soup_form_decode): Correctly handle forms + that have URI-encoded parameter names. #563302, Evan Nemerson. + + * tests/forms-test.c: test that + +2008-12-03 Dan Winship <danw@gnome.org> + + * libsoup/soup-proxy-resolver-gconf.c (finalize): disconnect from + gconf notifications. Fixes a crash, #563145. + +2008-12-01 Dan Winship <danw@gnome.org> + + * configure.in: 2.25.2 + + * NEWS: update + +2008-11-28 Dan Winship <danw@gnome.org> + + * libsoup/soup-auth-manager.c (auth_type_compare_func): Fix this + so we choose the *strongest* auth type first, rather than the + weakest. Doh. #562339, Pontus Oldberg. + + * libsoup/soup-server.c (soup_server_add_auth_domain): use + g_slist_append() rather than prepend(), so auth headers get added + in the same order as the SoupAuthDomains were. + + * tests/auth-test.c (do_select_auth_test): add a test of selecting + between Basic and Digest auth + +2008-11-28 Dan Winship <danw@gnome.org> + + * libsoup/Makefile.am (libsoupgnomeincludedir): make this + $(includedir)/libsoup-gnome-2.4/libsoup rather than being the same + as $(libsoupincludedir). Makes it easier to split into two + packages. + +2008-11-28 Dan Winship <danw@gnome.org> + + * docs/reference/client-howto.xml: fix method name in example. + #562411, Andreas Bruse. + +2008-11-24 Dan Winship <danw@gnome.org> + + * libsoup/soup-logger.c: clarify exactly when stuff gets logged + (and in particular, that SoupSession::authenticate gets emitted + before the response it is authenticating gets logged). + +2008-11-06 Dan Winship <danw@gnome.org> + + * libsoup/Makefile.am (libsoup_gnome_2_4_la_LIBADD): fix linking + with --as-needed. #559342, pointed out by Götz Waschk + +2008-11-04 Dan Winship <danw@gnome.org> + + * configure.in: 2.25.1 + + * NEWS: update + +2008-11-04 Dan Winship <danw@gnome.org> + + * libsoup/soup-address.c (soup_address_is_resolved): + * libsoup/soup-cookie.c (soup_cookie_copy): + * libsoup/soup-cookie-jar.c (soup_cookie_jar_class_init): + * libsoup/soup-message-headers.c (SoupMessageHeadersType): + * libsoup/soup-proxy-resolver.c + (soup_proxy_resolver_get_proxy_async) + (soup_proxy_resolver_get_proxy_sync): + * libsoup/soup-status.c (soup_status_proxyify): misc doc fixes + + * libsoup/soup-cookie-jar-text.h: remove a "deprecated" API that + was never actually released + + * libsoup/soup.h: include soup-proxy-resolver.h + + * docs/reference/Makefile.am (SCAN_OPTIONS): set + --deprecated-guards correctly + (IGNORE_HFILES): ignore some more internal files + (GTKDOC_LIBS): link against libsoup-gnome, not libsoup + + * docs/reference/libsoup-2.4-docs.sgml: + * docs/reference/libsoup-2.4.types: + * docs/reference/libsoup-2.4-sections.txt: add new stuff + +2008-11-04 Dan Winship <danw@gnome.org> + + * libsoup/soup-cookie-jar-text.c: implementation of SoupCookieJar + that persists to a text file in the old Mozilla cookies.txt + format. Written by Xan Lopez and myself. + + * libsoup/soup-cookie-jar-sqlite.c: implementation of + SoupCookieJar that persists to an sqlite database in the new + Mozilla cookies.sqlite format. (Part of libsoup-gnome.) Written by + Diego Escalante Urrelo, based on soup-cookie-jar-text.c. + + * libsoup/soup-cookie-jar.c: add various functionality needed by + the two new subclasses. (Mostly written by Xan.) Does not break + API/ABI compat with 2.24. + + * libsoup/soup-cookie.c (soup_cookie_get_type): register + SoupCookie as a boxed type. + (domain_matches): fix a bug here that meant "foo.com" couldn't set + a cookie for domain=.foo.com + (soup_cookie_applies_to_uri): fix path checking + + * configure.in: if building --with-gnome, require sqlite3 + +2008-11-03 Dan Winship <danw@gnome.org> + + * libsoup/soup-session-sync.c (process_queue_item): don't remove + the item from the queue here; it should already have happened in + all circumstances. Possible fix for #559052. + + * libsoup/soup-session.c (cancel_message): don't remove the item + from the queue here; the call to soup_message_finished() will do + that. + + * libsoup/soup-message-queue.c (soup_message_queue_remove): This + should only be called once, so g_return_if_fail (!item->removed) + + * tests/test-utils.c (test_init): install a new default g_log + handler that increments the error count when it's called so that a + test won't pass if it triggers a g_warning() or + g_return_if_fail(). + +2008-11-03 Dan Winship <danw@gnome.org> + + * tests/Makefile.am (get_LDADD): fix srcdir/builddir mixup. + +2008-11-03 Dan Winship <danw@gnome.org> + + * libsoup/soup-message-headers.c (set_content_foo): don't leak the + header string + + * libsoup/soup-multipart.c (generate_boundary): avoid a (harmless) + valgrind warning + + * libsoup/soup-proxy-resolver-static.c (get_proxy_sync): don't + leak the address on error + + * libsoup/soup-session-sync.c (wait_for_connection): don't leak + proxy_addr + + * tests/misc-test.c: don't leak the SoupMessage signal ids + + * tests/range-test.c (main): don't leak base_uri + + * tests/libsoup.supp: update this using lots and lots of wildcards + +2008-11-03 Dan Winship <danw@gnome.org> + + * libsoup/soup-session.c (message_finished): Fix the signal + handler disconnection here: for "finished" we were passing the + wrong user_data to g_signal_handlers_disconnect_by_func(), and for + "got_body" it turns out you can't use _disconnect_by_func() when + there's a metamarshal, making it incompatible + withsoup_message_add_header_handler(). Fixes a crash in + evolution-exchange, #559054. + + * tests/misc-test.c (do_msg_reuse_test): Ensure that SoupSession + and its features disconnect all of their signals from a message + when they're done with it. + +2008-10-31 Dan Winship <danw@gnome.org> + + Add libsoup-gnome, for new features that depend on GNOME + libraries. + + * configure.in: Check for libproxy and/or gconf, accept + --without-gnome option, output libsoup-gnome-2.4.pc + + * libsoup-gnome-2.4.pc: pc file for libsoup with GNOME support + + * libsoup/Makefile.am: build libsoup-gnome.la if so configured + + * libsoup/soup-gnome.h: base header for libsoup-gnome + + * libsoup/soup-proxy-resolver-libproxy.c: An implementation of + SoupProxyResolver that uses libproxy. + + * libsoup/soup-proxy-resolver-gconf.c: An implementation of + SoupProxyResolver that uses the proxy keys in GConf. Does not + completely handle ignore_hosts; this is currently just used as a + fallback if libproxy is not available. + + * libsoup/soup-gnome-features.c: provides + SOUP_TYPE_PROXY_RESOLVER_GNOME (abstracting over + SoupProxyResolverGConf and SoupProxyResolverLibproxy) and + SOUP_TYPE_GNOME_FEATURES_2_26, which adds "all GNOME-specific + features in libsoup 2.26", which is currently just the proxy + resolver. + + * libsoup/soup-session-async.c (resolved_proxy_addr): set + item->resolved_proxy_addr + (run_queue): resolve the proxy if !item->resolved_proxy_addr, not + if !item->proxy_addr, since the proxy addr might resolve to NULL. + + * tests/Makefile.am (get_LDADD): + * tests/get.c: If we built libsoup-gnome, use it in "get" for + automatic proxy support + +2008-10-31 Dan Winship <danw@gnome.org> + + * libsoup-2.4.pc.in: rename from libsoup.pc.in; the attempt to + keep the source tree API-version-generic wasn't really working, + and we're probably not ever going to change the API version again + anyway. + + * Makefile.am (pkgconfig_DATA): install the .pc file the normal + way rather than using an install-data-local rule to rename the .pc + file as we install it + + * libsoup/Makefile.am (libsoupincludedir): + * tests/Makefile.am (LIBS): + * docs/reference/Makefile.am (GTKDOC_LIBS): Say "2.4" everywhere, + instead of 2.4 in some places and $(SOUP_API_VERSION) in others. + + * configure.in: updates for .pc renaming. Also, use + AS_HELP_STRING() in AC_ARG_ENABLE() and AC_ARG_WITH() rules + +2008-10-31 Dan Winship <danw@gnome.org> + + * libsoup/soup-proxy-resolver.c: new abstract base class for a + SoupSessionFeature that determines what proxy to use for a given + URI. + + * libsoup/soup-proxy-resolver-static.c: a SoupProxyResolver that + always returns the same value. + + * libsoup/soup-session.c (set_property, get_property): implement + the SOUP_SESSION_PROXY_URI property by creating/destroying a + SoupProxyResolverStatic as needed. + (soup_session_get_connection): Use the proxy address passed by the + caller rather than priv->proxy_uri. + + * libsoup/soup-session-async.c (run_queue): if the session has a + proxy resolver, use it, and pass the resolved proxy to + soup_session_get_connection(). + (request_restarted): clear the previously-resolved proxy address + when restarting the message + + * libsoup/soup-session-sync.c (wait_for_connection): if the + session has a proxy resolver, use it, and pass the resolved proxy + to soup_session_get_connection(). + + * libsoup/soup-message-queue.h (SoupMessageQueueItem): add + proxy-address-resolving fields + + * libsoup/soup-status.c (soup_status_proxify): moved from + soup-connection; turn SOUP_STATUS_CANT_RESOLVE into + SOUP_STATUS_CANT_RESOLVE_PROXY, and SOUP_STATUS_CANT_CONNECT into + SOUP_STATUS_CANT_CONNECT_PROXY (and pass all other statuses + through unchanged) + +2008-10-30 Dan Winship <danw@gnome.org> + + * tests/simple-httpd.c: do directory listings. (wrote this a long + time ago, it just never made it into svn) + +2008-10-27 Dan Winship <danw@gnome.org> + + * libsoup/soup-cookie.c (soup_cookie_free): free the expires date, + if set + + * libsoup/soup-auth-domain-basic.h: + * libsoup/soup-auth-domain-digest.h: + * libsoup/soup-auth-domain.h: + * libsoup/soup-cookie-jar.h: + * libsoup/soup-logger.h: + * libsoup/soup-multipart.h: add G_BEGIN/END_DECLS + + * libsoup/soup-date.c: add some g_return_if_fails + + Patches from and inspired by Xan Lopez, #522125 + +2008-10-22 Dan Winship <danw@gnome.org> + + * configure.in: + * tests/Makefile.am: fix up some of the regression test + configuration stuff, and print warnings when some tests aren't run + do to missing dependencies + +2008-10-20 Dan Winship <danw@gnome.org> + + * tests/Makefile.am (INCLUDES): add SOUP_MAINTAINER_FLAGS here + too. + + * tests/dns.c (main): + * tests/getbug.c (main): + * tests/server-auth-test.c (do_test): replace deprecated glib + functions + +2008-10-20 Cosimo Cecchi <cosimoc@gnome.org> + + * configure.in: + * libsoup/Makefile.am: + * libsoup/soup-status.h: + * libsoup/soup-types.h: + * libsoup/soup-uri.c: (soup_uri_to_string): + Build with G_DISABLE_DEPRECATED and G_DISABLE_SINGLE_INCLUDES; enforce + the first switch under maintainer mode and the second one + unconditionally (#557072). + +2008-10-19 Dan Winship <danw@gnome.org> + + * libsoup/soup-auth.c (soup_auth_update): compare scheme name + case-insensitively, to prevent an infinite loop when it's not in + standard form. #536285 + +2008-10-10 Dan Winship <danw@gnome.org> + + * libsoup/soup-message-headers.c + (soup_message_headers_get_ranges): if the caller passed the + total_length of the message body, then sort sort the ranges and + merge overlapping ones to generate a minimal set. + + * tests/range-test.c: test it + +2008-10-09 Andrew W. Nosenko <andrew.w.nosenko@gmail.com> + + * libsoup/soup-uri.c (soup_uri_to_string): Verify whether uri is + non-NULL and avoid crash on NULL pointer dereference therefore. + +2008-10-03 Dan Winship <danw@gnome.org> + + * libsoup/soup-connection.c: Change the SoupURI properties to + SoupAddress properties. + + * libsoup/soup-address.c (soup_address_resolve_async) + (soup_address_resolve_sync): Redo slightly so that multiple + simultaneous attempts to resolve the same address won't cause + problems. + (soup_address_hash_by_name, soup_address_equal_by_name): + (soup_address_hash_by_ip, soup_address_equal_by_ip): methods to + hash addresses by name or IP address + + * libsoup/soup-message.c (soup_message_get_address): gets a + SoupAddress corresponding to the message's URI + + * libsoup/soup-auth-manager.c (SoupAuthHost): hash hosts by + soup_address_hash_by_name() rather than by URI. + + * libsoup/soup-session.c (soup_session_get_connection): pass + addresses to soup_connection_new(), not URIs. + (SoupSessionHost): hash hosts by soup_address_hash_by_ip() rather + than by URI. This requires that the addresses will have already + been resolved by the SoupSession subclasses before calling + soup_session_get_connection(), but also means that now requests + made to different virtual hosts on the same IP address can share a + connection. + + * libsoup/soup-message-queue.c (SoupMessageQueueItem): add + address-resolving state + + * libsoup/soup-session-sync.c (process_queue_item): resolve the + message's address before getting a connection + + * libsoup/soup-session-async.c (run_queue, resolve_msg_addr) + (resolved_msg_addr): resolve the message's address before getting + a connection + (request_restarted): if the message gets requeued to a different + host, we'll need to re-resolve the address. + + * libsoup/soup-uri.c (soup_uri_copy_root, soup_uri_host_hash) + (soup_uri_host_equal): No longer needed + + * libsoup/soup-dns.c (do_async_callback): disconnect from the + cancellable before invoking the callback + + * tests/proxy-test.c (tests): fix the 403 example; hostnames are + resolved by the session now, even when sending to a proxy, so we + need to use a hostname that actually exists + +2008-10-03 Dan Winship <danw@gnome.org> + + * libsoup/soup-message-queue.c: Make this more complicated, with a + SoupMessageQueueItem to keep track of the session's per-message + state. (Part of the process of moving session-related state out of + SoupMessagePrivate.) + + * libsoup/soup-session.c: Update to work in terms of + SoupMessageQueueItem + + * libsoup/soup-session-async.c: + * libsoup/soup-session-sync.c: use SoupMessageQueueItem (and get + rid of SoupSessionAsyncQueueData and SoupSessionSyncAsyncData). + +2008-10-01 Dan Winship <danw@gnome.org> + + * libsoup/soup-multipart.c: New type and methods for working with + multipart HTTP bodies (eg, multipart/form-data and + multipart/byte-ranges) + + * libsoup/soup-message-headers.c (soup_message_headers_get_ranges) + (soup_message_headers_set_ranges) + (soup_message_headers_set_range) + (soup_message_headers_get_content_range) + (soup_message_headers_set_content_range): New methods for dealing + with the Range and Content-Range headers. + + * libsoup/soup-form.h (SOUP_FORM_MIME_TYPE_URLENCODED) + (SOUP_FORM_MIME_TYPE_MULTIPART): #define these MIME types here + + * libsoup/soup-form.c (soup_form_decode_multipart): new utility + for parsing multipart/form-data forms. + (soup_form_request_new_from_multipart): new utility for + constructing multipart/form-data forms + + * libsoup/soup-headers.c (soup_headers_parse): this is now + non-static, for use by soup-multipart + + * libsoup/soup-message-server-io.c (get_response_headers) + (handle_partial_get): if the client requested a partial GET, and + the SoupServer is returning the full body, rebuild the response to + include only the requested range instead + + * tests/forms-test.c: renamed from query-test and updated to do + both application/x-www-form-urlencoded and multipart/form-data + tests + + * tests/range-test.c: test of Range/Content-Range functionality + +2008-10-01 Dan Winship <danw@gnome.org> + + * libsoup/soup-headers.c (soup_header_parse_param_list) + (soup_header_parse_semi_param_list): Update these to deal with + RFC2231-encoded UTF-8 header params + (soup_header_g_string_append_param): new utility method to do + parameters with quoted-strings (handling escaping) and RFC2231. + + * libsoup/soup-auth-digest.c (get_authorization): + * libsoup/soup-auth-domain-basic.c (challenge): + * libsoup/soup-auth-domain-digest.c (challenge): use + soup_header_g_string_append_param so we handle escaping correctly + + * libsoup/soup-message-headers.c + (soup_message_headers_get_content_type) + (soup_message_headers_set_content_type) + (soup_message_headers_get_content_disposition) + (soup_message_headers_set_content_disposition): New convenience + methods. + + * tests/header-parsing.c (do_rfc2231_tests): new test of RFC2231 + encoded header parsing in Content-Disposition. + + * tests/get.c (get_url): use + soup_message_headers_get_content_type() + + * docs/reference/libsoup-2.4-sections.txt: update + +2008-10-01 Dan Winship <danw@gnome.org> + + * tests/xmlrpc-test.c (main): add a new -s flag to indicate that + it's being run from inside xmlrpc-server-test. + (test_echo): if we aren't running inside xmlrpc-server-test, and + the response strings don't match the request strings, then compare + them to echo_strings_broken instead; a bug in php-xmlrpc manifests + when using libxml2 >= 2.7.1, resulting in incorrect responses. :-/ + + * tests/xmlrpc-server-test.c (do_xmlrpc_tests): Pass -s to + xmlrpc-test + +2008-10-01 Dan Winship <danw@gnome.org> + + * configure.in: bump version to 2.25.0 + +2008-10-01 Dan Winship <danw@gnome.org> + + * libsoup/soup-cookie-jar.c: + * libsoup/soup-cookie.c: + * libsoup/soup-cookie.h: + * libsoup/soup-headers.c: + * libsoup/soup-logger.c: + * libsoup/soup-session-feature.c: + * libsoup/soup-session-feature.h: + * libsoup/soup-session.c: doc fixups + + * docs/reference/libsoup-2.4-docs.sgml: + * docs/reference/libsoup-2.4-sections.txt: + * docs/reference/libsoup-2.4.types: Add missing bits + +2008-09-30 Dan Winship <danw@gnome.org> + + * libsoup/soup-xmlrpc.c (parse_value): + soup_value_hash_insert_value() copies the value, so we have to + g_value_unset() our copy. + + * tests/chunk-test.c: + * tests/misc-test.c: + * tests/ntlm-test.c: fix leaks + + * tests/libsoup.supp: update + +2008-09-30 Dan Winship <danw@gnome.org> + + * libsoup/soup-session-async.c (do_idle_run_queue): store the + GSource in priv, don't ref the session. Otherwise the session + won't get destroyed if you abort it and then don't return to its + main loop. (addendum to #498509, Arnout Vandecappelle) + (finalize): Destroy the idle_run_queue source when finalizing. + (run_queue, got_connection): Ref the session when calling + soup_connection_connect_async(), and do a + do_idle_run_queue()+unref in got_connection, to ensure correct + handling regardless of what the application does with its own ref + on the session. + (final_finished): Likewise, ref/do_idle_run_queue/unref rather + than calling run_queue directly and playing with weak pointers. + + * libsoup/soup-session.c (connect_result): ref the session around + the cancel-if-error loop + + Fixes #533473, crash in seahorse when connecting to a + non-responsive key server. + + * tests/misc-test.c (do_callback_unref_test): Add a test for the + bug in #533473. + + * tests/test-utils.c (soup_test_session_abort_unref): abort and + unref a SoupSession, and consider it an error if the session still + exists afterward. Suggested by Arnout Vandecappelle. + (test_server_shutdown): Likewise, consider it an error if the + server is leaked. + + * tests/*.c: Use soup_test_session_abort_unref(). + +2008-09-26 Dan Winship <danw@gnome.org> + + * libsoup/soup-auth-manager-ntlm.c + * libsoup/soup-auth-manager.c + * libsoup/soup-cookie-jar.c + * libsoup/soup-dns.c + * libsoup/soup-logger.c: + * libsoup/soup-message-body.h: + * libsoup/soup-message.h + * libsoup/soup-misc.h: + * libsoup/soup-xmlrpc.h: + + * tests/continue-test.c: + * tests/ntlm-test.c: Fix warnings pointed out by gcc -pedantic. + #553976, Sander Dijkhuis. + +2008-09-23 Dan Winship <danw@gnome.org> + + * configure.in: 2.24.0.1 + + * NEWS: Update + + * libsoup/soup-session.c (redirect_handler): + * libsoup/soup-message.c (soup_message_new): + (soup_message_new_from_uri, soup_message_set_uri): Revert the + 2008-08-25 change; it breaks the rhythmbox DAAP plugin. #553466. + To be revisited. + +2008-09-22 Dan Winship <danw@gnome.org> + + * configure.in: 2.24.0 + +2008-09-08 Dan Winship <danw@gnome.org> + + * configure.in: 2.23.92 + + * NEWS: update + +2008-09-07 Dan Winship <danw@gnome.org> + + * libsoup/soup-session.c (redirect_handler): a 302 response to + HEAD (or any other safe method) should be treated like a 307, not + a 303. #551190, Jonathan Matthew. + + * tests/redirect-test.c: test that + +2008-09-01 Dan Winship <danw@gnome.org> + + * configure.in: 2.23.91 + + * NEWS: update + +2008-08-25 Dan Winship <danw@gnome.org> + + * libsoup/soup-uri.h (SOUP_URI_VALID_FOR_HTTP): new macro to check + if a URI is a valid http or https URI. + + * libsoup/soup-uri.c (soup_uri_new_with_base): Update http/https + check to use SOUP_URI_VALID_FOR_HTTP(). + + * libsoup/soup-session.c (redirect_handler): Check + SOUP_URI_VALID_FOR_HTTP() and call it an error if the check fails. + + * libsoup/soup-message.c (soup_message_new): Remove the uri->host + check from here. Update docs to clarify that @uri must be an + http/https URI. + (soup_message_new_from_uri): Check SOUP_URI_VALID_FOR_HTTP(). + Update docs. + (soup_message_set_uri): Check SOUP_URI_VALID_FOR_HTTP(). Update + docs. + + Should prevent the crash in #528882, but there's still something + going wrong there at a higher level. + +2008-08-22 Bastien Nocera <hadess@hadess.net> + + * libsoup/soup-date.c (soup_date_to_time_t), + (soup_date_to_timeval): + * libsoup/soup-date.h: Add a SoupDate to GTimeVal conversion + function, for use in gvfs. #549006, with help from Dan Winship + <danw@gnome.org> + +2008-08-18 Dan Winship <danw@gnome.org> + + * libsoup.pc.in (Requires): Revert previous commit; that would + still fail in the case of an application linking against a library + that privately links against libsoup. The only correct solution in + the face of --as-needed (or on OSes where the linker always works + that way) is for the module that actually calls g_thread_init() to + explicitly link against libgthread. + +2008-08-14 Dan Winship <danw@gnome.org> + + * libsoup.pc.in (Requires): Add gthread-2.0; the app must call + g_thread_init(), but libsoup won't pull it in itself if built with + --as-needed, so make sure it gets pulled in from here. Noted by + Zeeshan Ali. + + * libsoup/soup-auth.c (soup_auth_authenticate): g_return_if_fail + if either username or password is NULL. Noted on the mailing list. + + * libsoup/soup-auth-basic.c (authenticate): remove redundant check + +2008-08-04 Dan Winship <danw@gnome.org> + + * configure.in: 2.23.6 + + * NEWS: update + +2008-07-26 Dan Winship <danw@gnome.org> + + * libsoup/soup-misc.c (soup_add_completion): Add this to schedule + a callback in a GMainContext "right away", as opposed to + soup_add_idle(), which uses a lower priority and therefore may not + end up calling the callback for a long time if the application is + busy with I/O. #536676, Benjamin Otte. + + * libsoup/soup-dns.c (resolver_thread, async_cancel) + (soup_dns_lookup_resolve_async): + * libsoup/soup-message-io.c (soup_message_io_unpause): + * libsoup/soup-session-sync.c (queue_message_thread): + * libsoup/soup-session-async.c (do_idle_run_queue): + * libsoup/soup-socket.c (async_cancel) + (soup_socket_connect_async): + * tests/test-utils.c (test_server_shutdown): Use + soup_add_completion() rather than soup_add_idle(). + + * docs/reference/libsoup-2.4-sections.txt: add soup_add_completion + +2008-07-26 Dan Winship <danw@gnome.org> + + * libsoup/soup-message-client-io.c (get_request_headers): don't + add a Host header to the message if the caller already added one. + #539803, Marc Maurer. + + * libsoup/soup-logger.c (print_request): likewise + + * tests/misc-test.c: new test file for small miscellaneous test + cases. + (do_host_test): test Host-header overriding + +2008-07-26 Dan Winship <danw@gnome.org> + + * tests/Makefile.am (LIBS): add $(GLIB_LIBS) so this still works + when building with weird LDFLAGS. #541506, Götz Waschk. + + * docs/reference/Makefile.am (GTKDOC_LIBS): likewise + + * libsoup/soup-auth-digest.c (soup_auth_digest_parse_algorithm): + if the server response doesn't include an algorithm, it is + supposed to default to MD5. #544681, Mads Chr. Olesen. + + * libsoup/soup-message-io.c (SoupMessageIOData): change + read_length, write_length, and written to goffset so we can + properly handle message bodies > 4G. #539861, Peter Christensen. + + * libsoup/soup-gnutls.c: Fix horrible bizarre brokenness in + GIOChannel subclassing. #536417, Tor Lillqvist. + +2008-06-04 Tor Lillqvist <tml@novell.com> + + * libsoup/soup-socket.c (set_fdflags): The SO_RCVTIMEO and + SO_SNDTIMEO options to setsockopt() take int values, in + milliseconds, on Windows. Not struct timeval. Eek. So passing a + struct timeval meant that the tv_sec value (which is first in the + struct) is interpreted as milliseconds. setsockopt apparently + doesn't even get upset by the fact that the option size doesn't + match the sizeof(int) it should expect. + +2008-05-02 Dan Winship <danw@gnome.org> + + * libsoup/soup-cookie.c (soup_cookie_applies_to_uri): fix the path + checking + +2008-04-29 Tor Lillqvist <tml@novell.com> + + * libsoup/soup-dns.c (soup_dns_is_ip_address): Fix compilation + error in the !HAVE_IPV6 && !HAVE_INET_PTON && !HAVE_INET_ATON + case. + +2008-04-21 Dan Winship <danw@gnome.org> + + * configure.in: 2.23.1, bump AGE and CURRENT + + * NEWS: update + +2008-04-20 Dan Winship <danw@gnome.org> + + Fixes for GnuTLS support on Win32. #528752, patch from Marc Maurer + + * libsoup/soup-gnutls.c (soup_ssl_wrap_iochannel): add an argument + saying whether or not the socket is non-blocking, since there's no + way to determine this from the fd in WinSock. + (do_handshake, soup_gnutls_read, soup_gnutls_write): Update for + that. + + * libsoup/soup-socket.c (soup_socket_start_proxy_ssl): Update for + that + + * libsoup/soup-nossl.c (soup_ssl_wrap_iochannel): update the + declaration here too + + * tests/ssl-test.c: Some updates to get this closer to working on + Windows... + +2008-04-14 Chris Lord <chrislord.net@gmail.com> + + reviewed by: Dan Winship <danw@gnome.org> + + * libsoup/soup-cookie-jar.c (soup_cookie_jar_set_cookie): + Check that the cookie was parsed successfully before setting it + +2008-04-08 Dan Winship <danw@gnome.org> + + Initial HTTP cookie support imported from development git repo, + including patches from Xan Lopez. + + TODO: make sure the logic in soup_cookie_jar_get_cookies() is + right. Add a test program to tests/. + + * libsoup/soup-cookie.c: Code for parsing and generating HTTP + cookies. + + * libsoup/soup-cookie-jar.c: Code for managing SoupCookies and + integrating cookie management with a SoupSession. + + * libsoup/soup-date.c (soup_date_is_past): New, checks if a + SoupDate refers to a time in the past + + * libsoup/soup-dns.c (soup_dns_is_ip_address): New, checks if a + string is a valid IP address + + * libsoup/soup-headers.c (soup_header_parse_semi_param_list): New, + like soup_header_parse_param_list, but for semicolon-delimited + data. + +2008-04-08 Dan Winship <danw@gnome.org> + + * libsoup/soup-auth-manager.c: Make this a GObject and + specifically a SoupSessionFeature. Add an "authenticate" signal, + and emit that rather than explicitly calling into the SoupSession + and telling it when to emit its own authenticate signal. + + * libsoup/soup-auth-manager-ntlm.c: Make this a subclass of + SoupAuthManager, with NTLM support controllable via a property. + + * libsoup/soup-session.c (soup_session_init): create an + auth_manager of type SOUP_TYPE_AUTH_MANAGER_NTLM, but defaulting + to USE_NTLM=FALSE. Connect to its "authenticate" signal, and call + soup_session_add_feature() on it. + (set_property, get_property): proxy the USE_NTLM property to the + auth manager. + (auth_manager_authenticate): signal handler for SoupAuthManager + "authenticate" signal. (Replaces soup_session_emit_authenticate(), + which is no longer needed) + +2008-04-08 Dan Winship <danw@gnome.org> + + * libsoup/soup-session-feature.c: New interface type representing + a feature that can be added to a SoupSession. + + * libsoup/soup-session.c (soup_session_add_feature): Add a feature + to the session by prepending it to priv->features and calling + soup_session_feature_attach() on it. + (soup_session_add_feature_by_type): Add a feature to the session + by creating an object of the indicated type and passing it to + soup_session_add_feature. + (soup_session_remove_feature) + (soup_session_remove_feature_by_type): Likewise, remove features + (soup_session_class_init, set_property): register/handle + construct-time feature adding/removing properties + (dispose): cleanup features + + * libsoup/soup-logger.c: port to SoupSessionFeature + + * tests/test-utils.c (soup_test_session_new): Use + soup_session_add_feature rather than soup_logger_attach. + +2008-04-08 Dan Winship <danw@gnome.org> + + * configure.in: Having branched for gnome-2-22, bump version to + 2.23.0 for the GNOME 2.23 series. SOUP_API_VERSION will stay at + 2.4, which is confusing but seemed like the best solution at this + point. + +2008-04-07 Dan Winship <danw@gnome.org> + + * configure.in: 2.4.1. Bump AGE and CURRENT. + + * NEWS: update + + * docs/reference/libsoup-2.4-sections.txt: add new symbols + +2008-04-07 Dan Winship <danw@gnome.org> + + * libsoup/soup-message-io.c (soup_message_io_pause): If pausing a + message that was waiting to unpause, cancel the unpause. + +2008-04-05 Dan Winship <danw@gnome.org> + + * libsoup/soup-dns.c (resolve_address, resolve_name): Don't + cache negative results, even if the DNS server explicitly states + that the host does not exist; some servers give different answers + to clients inside and outside their firewall. #523269, Jörgen + Scheibengruber. + +2008-04-05 Dan Winship <danw@gnome.org> + + * libsoup/soup-message-body.c (soup_message_body_set_accumulate) + (soup_message_body_get_accumulate): New, replaces + SOUP_MESSAGE_OVERWRITE_CHUNKS, but can be set on either the + incoming or outgoing message body. + (soup_message_body_get_chunk): update to still dtrt if !accumulate + (soup_message_body_got_chunk, soup_message_body_wrote_chunk): New + methods to handle accumulating/discarding chunks. + + * libsoup/soup-message-io.c (read_body_chunk): Use + soup_message_body_got_chunk. + (io_write): Use soup_message_body_wrote_chunk, to discard unneeded + chunks after writing them. Fixes most of #522146. + + * libsoup/soup-message.c (soup_message_class_init): add a new + flag, "server-side", to indicate whether the message is + client-side or server-side, and update several methods to use it. + (got_body): Update for accumulate + (soup_message_set_flags): If the caller changes OVERWRITE_CHUNKS, + update the corresponding accumulate flag. + + * libsoup/soup-message.h (SOUP_MESSAGE_OVERWRITE_CHUNKS): + deprecated now + + * tests/chunk-test.c (do_request_test): Use + soup_message_body_set_accumulate() now, and verify that the chunks + are being discarded appropriately. + (do_response_test): Use + soup_message_body_set_accumulate() instead of OVERWRITE_CHUNKS. + + * tests/pull-api.c (do_fully_async_test) + (do_synchronously_async_test): Use + soup_message_body_set_accumulate(). + +2008-04-05 Dan Winship <danw@gnome.org> + + * libsoup/soup-dns.c (resolve_address): fix test for + AI_ADDRCONFIG. Noticed while looking at #526321. + +2008-04-05 Dan Winship <danw@gnome.org> + + * libsoup/soup-socket.c (soup_socket_class_init) + (soup_socket_write): globally ignore SIGPIPE rather than only + doing it around socket write calls, since with SSL even socket + read calls may need to write, and also because SIGPIPE is + completely moronic and no one should be using it, and the previous + "solution" wasn't thread-safe anyway. Fixes #524397, reported by + Curtis Magyar. + +2008-04-05 Dan Winship <danw@gnome.org> + + Misc fixes noticed by "sparse" or by running gcc with additional + -W flags + + * libsoup/soup-auth-manager-ntlm.c (ntlm_authorize_post): fix a + potentially uninitialized variable. (Grumble. gcc needs + -Wdo-optimization-so-you-can-generate-code-flow-related-warnings- + but-then-emit-unoptimized-code-for-ease-of-debugging) + + * libsoup/soup-gnutls.c (soup_gnutls_channel_funcs): make this + static + + * libsoup/soup-uri.c (uri_decoded_copy, uri_normalized_copy): add + "static". (This doesn't change the generated code; the prototype + was already declared static and so gcc was treating the function + as static even though the main declaration *wasn't* declared + static. I'm not sure if this is a bug in gcc or an oddity of the + spec, but it's confusing, so...) + + * libsoup/soup-xmlrpc.c (soup_xmlrpc_build_method_response): + s/FALSE/NULL/ + + * libsoup/soup-xmlrpc.h: add G_GNUC_PRINTF to + soup_xmlrpc_build_format + + * tests/*.c: misc minor fixes, mostly involving missing "const"s + and "static"s to get better warnings, and then remove some unused + variables. + + * tests/continue-test.c (do_message): fix a crash when the test + fails + + * tests/test-utils.h (debug_printf): add G_GNUC_PRINTF to + prototype + +2008-04-05 Dan Winship <danw@gnome.org> + + * libsoup/soup-method.c: Explicitly assign each of the variables + to NULL, because that apparently causes the OS X linker to treat + them differently than if they are left implicitly NULL. #522957. + +2008-04-04 Dan Winship <danw@gnome.org> + + * libsoup/soup-message.c: add a new signal "wrote-body-data" to + address the problem that "wrote-chunk" is not usable for progress + info (especially with non-chunked encoding). #525101, suggested by + Christian Kellner. + + * libsoup/soup-message-io.c (write_data): emit wrote-body-data as + appropriate. + (io_write): update so that (a) Content-Length writes can be done + in multiple chunks (as long as the caller explicitly sets the + Content-Length header beforehand), and (b) the body data doesn't + get copied an extra time. Based on a patch from Christian. + + * libsoup/soup-message-client-io.c (get_request_headers): Don't + update the Content-Length header if it's already set, even if it + doesn't match the (current) body length. + + * tests/chunk-test.c: test some chunk-encoding-related behavior + +2008-04-03 Dan Winship <danw@gnome.org> + + Be more aggressive about closing unused persistent connections + when needed, to avoid slow load times in WebKit. + + * libsoup/soup-session-async.c (run_queue): Remove the + "try_pruning" flag from here and from all the callers, and + *always* try pruning idle connections if it would help. + + * libsoup/soup-session.c (soup_session_try_prune_connection): + Rather than only closing a single connection, close all idle + connections. + +2008-03-29 Dan Winship <danw@gnome.org> + + * libsoup/soup-message.h (SoupMessage): de-constify + msg->reason_phrase; it's no more const than any other struct + field. + + * libsoup/soup-message.c (finalize) + (soup_message_cleanup_response, soup_message_set_status) + (soup_message_set_status_full): don't need to cast reason_phase to + non-const when freeing it now + + * libsoup/soup-message-client-io.c (parse_response_headers): + Likewise, remove reason-phrase non-const casts + +2008-03-29 Dan Winship <danw@gnome.org> + + * libsoup/soup-date.c (parse_day): fix the test for no-day-parsed + (parse_year): likewise fix the test for no-year-parsed + (parse_time): don't accept empty components here + (parse_textual_date): don't accept a comma if it wasn't preceded + by a weekday + (soup_date_weekday): Fix leap year handling here; the code this + was originally based on only had to work between 1970 and 2038, so + it didn't worry about the mod 100 and mod 400 rules... + + * tests/date.c: Add date/string conversion tests (in particular, + to make sure soup_date_weekday is working). Also add test cases + with missing components and make sure they *don't* parse. + +2008-03-25 Dan Winship <danw@gnome.org> + + * libsoup/soup-auth-domain-digest.c (accepts): don't crash if the + auth_callback returns NULL (meaning "unrecognized user"). + + * tests/server-auth-test.c (do_test, do_auth_tests): Test bad + usernames as well as bad passwords. + (main): Remove erroneous local run_tests variable. + + Pointed out by Curtis Magyar. + +2008-03-19 Dan Winship <danw@gnome.org> + + * libsoup/soup-auth.c (soup_auth_new): compare WWW-Authenticate + auth schemes case-insensitively. + + * libsoup/soup-auth-digest.c (update): allow Digest + WWW-Authenticate header with no "qop" option. (The original RFC + 2069 style of Digest auth.) + (soup_auth_digest_parse_qop): this returns a bitfield, so don't + return -1 if there are no recognized values. + + * tests/httpd.conf.in: use "AuthDigestQop none" in /Digest/realm3 + so we test that + + Fixes #498484 (Digest auth against Apple's Calendar Server). + +2008-03-18 Dan Winship <danw@gnome.org> + + * libsoup/soup-session.c (soup_session_class_init): Add a new + property, SOUP_SESSION_IDLE_TIMEOUT, to specify a timeout after + which idle connections should be closed. + (soup_session_get_connection): pass the idle_timeout value on to + the connection. + + * libsoup/soup-connection.c (soup_connection_class_init): Add + SOUP_CONNECTION_IDLE_TIMEOUT. + (start_idle_timer, stop_idle_timer): add/remove a timeout to call + soup_connection_disconnect(). + (socket_connect_result, soup_connection_connect_sync): start the + idle timer after connection is complete + (set_current_request): call stop_idle_timer() when starting a new + request + (clear_current_request): call start_idle_timer() when finishing a + request + (dispose): call stop_idle_timer() when destroying the connection + + #518214, based on a patch from Jorn Baayen. + +2008-03-18 Dan Winship <danw@gnome.org> + + * libsoup/soup-message-io.c (soup_message_io_unpause): if delaying + the unpause to idle time, we need to keep track of the idle source + (soup_message_io_stop): if the message is waiting to unpause + itself, cancel that + + * libsoup/soup-server.c (soup_server_pause_message): call + soup_message_io_pause(), not soup_message_io_unpause(). Duh. + +2008-03-15 Dan Winship <danw@gnome.org> + + * libsoup/soup-session.c: Define two new signals, request_queued + and request_unqueued, to provided a clearer (and + clearly-documented) lifecycle for messages, helping us (and other + people) avoid bugs like #522601, SoupSession::authenticate signal + emitted multiple times per message (reported and analyzed by Tommi + Komulainen). + + * libsoup/soup-logger.c: + * libsoup/soup-auth-manager.c: + * libsoup/soup-auth-manager-ntlm.c: Use request_queued/unqueued + + * tests/auth-test.c (do_async_auth_test): add a regression test + +2008-03-14 Dan Winship <danw@gnome.org> + + * libsoup/soup-message-client-io.c (get_request_headers): Fix Host + header syntax when the host is an IPv6 address literal. Noticed + while poking at #522519. + +2008-03-14 Dan Winship <danw@gnome.org> + + * libsoup/soup-message-private.h (SoupMessagePrivate): add + an orig_http_version field. + + * libsoup/soup-message.c (soup_message_init): initialize + orig_http_version. + (soup_message_set_http_version): If called before the status code + is received, set orig_http_version too. + (soup_message_cleanup_response): Restore orig_http_version, so + that we don't send an HTTP/1.0 request in response to an HTTP/1.0 + redirect. #521848, Tommi Komulainen. + + * libsoup/soup-message-server-io.c (get_response_headers): + actually output "HTTP/1.0", not "HTTP/1.1", if the message's http + version is 1.0. + + * tests/redirect-test.c (server_callback): Add a regression test; + set http_version to 1.0 when returning a redirect, but require it + to be 1.1 when processing the following request + +2008-03-13 Xan Lopez <xan@gnome.org> + + * libsoup/soup-address.c: + * libsoup/soup-auth-domain-basic.c: + * libsoup/soup-auth-domain-digest.c: + * libsoup/soup-auth-domain.c: + * libsoup/soup-auth.c: + * libsoup/soup-connection.c: + * libsoup/soup-message.c: + * libsoup/soup-server.c: + * libsoup/soup-session.c: + * libsoup/soup-socket.c: + + Use G_OBJECT_WARN_INVALID_PROPERTY_ID in all get/set_property functions. + + Bug #522115 + +2008-03-13 Xan Lopez <xan@gnome.org> + + * tests/dns.c: (main): + * tests/get.c: (main): + * tests/getbug.c: (main): + * tests/simple-httpd.c: (main): + * tests/simple-proxy.c: (main): + * tests/ssl-test.c: (main): + * tests/test-utils.c: (test_init): + + g_thread_init should be called before any other glib function. (#522117) + +2008-03-10 Dan Winship <danw@gnome.org> + + * configure.in: 2.4.0! + + * NEWS: update + +2008-02-28 Dan Winship <danw@gnome.org> + + * libsoup/soup-session.c (finalize): free priv->user_agent. + #518798, Wouter Cloetens. + (redirect_handler): PROPFIND is defined to be "safe and + idempotent", so allow automatic redirects of it. (Pointed out by + Christian Kellner. FIXME: need a way for apps to declare + additional safe methods). Also, treat 302 like 307, not like 303, + because that behavior is universal in the real world, despite the + spec's protests. + + * tests/redirect-test.c (tests): update POST 302 behavior check + + * tests/Makefile.am (TESTS): oops, add redirect-test so it gets + run by "make check"/"make distcheck" + + * tests/ssl-test.c: Re-revert the change from 2008-02-09; the + problem with ssl-test.c was not that soup_gnutls_init() wasn't + thread-safe, it's that the server thread doesn't do anything that + would ever cause soup_gnutls_init() to be called, and so if the + client thread doesn't start first, the server thread will run + without initializing GNUTLS. + +2008-02-27 Benjamin Otte <otte@gnome.org> + + * libsoup/soup-socket.c: (read_from_network), (soup_socket_read), + (soup_socket_read_until), (soup_socket_write): + ensure that nread/nwrote parameters aren't NULL. They are also + properly set on error paths now. + +2008-02-25 Dan Winship <danw@gnome.org> + + * configure.in: 2.3.4 + + * NEWS: Update + +2008-02-25 Dan Winship <danw@gnome.org> + + * docs/reference/Makefile.am (DOC_MODULE): rename from libsoup to + libsoup-2.4 + (TARGET_DIR): don't need to override this now + + * docs/reference/libsoup-2.4.types: + * docs/reference/libsoup-2.4-docs.txt: + * docs/reference/libsoup-2.4-overrides.txt: + * docs/reference/libsoup-2.4-sections.txt: Rename these from + unversioned, to match DOC_MODULE + + Fixes doc installation to work with devhelp again. #518384, Mart + Raudsepp. + +2008-02-25 Benjamin Otte <otte@gnome.org> + + * libsoup/soup-address.h: + * libsoup/soup-auth-domain.h: + * libsoup/soup-auth.h: + * libsoup/soup-message.h: + * libsoup/soup-server.h: + * libsoup/soup-session-async.h: + * libsoup/soup-session-sync.h: + * libsoup/soup-session.h: + * libsoup/soup-socket.h: + * libsoup/soup-types.h: + * libsoup/soup-uri.h: + use an underscore for struct definitions. Fixes bug #518317. + +2008-02-20 Sebastian Dröge <slomo@circular-chaos.org> + + * libsoup.pc.in: Add gobject-2.0 and gio-2.0 to Requires. + Move libxml-2.0 and the SSL dependency to Requires.private + as no header is including them. Fixes bug #517631. + +2008-02-11 Dan Winship <danw@gnome.org> + + * configure.in: post-release bump to 2.3.3 + +2008-02-11 Dan Winship <danw@gnome.org> + + * configure.in: 2.3.2 + (SOUP_CURRENT): bump for API changes + + * NEWS: update + +2008-02-09 Dan Winship <danw@gnome.org> + + * Misc gtk-doc fix-ups + +2008-02-09 Dan Winship <danw@gnome.org> + + * libsoup/soup-misc.h: remove prototype for + soup_signal_connect_once, which is only used by soup-connection + now, and will go away once that code is rewritten. + + * libsoup/soup-connection.c: prototype it here now (the definition + is still in soup-misc.c) + +2008-02-09 Dan Winship <danw@gnome.org> + + * libsoup/soup-auth-manager-ntlm.c: mark the DES magic number + arrays const + + * libsoup/soup-date.c (months, days): add an extra "const" to each + of these declarations, as one "const" is apparently not enough. + (soup_date_to_time_t): remove redundant copy of days_before array. + + * libsoup/soup-dns.c (soup_dns_init): use g_once_init_enter/leave + + * libsoup/soup-gnutls.c (soup_ssl_supported) + (soup_gnutls_channel_funcs): Mark these const + (soup_gnutls_init, init_dh_params): Use g_once_init_enter/leave + + * libsoup/soup-status.c (reason_phrases): mark this const + + * tests/ssl-test.c: Remove the workaround for soup_gnutls_init() + not being thread-safe, since it is now. + +2008-02-08 Dan Winship <danw@gnome.org> + + * libsoup/soup-message-headers.c (SoupMessageHeadersIter) + (soup_message_headers_iter_init, soup_message_headers_iter_next): + Add an iterator type for SoupMessageHeaders. + + * libsoup/soup-message-client-io.c (get_request_headers): + * libsoup/soup-message-server-io.c (get_response_headers): Use + SoupMessageHeadersIter. + + * libsoup/soup-logger.c (print_request, print_response): Use + SoupMessageHeadersIter. And take advantage of the simplification + to fix the kludge where 'direction' was stored as a field in + SoupLoggerPrivate rather than being an argument to + soup_logger_print. + + * tests/get.c (get_url): + * tests/header-parsing.c (check_headers): + * tests/simple-httpd.c (server_callback): Use + SoupMessageHeadersIter + +2008-02-06 Dan Winship <danw@gnome.org> + + * libsoup/soup-server.c (soup_server_add_auth_domain): Ref the + auth domain when adding it. + + * tests/continue-test.c (setup_server): + * tests/server-auth-test.c (main): Add unrefs here to avoid + leaking now + +2008-02-06 Dan Winship <danw@gnome.org> + + * libsoup/soup-message.c (soup_message_set_chunk_allocator): New + method that lets the application set a callback function to use to + allocate SoupBuffers for reading into, so as to avoid needing + extra copies. + + * libsoup/soup-message-body.c (soup_buffer_new_with_owner): new, + to create a SoupBuffer pointing to memory owned by another object, + with a GDestroyNotify to unref/free that object when the + SoupBuffer is freed. + (soup_buffer_get_owner): Returns the owner of a buffer created + with soup_buffer_new_with_owner. + (soup_buffer_free, etc): update SoupBuffer code for owned buffers. + + Suggested by Wouter Cloetens, #513810. + + * tests/simple-httpd.c (do_get): Use mmap() and + soup_buffer_new_with_owner(), as a demo/test. + +2008-02-06 Dan Winship <danw@gnome.org> + + * libsoup/soup-date.c (soup_date_to_time_t): clamp the result to + the time_t range, and document that. Remove the #ifdef HAVE_TIMEGM + branch. + + * configure.in: remove check for timegm + +2008-02-04 Dan Winship <danw@gnome.org> + + * libsoup/Makefile.am: Fix the handling of soup-enum-types.h to + ensure that it gets built before the things that depend on it. + +2008-02-03 Benjamin Otte <otte@gnome.org> + + * libsoup/soup-socket.c: update documentation to new API + +2008-02-02 Dan Winship <danw@gnome.org> + + * libsoup/soup-session.c: fix default connections-per-host again; + it was defined in two places. Add SOUP_SESSION_USER_AGENT property + (setup_message): set the User-Agent request header on the request + + * libsoup/soup-server.c: add SOUP_SERVER_SERVER_HEADER property + (start_request): set the Server response header on the request. + + * tests/get.c: + * tests/simple-httpd.c: set the User-Agent/Server headers + +2008-02-02 Dan Winship <danw@gnome.org> + + * libsoup/soup-headers.c (soup_headers_parse_request): if the + request headers contain an unrecognized Expect: header, return + SOUP_STATUS_EXPECTATION_FAILED. Also, process Connection headers + in HTTP/1.0 messages as required by 2616 14.10. + (soup_headers_parse_response): Likewise handle Connection headers + in HTTP/1.0 messages + + * tests/header-parsing.c: test those things + +2008-02-02 Dan Winship <danw@gnome.org> + + * libsoup/soup-session.c (redirect_handler): Misc fixes: don't + redirect on "300 Multiple Choices", "304 Not Modified", "305 Use + Proxy", or any unrecognized status code. Don't redirect unsafe + methods on 301, 302, or 307. Redirect POST to GET on 303. + + * tests/redirect-test.c: test of redirection handling behavior. + +2008-02-02 Dan Winship <danw@gnome.org> + + * libsoup/soup-method.h (SOUP_METHOD_GET, etc): Fix these so that + direct comparisons against them actually *are* faster than doing + strcmp, as the docs claim. + + * libsoup/soup-uri.h (SOUP_URI_SCHEME_HTTP, + SOUP_URI_SCHEME_HTTPS): likewise + +2008-02-01 Dan Winship <danw@gnome.org> + + * libsoup/soup-address.c: Use GObject properties. + (soup_address_new, soup_address_new_from_sockaddr) + (soup_address_new_any): Make these just wrappers around + g_object_new. + + * libsoup/soup-message-body.c (soup_message_body_get_type): + * libsoup/soup-message-headers.c (soup_message_headers_get_type): + * libsoup/soup-server.c (soup_client_context_get_type): + Register these as boxed types, for language bindings. + + * libsoup/soup-date.c (soup_date_get_type): + * libsoup/soup-message-body.c (soup_buffer_get_type): + * libsoup/soup-value-utils.c (soup_byte_array_get_type): + * libsoup/soup-uri.c (soup_uri_get_type): Upgrade to the latest + yummiest type-registering idiom. + +2008-02-01 Dan Winship <danw@gnome.org> + + * libsoup/soup-connection.c (soup_connection_disconnect): + Reorganize this; emitting DISCONNECTED may cause the session to + unref the connection, causing it to be destroyed, so do everything + else before that. #437835 and dups. Also, call + soup_message_cleanup_response() when requeuing an IO_ERROR-ed + message, so soup_session_send_message() will requeue it rather + than treating it as failed. + + * docs/reference/Makefile.am (TARGET_DIR): override this to + include the API version, to fix the last remaining parallel + install issue between libsoup 2.2 and 2.4. #512810, Daniel + Gryniewicz. + + * tests/query-test.c (do_test): don't use "stdout" as a variable + name; it's allowed to be a macro (and it is one on Solaris). + #513602, patch from Jeff Cai. + +2008-01-31 Dan Winship <danw@gnome.org> + + * libsoup/soup-date.c (soup_date_to_time_t): new + + * libsoup/soup-form.c (soup_form_decode): Remove "_urlencoded" + from name. (And add back-compat #define.) + (soup_form_encode): New, takes varargs parameters for each form + construction. + (soup_form_encode_hash, soup_form_encode_datalist): renamed, with + back-compat #defines + (soup_form_request_new, soup_form_request_new_from_hash) + (soup_form_request_new_from_datalist): New methods to construct a + GET or POST message with form data. + + * libsoup/soup-uri.c (soup_uri_set_query_from_fields): New, takes + varargs like soup_form_encode(). + + * libsoup/soup-value-utils.c (soup_value_hash_new_with_vals) + (soup_value_hash_insert_vals, soup_value_hash_lookup_vals): New + routines to work with multiple value hash values at once. + (soup_value_array_new): tiny wrapper, for naming consistency + (soup_value_array_new_with_vals, soup_value_array_append_vals): + New routines to work with multiple value array values at once. + +2008-01-28 Dan Winship <danw@gnome.org> + + * configure.in: post-release bump to 2.3.1 + +2008-01-28 Dan Winship <danw@gnome.org> + + * configure.in: Bump version to 2.3.0.1 + + * NEWS: Update + + * docs/reference/Makefile.am (content_files): include + porting-2.2-2.4.xml + +2008-01-28 Dan Winship <danw@gnome.org> + + * libsoup/soup-message.c (soup_message_set_auth) + (soup_message_set_proxy_auth): Use soup_message_headers_replace(), + not soup_message_headers_append(), since only a single + Authorization/Proxy-Authorization header is allowed. #512517. + + * libsoup/soup-auth-manager-ntlm.c (ntlm_request_started): Don't + set an NTLM Authorization header if the message already has a + Basic or Digest one. + + * tests/ntlm-test.c: Add some Basic auth and mixed NTLM/Basic auth + tests + +2008-01-28 Wouter Bolsterlee <wbolster@svn.gnome.org> + + * docs/reference/libsoup-docs.sgml: + + Changed section titles so that they actually show + something useful in DevHelp. + +2008-01-27 Dan Winship <danw@gnome.org> + + * libsoup/soup-dns.c (resolver_thread): fix mutex use to avoid a + race condition + + * libsoup/soup-xmlrpc.c (soup_xmlrpc_build_faultv): + (soup_xmlrpc_set_response, soup_xmlrpc_set_fault): + (soup_xmlrpc_parse_method_call): Fix misc server-side stuff + (soup_xmlrpc_parse_method_response): Fix fault parsing + + * libsoup/soup-xmlrpc.h (SoupXMLRPCFault): add semi-standard fault + codes from + http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php + + * tests/xmlrpc-server.php (sum): return a <fault> if the arguments + are wrong (so that xmlrpc-test can test that case). + (dateChange): change to take two parameters, a date and a struct, + instead of putting the date in the struct, since we weren't + previously testing multiple parameter handling. + + * tests/xmlrpc-test.c (main): Add a -u flag to specify an + alternate URL. + (do_xmlrpc): Remove level 3 debug output, which is now redundant + with the SoupLogger stuff. + (test_dateChange): update for dateChange prototype change + (test_fault_malformed, test_fault_method, test_fault_args): test + handling of faults + + * tests/xmlrpc-server-test.c: Test the server-side XML-RPC API (by + implementing the same methods as xmlrpc-server.php and then + using xmlrpc-test) + +2008-01-27 Dan Winship <danw@gnome.org> + + * libsoup/soup-headers.c (soup_header_parse_quality_list): fix to + not sometimes read beyond the end of the string. + + * libsoup/soup-message-body.c (soup_message_body_append): When + appending a 0-length SOUP_MEMORY_TAKE buffer, we need to free the + passed-in buffer rather than just ignoring it. + + * libsoup/soup-message-headers.c (soup_message_headers_free): Fix + leak introduced by patch for 511980. + + * libsoup/soup-server.c (got_headers): fix leak when decoding path + + * libsoup/soup-session.c (finalize): free ntlm_manager + + * tests/libsoup.supp: update for libsoup 2.4, glib 2.14, etc + + * tests/header-parsing.c (do_qvalue_tests): + * tests/uri-parsing.c (main): more cleanup + +2008-01-27 Dan Winship <danw@gnome.org> + + * libsoup/soup-logger.c (soup_logger_attach): Fix session ids by + using weak refs for the logger cleanup rather than trying to use + the same qdata for two different things. + (print_request, print_response): use full type names in the + Soup-Debug line, since SoupSessionSync and SoupSessionAsync get + numbered separately. + +2008-01-27 Dan Winship <danw@gnome.org> + + * libsoup/soup-session-async.c (final_finished): Don't run the + queue again if the callback destroyed the session. #511868, Stef + Walter. + +2008-01-25 Srinivasa Ragavan <sragavan@novell.com> + + ** Fix for bug #511980 + + * libsoup/soup-message-headers.c: (soup_message_headers_clear): + Instead of destroying the hashtable, just remove the contents of the + table. + +2008-01-23 Tor Lillqvist <tml@novell.com> + + * configure.in: Allow autogening even without AM_PATH_LIBGCRYPT + available + + * libsoup/soup-date.c (soup_date_new_from_time_t): Correct use of + gmtime(). + + * libsoup/soup-headers.c (soup_headers_parse_status_line): Return + FALSE if neither HTTP nor ICY. Avoids crash in + tests/header-parsing. + + * libsoup/soup-socket.c: On Windows SHUT_RDWR is called SD_BOTH. + (set_nonblocking): Fix typo. + + * tests/continue-test.c: Seems to build fine without <pthread.h>, + so drop that. + +2008-01-18 Dan Winship <danw@gnome.org> + + * tests/server-auth-test.c: test SOUP_AUTH_DOMAIN_REMOVE_PATH + +2008-01-18 Dan Winship <danw@gnome.org> + + * configure.in: require glib 2.15.3, not 2.15.0, since + AM_PATH_GLIB_2_0 didn't know about gio until post-2.15.2. Pointed + out by Matthew Barnes, #510216. + +2008-01-18 Dan Winship <danw@gnome.org> + + * libsoup/soup-auth-domain.c + (soup_auth_domain_set_generic_auth_callback): + (soup_auth_domain_check_password): add a new generic auth callback + that can be used with any subclass to do cleartext password + checking against messages. Suggested by Mathias Hasselmann. + + * libsoup/soup-auth-domain-basic.c: Implement generic auth + + * libsoup/soup-auth-domain-digest.c: Implement generic auth. + (soup_auth_domain_digest_evil_check_password): Gone, use the + generic version now. + +2008-01-17 Dan Winship <danw@gnome.org> + + * libsoup/soup-auth-digest.c (soup_auth_digest_compute_hex_urp) + (soup_auth_digest_compute_hex_a1) + (soup_auth_digest_compute_response): cast the second arg to + g_checksum_update to (guchar *) to avoid warnings + +2008-01-16 Dan Winship <danw@gnome.org> + + * libsoup/soup-headers.c (soup_headers_parse_status_line): Deal + with Shoutcast servers, which return "ICY 200 OK", but are + otherwise straight HTTP/1.0. #502325, Wouter Cloetens. + + * tests/header-parsing.c (resptests): add a test for it + +2008-01-16 Dan Winship <danw@gnome.org> + + * libsoup/soup-auth-manager.c (authorize_handler, etc): Allow the + session authenticate signal to be handled asynchronously, by + pausing the message and then authenticating the auth later. + (auth_type_compare_func): make this work. oops. + (extract_challenge): plug leak + + * libsoup/soup-auth-manager-ntlm.c: Make this work async too. + + * libsoup/soup-headers.c (soup_header_parse_list): + (soup_header_parse_param_list): plug leaks + + * tests/auth-test.c (do_async_auth_test): test async auth + + * docs/reference/client-howto.xml (Handling Authentication): + mention async auth + +2008-01-16 Dan Winship <danw@gnome.org> + + * configure.in: Bomb out if glib 2.15.0 isn't found. + (AM_PATH_GLIB_2_0 doesn't do this itself.) + +2008-01-15 Dan Winship <danw@gnome.org> + + * libsoup/soup-auth-manager-ntlm.c: Replaces SoupConnectionNTLM; + now works as a SoupSession::request_started watcher. + + * libsoup/soup-connection.c: remove the no-longer-needed + "authenticate" signal + + * libsoup/soup-session.c: Use a SoupAuthManagerNTLM if USE_NTLM is + set. Remove connection-authenticate-signal references. + +2008-01-15 Dan Winship <danw@gnome.org> + + * Merge libsoup-2.4 branch to trunk + +2008-01-15 Dan Winship <danw@gnome.org> + + * libsoup/soup-dns.c (resolve_status): Fix the logic here + +2008-01-15 Dan Winship <danw@gnome.org> + + * docs/reference/porting-2.2-2.4.xml: add a few more updates + +2008-01-15 Dan Winship <danw@gnome.org> + + * libsoup/soup-auth-digest.c: Use GChecksum for MD5 + + * libsoup/soup-md5-utils.[ch]: gone + +2008-01-15 Dan Winship <danw@gnome.org> + + * libsoup/soup-server.c (soup_server_run_async): + (soup_server_quit): Don't ref/unref the server here. It doesn't + match the way other things work. #494128, Mathias Hasselmann. + +2008-01-14 Dan Winship <danw@gnome.org> + + * libsoup/soup-address.h: + * libsoup/soup-auth-domain-basic.h: + * libsoup/soup-auth-domain-digest.h: + * libsoup/soup-auth-domain.h: + * libsoup/soup-auth.h: + * libsoup/soup-logger.h: + * libsoup/soup-message.h: + * libsoup/soup-server.h: + * libsoup/soup-session-async.h: + * libsoup/soup-session-sync.h: + * libsoup/soup-session.h: + * libsoup/soup-socket.h: Add padding for future expansion to class + structs + +2008-01-14 Dan Winship <danw@gnome.org> + + * libsoup/soup-uri.c: Add more documentation. + (soup_uri_is_https): gone, replaced by SOUP_URI_SCHEME_HTTP / + SOUP_URI_SCHEME_HTTPS + (soup_uri_new): allow passing NULL to get back an "empty" SoupURI. + (soup_uri_to_string): rename just_path to just_path_and_query, to + avoid fooling people. + (soup_uri_decode, soup_uri_normalize): Change these to return the + decoded/normalized string rather than modifying it in place. + (soup_uri_set_scheme, etc): provide setters for SoupURI parts. + (soup_uri_set_query_from_form): set uri->query via + soup_form_encode_urlencoded(). + +2008-01-14 Dan Winship <danw@gnome.org> + + * configure.in: require glib 2.15.0, and gio + + * libsoup/soup-dns.c (soup_dns_lookup_resolve) + (soup_dns_lookup_resolve_async): Add GCancellables, and support + cancellation of DNS lookups. + (resolve_address, resolve_name): If we get a DNS failure (eg, + because we're disconnected from the network), don't cache that + result, just try again next time someone asks. [#508593] + + * libsoup/soup-address.c (soup_address_resolve_async) + (soup_address_resolve_sync): Add GCancellables, pass them to + soup-dns. + + * libsoup/soup-socket.c (soup_socket_connect_async) + (soup_socket_connect_sync): Add GCancellables and implement + cancellation. + (soup_socket_start_ssl, soup_socket_start_proxy_ssl) + (soup_socket_read, soup_socket_read_until, soup_socket_write): add + GCancellables, though these routines don't actually implement + cancellation yet. + (soup_socket_disconnect): Don't close() the socket if someone is + doing I/O on it, as that creates a race condition. (The fd number + might be quickly recycled.) Instead, keep the socket open but + dead, via shutdown(). + +2008-01-14 Benjamin Otte <otte@gnome.org> + + * libsoup/soup-socket.c: (soup_socket_class_init): clarify docs for + new-connection signal. + +2008-01-14 Dan Winship <danw@gnome.org> + + * tests/test-utils.c: renamed from apache-wrappers and expanded. + (test_init): do option parsing and general setup + (test_cleanup): print error count and do cleanup + (debug_printf): define here rather than in each test, and rename + from dprintf [#501631] + (soup_test_server_new): create a SoupServer, optionally in its own + thread, and clean it up when exiting. + (soup_test_session_new): create a SoupSession, optionally with + an attached SoupLogger (if requested via command line) + + * tests/*.c: use test-utils + +2008-01-13 Dan Winship <danw@gnome.org> + + * libsoup/soup-logger.c: New HTTP debug logging object. (Based on + E2K_DEBUG and its clones.) + + * libsoup/soup-message.c (soup_message_class_init) + (soup_message_add_header_handler) + (soup_message_add_status_code_handler): Change things around a + little; remove the "requeuing or cancelling the message stops + signal emission" rule, and instead make that be a feature of just + the header and status code handlers. (Makes the basic signal + handlers behave more predictably.) + +2008-01-11 Dan Winship <danw@gnome.org> + + * libsoup/soup-auth-domain.c (soup_auth_domain_set_filter): + * libsoup/soup-auth-domain-basic.c + (soup_auth_domain_basic_set_auth_callback): + * libsoup/soup-auth-domain-digest.c + (soup_auth_domain_digest_set_auth_callback): + * libsoup/soup-message.c (soup_message_cleanup_response) + (soup_message_set_flags, soup_message_set_http_version) + (soup_message_set_uri, soup_message_set_status) + (soup_message_set_status_full): + * libsoup/soup-message-client-io.c (parse_response_headers): + * libsoup/soup-message-server-io.c (parse_request_headers): + Call g_object_notify() when changing properties. + + * libsoup/soup-session.c (soup_session_class_init): bump the + default value of SOUP_SESSION_MAX_CONNS_PER_HOST down to 2, per + RFC 2616. + + * libsoup/soup-message-body.c (soup_buffer_copy): When copying a + TEMPORARY buffer, keep a reference to the copy, so that a second + copy will get that same buffer, rather than actually copying it + again. + + * libsoup/soup-types.h: remove SoupMessageFilter, which doesn't + exist any more + +2008-01-07 Dan Winship <danw@gnome.org> + + * libsoup/soup-session.c (soup_session_class_init): Change + request_started signal to have a SoupSocket as its last parameter. + + * libsoup/soup-server.c: Fix request_* signals to all be (server, + msg, client) rather than (server, client, msg). + +2008-01-07 Dan Winship <danw@gnome.org> + + * docs/reference/porting-2.2-2.4.xml: Notes on porting from 2.2 to + 2.4 + +2008-01-07 Dan Winship <danw@gnome.org> + + * libsoup/*.c: Move gtk-doc stuff from docs/reference/tmpl/ to the + C files themselves. Some updates. + + * docs/reference/Makefile.am: fix (kludge?) this up to not require + tmpl/ to exist + + * docs/reference/client-howto.xml: + * docs/reference/server-howto.xml: update + +2008-01-06 Dan Winship <danw@gnome.org> + + * libsoup/soup-soap-message.c: + * libsoup/soup-soap-response.c: For the second time, remove SOAP + support from libsoup... These APIs are not really all that helpful + in the grand scheme of SOAPiness, and are only used by the + Evolution GroupWise backend, which can just import this code and + integrate it better there. + + * libsoup/soup-misc.c (soup_xml_real_node): + * libsoup/soup-xmlrpc.c: Move soup_xml_real_node out of soup-misc + to soup-xmlrpc, and make it private. libxml is no longer exposed + in the public API. + +2008-01-06 Dan Winship <danw@gnome.org> + + * libsoup/soup-date.c (soup_date_new_from_now): new method to + generate a date relative to now. + (soup_date_new, etc): document SoupDate methods + + * libsoup/soup-server.c (got_headers): set Date header, as + required by RFC 2616 + +2008-01-06 Dan Winship <danw@gnome.org> + + * libsoup/soup-server.c (got_headers): if raw_paths isn't set, + decode the request's uri->path before doing anything else + (soup_server_class_init): add "raw-paths" property, to tell + SoupServer to NOT decode the Request-URI path. + + * libsoup/soup-auth-domain.c (soup_auth_domain_covers): Revert + earlier path-decoding change; that happens at the SoupServer level + now. + +2008-01-06 Dan Winship <danw@gnome.org> + + * libsoup/soup-message-body.c (soup_buffer_get_type): Register + SoupBuffer as a boxed type. + + * libsoup/soup-message.c (soup_message_class_init): Use + SOUP_TYPE_BUFFER in got_chunk signal definition + + * libsoup/soup-server.c (soup_client_context_get_type): Register + SoupClientContext as a pointer type + (soup_server_class_init): use SOUP_TYPE_CLIENT_CONTEXT in signal + definitions. + + * libsoup/soup-marshal.list: clean this up + +2008-01-06 Dan Winship <danw@gnome.org> + + * libsoup/soup-server.c (SoupClientContext): Make this opaque. + (soup_client_context_get_socket) + (soup_client_context_get_auth_domain) + (soup_client_context_get_auth_user): New accessors + (soup_server_class_init): Make the signals take a + SoupClientContext rather than a SoupSocket. + (start_request, check_auth, call_handler, request_finished): Clean + these up by using a SoupClientContext to communicate between them. + (soup_server_add_handler): tweak the argument order to match the + gtk standard (callback, user_data, destroynotify). + +2008-01-06 Dan Winship <danw@gnome.org> + + * libsoup/soup-address.c: remove the "dns_result" signal, which + was just an implementation detail of soup_address_resolve_async(). + +2008-01-06 Dan Winship <danw@gnome.org> + + * libsoup/*.c: misc documentation updates/gtk-doc fixes + + * libsoup/soup-server.c: finally start documenting this properly. + + * libsoup/soup-status.h (SoupStatusClass): kill this, since + soup_message_add_status_class_handler() is gone now. + + * libsoup/soup-status.c (soup_status_get_phrase): Update docs to + explain that you probably don't want to use this. + + * libsoup/soup-misc.h (SOUP_SSL_ERROR, SoupSSLError): Move these + here, since soup-ssl.h isn't installed. + + * docs/references: start updating this... + +2008-01-04 Dan Winship <danw@gnome.org> + + * libsoup/soup-message-body.c (soup_buffer_new) + (soup_message_body_append): Reorder the arguments to match + soup_message_set_request/response, so it's not confusing. + + * libsoup/soup-message.c (wrote_chunk): remove the "chunk" arg + from the signal, as it turns out to be *in*convenient, since most + callers use this signal to mean "need another chunk", so they want + it to have the same prototype as "wrote_headers", which means + "need first chunk". + +2008-01-04 Dan Winship <danw@gnome.org> + + * libsoup/soup-auth-domain.c: add documentation + (soup_auth_domain_set_filter): take a GDestroyNotify, for better + bindability + + * libsoup/soup-auth-domain-basic.c: + * libsoup/soup-auth-domain-digest.c: Add documentation. Replace + authentication signals with more-easily-bindable authentication + callbacks (with GDestroyNotifys). + (soup_auth_domain_digest_evil_check_password): Add this for the + benefit of code that depends on being able to do the equivalent + of the old soup_server_auth_check_passwd(). + +2008-01-02 Dan Winship <danw@gnome.org> + + * libsoup/soup-message-body.h (SoupMessageBody): add data and + length parameters like SoupBuffer, to make this easier for callers + to use. + + * libsoup/soup-message-body.c (soup_message_body_append) + (soup_message_body_append_buffer) + (soup_message_body_truncate): Update body->length + (soup_message_body_flatten): Fill in body->data (and NUL-terminate + it as an added bonus). + + * libsoup/soup-message.c (got_body): flatten the newly-gotten + body. + (soup_message_get_request, soup_message_get_response): gone + + * libsoup/soup-message-client-io.c (get_request_headers): + * libsoup/soup-message-server-io.c (get_response_headers): + * libsoup/soup-soap-message.c (soup_soap_message_parse_response): + * tests/*.c: simplify + +2008-01-02 Dan Winship <danw@gnome.org> + + * libsoup/Makefile.am (soup_headers): oops, move soup-auth.h here + +2008-01-02 Dan Winship <danw@gnome.org> + + * libsoup/soup-form.c: new HTML-form-related methods (just URI + decoding/encoding at the moment). + + * libsoup/soup-server.h (SoupServerCallback): change the prototype + to include the decoded path and query rather than the undecoded + URI. + + * libsoup/soup-server.c (call_handler): %-decode the URI path + before looking up a handler. Decode query if available. Pass path + and query to the callback. + + * libsoup/soup-auth-domain.c (soup_auth_domain_covers): fix this + to %-decode the URI path before testing it + + * libsoup/soup-message-body.c (soup_message_body_append): allow + 0-length appends + + * tests/query-test.c: URI query parsing test + +2008-01-02 Dan Winship <danw@gnome.org> + + * libsoup/soup-uri.c: + * libsoup/soup-uri.h: Change all the "const SoupURI *" to just + "SoupURI *", since the const is just there to be annoying. + + * */*.c: update + +2008-01-02 Dan Winship <danw@gnome.org> + + * libsoup/soup-message-body.c (soup_message_body_get_length) + (soup_message_body_get_chunk): Use goffset rather than gsize for + references to the entire size of the message body. (SoupBuffer + still uses gsize, so individual chunks can only be G_MAXSIZE + long.) + + * libsoup/soup-message-headers.c + (soup_message_headers_get_content_length): + (soup_message_headers_set_content_length): Likewise, use goffset. + +2008-01-02 Dan Winship <danw@gnome.org> + + * libsoup/soup-message-headers.c (soup_message_headers_get): + Renamed from soup_message_headers_find, and with new behavior; now + multiple headers with the same name are automatically merged + together into a single comma-separated value, to ensure that apps + treat multivalued headers the same regardless of how upstream + servers generate them. + (soup_message_headers_find_nth): no longer needed/wanted + + * libsoup/soup-auth-manager.c: Update to deal with + SoupMessageHeaders change. (Ugh.) + + * tests/header-parsing.c: Update multiple-values test, and undo a + change that mistakenly got committed while debugging something + earlier. + +2008-01-01 Dan Winship <danw@gnome.org> + + * libsoup/soup-auth-manager.c: + * libsoup/soup-dns.c: + * libsoup/soup-gnutls.c: + * libsoup/soup-message.c: + * libsoup/soup-message-io.c: + * libsoup/soup-message-queue.c: + * libsoup/soup-misc.c: + * libsoup/soup-path-map.c: + * libsoup/soup-server.c: + * libsoup/soup-session.c: + * libsoup/soup-session-sync.c: + * libsoup/soup-socket.c: Use g_slice. + +2008-01-01 Dan Winship <danw@gnome.org> + + * libsoup/soup-session.c (soup_session_cancel_message): add a + "status_code" argument rather than having the caller set the + status code separately, to prevent a race condition. + +2008-01-01 Dan Winship <danw@gnome.org> + + * libsoup/soup-session.c (soup_session_queue_message): change the + callback type to include the SoupSession as a parameter as well. + + * *.c: update + +2007-12-31 Dan Winship <danw@gnome.org> + + * libsoup/soup-session.c (soup_session_class_init): change + the "authenticate" signal to include a SoupAuth rather than its + components, and to have a "retrying" parameter rather than + separating "authenticate" and "reauthenticate". + + * libsoup/soup-connection.c (soup_connection_class_init): Likewise + + * libsoup/soup-auth-manager.c (authenticate_auth): update + + * libsoup/soup-auth.c: make various attributes into gobject + properties. + (soup_auth_is_for_proxy): check whether an auth is plain or proxy + (soup_auth_get_host): get the hostname associated with an auth + + * libsoup/soup-auth-ntlm.c: dummy class used by SoupConnectionNTLM + in the authenticate signal + + * libsoup/soup-connection-ntlm.c (ntlm_authorize_pre): update for + authenticate signals changes; use a fake SoupAuthNTLM to assist. + +2007-12-20 Dan Winship <danw@gnome.org> + + * libsoup/soup-message.c (soup_message_add_header_handler) + (soup_message_add_status_code_handler): Make these be wrappers + around g_signal_connect() rather than having a completely separate + system. + (soup_message_class_init): improve signal docs. Use + "got_foo_signal_wrapper" to wrap the got-foo signals. + (got_foo_signal_wrapper): Wraps the marshaller for the got-foo + signals and cancels the signal emission if the message gets + cancelled or requeued. + (got_informational, got_headers, got_chunk, got_body): remove + no-longer-needed default implementations. + + * libsoup/soup-message-handlers.c: gone + + * tests/ntlm-test.c (do_message): Simplify now that callback + processing doesn't happen in two separate phases. + +2007-12-20 Dan Winship <danw@gnome.org> + + * libsoup/soup-auth-domain.c: + * libsoup/soup-auth-domain-basic.c: + * libsoup/soup-auth-domain-digest.c: New server-side auth system. + + * libsoup/soup-server.c: remove SoupServerAuth / SoupAuthContext + stuff, add SoupAuthDomain support. + (SoupServerCallbackFn): improve the args here + (SoupClientContext): renamed from SoupServerContext and made less + redundant + + * libsoup/soup-server-auth.c: gone! + + * libsoup/soup-auth-digest.c (soup_auth_digest_parse_algorithm) + (soup_auth_digest_get_algorithm, soup_auth_digest_parse_qop) + (soup_auth_digest_get_qop, soup_auth_digest_compute_hex_urp) + (soup_auth_digest_compute_hex_a1) + (soup_auth_digest_compute_response): New routines shared between + client-side and server-side digest auth. + + * tests/server-auth-test.c: test server-side auth, using curl for + the client side + + * configure.in: check for curl, for server-auth-test + +2007-12-20 Dan Winship <danw@gnome.org> + + * libsoup/soup-headers.c (soup_header_parse_list) + (soup_header_parse_quality_list): New methods to parse list-type + headers (with optional qvalues) correctly. + (soup_header_parse_param_list): Rename to match the other methods, + and update the semantics a bit. + (soup_header_contains): Correctly check for a token in a list + + * libsoup/soup-message.c (soup_message_is_keepalive): + * libsoup/soup-message-client-io.c (get_request_headers): + * libsoup/soup-message-server-io.c (parse_request_headers): Use + soup_header_contains() with Connection headers. + + * tests/header-parsing.c (do_qvalue_tests): add + soup_header_parse_quality_list() test + +2007-12-20 Dan Winship <danw@gnome.org> + + * libsoup/soup-auth-manager.c: Move auth-related code from + SoupSession and SoupAuth here, and make various cleanups and + beginnings of cleanups. + + * libsoup/soup-session.c: lots of stuff moved to + soup-auth-manager.c + + * libsoup/soup-auth.c (soup_auth_new_from_headers): partly moved + to soup-auth-manager.c, partly renamed to soup_auth_new(). + (soup_auth_update): new method to update an existing auth based on + a new WWW-Authenticate/Proxy-Authenticate header. Also replaces + the old "construct" method. + + * libsoup/soup-auth-digest.c (update): Implement. If the new auth + has stale=true, don't invalidate the auth, just update the nonce. + (get_authorization): add a header handler to the message to catch + Authentication-Info/Proxy-Authentication-Info headers so that if + there's a nextnonce, we can start using it. #471380. + + * libsoup/soup-auth-basic.c (update): Implement. (Updating an + existing Basic auth always invalidates it.) + + * tests/http.conf.in: + * tests/auth-test.c: add a test for digest nonce handling + +2007-12-20 Dan Winship <danw@gnome.org> + + * libsoup/soup-path-map.c: New type representing a sparse + path->something mapping + + * libsoup/soup-server.c: Use SoupPathMap to record handlers. Make + SoupServerHandler a private type. + (soup_server_new): Rewrite this to just be a thin wrapper, and put + all of the code into a constructor override. #491653 + (soup_server_add_handler): Turn the "unregister" arg into a + GDestroyNotify, for better bindability. + +2007-12-19 Dan Winship <danw@gnome.org> + + * libsoup/soup-server.c: define new request_started, request_read, + request_finished, and request_aborted signals, for finer-grained + tracking than normal handlers allow. + (check_auth): split this out of call_handler, and run it + immediately after "got_headers", not "got_body", so that we can + preemptively reject "Expect: 100-continue" messages that will + require auth. + + * libsoup/soup-message-io.c (io_write, io_read): Fix up + 100-continue processing + + * tests/continue-test.c: new test of client/server 100-continue + processing + +2007-12-19 Dan Winship <danw@gnome.org> + + * libsoup/soup-socket.c: Cleanup. Remove the "connect_result" + signal. Make local_address and remote_address + into (construct-only) properties. + (soup_socket_connect_async, soup_socket_connect_sync): Replace + soup_socket_connect. _async takes a callback+user_data (like the + old soup_socket_client_new_async), but doesn't implement the + callback in terms of a connect_result signal. + (soup_socket_client_new_async, soup_socket_client_new_sync): Gone. + (Unused since the async_context addition anyway). Replaced by the + new construct properties and connect methods. + (soup_socket_read, soup_socket_read_until, soup_socket_write): + Make these actually take a GError rather than doing an ugly hack + to preserve the old API. + (SOUP_SOCKET_FLAG_NODELAY, SOUP_SOCKET_FLAG_REUSEADDR) + (SOUP_SOCKET_FLAG_CLOEXEC): kill these off (all three are always + TRUE now); SoupSocket is libsoup's socket API; it's not + necessarily intended to be generically useful for everyone. + + * *.c: Update for SoupSocket changes + +2007-12-19 Dan Winship <danw@gnome.org> + + * libsoup/soup-server-message.c: Kill! + + * libsoup/soup-message-server-io.c (parse_request_headers): + Generate the full request URL from the socket's data, since we no + longer have soup_server_message_get_server(). + + * libsoup/soup-server.c (request_finished, call_handler) + (start_request, new_connection): update + +2007-12-19 Dan Winship <danw@gnome.org> + + * libsoup/soup-message-headers.c: Add some more fields to + SoupMessageHeaders, and start caching the parsed values of certain + important headers. + (soup_message_headers_get/set_encoding): replaces old SoupMessage + methods, and only deals with the declared transfer encoding, not + the wire encoding. + (soup_message_headers_get/set_content_length): Handle + Content-Length. + (soup_message_headers_get_expectations): Handle Expect. (Replaces + the SOUP_MESSAGE_EXPECT_CONTINUE flag). + + * libsoup/soup-message.c (soup_message_get_request_encoding): + (soup_message_get_response_encoding): + (soup_message_set_response_encoding): replaced by + SoupMessageHeaders methods. + + * libsoup/soup-message-client-io.c: + * libsoup/soup-message-server-io.c: + * libsoup/soup-message-io.c: Update for SoupMessageHeaders changes + with encoding/content-length stuff. + +2007-12-19 Dan Winship <danw@gnome.org> + + * libsoup/soup-message-body.c (SoupMessageBody): new opaque type + for request/response bodies allowing less hacky handling of + chunked encoding. + (SoupBuffer): refcounted buffer type + + * libsoup/soup-message.h (SoupMessage): turn request and response + members into SoupMessageBody. + (SoupOwnership, SoupDataBuffer): gone, replaced by + SoupMessageBody/SoupBuffer. + + * libsoup/soup-message.c (soup_message_wrote_chunk) + (soup_message_got_chunk): add the chunk as a signal param rather + than having it be visible in msg->request/response. + (soup_message_add_chunk, soup_message_add_final_chunk) + (soup_message_pop_chunk): replaced by SoupMessageBody methods now. + +2007-12-19 Dan Winship <danw@gnome.org> + + * libsoup/soup-xmlrpc.c: + * libsoup/soup-value-utils.c: Oops. Change the API a bunch so this + works on x86; apparently I was doing illegal things with va_lists + before that only work on x86_64. + +2007-12-14 Dan Winship <danw@gnome.org> + + * libsoup/soup-message.c: use GObject properties for SoupMessage + fields. + + * libsoup/soup-message-server-io.c: + * libsoup/soup-soap-message.c: update for that + +2007-12-14 Dan Winship <danw@gnome.org> + + * libsoup/soup-uri.c: Rename from SoupUri to SoupURI. Use the + slice allocator and register as a boxed type. + (SoupURI): Rename "protocol" field to "scheme" and "passwd" to + "password". Make scheme an interned string. Replace + SOUP_PROTOCOL_HTTPS with soup_uri_is_https(). + + * *.c: update + +2007-12-14 Dan Winship <danw@gnome.org> + + * libsoup/Makefile.am: Use glib-mkenums to build soup-enum-types.c + and soup-enum-types.h + + * libsoup/soup-address.h (SoupAddressFamily): redo this definition + again, to make glib-mkenums happy. + +2007-12-13 Dan Winship <danw@gnome.org> + + * libsoup/soup-xmlrpc.c: New easier-to-use and + easier-to-do-language-bindings-of XML-RPC code. + + * libsoup/soup-xmlrpc-message.c: + * libsoup/soup-xmlrpc-response.c: gone + + * libsoup/soup-value-utils.c: Utilites for working with + GValueArray, and GHashTables of GValues, used by soup-xmlrpc. + + * tests/getbug.c: + * tests/xmlrpc-test.c: Update to use new XML-RPC stuff + +2007-12-13 Dan Winship <danw@gnome.org> + + * libsoup/soup-date.c: Make a SoupDate type, and redo in terms of + that rather than struct tm and time_t. Also be much more liberal + when parsing. + + * libsoup/soup-xmlrpc-message.c (soup_xmlrpc_message_write_datetime): + * libsoup/soup-xmlrpc-response.c (soup_xmlrpc_value_get_datetime): + Use SoupDate. + + * tests/date.c: Use SoupDate, test parsing lots more formats + + * tests/xmlrpc-test.c: update for SoupDate + +2007-12-12 Dan Winship <danw@gnome.org> + + * libsoup/soup-message.c: + * libsoup/soup-message-private.h: Remove SoupMessageStatus, + msg->status, and soup_message_io_* from the public API, as they + all really belong to the session, not the message. (For now + they've just been moved to soup-message-private.h, but some day + they'll be fully refactored away from SoupMessage.) + + * libsoup/soup-server.c (soup_server_pause_message) + (soup_server_unpause_message): + * libsoup/soup-session.c (soup_session_pause_message) + (soup_session_unpause_message): session/server-level methods to + replace soup_message_io_pause() and soup_message_io_unpause(). + + * libsoup/soup-server-message.c: Remove some unused methods + + * */*.c: Update + +2007-12-05 Dan Winship <danw@gnome.org> + + * libsoup/soup-connection.c: + * libsoup/soup-session.c: replace message filters with a + "request_started" signal + + * libsoup/soup-message-filter.c: gone + + * libsoup/soup-types.h (SOUP_MAKE_INTERFACE): no longer needed + +2007-12-05 Dan Winship <danw@gnome.org> + + * libsoup/soup-uri.c: Update for RFC 3986 changes, bgo 266516, and + general conformance + (soup_uri_get_protocol): match protocols case-insensitively + (soup_uri_new_with_base): Don't fully %-decode the fragment, + query, and path, but do %-decode anything which isn't supposed to + be encoded. Recognize IPv6 address literals. Use stricter + "../"-stripping rules on the path. Reject URIs with junk between + the port number and the path. + (soup_uri_to_string): Update for the fact that the host might be + an IPv6 literal, and for the fact that path, query, and fragment + are now pre-escaped. + (soup_uri_equal): compare hostnames case-insensitively + (uri_encoded_char): update to match RFC 3986 + (append_uri_encoded): use uppercase hex letters as recommended by + RFC 3986. + (soup_uri_normalize): decode only %-escapes that don't belong + there. + + * docs/reference/tmpl/soup-uri.sgml: add some more SoupUri docs + + * tests/uri-parsing.c: Add new tests from RFC 3986, RFC 2732, RFC + 2616, bgo 266516, and elsewhere. Update some tests to match new + parsing/unparsing rules. + +2007-12-05 Dan Winship <danw@gnome.org> + + * libsoup/soup-message.c (soup_message_new) + (soup_message_new_from_uri): g_intern_string() the method name + rather than assuming it's static. Also remove the NULL==GET + assumption. + + * libsoup/soup-method.c: + * libsoup/soup-method.h: remove the SOUP_METHOD_ID_* macros, and + have the SOUP_METHOD_* macros return interned strings + + * libsoup/soup-server.h (SoupServerContext): remove method_id + field. + + * libsoup/soup-server-message.c (finalize): no longer needed, + since smsg->method is now an interned string just like with a + normal SoupMessage. + + * libsoup/soup-soap-message.c (soup_soap_message_new_from_uri): + remove NULL==GET assumption + + * *.c: update + +2007-12-05 Dan Winship <danw@gnome.org> + + * libsoup/soup-message.h (SoupHTTPVersion): rename (from + SoupHttpVersion) + + * libsoup/soup-message-headers.c: New opaque type representing + message headers, and new methods that work on it. Uses an array + rather than a hash table, to preserve header ordering as required + by RFC 2616. (Also fixes the API wart that + "soup_message_get_header", etc, did not actually take a + SoupMessage.) + + * libsoup/soup-message.c: Kill off old header-manipulating + methods. + + * libsoup/soup-headers.c (soup_headers_parse_request): return a + guint rather than gboolean, so we can properly return + SOUP_STATUS_HTTP_VERSION_NOT_SUPPORTED where appropriate. Also fix + up HTTP-Version parsing to conform with the RFC. + (soup_headers_parse_status_line): Likewise update HTTP-Version + parsing. + + * libsoup/soup-message-server-io.c (parse_request_headers): set + return status appropriately on parse errors + + * tests/header-parsing.c: update / add more tests + + * *.c: update + +2007-12-05 Dan Winship <danw@gnome.org> + + * libsoup/soup-misc.c: remove deprecated base64 methods + + * tests/auth-test.c (identify_auth): oops, update to use + g_base64_decode. + +2007-12-05 Dan Winship <danw@gnome.org> + + * libsoup/Makefile.am (libsoupinclude_HEADERS): remove + soup-connection.h and soup-message-queue.h + + * libsoup/soup-types.h: remove SoupConnection and SoupMessageQueue + which are no longer public + + * libsoup/soup.h: sync this to reality for the first time in years + + * libsoup/soup-session.c (soup_session_get_queue): Add this, for + subclasses, as the queue is no longer a public part of the session + struct. + + * libsoup/soup-message.h: + * libsoup/soup-message-private.h: Move soup_message_send_request() + and soup_message_receive_request() to soup-message-private.h, + remove soup_message_send_request_internal(). + + * libsoup/soup-session-private.h: Move "protected" SoupSession + methods (soup_session_get_connection, + soup_session_try_prune_connection) here from soup-session.h + Add soup_session_get_queue. + +2007-12-05 Dan Winship <danw@gnome.org> + + * configure.in: bump version to 2.3.0 and SOUP_API_VERSION to 2.4, + and drop AGE/CURRENT/REVISION all to 0. + + * libsoup/Makefile.am: Rename library to libsoup-2.4.la + + (start of libsoup-2.4 branch) + +2007-11-26 Dan Winship <danw@gnome.org> + + * configure.in: 2.2.104 + + * NEWS: update + +2007-11-21 Dan Winship <danw@gnome.org> + + * libsoup/soup-message-io.c (soup_message_io_cleanup): make this + non-static. + + * libsoup/soup-message.c (finalize): Use soup_message_io_cleanup() + rather than soup_message_io_stop(), to avoid leaks when finalizing + an unfinished message. (Another part of #498509, Wouter Cloetens.) + +2007-11-20 Dan Winship <danw@gnome.org> + + Fix up SOUP_SESSION_ASYNC_CONTEXT. #498509, Wouter Cloetens + + * libsoup/soup-message-io.c (soup_message_io_unpause): don't leak + the async_context + + * libsoup/soup-server.c (soup_server_quit): disconnect the + "new_connection" handler. + (soup_server_get_async_context): Convenience method to return the + server's async_context. + + * libsoup/soup-server-message.c: don't circularly ref the server, + there's no need anyway. + + * libsoup/soup-session.c (soup_session_get_async_context): + Convenience method to return the session's async_context. + + * libsoup/soup-session-async.c (queue_message): call run_queue in + the session's async_context, not the main context. + (send_message): don't leak the async_context + + * libsoup/soup-session-sync.c (queue_message_thread): don't leak + the async_context + + * tests/context-test.c: test that SOUP_SESSION_ASYNC_CONTEXT works + and doesn't leak + +2007-11-20 Dan Winship <danw@gnome.org> + + * libsoup/soup-connection.c (soup_connection_connect_async): don't + leak the SoupAddress. + + * libsoup/soup-dns.c (soup_dns_lookup_resolve_async): fix a leak + when re-looking up an address + + * libsoup/soup-session.c (soup_session_abort): close all + connections in addition to cancelling messages (needed because + connections currently end up holding a ref on their session, + preventing them from being destroyed). + + * tests/auth-test.c: + * tests/ntlm-test.c: + * tests/proxy-test.c: + * tests/pull-api.c: + * tests/ssl-test.c: + * tests/xmlrpc-test.c: clean up more memory on exit, to help find + leaks in the library + + * tests/libsoup.supp: add a zillion new suppressions so we + can use --leak-resolution=med + +2007-11-16 Dan Winship <danw@gnome.org> + + * libsoup/soup-message-io.c (read_body_chunk): Fix the guards + around the got_chunk emission so that it doesn't get messed up if + you pause the I/O from the got_chunk handler. (#452280, Marco + Barisione). + (soup_message_io_pause, soup_message_io_unpause): Update docs + again; these are now allowed with client-side I/O as well. Fix + unpause() to unpause asynchronously on async sockets. + + * libsoup/soup-session-async.c (send_message): Iterate session's + async_context, not the default main context. + + * tests/pull-api.c: Test/sample of creating a pull-style API using + SoupSessionAsync. + + * tests/index.txt: new file to act as DirectoryIndex for the + tests. (In particular, pull-api wants this to be largeish.) + +2007-10-28 Dan Winship <danw@gnome.org> + + * configure.in: 2.2.103 + + * NEWS: update + +2007-10-28 Dan Winship <danw@gnome.org> + + * libsoup/soup-server.c (start_request, request_finished): ref the + socket around the processing of the message, since otherwise it + might already be freed when request_finished runs. #459896. + + * libsoup/soup-message-io.c (soup_message_io_pause) + (soup_message_io_unpause): Clarify the docs here; this is for + server-side use only. Inspired by #452280. + + * docs/reference/server-howto.xml: You need to watch the + "finished" signal on the message if using soup_message_io_pause() + or chunked encoding, because the client might disconnect while + you're paused. Clarification inspired by #471385. + + * tests/simple-proxy.c (client_msg_failed): Fix this to DTRT since + server-howto.xml points to it as an example of what to do. + +2007-10-28 Dan Winship <danw@gnome.org> + + * libsoup/soup-session.c (finalize): free proxy-related stuff + + * libsoup/soup-session-async.c (idle_run_queue): clean up the weak + pointer. (From the dev repo, but identical to a patch from Rob + Bradford in #484988.) + + * tests/*.c: fix leaks + +2007-10-28 Dan Winship <danw@gnome.org> + + * tests/auth-test.c: + * tests/date.c: + * tests/header-parsing.c: + * tests/ntlm-test.c: + * tests/proxy-test.c: + * tests/uri-parsing.c: + * tests/xmlrpc-test.c: Make these less verbose by default (to make + it easier to see what failed when a "make check" fails). + +2007-10-15 Dan Winship <danw@gnome.org> + + * configure.in: 2.2.102 + + * NEWS: update + +2007-10-08 Dan Winship <danw@gnome.org> + + * libsoup/soup-nossl.c: Update for current soup-ssl.h prototypes + + * tests/proxy-test.c (run_test): wrap https tests in #if HAVE_SSL + +2007-10-05 Dan Winship <danw@gnome.org> + + * configure.in: 2.2.101 + + * NEWS: update + + * tests/httpd.conf.in: + * tests/Makefile.am: + * tests/ssl-test.c: srcdir != builddir fixes + +2007-10-05 Dan Winship <danw@gnome.org> + + * libsoup/soup-connection-ntlm.c (ntlm_authorize_pre): Don't crash + if the authenticate callback returns a username and no password + (even though it's not supposed to do that). #480987 + +2007-09-24 Dan Winship <danw@gnome.org> + + * libsoup/soup-auth.h (SoupAuth): add "realm" field to the struct. + (SoupAuthClass) remove "get_realm" virtual method. + + * libsoup/soup-auth.c (soup_auth_new_from_header_list): Parse the + WWW-Authenticate/Proxy-Authenticate header here, set realm, and + pass the params hash to the construct method. + (soup_auth_get_info): Return an identifier for the auth: + "SCHEME:REALM" + + * libsoup/soup-auth-basic.c: + * libsoup/soup-auth-digest.c: update + + * libsoup/soup-session.c (invalidate_auth, update_auth_internal): + use soup_auth_get_info(). + +2007-09-24 Dan Winship <danw@gnome.org> + + * libsoup/soup-date.c (soup_date_parse): minor rfc850-date parsing + improvement suggested by RFC2616 19.3. + + * libsoup/soup-headers.c (soup_headers_parse_request): allow + erroneous trailing whitespace after HTTP version. #475169 + + * libsoup/soup-message-server-io.c (parse_request_headers): fix + the parsing of the Host header to assume it already includes the + port (which it should; the only reason this ever worked is because + SoupUri ignores the second port number when parse_request_headers + generates a URL like "http://localhost:9999:9999/"). + + * tests/header-parsing.c (reqtests): add a test for #475169 + +2007-09-23 Dan Winship <danw@gnome.org> + + * libsoup/soup-message.c (soup_message_class_init): remove a + mysterious partial sentence in the ::wrote-chunk docstring. + #458116 + + * docs/reference/libsoup-sections.txt: Remove documentation of MD5 + methods, which are not public. #440092 + +2007-09-23 Dan Winship <danw@gnome.org> + + * libsoup/soup-message.c (soup_message_set_auth) + (soup_message_set_proxy_auth): Only remove the Authorization / + Proxy-Authorization header from the message if it was previously + set by soup_message_set_auth(). (Eg, not if it was added by + SoupConnectionNTLM.) #471389 + + * libsoup/soup-connection-ntlm.h: fix a search-and-replace-o + + * tests/ntlm-test.c: Simple NTLM regression test; doesn't really + test the crypto/encoding bits, just that the right headers are + being sent at the right times. + +2007-09-14 Dan Winship <danw@gnome.org> + + Make "make check" pass on Fedora 7: + + * configure.in: update apache/php tests with additional filenames + + * tests/httpd.conf.in: updates for configure.in changes and + slightly-more-recent apache + + * tests/ssl-test.c (start_writing): fix uninitialized struct field + (main): start server after setting up client since otherwise + there's a race condition since soup_gnutls_init() isn't actually + thread-safe. (FIXME) + + * tests/xmlrpc-server.php: rewrite to not use $HTTP_RAW_POST_DATA + (which only exists if register_globals is set) + +2007-06-01 Dan Winship <danw@novell.com> + + * libsoup/soup-message-filter.h (SOUP_IS_MESSAGE_FILTER_CLASS): + fix. noted by "cascardo" on libsoup-list. + +2007-05-16 Jonathon Jongsma <jjongsma@gnome.org> + + * libsoup/*.h: add G_BEGIN_DECLS / G_END_DECLS to all installed + headers so that libsoup can be used from C++ programs. #438776 + +2007-04-16 Dan Winship <danw@novell.com> + + * libsoup/soup-ssl.h: Make a real SoupSSLCredentials type rather + than just using gpointer + + * libsoup/soup-server.c (SoupServerPrivate): use it + + * libsoup/soup-session.c (SoupSessionPrivate): use it + + * libsoup/soup-gnutls.c: Use it, and consistently use "creds" + rather than "cred" as the abbreviation for "credentials". + + * docs/reference/libsoup-sections.txt: + * docs/reference/tmpl/soup-misc.sgml: + * docs/reference/tmpl/soup-ssl.sgml: update + +2007-03-29 Dan Winship <danw@novell.com> + + * libsoup/soup-session-sync.c (queue_message): Implement this by + sending the message (synchronously) in another thread and then + queueing the callback back in the main thread. + + * libsoup/soup-session.c (soup_session_queue_message): update docs + to be more explicit about what thread the callback occurs in + +2007-03-17 Dan Winship <danw@novell.com> + + * libsoup/soup-message.c (soup_message_set_auth) + (soup_message_get_auth, soup_message_set_proxy_auth) + (soup_message_get_proxy_auth): get/set auth/proxy_auth info for a + message. + + * libsoup/soup-session.c (add_auth): Use soup_message_set_auth and + soup_message_set_proxy_auth. + (update_auth_internal): Call soup_message_get_auth or + soup_message_get_proxy_auth to determine the message's prior auth, + rather than calling lookup_auth() again, since it isn't guaranteed + to return the same thing now as it did when the message was + originally sent. Fixes erroneous 401s when queuing multiple + messages at once to an as-yet-unauthenticated-to server. #271540 + + * libsoup/soup-session-async.c (queue_message): don't run the + queue right away, do it at idle time. Otherwise in some cases + (especially errors), the message callbacks could be invoked before + queue_message returns. + + * tests/auth-test.c: add a regression test for #271540. + +2007-03-17 Dan Winship <danw@novell.com> + + * configure.in: require glib 2.12. check for timegm(). + + * libsoup/soup-date.c (soup_mktime_utc): Use timegm if available. + (soup_date_iso8601_parse): use g_time_val_from_iso8601. #337010, + patch from Emmanuele Bassi. + + * libsoup/soup-types.h: remove local copy of + G_GNUC_NULL_TERMINATED since we now depend on a new-enough copy of + glib. + + * libsoup/soup-misc.c (soup_base64_encode_close) + (soup_base64_encode_step, soup_base64_encode) + (soup_base64_decode_step): Make these just be wrappers around the + glib base64 methods. (For now; eventually they'll just go away.) + + * libsoup/soup-auth-basic.c (authenticate): + * libsoup/soup-auth-digest.c (authenticate): + * libsoup/soup-connection-ntlm.c (soup_ntlm_parse_challenge) + (soup_ntlm_response): + * libsoup/soup-server-auth.c (soup_server_auth_new): + * libsoup/soup-soap-message.c (soup_soap_message_write_base64): + * libsoup/soup-xmlrpc-message.c + (soup_xmlrpc_message_write_base64): + * libsoup/soup-xmlrpc-response.c (soup_xmlrpc_value_get_base64): + Use glib base64 methods + +2007-03-16 Dan Winship <danw@novell.com> + + * libsoup/soup-message.c (soup_message_get_response_encoding): + update the handling of CONNECT: it has no response body by + default, but does have a body if its headers say so. + + * tests/proxy-test.c: test libsoup's behavior when talking to + proxies. + + * tests/httpd.conf.in: Load mod_proxy and mod_ssl, and add + sections configuring them, for proxy-test + + * configure.in: update the apache-module-dir-finding code to deal + with the fact that some modules (eg, mod_ssl) might only be in the + mpm-specific module dir, while others (eg, mod_php5) might only be + in the generic module dir. + +2007-03-12 Dan Winship <danw@novell.com> + + * tests/Makefile.am (INCLUDES): add $(LIBGNUTLS_CFLAGS) for + ssl-test. #417617, patch from Elijah Newren. + +2007-03-12 Dan Winship <danw@novell.com> + + * libsoup/soup-session-sync.c (wait_for_connection): if + soup_connection_connect_sync() returns SOUP_STATUS_TRY_AGAIN, then + try again. (Duh.) Fixes SSL-via-proxy-when-using-synchronous-I/O- + where-the-proxy-closes-the-connection-when-returning-407. (Reported + by Varadhan.) + + * tests/get.c: Rewrite to use soup_session_send_message rather + than soup_session_queue_message, and add a "-s" flag to use + SoupSessionSync rather than SoupSessionAsync (so we can test bugs + in the sync code paths). + +2007-03-08 Dan Winship <danw@novell.com> + + * libsoup/soup-gnutls.c (do_handshake): don't return + G_IO_STATUS_AGAIN if we're doing blocking I/O; just keep retrying + until the handshake is complete. + (soup_gnutls_read, soup_gnutls_write): if we get + GNUTLS_E_REHANDSHAKE, call do_handshake() immediately rather than + returning G_IO_STATUS_AGAIN; if the socket is blocking then + G_IO_STATUS_AGAIN is wrong, and if the socket is non-blocking, we + might already need to return SOUP_SSL_ERROR_HANDSHAKE_NEEDS_WRITE + or SOUP_SSL_ERROR_HANDSHAKE_NEEDS_READ. + + #415402, based on a patch from Jacob Berkman. + + * tests/ssl-test.c: basic ssl test. In particular, tests that + rehandshake requests are handled correctly during both synchronous + and asynchronous I/O. Might eventually test other stuff too... + + * configure.in: + * tests/Makefile.am: updates for ssl-test + +2007-02-19 Dan Winship <danw@novell.com> + + * configure.in: Get gcrypt libs/cflags. + + * libsoup/Makefile.am (INCLUDES, libsoup_2_2_la_LIBADD): add + gcrypt flags. Patch from "Cygwin Ports Maintainer", #384498 + +2007-02-12 Dan Winship <danw@novell.com> + + * configure.in: 2.2.100 + +2007-02-12 Dan Winship <danw@novell.com> + + * libsoup/soup-headers.c (soup_headers_parse_status_line): Fix + this to handle "\0"-terminated status lines (eg, from WebDAV + responses), like the docs say it does. #406997 + (soup_headers_parse): Balance that out by rejecting internal "\0"s + here. + (soup_headers_parse_request, soup_headers_parse_response): Update + docs to warn that @dest may be modified even on error. (This was + always true, it just wasn't documented.) + +2007-01-16 Dan Winship <danw@novell.com> + + * tests/header-parsing.c (do_request_tests, do_response_tests): + initialize "errors" to 0. duh. Pointed out by Michael Wolf. + +2007-01-08 Dan Winship <danw@novell.com> + + * configure.in: 2.2.99 + + * NEWS: update + +2007-01-06 Dan Winship <danw@novell.com> + + * libsoup/soup-headers.c (soup_headers_parse): Rewrite this to be + easier to understand and more correct, and make the "str" param + const rather than overwriting it during parsing. + (soup_headers_parse_request, soup_headers_parse_response): + Likewise, make "str" param const. Fix the doc comment to describe + the correct constraint on str. Make the parsing slightly more + lenient as per sections 4.1 and 19.3 of RFC 2616. + + * tests/header-parsing.c: new regression test, for Request-Line, + Status-Line, and message-header parsing. + + Inspired by #391970 (crash in SoupServer when certain invalid + requests are received). + +2006-12-05 Dan Winship <danw@novell.com> + + * libsoup/soup-message.c (soup_message_set_uri): Remove the calls + to soup_message_io_stop() here; the corresponding calls were + needed back in the SoupContext days, but they are wrong now and + cause async-redirects-to-other-hosts to fail. #382251. Also + clarify docs with respect to soup_session_requeue_message(). + + * libsoup/soup-message-io.c (soup_message_io_stop): Clarify docs + + * libsoup/soup-session.c (finalize): Free ssl_creds. Pointed out + by Chris Austin. + +2006-11-20 Dan Winship <danw@novell.com> + + * configure.in: 2.2.98 + + * NEWS: update + +2006-11-20 Dan Winship <danw@novell.com> + + Patch from Andrew W. Nosenko: + + * libsoup/soup-message-client-io.c (parse_response_headers): Avoid + memory leak when parse_response_headers() is called on a message + that has a 'reason_phrase' already for some reason. + + * libsoup/soup-gnutls.c (soup_gnutls_free): Avoid memory leak: + hostname was not freed. + (soup_ssl_wrap_iochannel): Avoid memory leak: SoupGNUTLSChannel + 'chan' was not freed in case of initialization error. Avoid double + close of the "real" (plain, non-ssl) channel FD. + + * libsoup/soup-socket.c (soup_socket_start_proxy_ssl): Avoid + memory leak: the "real" (plain, non-ssl) GIOChannel was never + "finally" unreffed (one more *_ref() than *_unref()) in case of + ssl-wrapping. + +2006-11-20 Dan Winship <danw@novell.com> + + * libsoup/soup-connection-ntlm.c (send_request): + * libsoup/soup-session-sync.c (queue_message): + * libsoup/soup-status.c (reason_phrases): Add some missing + "static"s. Patch from Matthias Clasen, #376387 + + * libsoup/soup-xmlrpc-response.c (soup_xmlrpc_value_get_type) + (soup_xmlrpc_value_get_string): <value>foo</value> should mean the + same thing as <value><string>foo</string></value>. Pointed out by + Todd Kulesza. #364490 + +2006-11-06 Dan Winship <danw@novell.com> + + * configure.in: Bump version to 2.2.97. Bump AGE and CURRENT for + addition of soup_xml_real_node. + + * NEWS: update + +2006-11-06 Dan Winship <danw@novell.com> + + * libsoup/soup-misc.c (soup_xml_real_node): new method to find a + "real" (ie, not comment or whitespace) xml node + + * libsoup/soup-soap-response.c (parse_parameters) + (soup_soap_response_from_string) + (soup_soap_parameter_get_first_child) + (soup_soap_parameter_get_next_child): Use soup_xml_real_node. + Based on a patch from Andrew W. Nosenko. + + * libsoup/soup-xmlrpc-message.c (soup_xmlrpc_message_from_string): + don't call xmlKeepBlanksDefault, which changes libxml's behavior + globally! Instead, use soup_xml_real_node() when traversing the + xml tree. + + * libsoup/soup-xmlrpc-response.c + (soup_xmlrpc_response_from_string): don't call + xmlKeepBlanksDefault. + (exactly_one_child): rewrite in terms of soup_xml_real_node() + (which means it handles comments now as well) + (soup_xmlrpc_value_get_struct) + (soup_xmlrpc_value_array_get_iterator) + (soup_xmlrpc_value_array_iterator_prev) + (soup_xmlrpc_value_array_iterator_next): Use soup_xml_real_node. + +2006-11-05 Dan Winship <danw@novell.com> + + * libsoup/soup-headers.c (soup_headers_parse_request): document + this (in particular, point out that str+len must point to exactly + the right place). Allow req_method and req_path to be NULL. + (soup_headers_parse_status_line, soup_headers_parse_response): + document. Also, change "status_phrase" argument to "reason_phrase" + to match the spec. Inspired by #339889. + +2006-11-03 Dan Winship <danw@novell.com> + + * libsoup/*.c: fix lots of warnings. Partially from patches from + Andrew W. Nosenko, and also some fixes from libsoup-pre214-branch. + +2006-11-03 Dan Winship <danw@novell.com> + + * Makefile.am (uninstall-local): uninstall the pkgconfig file. + Based on #356809 from Matthew Barnes. + + * libsoup/soup-server.c (get_property): Fix leaks pointed out by + Paolo Borelli. #351500 + + * libsoup/soup-uri.c (soup_uri_get_protocol): Fix an off by one + pointed out by Andrew W. Nosenko. + + * configure.in: Use pkgconfig to find gnutls. Remove old static + linking stuff that was only needed for rcd. + + * acinclude.m4: remove gnutls stuff + + * libsoup.pc.in: Use Requires rather than putting xml/ssl + dependencies directly into Libs/Cflags. From Mikhail Zabaluev. + #343340. + + * libsoup/Makefile.am (libsoup_2_2_la_LDFLAGS): fix build on + cygwin. From "Cygwin Ports maintainer", #321827. + +2006-07-24 Dan Winship <danw@novell.com> + + * configure.in: 2.2.96. bump AGE and CURRENT for new API + + * NEWS: update + + * libsoup/soup-xmlrpc-message.c (soup_xmlrpc_message_from_string): + New, from Fernando Herrera, bug 348532. + +2006-07-21 Dan Winship <danw@novell.com> + + * libsoup/soup-auth.c (soup_auth_new_from_header_list): if the + constructed auth doesn't have a realm, it's invalid, as per RFC + 2617. Based on a patch from Nate Nielsen on libsoup-list. + (soup_auth_get_realm): remove "if available" from docs; all auths + always have a realm. + + * libsoup/soup-message-server-io.c (get_response_headers): If the + server handler set a Content-Length header on the message, don't + add a second one. (Preserves compatibility with an old hacky way + that people might have been handling HEAD from SoupServer.) + + * README: update to mention mailing list and bugzilla + + * HACKING: kill this since there's nothing here that isn't either + obvious, or redundant with the README + +2006-07-21 Dan Winship <danw@novell.com> + + * libsoup/soup-server-message.c (soup_server_message_init): + initialize encoding to SOUP_TRANSFER_CONTENT_LENGTH rather than + SOUP_TRANSFER_UNKNOWN, since SOUP_TRANSFER_UNKNOWN has never + actually worked here, and so there was an undocumented requirement + that you manually set the encoding on every response + (which SoupServer itself was not doing on internal errors). + Problem pointed out by Dennis Jacobfeuerborn on libsoup-list. + (soup_server_message_set_encoding): reject the new + SoupTransferEncoding values, for compatibility + + * libsoup/soup-message.h (SoupTransferEncoding): Clarify that + SOUP_TRANSFER_UNKNOWN is essentially an error value, since in the + public API, it always has been, due to bugs. Add some new values, + currently just for internal use: SOUP_TRANSFER_NONE (for cases + like HEAD which never have a body), SOUP_TRANSFER_EOF (to replace + SOUP_TRANSFER_UNKNOWN), and SOUP_TRANSFER_BYTERANGES (which isn't + actually implemented yet). + + * libsoup/soup-message.c (soup_message_get_request_encoding, + soup_message_get_response_encoding): figure out the body encoding + being used by the request/response, including all the tricky + cases like HEAD/1xx/etc. + (soup_message_is_keepalive): if the response encoding is + SOUP_TRANSFER_EOF, then the message isn't keepalive. + + * libsoup/soup-message-client-io.c (parse_response_headers): use + soup_message_get_response_encoding. + + * libsoup/soup-message-server-io.c (parse_request_headers): use + soup_message_get_request_encoding. + (get_response_headers): use both soup_server_message_get_encoding + and soup_message_get_response_encoding, to properly distinguish + between the wire encoding and the alleged-by-headers encoding + (which differ for HEAD, etc). + + * libsoup/soup-message-io.c (io_error, read_body_chunk): + s/SOUP_TRANSFER_UNKNOWN/SOUP_TRANSFER_EOF/. + (io_body_state): if encoding is SOUP_TRANSFER_NONE, jump right to + SOUP_MESSAGE_IO_STATE_FINISHING. + + * libsoup/soup-server.c (request_finished): Check + soup_socket_is_connected() *before* soup_message_is_keepalive(), + since the message will be invalid if the client unexpectedly + dropped the connection. + + * tests/simple-httpd.c (server_callback): handle HEAD requests. + Remove no-longer-necessary soup_server_message_set_encoding() + call. + + * tests/get.c: add -d (debug) flag to print headers, and -h flag + to do a HEAD rather than GET + +2006-07-10 Dan Winship <danw@novell.com> + + * configure.in: 2.2.95.1, and bump SOUP_AGE/SOUP_CURRENT this + time. Pointed out by Daniel Holbach. + +2006-07-10 Dan Winship <danw@novell.com> + + * configure.in: 2.2.95 + + * NEWS: update + +2006-06-19 Dan Winship <danw@novell.com> + + * tests/Makefile.am (noinst_PROGRAMS): don't build xmlrpc-test + unless we have apache/php/xmlrpc-epi. Fixes the build. #345342 + + * configure.in: fix some quoting + +2006-06-14 Dan Winship <danw@novell.com> + + * configure.in: add tests for apache mod_php5 and xmlrpc-epi-php + + * tests/xmlrpc-test.c: XML-RPC regression test + + * tests/xmlrpc-server.php: PHP server for xmlrpc-test + + * tests/httpd.conf.in: add php stuff + + * tests/apache-wrapper.c (apache_cleanup): Use "graceful-stop" + rather than "stop", so that it stops listening on the socket + before exiting, so that we can immediately start another apache + (eg, in "make check"). + + * libsoup/soup-date.c (soup_mktime_utc): Fix a bug in leap-year + counting. + + * libsoup/soup-xmlrpc-message.c + (soup_xmlrpc_message_write_datetime): rename from + "..._write_time", to make it consistent with the XML-RPC type name + and the corresponding SoupXmlrpcResponse method. Also, fix it to + use the same ISO 8601 format as the spec, and use the right value + for the seconds field. + (soup_xmlrpc_message_write_base64): Change the buf arg to a + gconstpointer rather than a const char *. + + * libsoup/soup-xmlrpc-response.c (soup_xmlrpc_value_get_base64): + Return a GByteArray containing the decoded data, rather than + the base64-encoded string. + (soup_xmlrpc_value_dump_internal): Update for that (and don't + leak it). + (soup_xmlrpc_value_array_get_iterator, + soup_xmlrpc_value_array_iterator_get_value): Make these actually + work. + +2006-06-12 Dan Winship <danw@novell.com> + + * configure.in: 2.2.94 + + * NEWS: update + +2006-06-12 Dan Winship <danw@novell.com> + + * docs/reference/client-howto.xml: + * docs/reference/server-howto.xml: New client and server API + tutorials. + + * docs/reference/*: reorganize, regenerate, fill in some missing + pieces, etc + + * libsoup/soup-connection.c (soup_connection_new): document the + varargs param + + * libsoup/soup-date.h: sync prototypes to declarations for gtk-doc. + + * libsoup/soup-headers.c (soup_headers_parse_response): fix typo + in doc. + +2006-06-12 Dan Winship <danw@novell.com> + + * libsoup/soup-xmlrpc-response.c (soup_xmlrpc_value_get_int, + soup_xmlrpc_value_get_double): Further fixes from Brent Smith. + #344458. + (soup_xmlrpc_value_get_boolean): Similar fix, plus actually set + the output parameter and make the return value match the other + get_* methods. + +2006-06-09 Dan Winship <danw@novell.com> + + * configure.in: Add tests for apache, output tests/httpd.conf + + * tests/htdigest: + * tests/htpasswd: + * tests/httpd.conf.in: Apache 2.2 config files for auth-test + + * tests/apache-wrapper.c (apache_init, apache_cleanup): functions + to start/stop apache + + * tests/auth-test.c: Use apache-wrapper functions to start a local + apache process to test authentication against, since the auth-test + tree at developer.ximian.com went missing a long time ago. #311825 + + * tests/Makefile.am (auth_test_SOURCES): use apache-wrapper.c + (TESTS): include auth-test if HAVE_APACHE. + + * libsoup/soup-session.c (lookup_auth): Fix this in the case of a + URI pointing to a directory rather than a file. + +2006-06-08 Dan Winship <danw@novell.com> + + * libsoup/soup-xmlrpc-response.c (soup_xmlrpc_value_get_int, + soup_xmlrpc_value_get_double, soup_xmlrpc_value_get_boolean): + Check return value of strtol/g_ascii_strtod correctly. #344222, + patch from Brent Smith. + +2006-06-07 Dan Winship <danw@novell.com> + + * libsoup/soup-xmlrpc-response.c + (soup_xmlrpc_response_from_string): record whether or not the + response was a fault. + (soup_xmlrpc_response_is_fault): test that. #343973, patch from + Brent Smith. + +2006-05-29 Dan Winship <danw@novell.com> + + * configure.in: 2.2.93 + + * NEWS: update + +2006-05-29 Dan Winship <danw@novell.com> + + * libsoup/soup-message-io.c (SoupMessageIOState): add a new state + "FINISHING" which means "done I/O, but not yet done processing and + cleanup" before "DONE" (which now always means "completely done"). + (soup_message_io_stop): disconnect the socket if the read state is + "< FINISHING", not "!= DONE". + (io_error): on an EOF-that-signals-end-of-data, set state to + FINISHING and run io_read(). + (io_read, io_write): remove the g_return_if_fails from before. + s/DONE/FINISHING/ in most places. In the FINISHING handler, stop + listening for the readable/writable signal (eg, so we don't end up + reading a following pipelined request), and set the state to DONE. + (soup_message_io_unpause): Only reconnect the readable/writable + signals if the io state isn't DONE. Guard the calls to + io_read/io_write better so that it's safe to call this even after + they are both DONE, since it may be easier for us to test that + than for the caller to. + + Fixes 334469, 342640, and another bug caused by the earlier + workaround to 334469. Based on patches and analysis from William + Jon McCann and Armin Bauer. + + * tests/simple-proxy.c (main): add g_thread_init (NULL) to make + this work again. (Pointed out by Alex Larsson) + +2006-05-26 Dan Winship <danw@novell.com> + + * libsoup/soup-socket.c: #include <sys/time.h> for struct timeval. + #342048 + + * libsoup/soup-connection.c (soup_connection_connect_sync): Start + SSL after CONNECTing! Doh. Part of bnc #174255. + (SoupConnectionMode): new enum for the three types of + SoupConnection (direct, proxy, tunnel). + (set_property): set priv->mode according to proxy_uri and + conn_uri. + (socket_connect_result, soup_connection_connect_sync): use + priv->mode to decide whether or not to tunnel. + (send_request): Only pass TRUE for is_proxy to + soup_message_send_request if mode is PROXY, not if it's TUNNEL. + (Also part of bnc #174255). + +2006-05-26 Dan Winship <danw@novell.com> + + * libsoup/soup-message-io.c (soup_message_io_in_progress): tests + if IO is currently in progress on a message. + + * libsoup/soup-session-async.c (run_queue): don't process messages + that are io_in_progress. #342545, fix based on analysis from Wang + Xin. (In the future we may want to re-fix this by adding a + REQUEUED message status separate from QUEUED.) + +2006-05-22 Dan Winship <danw@novell.com> + + * libsoup/soup-session.c (cleanup_hosts): Don't free the hosts + while holding host_lock; that's not allowed and can cause + deadlock. #309867. Based on a patch from Veerapuram Varadhan for + part of bnc #174255. + +2006-04-10 Dan Winship <danw@novell.com> + + * configure.in: bump version to 2.2.92 + + * NEWS: update + +2006-04-10 Dan Winship <danw@novell.com> + + * libsoup/soup-message-io.c (io_write, io_read): g_return_if_fail + if these get called after the IO is done. This isn't supposed to + happen, but apparently does. Workaround for #334469. + + * libsoup/soup-auth-digest.c (qop_types, algorithm_types): + NULL-terminate these so we don't crash when trying to parse an + invalid value. (Flip side of the previous #328615 patch.) + +2006-04-02 Dan Winship <danw@novell.com> + + * libsoup/soup-server-auth.c (soup_server_auth_context_challenge): + Write out correct digest algorithm value. #328615. + + * libsoup/soup-headers.c (soup_headers_parse_request): Rewrite + Request-Line-parsing code to not have a lame max length. #335040. + + * Makefile.am (install-data-local): Install the .pc file mode 644, + not 755. #330878 + + * libsoup/soup-auth-digest.c: + * libsoup/soup-auth.c: + * libsoup/soup-message-client-io.c: + * libsoup/soup-message-server-io.c: + * libsoup/soup-message.c: + * libsoup/soup-method.c: + * libsoup/soup-server-auth.c: + * tests/get.c: replace locale-ish strcasecmps with + g_ascii_strcasecmp + + * libsoup/*.c: fix most signed/unsigned mismatch warnings + +2006-03-03 Dan Winship <danw@novell.com> + + * configure.in: bump version to 2.2.91. + + * NEWS: Update + +2006-03-03 Dan Winship <danw@novell.com> + + * libsoup/soup-dns.c (soup_dns_lookup_resolve_async): Take a + GMainContext as well, and update the resolution code to dispatch + each lookup result in the correct context. + + * libsoup/soup-address.c (soup_address_resolve_async_full): New + method that takes a GMainContext to pass to + soup_dns_lookup_resolve_async. + + * libsoup/soup-socket.c (soup_socket_connect): Use + soup_address_resolve_async_full. Fixes a problem reported by Armin + Bauer. + + * configure.in: update to require glib 2.6, since apparently the + code does. + +2006-02-25 Veerapuram Varadhan <vvaradhan@novell.com> + + * libsoup/soup-connection.c: + * libsoup/soup-session.c: + * libsoup/soup-socket.c: add a "timeout" property, + which gets passed from server to socket, and session to connection + to socket, allowing blocking non-responsive sync connections to + return. Combination of "EAGAIN" && "Blocking" connection is treated + as error and the connection will be terminated and the control + is returned to the caller immediately. + +2006-02-02 Tor Lillqvist <tml@novell.com> + + * configure.in: Don't use getaddrinfo() etc or try to support IPv6 + on Windows, as they are present by default on XP only. We do want + to support Windows 2000, too. + +2005-12-21 Dan Winship <danw@novell.com> + + * libsoup/soup-date.c (soup_date_iso8601_parse): fix two bugs in + the YYYYMMDD case. + + * tests/date.c: add three more ISO 8601 cases, to exercise all the + code paths. + + #324671, from Emmanuele Bassi + +2005-11-25 Dan Winship <danw@novell.com> + + * README: sync to text on wiki, and point to wiki + + * TODO: moved to http://live.gnome.org/LibSoup_2fToDo + +2005-11-17 Dan Winship <danw@novell.com> + + * libsoup/soup-message-io.c (io_cleanup): clear priv->io_data + right away, to protect against this being re-entered mid-cleanup + (when we unref the connection). #321208, based on a patch from + Jedy Wang. + +2005-11-16 Dan Winship <danw@novell.com> + + * libsoup/soup-xmlrpc-message.c + (soup_xmlrpc_message_start_member): add the "name" element to the + struct member. #321362, patch from Sebastian Bauer. + +2005-11-10 Dan Winship <danw@novell.com> + + * configure.in: bump version to 2.2.90. This will not be + officially released, but once these patches have gotten some + testing they may be pulled up to the gnome-2-12 branch. + + * libsoup/soup-connection.c: + * libsoup/soup-server.c: + * libsoup/soup-session.c: + * libsoup/soup-socket.c: add an "async-context" property, + which gets passed from server to socket, and session to connection + to socket, allowing async usage outside the main thread. Based on + patches from Armin Bauer and Jürg Billeter. + + * libsoup/soup-misc.c (soup_add_io_watch, soup_add_idle, + soup_add_timeout): utility routines to add watches, idles, and + timeouts to non-default GMainContexts. + + * libsoup/soup-message-io.c (io_write): set the read state + appropriately after writing a "100 Continue" response + (io_read): More 100-Continue stuff. I don't think this is quite + right so it will probably change again later. + +2005-11-01 Dan Winship <danw@novell.com> + + * docs/reference/libsoup-docs.sgml: tell it to generate an index + + * docs/reference/tmpl/*.sgml: regen with newer gtk-doc + +2005-11-01 Dan Winship <danw@novell.com> + + * libsoup/soup-connection.c (set_current_request, + clear_current_request): Cast the argument to + g_object_add/remove_weak_pointer to the wrong type, to make gcc + 4.1 happy, because C is stupid and "void **" means "a pointer to a + void *", not "a pointer to any kind of pointer". + + * libsoup/soup-xmlrpc-response.c + (soup_xmlrpc_value_dump_internal): fix gccism. #320349, from + Roland Illig. + +2005-10-27 Dan Winship <danw@novell.com> + + * libsoup/soup-socket.c (soup_socket_client_new_async, + soup_socket_client_new_sync): unref the SoupAddress passed to + soup_socket_connect to avoid a leak. Based on a patch from Wang + Xin. + (socket_read_watch, read_from_network, socket_write_watch, + soup_socket_write): request and handle G_IO_ERR and G_IO_HUP + events when polling, since poll() will return them whether or not + you asked for them, but glib will ignore them unless you did, + which will result in CPU suckage if such an error occurs. #319305, + patch from Jonathan Matthew. + +2005-10-27 Dan Winship <danw@novell.com> + + bgo #316313 / bnc #116762, and probably also bgo #318252 + + * libsoup/soup-message-io.c (soup_message_io_stop): clear io->conn + after releasing it, to make sure we can't accidentally release it + twice. + + * libsoup/soup-connection.c (clear_current_request): Call + soup_message_io_stop() on the cleared request. + + * libsoup/soup-connection-ntlm.c (ntlm_authorize_post): do a + little dance here to make sure the session can't queue another + message on the connection while we're in the process of requeuing + the original one. + +2005-08-30 Tor Lillqvist <tml@novell.com> + + * libsoup-zip.in: Include documentation in developer zipfile. + +2005-08-22 Dan Winship <danw@novell.com> + + * libsoup/soup-soap-message.c (soup_soap_message_class_init): Call + g_type_class_add_private. + + * configure.in: Bump to 2.2.6.1 + + * NEWS: update + +2005-08-22 Dan Winship <danw@novell.com> + + * configure.in: Bump to 2.2.6. Bump SOUP_AGE and SOUP_CURRENT for + soup_server_get_socket() addition. + + * NEWS: update + +2005-08-22 Dan Winship <danw@novell.com> + + * libsoup/soup-connection.c (set_current_request, + clear_current_request): Fix g_object_add/remove_weak_pointer usage + to prevent a crash when canceling a request. From Tambet. + +2005-08-16 Dan Winship <danw@novell.com> + + Fix a connection leak reported by Tambet. + + * libsoup/soup-connection.c (send_request): rather than tracking + the message progress via signals, call + soup_message_send_request_internal() and have it call + soup_connection_release() when it's done. + (request_restarted, request_done): gone + (clear_current_request): handle disconnecting (if necessary) and + updating last_used time here. + (soup_connection_release): Call clear_current_request(). + (dispose): Call clear_current_request() + + * libsoup/soup-message-client-io.c + (soup_message_send_request_internal): New. Takes a SoupConnection + in addition to the other args, and passes that on to + soup-message-io. + + * libsoup/soup-message-io.c (SoupMessageIOData): add a + SoupConnection field. + (io_cleanup): if io->conn is set, unref it. + (soup_message_io_stop): if io->conn is set, and we ended in a + clean state, call soup_connection_release() on it. + (soup_message_io_client): Add a SoupConnection arg, which gets + reffed and stored in io->conn. + + * TODO: misc updates + +2005-08-15 Dan Winship <danw@novell.com> + + * libsoup/soup-connection.h (soup_connection_new): + * libsoup/soup-server.h (soup_server_new): + * libsoup/soup-session-async.h (soup_session_async_new_with_options): + * libsoup/soup-session-sync.h (soup_session_sync_new_with_options): + * libsoup/soup-socket.h (soup_socket_new): use G_GNUC_NULL_TERMINATED. + + * libsoup/soup-types.h (G_GNUC_NULL_TERMINATED): steal the + definition of this from glib 2.8 for use when compiling against + glib 2.6. + +2005-08-15 Tambet Ingo <tambet@ximian.com> + + * libsoup/soup-socket.c (update_fdflags, set_property): Fix compilation + errors. + + * libsoup/soup-server.c (soup_server_get_listener): ditto. + +2005-08-12 Dan Winship <danw@novell.com> + + * libsoup/soup-server.c (soup_server_get_listener): new method to + get the server's listening socket. + + * libsoup/soup-socket.c: add a new "cloexec" property, to set + FD_CLOEXEC on the socket. Update everything for that. + +2005-08-05 Dan Winship <danw@novell.com> + + * libsoup/soup-socket.c (finalize): Free priv->read_buf. From + Tambet. + (soup_socket_connect): Make sure that get_iochannel() gets called + if the connect succeeds right away, or the socket will fail on + the first read or write. [#312540] + +2005-08-01 Dan Winship <danw@novell.com> + + * configure.in: drop version back down to 2.2.5 and + SOUP_API_VERSION back to 2.2; due to various snafus, there has + never yet been an official release of the 2.4 API and the GNOME + 2.12 betas have been shipping with libsoup 2.2 tarballs (while + jhbuild has been using 2.4, with evolution and related packages + having configure hacks to build against either). As there never + ended up being any API-incompatible changes in the 2.4 series, we + can just merge it back into the 2.2 series and kill off 2.4. + + * NEWS: Copy in the 2.2-series news from the gnome-2-10 branch, + and add new NEWS + + * libsoup-zip.in: s/2.2/@SOUP_API_VERSION@/ + + * libsoup/Makefile.am (libsoupincludedir, lib_LTLIBRARIES, + libsoup_2_2_la_LDFLAGS, libsoup_2_2_la_LIBADD, + libsoup_2_2_la_SOURCES): s/4/2/ in all the places automake won't + let us use a variable. + +2005-08-01 Dan Winship <danw@novell.com> + + * libsoup/soup-md5-utils.c (soup_md5_final_hex): Finalize a + SoupMD5Context and write out the digest in hex digits. + + * libsoup/soup-auth-digest.c (authenticate, compute_response): + * libsoup/soup-server-auth.c (check_digest_passwd): Use that, + rather than duplicating the code in both places here. + + Patch from Wim Lewis. + +2005-07-15 Dan Winship <danw@novell.com> + + * libsoup/soup-session.c (redirect_handler): Allow relative URIs, + since some servers are lame. Based on a patch from Jean-Yves + Lefort. [#270688] + + * tests/uri-parsing.c: add some more tests to make sure that + things that should be %-escaped do get %-escaped + +2005-07-06 Tor Lillqvist <tml@novell.com> + + * libsoup/soup-date.c (soup_gmtime): Mention in the doc comment + that gmtime() is thread-safe on Windows. + (soup_date_generate): Use soup_gmtime() instead of gmtime_r(). + +2005-06-14 Dan Winship <danw@novell.com> + + * configure.in: check for gmtime_r + + * libsoup/soup-date.c: date/time-manipulation functions + + * libsoup/soup-xmlrpc-message.c: + * libsoup/soup-xmlrpc-response.c: XMLRPC message classes, from + Mariano Suarez-Alvarez, Fernando Herrera, and Jeff Bailey. + [#300227] + + * tests/date.c: soup-date test code + + * tests/getbug.c: XMLRPC test code. (Should be switched to use + bugzilla.gnome.org once bgo supports XMLRPC.) + + * TODO: XMLRPC is implemented now (but shares the problem with + SOAP that the API is not very good). + +2005-06-14 Dan Winship <danw@novell.com> + + * libsoup/*.[ch]: add/fix gtk-doc comments, make functions match + prototypes, etc + + * docs/reference/*: update, fix, etc + +2005-06-13 Tor Lillqvist <tml@novell.com> + + * configure.in: Check also for inet_ntop(). Pre-cache knowledge + that we do have inet_pton() and inet_ntop() on Windows (because we + implement them ourselves in soup-dns.c). + + * libsoup/soup-dns.c (inet_pton, inet_ntop): Fix the Win32 + implementations, they were completely bogus. + (soup_dns_ntop): Make it compile if HAVE_INET_NTOP. + +2005-06-08 Dan Winship <danw@novell.com> + + * libsoup/soup-connection-ntlm.c (ntlm_authorize_pre): Fix this to + use just the domain name for the domain, not the whole + DOMAIN\username. Based on a patch by Jeroen Hautekeete in #306877. + +2005-05-26 Dan Winship <danw@novell.com> + + * libsoup/soup-session.c (cleanup_hosts): lock host_lock around + this, since it can be called from set_property(). Possible fix for + bnc #81641. + +2005-05-05 Dan Winship <danw@novell.com> + + * docs/reference/Makefile.am (SCANGOBJ_OPTIONS): Use + --type-init-func to force g_thread_init to be called. [#302674] + +2005-04-18 Tor Lillqvist <tml@novell.com> + + * configure.in: Call AC_LIBTOOL_WIN32_DLL. Check for Win32, set + Automake conditional OS_WIN32. Pre-cache information that we do + have getaddrinfo(), getnameinfo(), and IPv6 on Win32. (The tests + wouldn't notice as they don't include the necessary headers or + link with -lws2_32. Easiest to just pre-cache it.) + + * libsoup-zip.in: New file, to build zipfile-based distribution of + libsoup for Win32. + + * Makefile.am (EXTRA_DIST) + * configure.in (AC_OUTPUT): Add libsoup-zip(.in). + + * libsoup/Makefile.am: Use -no-undefined on Win32. Link with + WinSock library -lws2_32. + + * libsoup/soup-portability.h: New file. On Unix it includes the + traditional BSD socket etc headers. On Win32 it includes + winsock2.h and ws2tcpip.h. + + * libsoup/*.c + * libsoup/*.h: Correspondingly, don't include the BSD socket API + headers directly. + + * libsoup/soup-address.h + * libsoup/soup-dns.h: Include soup-portability.h + + * libsoup/soup-address.c (soup_address_class_init): This function + should get called before libsoup uses the WinSock API, so this is + a good place to call WSAStartup(). + + * libsoup/soup-auth-digest.c (get_protection_space): Use + g_strsplit() instead of the relatively unportable strtok_r(). + + * libsoup/soun-dns.c: Remove unused headers. Implement + inet_pton() and inet_ntop() on Win32 using WSAStringToAddress() + and WSAAddressToString(). + + * libsoup/soup-socket.c (SOUP_CLOSE_SOCKET, SOUP_IS_SOCKET_ERROR, + SOUP_IS_INVALID_SOCKET, SOUP_IS_CONNECT_STATUS_INPROGRESS): + Portability macros. + (soup_socket_class_init): Call soup_address_get_type() to make + sure WSAStartup() gets called (through soup_address_class_init()). + (update_fdflags): Use ioctlsocket(FIONBIO) on Win32. + (soup_socket_write): Conditionalize SIGPIPE use. + + * tests/get.c: mkdir() is different in Microsoft's C library. + + * tests/simple-httpd.c: Rename TRY_AGAIN label to AGAIN to avoid + some clash with winsock2.h (which includes windows.h). The Win32 + headers pollute the namespace wildly. + +2005-04-15 Dan Winship <danw@novell.com> + + * libsoup/soup-dns.c (resolve_name): make this work with + pre-EAI_OVERFLOW glibc [#300620] + +2005-04-12 Dan Winship <danw@novell.com> + + * configure.in: Remove the various gethostbyname_r checks and just + check for getnameinfo/getaddrinfo. + + * libsoup/soup-dns.c: de-nastify. Make this use threads instead of + forking. Change the API around a bunch in the process. + + * libsoup/soup-address.c: Update for soup-dns changes + + * tests/dns.c: take multiple hostnames on the command line and + resolve them all at once (patch from tml) + +2005-04-11 Dan Winship <danw@novell.com> + + * configure.in: require glib-2.0 >= 2.4.0 + + * libsoup/*.c: use G_DEFINE_TYPE and + g_type_class_add_private/G_TYPE_INSTANCE_GET_PRIVATE + + * libsoup/soup-types.h: kill SOUP_MAKE_TYPE and + SOUP_MAKE_TYPE_WITH_IFACE + + * tests/revserver.c: use GThread. (patch from tml) + +2005-04-11 Dan Winship <danw@novell.com> + + * configure.in: bump version to 2.3.0. bump SOUP_API_VERSION to + 2.4 + + * libsoup.pc.in: rename from libsoup-2.2.pc.in + + * Makefile.am (EXTRA_DIST, pkgconfig_DATA, install-data-local): + install the .pc file by hand, renaming it to include the + SOUP_API_VERSION + + * libsoup/Makefile.am: s/2.2/2.4/ + +2005-03-09 Dan Winship <danw@novell.com> + + * libsoup/soup-gnutls.c (soup_gnutls_read): return G_IO_STATUS_EOF + if gnutls returns 0. [#73352] + (verify_certificate): put an #ifdef around + GNUTLS_CERT_NOT_TRUSTED so it works with gnutls 1.2.x. [#57811] + +2005-01-08 Not Zed <NotZed@Ximian.com> + + ** See ximian bug #70323. + + * libsoup/soup-connection-ntlm.c: replace all unsigned long/long + types with guint32, as the code needs 32 bit longs. + +2004-10-20 Dan Winship <danw@novell.com> + + * libsoup/soup-gnutls.c: Commit the alleged changes from the 10-06 + commit, which somehow did not actually get committed then. + + * libsoup/soup-connection.c (SoupConnectionPrivate): add a flag + indicating whether or not the connection is connected. + (tunnel_connect_finished): If successful, set connected. If the + server returns a 3xx response, translate it to 407 (under the + assumption that it's trying to redirect us to an HTML login page, + as in bug 68531). Use soup_socket_start_proxy_ssl() rather than + soup_socket_start_ssl(). + (socket_connect_result, soup_connection_connect_sync): If + successful, set connected + (soup_connection_disconnect): Don't emit "disconnected" if we + aren't yet connected, or the message that was waiting for this + connection may get stranded in the queue. (also part of 68531) + + * libsoup/soup-socket.c (soup_socket_start_proxy_ssl): New, starts + SSL and lets the caller pass the expected hostname. Fixes a + problem where SSL certification validation would always fail if + you used a proxy, because it was comparing the cert against the + proxy's hostname. (68583) + +2004-10-06 Dan Winship <danw@novell.com> + + * libsoup/soup-ssl.h (SoupSocketError): add + SOUP_SSL_ERROR_CERTIFICATE. + + * libsoup/soup-gnutls.c (do_handshake): Pass the GError to + verify_certificate. + (verify_certificate): Set the GError appropriately rather than + spewing g_warnings. + + * libsoup/soup-socket.c (read_from_network, soup_socket_write): If + the GIOChannel operation returns an error, store it as GOBject + data on the socket (as a hack so soup-message-io.c can access it + without us needing to change SoupSocket's API). + + * libsoup/soup-message-io.c (io_error): peek at the socket's + "last_error" datum and set the message's status to SSL_FAILED + (with the GError's message string) rather than IO_ERROR, if + appropriate. For 64414. + +2004-09-30 Dan Winship <danw@novell.com> + + * libsoup/soup-gnutls.c (soup_gnutls_init): Add this, with some + extra initialization needed for libgcrypt 1.2 or higher. Fixes + 66342. + (soup_ssl_get_client_credentials, + soup_ssl_get_server_credentials): Call soup_gnutls_init(). + +2004-08-26 Dan Winship <danw@novell.com> + + * configure.in: Bump version to 2.2.0. + + * AUTHORS: Update this to reflect the last 2 years. + + * NEWS: Brief summary of 1.99.x -> 2.2 changes + + * README, TODO: Updates + +2004-08-26 Dan Winship <danw@novell.com> + + * libsoup/*: add/fix lots of gtk-doc comments + + * libsoup/soup-misc.c (soup_str_case_hash, soup_str_case_equal): + Fix bug noticed while documenting. (We were using the + locale-case-insensitive functions rather than the g_ascii_ ones.) + + * libsoup/soup-message.h (SoupMessageFlags): remove the (never + implemented) NO_PIPELINE and NO_COOKIE flags. + + * docs/reference/tmpl/*.sgml: Regenerate, fill in some stuff. + There are still problems here with gtk-doc not recognizing many of + the objects in libsoup... + +2004-08-13 JP Rosevear <jpr@novell.com> + + * configure.in: bump version, libtool number + +2004-08-09 Dan Winship <danw@novell.com> + + * libsoup/soup-connection.c (soup_connection_connect_sync): Don't + use conn after emitting the "connect_result" signal, since it + might be destroyed by that. Based on a patch from hpj. + +2004-08-02 Dan Winship <danw@novell.com> + + * libsoup/soup-uri.h: Add flag "broken_encoding" to SoupUri. + + * libsoup/soup-uri.c: (soup_uri_to_string): if broken_encoding is + set, don't re-encode the URL parts. Based on a patch by + Alfred.Peng@Sun.COM. + +2004-07-19 JP Rosevear <jpr@novell.com> + + * configure.in: bump version, libtool number + +2004-07-15 Dan Winship <danw@novell.com> + + * libsoup/soup-session-sync.c (send_message): Simplify this. If + the message comes back from soup_connection_send_request not + FINISHED, get a new connection rather than reusing the old one. + This fixes a race condition in which a connection could end up + double-booked, and fixes the handling of messages that get + redirected to another server. + +2004-07-13 Dan Winship <danw@novell.com> + + * libsoup/soup-session.c (connect_result): If the connection + attempt succeeded, reserve the connection before releasing + host_lock. Otherwise, another thread might find it in the + connection pool before the caller can queue a message on it. + #60693 + + * libsoup/soup-session-async.c (got_connection): Call + soup_connection_release(), since we don't have a specific message + in mind for the connection, so we need it to be considered idle. + + * libsoup/soup-connection.c (soup_connection_release): New + function, to undo a soup_connection_reserve(). + (soup_connection_send_request, soup_connection_reserve, + soup_connection_authenticate, soup_connection_reauthenticate): + Document these + +2004-07-12 Dan Winship <danw@novell.com> + + * libsoup/soup-session-sync.c (send_message): signal the + "connections available" condition after the message finishes. Duh. + + * libsoup-2.2.pc.in (Cflags, Libs): add XML_CFLAGS and XML_LIBS + +2004-07-08 Dan Winship <danw@novell.com> + + * libsoup/soup-soap-response.c: Revert previous change for now; it + breaks the build on distros with older libxmls. + +2004-07-08 Dan Winship <danw@novell.com> + + * tests/dict.c: Basic SOAP test, using Aonaware's SOAP->DICT + gateway + +2004-07-07 Fernando Herrera <fherrera@onirica.com> + + * libsoup/soup-soap-response.c: (finalize), (init), + (soup_soap_response_from_string): Use a parse context for the + xml document, so we can safely use the option to ignore + blank spaces and '\n'. + +2004-07-06 Dan Winship <danw@novell.com> + + * libsoup/soup-uri.c (soup_uri_new_with_base): if the protocol is + http or https, require a hostname. For #61049 + + * tests/uri-parsing.c (rel_tests, do_uri): Update for that + +2004-06-03 JP Rosevear <jpr@novell.com> + + * configure.in: bump version to 2.1.11, libtool number + +2004-06-01 Dan Winship <danw@novell.com> + + * libsoup/soup-address.c: Redo the various IPv4/IPv6-abstracting + macros to not use ?: expressions as lvalues, since that's + apparently a GNU extension. + (soup_address_resolve_async): Use a timeout rather than an idle + handler to poll the dns result. (soup-dns really should be + rewritten to not require polling, but this is easier for now.) + #59240 + + * libsoup/soup-server.c (call_handler): Don't use GNU-only + non-constant structure initialization + + * tests/dns.c: Simple test of the dns code + + * tests/Makefile.am (noinst_PROGRAMS): build it + +2004-05-19 JP Rosevear <jpr@novell.com> + + * configure.in (SOUP_API_VERSION): bump version, libtool numbers + +2004-05-18 Dan Winship <danw@novell.com> + + * libsoup/soup-ssl.h: + * libsoup/soup-nossl.c: define some GError codes and stuff + + * libsoup/soup-gnutls.c: add missing #include <gnutls/x509.h> + (do_handshake): when returning G_IO_STATUS_AGAIN, set the GError + to SOUP_SSL_ERROR_HANDSHAKE_NEEDS_READ or _NEEDS_WRITE + appropriately. + + * libsoup/soup-socket.c (soup_socket_write): Handle + SOUP_SSL_ERROR_HANDSHAKE_NEEDS_READ, by setting an io watch for + G_IO_IN instead of G_IO_OUT. Fixes the rcd-sucking-up-all-cpu bug + (#58434) + (read_from_network): Handle the reverse case (which would cause + hanging rather than spinning, and might be the cause of some + connector 1.5 slowness?) + +2004-05-11 Dan Winship <danw@novell.com> + + * libsoup/soup-misc.c (soup_signal_connect_once): Do this less + kludgefully, using the magic of GClosure, to fix x86_64 problems + reported by snorp. + +2004-05-04 Sivaiah Nallagatla <snallagatla@novell.com> + + * libsoup/soup-soap-message.c (finalize) : free + the elements of priv structure before freeing priv + +2004-04-20 Dan Winship <danw@ximian.com> + + * libsoup/soup-connection-ntlm.c (ntlm_authorize_post): if + re-sending the message, call soup_message_restarted() + (send_request): Connect to "restarted" signal, and remove the 401 + handlers from there; doing it here didn't work because if the + connection was closed, the message would be re-sent on a new + connection, but would still have the handlers from the old + connection attached to it, which would make authentication fail. + + * libsoup/soup-message-handlers.c (soup_message_run_handlers): + Copy the handler list before starting, to protect against handlers + that modify the handler list. + +2004-04-15 Dan Winship <danw@ximian.com> + + * libsoup/soup-connection.c (soup_connection_connect_sync): + Connect to the socket's "disconnect" signal. (We were only doing + this from the async version before, which meant that synchronous + SoupConnections could outlive their sockets and start causing + errors.) #57004 + + * libsoup/soup-connection-ntlm.c (send_request): Remove the old + Authorization header before adding a new one. + +2004-04-02 JP Rosevear <jpr@ximian.com> + + * configure.in: bump version, libtool number + +2004-03-15 Dan Winship <danw@ximian.com> + + * libsoup/soup-soap-message.c (soup_soap_message_persist): Fix up + types to kill a warning with -Wall -O2 + +2004-03-05 JP Rosevear <jpr@ximian.com> + + * configure.in: bump version, libtool number + +2004-03-02 Dan Winship <danw@ximian.com> + + * libsoup/soup-dns.c (check_hostent): Only loop on EINTR if + bytes_read is -1, since the value of errno is irrelevant when + bytes_read is 0. Probably #54960. + +2004-03-01 Rodrigo Moya <rodrigo@ximian.com> + + * libsoup/soup-soap-response.h: removed not-implemented function's + prototype. + +2004-02-27 Rodney Dawes <dobey@ximian.com> + + * configure.in: + * libsoup/Makefile.am: Use a different variable for linking to the + static version of gnutls, so we don't pull the .a files into the .pc + + Fixes #53346 + +2004-02-20 Dan Winship <danw@ximian.com> + + * libsoup/soup-message-io.c (read_metadata, read_body_chunk, + write_data): Pass gsize *, not guint *, to soup_socket_read/write, + to make this work on 64-bit platforms. (Grr. C type checking + sucks.) #54631 + + * tests/revserver.c: Likewise + +2004-02-18 Rodrigo Moya <rodrigo@ximian.com> + + Fixes #54512 + + * libsoup/soup-soap-response.c (soup_soap_parameter_get_int_value): + don't leak the value returned from xmlNodeGetContent(). + (soup_soap_parameter_get_string_value, + soup_soap_parameter_get_property): return a g_strdup'ed + string, not the value returned by xmlNodeGetContent, so that + callers can use g_free, and not xmlFree. + + * libsoup/soup-soap-response.h: made soup_parameter_get_property + not return const. + +2004-02-17 Dan Winship <danw@ximian.com> + + * libsoup/soup-soap-message.h (SOUP_IS_SOAP_MESSAGE_CLASS): Fix a + typo. #54433, from Mariano Suarez-Alvarez. + + * libsoup/soup-soap-response.h (SOUP_IS_SOAP_RESPONSE_CLASS): + Likewise + +2004-02-17 Rodney Dawes <dobey@ximian.com> + + * libsoup/soup-message.c (soup_message_new): HTTP connections require + a hostname, and we also hash on the host for message queueing in the + session, if the host is NULL we free the SoupUri and return NULL + +2004-02-14 Dan Winship <danw@ximian.com> + + * configure.in: Use POSIX-compliant "test $foo = bar", rather than + GNU-only "test $foo == bar". #54354, from Julio M. Merino Vidal. + +2004-02-12 Joe Shaw <joe@ximian.com> + + * libsoup/soup-dns.c (check_hostent): Call read() in a do-while + loop to prevent DNS errors from short reads. + +2004-02-11 Joe Shaw <joe@ximian.com> + + * configure.in: Bumped version number to 2.1.7 and libtool + current. + +2004-02-11 Dan Winship <danw@ximian.com> + + * libsoup/soup-connection.c (soup_connection_disconnect): Update + Joe's comment here with a gory explanation of exactly what's going + on. (It's not just an SSL bug either, it affects all connections.) + +2004-02-10 Joe Shaw <joe@ximian.com> + + * libsoup/soup-connection.c (soup_connection_disconnect): Add a + workaround for SSL connections which time-out but don't close the + socket until we try sending data again later. + + * libsoup/soup-socket.c (soup_socket_connect, soup_socket_listen): + Don't free the sockaddr from soup_address_get_sockaddr(); we don't + own it, the SoupAddress does. + +2004-02-09 JP Rosevear <jpr@ximian.com> + + * configure.in: Bump libtool numbers + +2004-02-05 Dan Winship <danw@ximian.com> + + * libsoup/soup-session.c (soup_session_add_filter): Ref the filter + when adding it. + (soup_session_remove_filter): And unref it here (we were already + unreffing it in dispose().) + +2004-02-05 Joe Shaw <joe@ximian.com> + + * libsoup/soup-dns.c (soup_dns_entry_unref): Don't try to free the + hostent if it's NULL. + (soup_dns_entry_check_lookup): If the entry is resolved, but the + hostent is NULL, uncache it. + +2004-02-04 Dan Winship <danw@ximian.com> + + * libsoup/soup-connection-ntlm.c (ntlm_authorize_pre): Always + remove the WWW-Authenticate headers before returning, so the + session won't fall back to Basic auth. Also, leave the connection + in the "authenticating" state rather than setting it to + "authenticated". + (ntlm_authorize_post): Only requeue the message if it's in the + "authenticating" state (and set it to "authenticated"). Fixes an + "unepectedly disconnected" error if authentication fails. + +2004-02-03 Dan Winship <danw@ximian.com> + + * libsoup/soup-message-io.c (io_cleanup): Call + soup_message_io_stop so we don't get a callback on the io after + it's been cleaned up. + + * libsoup/soup-session.c (add_auth): Only remove the Authorization + header if we have another one to add. (Otherwise it messes up + SoupConnectionNTLM.) + + * libsoup/soup-socket.c (read_from_buf): Use memmove rather than + memcpy here, since the source and destination will overlap if + *nread is small and read_buf->len is large. (Noticed by valgrind, + #53625.) + +2004-02-02 Joe Shaw <joe@ximian.com> + + * libsoup/soup-gnutls.c (soup_gnutls_close): Call gnutls_bye() + with the GNUTLS_SHUT_WR flag (instead of RDWR) and check only for + GNUTLS_E_INTERRUPTED. GNUTLS_E_AGAIN will be returned by recv() + when there are no messages on the wire on a non-blocking socket. + This sends a SSL hangup message and then allows us to immediately + close the socket. + +2004-01-30 Rodrigo Moya <rodrigo@ximian.com> + + * configure.in: bumped version number to 2.1.6. + +2004-01-29 Rodrigo Moya <rodrigo@ximian.com> + + * libsoup/soup-soap-response.[ch] (soup_soap_parameter_get_property): + new function. + +2004-01-29 Rodrigo Moya <rodrigo@ximian.com> + + * libsoup/soup-soap-response.[ch] + (soup_soap_parameter_get_string_value): removed 'const' from return + type. + +2004-01-29 Joe Shaw <joe@ximian.com> + + * libsoup/soup-gnutls.c (verify_certificate): Initialize the + certificate before we try to use it. Ahem. + +2004-01-23 Joe Shaw <joe@ximian.com> + + * configure.in: Bump version to 2.1.5 and SOUP_RELEASE to 2 + +2004-01-21 Joe Shaw <joe@ximian.com> + + * configure.in: Require at least GnuTLS 1.0.0. + + * libsoup/soup-gnutls.c: Fix the use of deprecated GnuTLS + functions. + (verify_certificate): Use gnutls_x509_crt_import() and + gnutls_x509_crt_check_hostname() instead of + gnutls_x509_check_certificates_hostname(). + (init_dh_params): Use gnutls_dh_params_generate2() instead of + gnutls_dh_params_generate() and gnutls_dh_params_set(). + +2004-01-20 Joe Shaw <joe@ximian.com> + + * libsoup/soup-gnutls.c (soup_gnutls_close): gnutls_bye() doesn't + close the socket itself, so we need to do it or else our + connections stay in CLOSE_WAIT forever. + +2004-01-16 Jason Leach <leach@wam.umd.edu> + + * libsoup/Makefile.am: builddir != srcdir fixes. + +2004-01-14 Joe Shaw <joe@ximian.com> + + * libsoup/soup-gnutls.c (verify_certificate): Remove the + check for GNUTLS_CERT_CORRUPTED, it's not in 1.0.x. + +2004-01-12 JP Rosevear <jpr@ximian.com> + + * configure.in: bump version and libtool revision + +2004-01-12 Dan Winship <danw@ximian.com> + + * tests/simple-httpd.c (main): Add a g_thread_init() so this works + again. + +2004-01-10 Larry Ewing <lewing@ximian.com> + + * libsoup-2.2.pc.in (Libs): use LIBGNUTLS_LIBS in the substitution + string. + +2004-01-09 Joe Shaw <joe@ximian.com> + + * acinclude.m4: Include the libgnutls.m4 file. + + * configure.in: Remove manual checking for libgnutls-config and + use the AM_PATH_LIBGNUTLS so we can pass in a minimum required + version, which is 0.9.7 for now. + + * libsoup/Makefile.am: Some changes for the above change. + + * libsoup/soup-gnutls.c: Check for HAVE_SSL, not + HAVE_GNUTLS_GNUTLS_H. + (verify_certificate): Uncomment the SSL certificate hostname + check. + + * libsoup/soup-session.c (set_property): Be smart about flushing + our SSL credentials only when the CA file is set to something + different than it was before. + +2004-01-09 Harish K <kharish@novell.com> + * libsoup/soup-soap-response.c (soup_soap_response_from_string): + added code to ignore Header element, if present, while creating + response objects. + +2004-01-05 Dan Winship <danw@ximian.com> + + * configure.in: Remove no-longer-relevant socklen_t check + + * libsoup/soup-address.c: Reorder #includes for FreeBSD (From Joe + Marcus Clarke, #52566) + + * libsoup/soup-dns.c: Likewise + +2003-12-29 JP Rosevear <jpr@ximian.com> + + * configure.in: bump version and libtool numbers + +2003-12-22 Dan Winship <danw@ximian.com> + + * README, TODO: Update these + +2003-12-22 Dan Winship <danw@ximian.com> + + * libsoup/soup-socket.c: Lots of thread-safety stuff, primarly so + you can disconnect a socket from one thread while doing I/O in + another. + + * libsoup/soup-message-io.c (soup_message_io_cancel): Split into + soup_message_io_stop() and io_cleanup(), to separate out the "stop + reading/writing" and "free data" phases to allow thread-safe + synchronous cancellation. + (soup_message_io_finished): call both soup_message_io_stop() and + io_cleanup() + (io_error): Only set SOUP_STATUS_IO_ERROR on the message if it + doesn't already have a transport error status (eg, CANCELLED). + (new_iostate): Call io_cleanup() if needed. + + * libsoup/soup-status.h: add "SOUP_STATUS_NONE" for 0, to make it + clearer that it's not a status. + + * libsoup/soup-message.c (finalize, restarted, finished, + soup_message_set_uri): s/soup_message_io_cancel/soup_message_io_stop/ + (soup_message_cleanup_response): s/0/SOUP_STATUS_NONE/ + + * libsoup/soup-connection.c (send_request): Remove + soup_message_io_cancel call. + + * libsoup/soup-session-sync.c (send_message): Connect to the + connection's "disconnected" signal rather than using a weak ref, + since that's what we really care about, and it's possible that the + connection may have an extra ref on it somewhere that would keep + it from being destroyed even if it was disconnected. + +2003-12-20 Joe Shaw <joe@ximian.com> + + * libsoup/soup-session.c (lookup_auth): If const_path is NULL un + the non-proxy case, then use the root ("/"). + +2003-12-19 Dan Winship <danw@ximian.com> + + * libsoup/soup-message-filter.c: New. An interface for objects + that want to act on every message passing through a session. + (Initially being used for authentication, but could also be used + for cache handling, cookie management, etc.) + + * libsoup/soup-connection.c (class_init, etc): Add a message + filter property. + (send_request): If the connection has a message filter set, run + it on the message before sending it. + (soup_connection_connect_async, etc): When setting up a tunnel, if + we get back a 407 and the session tries to requeue the message, + either re-send it, or return SOUP_STATUS_TRY_AGAIN (depending on + whether or not the proxy closed the connection). + (soup_connection_connect_sync): Likewise + (send_request, request_done): Ref/unref the connection + + * libsoup/soup-session.c (soup_session_get_type): Implement the + SoupMessageFilter interface. + (soup_session_get_connection): Use the session as the connection's + message filter + (soup_session_add_filter, soup_session_remove_filter): Add/remove + filters from the session + (setup_message): do auth handling, and call each of the session's + filters' setup_message methods as well. + (soup_session_send_message_via): No longer needed. + (connect_result): Handle SOUP_STATUS_TRY_AGAIN. + + * libsoup/soup-session-async.c (run_queue): Use + soup_connection_send_request, since soup_session_send_message_via + is gone now. + + * libsoup/soup-session-sync.c (send_message): Likewise + + * libsoup/soup-message.c (soup_message_is_keepalive): A successful + response to a CONNECT is always keepalive, even if it's HTTP/1.0 + with no Connection header. + + * libsoup/soup-status.h: add SOUP_STATUS_TRY_AGAIN + + * libsoup/soup-types.h: Add SoupMessageFilter, and macros for + gobject interface types. + + * tests/get.c (main): Add a -p flag to specify a proxy + + * tests/simple-proxy.c: Fix #includes + +2003-12-18 Dan Winship <danw@ximian.com> + + * libsoup/soup-connection.c (soup_connection_disconnect): Actually + disconnect the socket rather than just unreffing it, since the IO + code may be holding an extra ref on it. + (send_request): connect to the "restarted" signal too + (request_restarted): Deal with "Connection: close" + + * libsoup/soup-connection-ntlm.c (ntlm_authorize_pre): Make this + not go into an infinite loop if the server only supports Basic. + +2003-12-17 Rodrigo Moya <rodrigo@ximian.com> + + * libsoup/Makefile.am: install soup-message-queue.h with the rest + of the headers. + +2003-12-17 Dan Winship <danw@ximian.com> + + * configure.in: Add gthread to glib check + + * libsoup/soup-session.c: Make this an abstract class. + + * libsoup/soup-session-async.c: A SoupSession class for + asynchronous gmain-based operation; replaces the old SoupSession. + + * libsoup/soup-session-sync.c: A SoupSession class for synchronous + blocking operation for use with threaded apps. + + * libsoup/soup-types.h, libsoup/soup.h: add the new session + subclasses + + * libsoup/soup-connection.c (soup_connection_connect_sync): Don't + try to unref the socket if the socket creation fails. + (soup_connection_reserve): New, to explicitly mark a connection as + being in use without queueing a message on it. + + * libsoup/soup-dns.c (check_hostent): Oof. Fix the logic of the + "block" flag to not be reversed. + + * libsoup/soup-message.c (finished): set status to FINISHED here. + (soup_message_cancel): Gone; needs to be done at the session + level. + + * libsoup/soup-message-queue.c: Add a mutex and make all of the + operations thread-safe. + + * libsoup/soup-socket.c (disconnect_internal): Make this + thread-safe. + (soup_socket_connect): Make the sync case work correctly. + + * libsoup/Makefile.am: add the SoupSession subclasses + + * tests/Makefile.am: libsoup depends on libgthread now, so + revserver doesn't need to explicitly. + + * tests/get.c, tests/auth-test.c, tests/simple-proxy.c: Use + soup_session_async_new(). + +2003-12-16 Rodrigo Moya <rodrigo@ximian.com> + + * libsoup/soup-soap-response.[ch] (soup_soap_parameter_get_int_value): + new function. + +2003-12-16 Joe Shaw <joe@ximian.com> + + * libsoup/soup-connection.c (socket_connect_result, + soup_connection_connect_sync): Only set up a tunnel if the + destination protocol is HTTPS. + + * libsoup/soup-message.c (class_init): Add a default handler for + wrote_body. + (wrote_body): Run the SOUP_HANDLER_POST_REQUEST handlers here. + (soup_message_cancel): Don't set the status to + SOUP_STATUS_CANCELLED and call soup_message_finished() if the + status is already SOUP_MESSAGE_STATUS_FINISHED. + + * libsoup/soup-session.c (set_property): Don't cancel the session + if the proxy URI set as a property isn't different from the old + one. + (get_host_for_message): Refactor some code so that we can easily + get the right SoupSessionHost for proxies as well as from the + message. + (authenticate_auth): Take a gboolean proxy parameter. Check it to + see which URI (message URI or proxy URI) to use for + authentication. Add a long comment about lack of clarity in RFC + 2617 with respect to proxies and protection spaces. + +2003-12-15 Dan Winship <danw@ximian.com> + + * libsoup/soup-socket.h (soup_socket_read, soup_socket_read_until, + soup_socket_write): s/guint/gsize/ to match the definitions in + soup-socket.c. #52167. + +2003-12-12 Rodrigo Moya <rodrigo@ximian.com> + + * libsoup/soup-soap-message.c: removed debugging of the messages here. + +2003-12-12 Rodrigo Moya <rodrigo@ximian.com> + + * libsoup/soup-soap-message.c (soup_soap_message_start_envelope): + added information for SOAP-ENV namespace. + +2003-12-10 Dan Winship <danw@ximian.com> + + * libsoup/soup-message-client-io.c (parse_response_headers): if we + receive an HTTP/1.0 response to an HTTP/1.1 request, downgrade the + message's http_version so the keep-alive handling is correct. + Fixes a problem noticed almost simultaneously by Rodrigo and Joe. + + * libsoup/soup-message.c (soup_message_restarted, etc): Add a + "restarted" signal as suggested by Joe. + + * libsoup/soup-message-io.c (soup_message_io_finished): emit + either "restarted" or "finished" as appropriate + + * libsoup/soup-session.c (soup_session_queue_message): Connect to + "restarted" and run the queue if a message gets restarted + + * libsoup/soup-status.h: Remove a stray comma that gtk-doc doesn't + like. + +2003-12-10 Tambet Ingo <tambet@ximian.com> + + * configure.in: Use autoconfig to check for socklen_t ... + + * libsoup/soup-address.c: ... and remove it from here ... + + * libsoup/soup-dns.c: ... and here. + +2003-12-09 Rodrigo Moya <rodrigo@ximian.com> + + * libsoup/soup-soap-message.c (soup_soap_message_persist): + (soup_soap_message_parse_response): print out request/response's + contents, if in debug mode. + +2003-12-07 JP Rosevear <jpr@ximian.com> + + * configure.in: Bump version + +2003-11-28 Rodrigo Moya <rodrigo@ximian.com> + + * libsoup/soup-soap-response.[ch] + (soup_soap_parameter_get_first_child, + soup_soap_parameter_get_first_child_by_name, + soup_soap_parameter_get_next_child, + soup_soap_parameter_get_next_child_by_name): new functions to + manage SoupSoapParameter's children. + (soup_soap_response_get_first_parameter): dont return a GList, but + a SoupSoapParameter contained in the GList. + +2003-11-26 Rodrigo Moya <rodrigo@ximian.com> + + * libsoup/soup-soap-response.[ch] + (soup_soap_parameter_get_string_value): new function. + +2003-11-26 Rodrigo Moya <rodrigo@ximian.com> + + * libsoup/soup-soap-response.[ch]: added SoupSoapParameter + structure, to "hide" the usage of xmlNode's. + (soup_soap_parameter_get_name): functions to manage SOAP + response parameters. + (soup_soap_response_get_first_parameter, + soup_soap_response_get_first_parameter_by_name, + soup_soap_response_get_next_parameter, + soup_soap_response_get_next_parameter_by_name): + new functions for an easy access to the response's parameters. + (soup_soap_response_from_string): removed warnings. + +2003-11-25 Rodrigo Moya <rodrigo@ximian.com> + + * libsoup/soup-soap-response.c (soup_soap_response_set_method_name): + fixed typo. + +2003-11-25 Rodrigo Moya <rodrigo@ximian.com> + + * libsoup/soup-soap-response.[ch] (soup_soap_response_get_method_name, + soup_soap_response_set_method_name, soup_soap_message_get_parameters): + new functions. + (finalize): NULL out new private fields. + (soup_soap_response_from_string): added validation code. + +2003-11-23 Rodrigo Moya <rodrigo@ximian.com> + + * libsoup/soup-soap-response.[ch]: new class for managing SOAP + responses. + + * libsoup/soup-soap-message.[ch] (soup_soap_message_parse_response): + new function. + + * libsoup/Makefile.am: added new files. + +2003-11-18 Rodney Dawes <dobey@ximian.com> + + * gtk-doc.make: Add gtk-doc.make to cvs for systems without gtk-doc + +2003-11-18 Rodney Dawes <dobey@ximian.com> + + * acinclude.m4: Add GTK_DOC_CHECK + +2003-11-18 Dan Winship <danw@ximian.com> + + * configure.in: Replace old gtk-doc test with GTK_DOC_CHECK() + (AC_OUTPUT): add docs/Makefile, docs/reference/Makefile + + * autogen.sh (REQUIRED_AUTOMAKE_VERSION): 1.6, for gtk-doc.make + + * Makefile.am: updates for gtk-doc + (SUBDIRS): add back "docs" + + * docs/Makefile.am (EXTRA_DIST): remove, since those old docs + aren't around any more + + * docs/reference/*: set up gtk-doc + + * libsoup/Makefile.am (INCLUDES): Change G_LOG_DOMAIN to + "libsoup". Remove unused defines. + + * libsoup/soup-connection.c: Fix doc comments + * libsoup/soup-message.c: Likewise + * libsoup/soup-misc.c: Likewise + * libsoup/soup-socket.c: Likewise + * libsoup/soup-uri.c: Likewise + + * libsoup/soup-address.h: Fixes to please gtk-doc + * libsoup/soup-connection.h: Likewise + * libsoup/soup-message.h: Likewise + * libsoup/soup-message-private.h: Likewise + * libsoup/soup-misc.h: Likewise + * libsoup/soup-server-auth.h: Likewise + * libsoup/soup-socket.h: Likewise + * libsoup/soup-status.h: Likewise + +2003-11-18 Dan Winship <danw@ximian.com> + + * configure.in: Fix up the SSL checks some. Remove some useless + old header checks. + + * libsoup/soup-misc.h: declare soup_ssl_supported. + + * libsoup/soup-gnutls.c: add soup_ssl_supported declaration. + + * libsoup/soup-nossl.c: Not an SSL implementation, built if + HAVE_SSL is not defined. + + * libsoup/Makefile.am (libsoup_2_2_la_SOURCES): add soup-nossl.c + + * libsoup/soup-socket.c (soup_socket_start_ssl): Return success or + failure. + (listen_watch): Deal with soup_socket_start_ssl failing. + + * libsoup/soup-connection.c (tunnel_connect_finished, + socket_connect_result, soup_connection_connect_sync): Deal with + the soup_socket_start_ssl failing. + + * libsoup/soup-server.c (soup_server_new): Deal with + soup_ssl_get_server_credentials failing + +2003-11-18 Rodrigo Moya <rodrigo@ximian.com> + + * libsoup/soup-soap-message.[ch] (soup_soap_message_start_fault, + soup_soap_message_end_fault, soup_soap_message_start_fault_detail, + soup_soap_message_end_fault_detail, soup_soap_message_start_header, + soup_soap_message_end_header, + soup_soap_message_start_header_element, + soup_soap_message_end_header_element, soup_soap_message_write_int, + soup_soap_message_write_double, soup_soap_message_write_base64, + soup_soap_message_write_time, soup_soap_message_write_string, + soup_soap_message_write_buffer, soup_soap_message_set_element_type, + soup_soap_message_set_null, soup_soap_message_add_attribute, + soup_soap_message_add_namespace, + soup_soap_message_set_default_namespace, + soup_soap_message_get_namespace_prefix, + soup_soap_message_set_encoding_style, soup_soap_message_reset, + soup_soap_message_persist): new functions from old SoupSerializer. + +2003-11-17 Rodrigo Moya <rodrigo@ximian.com> + + * libsoup/soup-soap-message.[ch] (soup_soap_message_new, + soup_soap_message_new_from_uri): added a bunch of initialization + parameters. + (soup_soap_message_get_xml_doc, soup_soap_message_start_envelope, + soup_soap_message_end_envelope, soup_soap_message_start_body, + soup_soap_message_end_body, soup_soap_message_start_element, + soup_soap_message_end_element): + new functions. + + * configure.in: depend on libxml-2.0 for the SOAP code. + + * libsoup/Makefile.am: use XML CFLAGS and LIBS. + +2003-11-17 Joe Shaw <joe@ximian.com> + + * configure.in: Add in the --enable-libgpg-error flag from the 2.0 + branch. + + * acinclude.m4: Include the gpg-error macros. + +2003-11-17 Rodrigo Moya <rodrigo@ximian.com> + + * libsoup/soup-soap-message.[ch]: new class to make it easier to + build SOAP messages. + + * libsoup/Makefile.am: added new files. + + * configure.in: increased version number. + +2003-10-24 Joe Shaw <joe@ximian.com> + + * libsoup/soup-address.c (update_address_from_entry): Call + soup_dns_entry_get_hostent() on the SoupAddress passed in, not the + one in addr->priv->lookup. Fixes a crash on synchronous DNS + lookups. + + * libsoup/soup-server.c (soup_server_new): We need to ref the + address we're binding to, because soup_socket_get_local_address() + doesn't ref for us. + +2003-10-23 Dan Winship <danw@ximian.com> + + * libsoup/soup-socket.c (init): Initialize flags to default + values. + +2003-09-23 Dan Winship <danw@ximian.com> + + * libsoup/soup-gnutls.c (SoupGNUTLSCred): Remove refcounting, but + note whether or not the CA file has been loaded. + (SoupGNUTLSChannel): add a "hostname" field. + (verify_certificate): Remove the comment about not being able to + verify the hostname because of soup problems. Now it's because of + GNUTLS problems instead. + (soup_ssl_wrap_iochannel): Renamed from soup_ssl_get_iochannel, + and takes a hostname and a creds argument now. + (soup_ssl_get_client_credentials, + soup_ssl_get_server_credentials): Return client/server credentials + structures. + (soup_ssl_free_client_credentials, + soup_ssl_free_server_credentials): and free them. + + * libsoup/soup-session.c (class_init, set_property, get_property): + add ssl_ca_file property + (get_host_for_message): when returning an SSL host for the first + time, create a client credentials structure for the session. + (run_queue): Pass the ssl creds to the new connection. Also fix an + unrelated bug that caused infinite loops on "bad hostname". + + * libsoup/soup-server.c: Use GObject properties, including + ssl_cert_file and ssl_key_file properties. + (soup_server_new): Remove "protocol" argument; if the cert file + and key file properties were set, create a server credential + structure from them and pass that to soup_socket_server_new. + + * libsoup/soup-connection.c (SoupConnectionPrivate): Rename + dest_uri to origin_uri to match RFC 2616 terminology. Add an + "ssl_creds" field. + (class_init, set_property, get_property): add SSL_CREDS property + (soup_connection_connect_async, soup_connection_connect_sync): + Pass ssl_creds to soup_socket_client_new calls. + + * libsoup/soup-socket.c: Use GObject properties, including an + ssl_creds property + (soup_socket_set_flags): Gone (replaced with boolean properties) + (soup_socket_new): Make this take a list of properties + (listen_watch): copy ssl creds from listener to new socket + (soup_socket_start_ssl): Pass remote hostname and socket creds + structure to soup_ssl_wrap_iochannel. + (soup_socket_client_new_async, soup_socket_client_new_sync, + soup_socket_server_new): Replace the SSL boolean with an ssl_creds + structure. + + * libsoup/soup-misc.c (soup_set_ssl_ca_file, + soup_set_ssl_cert_files, soup_get_ssl_ca_file, + soup_get_ssl_cert_files): Gone. SSL state is now per-session or + per-server. + + * tests/get.c: add a "-c CAfile" argument, for loading a CA + certificate file to validate https connections against + + * tests/simple-httpd.c: Add "-c certfile" and "-k keyfile" + arguments for loading an SSL server certificate. Only start an SSL + server if those arguments were used. + + * tests/test-cert.pem: + * tests/test-key.pem: SSL certificate for testing simple-httpd + + * tests/revserver.c: Update for API changes + * tests/simple-proxy.c: Likewise + +2003-09-22 Dan Winship <danw@ximian.com> + + * libsoup/soup-message-io.c: Move RESPONSE_BLOCK_SIZE #define here + from soup-private.h + + * libsoup/soup-misc.c (soup_load_config, etc): Remove all this. + (soup_set_security_policy, soup_get_security_policy): Remove, + since the GNUTLS backend doesn't actually implement it. + (soup_set_ssl_ca_dir, soup_get_ssl_ca_dir): Likewise + + * libsoup/soup-misc.h: sync to soup-misc.c. Don't #include extra + stuff. + + * libsoup/soup-types.h (SOUP_MAKE_TYPE): Move this here from + soup-private.h + + * libsoup/soup-ssl.h: Merge soup_ssl_get_iochannel and + soup_ssl_get_server_iochannel into a single function that takes a + SoupSSLType. + + * libsoup/soup-gnutls.c: Remove soup_get_ssl_ca_dir() reference. + (soup_ssl_get_iochannel): Renamed from soup_gnutls_get_iochannel. + (soup_gnutls_set_security_policy): Gone + + * libsoup/soup-gnutls.h + * libsoup/soup-ssl.c: Gone; soup-ssl.h is the #include file for + soup-gnutls.c now + + * libsoup/soup-socket.c: Move soup_sockaddr_max + #define here from soup-private.h + (soup_socket_start_ssl): Update for new soup_ssl_get_iochannel + prototype. + + * libsoup/soup-private.h: Gone + + * libsoup/soup-address.c: Fix #includes for soup-private.h and + soup-misc.h changes + * libsoup/soup-auth-digest.c: Likewise + * libsoup/soup-auth.c: Likewise + * libsoup/soup-connection-ntlm.c: Likewise + * libsoup/soup-connection.c: Likewise + * libsoup/soup-dns.c: Likewise + * libsoup/soup-gnutls.c: Likewise + * libsoup/soup-headers.c: Likewise + * libsoup/soup-message-client-io.c: Likewise + * libsoup/soup-message-handlers.c: Likewise + * libsoup/soup-message-io.c: Likewise + * libsoup/soup-message-server-io.c: Likewise + * libsoup/soup-message.c: Likewise + * libsoup/soup-server-message.c: Likewise + * libsoup/soup-server.c: Likewise + * libsoup/soup-session.c: Likewise + * libsoup/soup-socket.c: Likewise + * tests/auth-test.c: Likewise + +2003-09-19 Dan Winship <danw@ximian.com> + + * libsoup/soup-address.c (update_address_from_entry): free the + hostent. + + * libsoup/soup-connection-ntlm.c (ntlm_authorize_pre): Don't leak + the domain + + * libsoup/soup-gnutls.c (soup_gnutls_get_iochannel): Add some more + iochannel initialization. Not sure how this worked before... + + * libsoup/soup-message.c (soup_message_cleanup_response): Renamed + from soup_message_prepare (and a few things removed). + + * libsoup/soup-message-client-io.c (soup_message_send_request): + s/soup_message_prepare/soup_message_cleanup_response/ + + * libsoup/soup-message-io.c (io_read): Replace the final "\r\n" + with "\0" on the headers before passing them to the parse + function. + (io_read): Call soup_message_cleanup_response after returning an + informational response so the data doesn't leak. + + * libsoup/soup-headers.c (soup_headers_parse): Update for + soup-message-io.c:io_read change + + * libsoup/soup-server.c (soup_server_new, + soup_server_new_with_host): Don't leak the SoupAddress. + + * libsoup/soup-session.c (class_init): Make PROP_PROXY_URI not + CONSTRUCT_ONLY. + (set_property): If the proxy uri changes, call + soup_session_abort() and cleanup_hosts(). + (request_finished, final_finished): Fix a bug when requeuing + messages. + + * tests/libsoup.supp: valgrind suppression file for soup tests + + * tests/Makefile.am (EXTRA_DIST): dist it. + (noinst_PROGRAMS): move the former check_PROGRAMS to + noinst_PROGRAMS instead. + +2003-09-18 Dan Winship <danw@ximian.com> + + * libsoup/soup-message.c: Add wrote_informational and + got_informational signals. + + * libsoup/soup-message-client-io.c (get_request_headers): Set the + EXPECT_CONTINUE flag on the message if that header is set. + + * libsoup/soup-message-server-io.c (parse_request_headers): + Likewise + + * libsoup/soup-message-io.c (io_write): Set read_state to HEADERS + when blocking on an expect-continue. Emit wrote_informational + instead of wrote_headers in the 1xx case. + (io_read): Set read_state to BLOCKING, not NOT_STARTED after + reading a 100 Continue response. Emit got_informational instead of + got_headers in the 1xx case. + + * libsoup/soup-session.c (soup_session_send_message): Reorder + things to deal with the fact that the message could finish right + away if there is a connection available and the server is very + close. + + * libsoup/soup-status.h: Rename SOUP_STATUS_CLASS_TRANSPORT to + SOUP_STATUS_CLASS_TRANSPORT_ERROR. + +2003-09-17 Dan Winship <danw@ximian.com> + + * libsoup/soup-session.c (find_oldest_connection): Fix two bugs + (one that pruned too little, one that pruned too much). + (queue_message): When requeuing, don't run the queue; + final_finished will take care of that later. + (soup_session_abort): New, to cancel all pending requests. + + * libsoup/soup-socket.c (soup_socket_connect, got_address): ref + the socket while waiting for the address to resolve + +2003-09-17 Dan Winship <danw@ximian.com> + + * libsoup/soup-connection.c (soup_connection_new): Replaces the + three previous soup_connection_new* functions and uses gobject + properties to set the destination and proxy uris. + (class_init): set up two more signals, authenticate and + reauthenticate. + (soup_connection_send_request): virtualize + (send_request): Default implementation + + * libsoup/soup-connection-ntlm.c: New SoupConnection subclass that + also handles NTLM authentication. Includes all of the NTLM code + formerly in soup-auth-ntlm.c. + + * libsoup/soup-auth-ntlm.[ch]: Gone. + + * libsoup/soup-auth.c: Remove NTLM refs + + * libsoup/soup-session.c (class_init): Add gobject properties for + proxy, max_conns, use_ntlm. Change the "authenticate" and + "reauthenticate" signal prototypes to not pass a SoupAuth (so they + can be used for authenticating SoupConnectionNTLM as well, which + doesn't use a SoupAuth). + (soup_session_new): Renamed from soup_session_new_default. + (soup_session_new_with_options): Replaces + soup_session_new_with_proxy and soup_session_new_full. Takes + gobject properties. + (run_queue): Create a new connection of type SoupConnection or + SoupConnectionNTLM depending on our "use_ntlm" property. Connect + to its authenticate and reauthenticate signals. + (connection_authenticate, connection_reauthenticate): proxy these + signals. + + * libsoup/soup-address.c (update_address_from_entry): Fix a + crasher when failing to resolve the address. + + * libsoup/soup-dns.c (check_hostent): Fix some "how was this + working before" bugs. + + * libsoup/soup-message-client-io.c (soup_message_send_request): + call soup_message_prepare() to clean up the existing response + state. + + * libsoup/soup-message-io.c (io_error): Set the read_state to DONE + when processing an OK EOF. + + * libsoup/soup-status.h (SoupStatusClass): fix the numbering of + these so that SOUP_STATUS_CLASS_SUCCESS is 2, etc. + + * tests/auth-test.c (authenticate, reauthenticate): Update for new + prototypes. + (main): Use soup_session_new. + * tests/get.c (main): Likewise. + * tests/simple-proxy.c (main): Likewise. + +2003-09-10 Dan Winship <danw@ximian.com> + + * libsoup/soup-session.c: Add "authenticate" and "reauthenticate" + signals. + (invalidate_auth): Remove the call to soup_auth_invalidate. + (authenticate_auth): soup_auth_fn is gone. If the URI doesn't + contain authentication, then emit "authenticate" or + "reauthenticate" (depending on whether or not this is the first + time we've asked for a password for this auth). + (update_auth_internal): If the server rejects our + username/password, don't bail out immediately. Try doing a + "reauthenticate" first. + + * libsoup/soup-misc.c (soup_set_authorize_callback): Gone + + * libsoup/soup-auth.c (soup_auth_new_from_header_list): Remove the + "pref" arg. + (soup_auth_invalidate): Remove this; it doesn't actually do + anything useful for us. + + * libsoup/soup-auth-basic.c (invalidate): Remove + * libsoup/soup-auth-digest.c: (invalidate): Remove + * libsoup/soup-auth-ntlm.c: (invalidate): Remove + + * libsoup/soup-uri.c: Remove all references to "authmech". + (soup_uri_set_auth): Remove this too. + + * tests/auth-test.c: Update to use the "authenticate" and + "reauthenticate" signals instead of encoding usernames and + passwords in the URIs. Add a few more test cases. + +2003-09-10 Dan Winship <danw@ximian.com> + + * libsoup/soup-message-private.h (SoupMessagePrivate): Remove the + "status" field from here, since it's mostly used by SoupSession, + which shouldn't need access to SoupMessagePrivate. + + * libsoup/soup-message.h (SoupMessage): Move it here. + (SoupCallbackFn): Remove this alias for SoupMessageCallbackFn. + (soup_message_set_uri): also moved from soup-message-private.h + + * libsoup/soup-message.c: s/msg->priv->status/msg->status/. + + * libsoup/soup-message-handlers.c: + s/SoupCallbackFn/SoupMessageCallbackFn/ everywhere. + + * libsoup/soup-message-io.c (soup_message_io_client, + soup_message_io_server, soup_message_io_unpause): Don't set up an + idle handler, just jump right in to reading/writing; if this is a + synchronous socket, then the caller wants to block, and if it's + not, then we'll quickly get an EAGAIN anyway. + + * libsoup/soup-session.c: (queue_message): Likewise. + (*) Update for SoupMessageStatus move and remove + soup-message-private.h include. + + * libsoup/soup-server-message.c: Remove soup-message-private.h + include. + + * libsoup/soup-server.c: Likewise. + + * libsoup/soup-connection.c (soup_connection_is_connected, + soup_connection_is_new): Remove these, since they weren't being + used. + + * libsoup/soup-md5-utils.c: Moved from md5-utils.c and renamed, to + avoid namespace pollution. + + * libsoup/soup-auth-digest.c: Update for that. + * libsoup/soup-server-auth.c: Likewise + + * tests/auth-test.c: Remove soup-message-private.h include + +2003-09-09 Dan Winship <danw@ximian.com> + + Beginnings of improved synchronous API support + + * libsoup/soup-dns.c: Simplify this by making it not automatically + return the result: force the caller to poll. (This isn't really a + performance issue: the results should come back quickly anyway.) + Also, make the cache thread-safe. + (soup_dns_entry_from_name): Was soup_gethostbyname + (soup_dns_entry_from_addr): Was soup_gethostbyaddr + (soup_dns_entry_check_lookup): Used to poll to see if DNS is done + (soup_dns_entry_get_hostent): Gets the hostent from an entry (and + blocks if it's not resolved yet). + + * libsoup/soup-address.c: Update for soup-dns changes. + (soup_address_new): Don't automatically start resolving the + hostname now, since we don't know if the caller is going to want + it resolved synchronously or asynchronously. + (soup_address_resolve_async): Renamed from soup_address_resolve. + (soup_address_resolve_sync): New routine to do blocking + synchronous DNS. + + * libsoup/soup-socket.c (soup_socket_connect): Now returns a + status value directly when connecting synchronously. + (soup_socket_client_new_async, soup_socket_client_new_sync): + Separate async/sync client socket functions. + (soup_socket_get_iochannel): Made static since it was not used + outside soup-socket. + + * libsoup/soup-connection.c (soup_connection_new, + soup_connection_new_proxy, soup_connection_new_tunnel): Just set + up the data, don't actually start connecting. + (soup_connection_connect_async, soup_connection_connect_sync): New + async and sync SoupConnection connecting routines. + (soup_connection_get_socket): Remove this since it wasn't being + used. + + * libsoup/soup-session.c (final_finished): Run the queue since a + connection is now freed up. + (run_queue): Update for soup_connection_new* changes. + + * libsoup/soup-misc.c (soup_substring_index): Remove, since it + wasn't being used any more. + + * libsoup/soup-private.h: Remove some prototypes for functions + that no longer exist. + + * libsoup/soup-uri.c (soup_uri_copy_root): New utility function + (copies the protocol, host, and port of a SoupUri). + + * tests/auth-test.c: + * tests/get.c: + * tests/simple-proxy.c: belatedly update for soup-session change + + * tests/revserver.c: Handle each new connection in its own thread, + using synchronous SoupSocket calls. + +2003-09-05 Dan Winship <danw@ximian.com> + + * libsoup/soup-session.c: Move a bunch of logic here from + soup-context. Now the session keeps track of hosts (instead of + having a global soup_hosts hash) and their connections. + (soup_session_new_with_proxy, soup_session_new_full): New session + constructors to specify a proxy or a proxy and connection limits + (send_request): Add Authorization and Proxy-Authorization headers + before sending off the request. + (soup_session_queue_message, et al): Improve the way this works. + There's no need to use timeouts to wait for connections to become + free; we *know* when they become free. + + * libsoup/soup-private.h: Remove SoupHost and some other + no-longer-used stuff. + + * libsoup/soup-misc.c (soup_set_proxy, soup_get_proxy, + soup_set_connection_limit, soup_set_connection_limit): Gone. These + are all per-session now. + + * libsoup/soup-message.c: Remove all SoupContext references + (mostly replaced with SoupUri references) + (cleanup_message): priv->connect_tag and priv->connection are gone + now, so this was just soup_message_io_cancel(). So remove + cleanup_message and replace it with that everywhere. + (soup_message_disconnect): Gone. + (soup_message_set_uri): Replaces soup_message_set_context. + (soup_message_set_connection, soup_message_get_connection): Gone + + * libsoup/soup-message-server-io.c (parse_request_headers): + s/soup_message_set_context/soup_message_set_uri/ + + * libsoup/soup-message-private.h (SoupMessagePrivate): Remove + connect_tag, context, and connection. + + * libsoup/soup-message-client-io.c (encode_http_auth): Gone. + + * libsoup/soup-context.c: Gone + + * tests/auth-test.c (identify_auth): update for session/context + changes + +2003-09-03 Dan Winship <danw@ximian.com> + + * libsoup/soup-status.h: Renamed from soup-error.h, with types + and defines renamed accordingly. + + * libsoup/soup-message.h (SoupMessage): Rename errorcode to + status_code and errorphrase to reason_phrase. Remove errorclass. + (SOUP_MESSAGE_IS_ERROR): Remove this. You can't classify redirects + as being either "errors" or "not errors", so its semantics are + guaranteed to be wrong sometimes. + + * libsoup/soup-message.c (soup_message_set_status, + soup_message_set_status_full): Renamed + + * libsoup/soup-message-handlers.c + (soup_message_add_status_code_handler, + soup_message_add_status_class_handler): Rename. + + * libsoup/soup-session.c (soup_session_send_message): Make this + return a status code rather than a status class. + + * libsoup/soup-message-private.h (SoupMessagePrivate): Remove some + unrelated unused fields (retries, callback, user_data). + + * ...: Updates + +2003-09-02 Dan Winship <danw@ximian.com> + + * libsoup/soup-session.c: First draft at the new object to + maintain formerly-global state. (Not yet complete; still need to + get rid of SoupContext). + + * libsoup/soup-message-queue.c: Data structure used by SoupSession + + * libsoup/soup-queue.c: Gone. Mostly moved into soup-session, but + some bits went into soup-connection. + + * libsoup/soup-connection.c (soup_connection_send_request): New, + to send a request on a connection. The connection updates its + internal state and then hands off to soup_message_send_request. + (request_done): Callback set up by soup_connection_send_request. + Marks the connection as no-longer-in-use, and disconnects it if + the message says to. + (soup_connection_set_in_use, soup_connection_mark_old): No longer + needed; the connection takes care of this itself now. + (soup_connection_new_proxy): New, to create a new connection that + is explicitly marked as being through an HTTP proxy. + (soup_connection_new_tunnel): New, to create a new HTTPS + connection through a proxy. (Includes the code to send the + CONNECT.) + + * libsoup/soup-context.c (try_existing_connections): Don't need to + call soup_connection_set_in_use. + (try_create_connection): Use soup_connection_new, + soup_connection_new_proxy, or soup_connection_new_tunnel as + appropriate. + + * libsoup/soup-message.c (soup_message_prepare): Replaces + queue_message. + (soup_message_queue, soup_message_requeue, soup_message_prepare): + Gone. This must be done via a SoupSession now. + (soup_message_set_connection): don't need to mark in_use/not + in_use. Also, msg->priv->socket is gone now. + (soup_message_get_socket): Gone. + + * libsoup/soup-message-handlers.c (soup_message_run_handlers): + Remove references to global handlers. + (redirect_handler, authorize_handler): Moved to soup-session.c. + + * libsoup/soup-misc.c (soup_shutdown): Gone; just unref the + session to shut down now. + + * libsoup/soup.h: add soup-session.h + + * libsoup/Makefile.am: updates + + * tests/auth-test.c, tests/get.c, tests/simple-proxy.c: Use + SoupSession. + +2003-08-29 Dan Winship <danw@ximian.com> + + * libsoup/soup-message-io.c: Major rewrite. There is now only a + single IO state object (instead of one for reading and one for + writing), and the IO code handles switching back and forth between + reading and writing as appropriate (including handling the extra + switches needed for "Expect: 100-continue"). + (soup_message_io_client, soup_message_io_server): The new entry + points. + (soup_message_io_cancel): If the caller cancels the IO when we + were expecting to read more data, disconnect the socket. + + * libsoup/soup-message.h (SoupMessageFlags): add + SOUP_MESSAGE_EXPECT_CONTINUE, to indicate that the IO code should + do the special expect-continue handling. + + * libsoup/soup-message.c: Move all the signal stuff here. Remove + the "done_reading" and "done_writing" signals and replace them + with a single "finished" signal. (A single signal. Say that 10 + times fast!) + (soup_message_got_headers, etc): Functions to emit signals. + (got_headers, got_chunk, got_body): Default signal methods that + call soup_message_run_handlers. + (finished): Default signal method that replaces + soup_message_issue_callback. + ([various]): s/soup_message_issue_callback/soup_message_finished/ + (soup_message_requeue): There's no soup_message_set_read_callbacks + any more, so if the caller requeues while it's still reading, just + cancel the read. + (soup_message_add_chunk, soup_message_add_final_chunk, + soup_message_pop_chunk): Moved here from soup-server-message, + although we don't actually quite support using chunked encoding + for requests yet. + + * libsoup/soup-server-message.c (soup_server_message_new): No + longer takes a socket argument. + (soup_server_message_add_chunk, soup_server_message_get_chunk): + Moved into SoupMessage. + + * libsoup/soup-message-handlers.c (global_handlers): Make these + POST_BODY rather than PRE_BODY, so they won't mess up the IO + channel when the requeue the message. + (soup_message_run_handlers): Don't need to issue the message + callback from here any more. + (authorize_handler): Just leave the error as 401 or 407 (see + soup-error.h change) + + * libsoup/soup-message-client-io.c (soup_message_send_request): + Replaces soup_message_write_request and + soup_message_read_response. + + * libsoup/soup-message-server-io.c: Parallel to + soup-message-client-io.c, this defines the server-side header + handling. + (soup_message_read_request): Its entry point. + + * libsoup/soup-server.c: Lots of code moved into + soup-message-server-io.c. Update for other changes. + + * libsoup/soup-queue.c: Update for changes + + * libsoup/soup-socket.c (read_from_network, soup_socket_write): + Don't call soup_socket_disconnect() on an error, just return + SOUP_SOCKET_ERROR. Otherwise soup_socket_disconnect() could emit + signals that will mess up the caller of the read/write function. + + * libsoup/soup-connection.c (soup_connection_disconnect): When + disconnecting the socket, disconnect from its signals first to + prevent bad reentrancy. + + * libsoup/soup-error.h: Kill off SOUP_ERROR_CANT_AUTHENTICATE and + SOUP_ERROR_CANT_AUTHENTICATE_PROXY, since they don't really say + anything that SOUP_ERROR_UNATHORIZED and + SOUP_ERROR_PROXY_UNAUTHORIZED don't say. (And now, all of the + "transport" errors actually are transport-related.) + + * tests/auth-test.c (main): s/CANT_AUTHENTICATE/UNAUTHORIZED/ + + * tests/simple-proxy.c: Complicate this a bunch. In particular, + use SOUP_MESSAGE_OVERWRITE_CHUNKS and the GOT_CHUNK signal, and + pass the data back to the client in chunked format. + +2003-08-27 Dan Winship <danw@ximian.com> + + * libsoup/soup-types.h: New header with typedefs, to avoid + #include loops among other headers. + + * libsoup/Makefile.am (libsoupinclude_HEADERS): add it + + * libsoup/*.[ch], tests/*.c: Update for soup-types.h + +2003-08-26 Dan Winship <danw@ximian.com> + + * libsoup/soup-message-client-io.c (soup_message_write_request, + soup_message_read_response): Higher-than-soup-message-io-level + functions to do client-side IO. (Code that used to be in + soup-queue.c) + (get_request_header_cb): Fix a bug in the generation of the Host: + header; need to include the port number if it's not the default. + + * libsoup/soup-message-io.c (soup_message_write, + soup_message_write_simple): Take separate user_datas for the get_* + callbacks and the done callbacks. + + * libsoup/soup-queue.c: Update to use soup_message_write_request + and soup_message_read_response. + + * libsoup/soup-connection.c (soup_connection_new): Change the + prototype to take a SoupUri and a callback. + + * libsoup/soup-context.c (try_create_connection, + soup_context_connect_cb): Update for soup_connection_new change. + + * libsoup/soup-server.c (read_done_cb, issue_bad_request): Update + for soup_message_write changes + + * libsoup/soup-uri.c (soup_uri_uses_default_port): new utility + function + +2003-08-26 Dan Winship <danw@ximian.com> + + * libsoup/soup-message-private.h: Define SoupMessage signal stuff + (READ_HEADERS, READ_CHUNK, READ_BODY, READ_ERROR, WROTE_HEADERS, + WROTE_CHUNK, WROTE_BODY, WRITE_ERROR). + + * libsoup/soup-message.c (class_init): set up signals + (requeue_read_finished): Update for changes. + + * libsoup/soup-message-io.c (soup_message_read): Split out + parse_headers_cb from read_headers_cb. Also add a SoupDataBuffer * + arg to say where to store the message body. Set up + read_headers_cb, read_chunk_cb, read_body_cb, and error_cb as + signal handlers. + (do_read): Call r->parse_headers_cb, then emit READ_HEADERS + (read_body_chunk): emit READ_CHUNK. + (issue_final_callback): Set r->body. emit READ_BODY. + (failed_read): emit READ_ERROR. + (soup_message_read_set_callbacks): Disconnect old signal handlers, + connect new ones. + (soup_message_read_cancel): Disconnect signal handlers. + (soup_message_write, soup_message_write_simple): Set up + wrote_body_cb and error_cb as signal handlers. + (do_write): emit WROTE_HEADERS and WROTE_CHUNK, even though + nothing currently ever listens for them. emit WROTE_BODY when + done. + (failed_write): emit WRITE_ERROR + + * libsoup/soup-queue.c (soup_queue_parse_headers_cb, + soup_queue_read_headers_cb): Split this into two unequal chunks. + (read_header_cb only runs the pre-body handlers). + (soup_queue_read_chunk_cb, soup_queue_read_done_cb): Update + prototypes. + (soup_queue_write_done_cb): Update call to soup_message_read + + * libsoup/soup-server.c (parse_headers_cb): Renamed from + read_headers_cb + (read_done_cb): Update prototype + (start_request): Update soup_message_read call. + +2003-08-25 Dan Winship <danw@ximian.com> + + * libsoup/soup-message-io.c (soup_message_read, + soup_message_write, soup_message_write_simple): Add a "user_data" + arg, pass it to the callbacks. + + * libsoup/soup-message.c (soup_message_requeue, + requeue_read_finished, requeue_read_error): Update for that + + * libsoup/soup-queue.c: Likewise + + * libsoup/soup-server.c: Likewise + +2003-08-25 Dan Winship <danw@ximian.com> + + * libsoup/soup-message.c (soup_message_new): Take a uri string + instead of a context. Also, swap the args (so the method comes + before the URI, just like in the protocol). + (soup_message_new_from_uri): Like soup_messgae_new, but takes a + SoupUri instead of a string + (soup_message_set_request, soup_message_set_response): Replace + soup_message_new_full. + (cleanup_message): Was soup_message_cleanup, but is static now. + (queue_message): Do the pre-queuing message cleanup here instead + of in soup_queue_message. + (soup_message_queue): Set the callback and user_data, then call + queue_message. + (requeue_read_error, requeue_read_finished, soup_message_requeue): + Use queue_message + (soup_message_get_uri): Replaces soup_message_get_context. + + * libsoup/soup-message.h (SoupMessage): Remove msg->context. (It's + part of SoupMessagePrivate now) + + * libsoup/soup-context.c: #include soup-message-private + (soup_context_from_uri): constify the uri arg. + + * libsoup/soup-queue.c: Various context/uri fixes + (proxy_https_connect): Use soup_message_new_from_uri. + (soup_queue_message): Drastically simplified since most of the + work is in soup-messsage.c:queue_message() now + + * libsoup/soup-auth-digest.c (compute_response, + get_authorization): Use soup_message_get_uri. + + * libsoup/soup-server-auth.c (parse_digest): Likewise + + * libsoup/soup-server.c (call_handler): Likewise + + * tests/simple-httpd.c (server_callback): Likewise. + + * tests/simple-proxy.c (server_callback): Likewise + + * tests/get.c (got_url): Likewise. + (get_url): Update soup_message_new usage. + + * tests/auth-test.c: #include soup-message-private. Update for + context changes and soup_message_new change. + +2003-08-22 Dan Winship <danw@ximian.com> + + * libsoup/soup-message-private.h: New file containing + SoupMessagePrivate and some other soup-message-internal + types/functions. Also includes the new, expanded SoupMessageStatus + enum. + + * libsoup/soup-message-io.c: Replaces what used to be in + soup-transfer, but now all the interfaces take SoupMessages + instead of SoupReader/SoupWriter and deal with maintaining + msg->priv->{read,write}_state themselves. Fixes up all the + refcounting madness. + + * libsoup/soup-message-handlers.c: Move the handler code here, + mostly unchanged. (But rename SoupHandlerType to SoupHandlerPhase + to make the distinction from SoupHandlerKind clearer.) + + * libsoup/soup-message.c: Update for soup-message-io and new + SoupMessageStatus values. Remove handler code. + (soup_message_cleanup): Remove the hack to try to preserve the + connection if the message gets cleaned up before it finishes + reading. soup_message_requeue handles this in the requeuing case, + and there's no especially compelling reason to bother doing it in + any other case. (And the soup-message-io api doesn't support + having a read operation that's not connected to any message.) + + * libsoup/soup-private.h: remove SoupMessagePrivate + + * libsoup/soup-queue.c: Update for soup-message-io and new + SoupMessageStatus values. + + * libsoup/soup-server-message.c: Likewise + + * libsoup/soup-server.c: Likewise + + * libsoup/soup-transfer.c: Gone (yay) + + * libsoup/Makefile.am (libsoup_2_2_la_SOURCES): update + +2003-08-20 Dan Winship <danw@ximian.com> + + * libsoup/soup-message.c: Make this a GObject. (Note that since + SoupMessage was not refcounted before, it's not really refcounted + now either. TBF) + (soup_message_free): Gone, replaced by g_object_unref + (soup_message_copy, soup_message_foreach_remove_header): Remove + these, since neither was currently functional. + (soup_message_is_keepalive): New utility function to look at + HTTP version and request/response headers to decide if a message + indicates the connection should be kept alive. + (soup_message_set_connection, soup_message_get_connection): New + (soup_message_get_socket): New + + * libsoup/soup-server-message.c: Make this a subclass of + SoupMessage. + (soup_server_message_new): Now takes a SoupServer and SoupSocket + (soup_server_message_get_server): New + (soup_server_message_set_encoding, + soup_server_message_get_encoding): Get/set whether the message + should be sent with content-length or chunked encoding + (soup_server_message_is_started, soup_server_message_is_finished): + Private member accessors. + (soup_server_message_add_chunk): Renamed from add_data + (soup_server_message_get_chunk): Pops a chunk from the list. + (soup_server_message_get_source): Gone + + * libsoup/soup-server.c: Update for SoupServerMessage changes. + (error_cb, write_done_cb): All the cleanup stuff that used to be + here happens automatically by unreffing the message now. + (get_response_header): Remove some erroneous leftover CGI stuff + (issue_bad_request): add "Connection: close" to the response. + (read_headers_cb): clean this up a bit. Reject HTTP/1.1 messages + with no Host header as per RFC 2616. + + * libsoup/soup-connection.c (soup_connection_start_ssl): Gone + (soup_connection_set_in_use): Let the caller set the connection to + "not in use" even after the socket has been disconnected. + + * libsoup/soup-context.c: Use soup_message_get_connection + + * libsoup/soup-headers.c (soup_headers_parse_request): Remove the + check on request length, since it was rejecting + "GET / HTTP/1.0\r\n\r\n", which is a valid complete request. + + * libsoup/soup-queue.c: Use soup_message_get_connection and + soup_message_get_socket. + (soup_queue_read_done_cb): Use soup_message_is_keepalive + (proxy_https_connect_cb): Use soup_socket_start_ssl rather than + soup_connection_start_ssl + + * libsoup/soup-socket.c (finalize): disconnect the GIOChannel + handlers if the socket hasn't been disconnected yet. + + * libsoup/soup-transfer.c (soup_reader_read_body_chunk, + reader_read): Fix these so that reader_read will exit properly if + the read is cancelled. + + * tests/auth-test.c (main): s/soup_message_free/g_object_unref/ + + * tests/simple-httpd.c (server_callback): set the message to + content-length encoding. + * tests/simple-proxy.c (server_callback): Likewise + +2003-08-19 Dan Winship <danw@ximian.com> + + * libsoup/soup-socket.c (soup_socket_read, + soup_socket_read_until, soup_socket_write): New API for doing + socket IO. Works both synchronously and asynchronously, and + buffers data to prevent the "100 Continue" problem. + (soup_socket_set_flag): Replaces formerly-private + soup_set_sockopts. (primarily to let the caller turn off + SOUP_SOCKET_FLAG_NONBLOCKING). + + * libsoup/soup-transfer.c (soup_transfer_read, + soup_transfer_write, soup_transfer_write_simple): Take a + SoupSocket instead of a GIOChannel. Use the new socket IO api. + Changed the prototypes of some of the callbacks to be less + hackish. + + * libsoup/soup-connection.c (soup_connection_get_socket): Replaces + soup_connection_get_iochannel. + + * libsoup/soup-message.c: Fix up for soup-transfer changes + + * libsoup/soup-queue.c: Likewise + + * libsoup/soup-server.c: Likewise + + * tests/revserver.c: A slightly more complicated replacement for + timeserver. (Does both reads and writes) + +2003-08-19 Dan Winship <danw@ximian.com> + + * libsoup/soup-socks.[ch]: Remove this. RC doesn't let you + configure it, and no one has complained, and it looks like the + SOCKS5 auth code doesn't actually work anyway... + + * libsoup/soup-queue.c (proxy_connect): Remove SOCKS code. + + * libsoup/soup-uri.h: Remove SOUP_PROTOCOL_SOCKS4 and + SOUP_PROTOCOL_SOCKS5 + + * libsoup/soup-misc.c: Remove a references to SOCKS in a comment + + * libsoup/Makefile.am (libsoup_2_2_la_SOURCES): remove + soup-socks.[ch] + +2003-08-19 Dan Winship <danw@ximian.com> + + * libsoup/soup-server.c: Make this a GObject. Remove + SoupServerMessage code (to soup-server-message.c). Remove CGI + server code (for now?) + (soup_server_add_handler, soup_server_remove_handler): Rename + (from register/unregister) to make it clearer what they do. + + * libsoup/soup-server-message.c: Moved out of soup-server.c + + * libsoup/soup-private.h: Remove SoupServer def + + * libsoup/Makefile.am (libsoupinclude_HEADERS, + libsoup_2_2_la_SOURCES): add soup-server-message.[ch] + + * tests/simple-httpd.c: + * tests/simple-proxy.c: Update for SoupServer changes + +2003-08-18 Dan Winship <danw@ximian.com> + + * libsoup/soup-address.c (SoupAddressPrivate): Make this more like + a struct sockaddr again (like it used to be). In particular, add + back the "port" field. Add a bunch of macros to try (and fail) to + simplify some of the code. + (soup_address_new): Now returns a SoupAddress directly rather than + a random handle, and the caller can just use g_object_unref to + cancel the lookup. Also, the callback now uses a + SoupKnownErrorCode rather than a special-purpose address-lookup + error code. + (soup_address_new_cancel): No longer needed. + (soup_address_new_sync): Removed + (soup_address_new_any): Replaces soup_address_ipv4_any and + soup_address_ipv6_any. + (soup_address_get_name, etc): Gone. Use soup_address_resolve() + now. + (soup_address_get_physical): Renamed from + soup_address_get_canonical_name. + (soup_address_get_sockaddr): Replaces soup_address_make_sockaddr() + + * libsoup/soup-socket.c: Update for SoupAddress changes and make + similar changes here. + (soup_socket_new): Just creates a generic SoupSocket now. + (soup_socket_connect): Client setup + (soup_socket_listen): Server setup. Now also sets up an iochannel + listening for connects and emits a "new_connection" signal as they + come in. + (soup_socket_start_ssl): Turns on SSL. + (soup_socket_client_new, soup_socket_server_new): Utility + functions that wrap the above. + (soup_socket_new_cancel, soup_socket_new_sync): Gone + (soup_socket_server_accept, soup_socket_server_try_accept): No + longer needed. + (soup_socket_get_iochannel): No longer adds a ref when returning + the iochannel. Also, we set it to "close_on_unref" so that if a + caller adds a ref to it, the connection will actually remain open + even after the SoupSocket is destroyed. + (soup_socket_get_local_address, soup_socket_get_remote_address): + Let the caller get both of these. + + * libsoup/soup-connection.c: Don't keep a private copy of the + socket's iochannel. + (soup_connection_new): Don't need to set socket options here. + SoupSocket does it. + (soup_connection_start_ssl): Just call soup_socket_start_ssl. + (soup_connection_get_iochannel): Just return the socket's + iochannel (and don't ref it) + + * libsoup/soup-error.c: add SOUP_ERROR_CANT_RESOLVE and + SOUP_ERROR_CANT_RESOLVE_PROXY + + * libsoup/soup-dns.c (soup_ntop): Make the address arg const. + Remove the "FIXME add a CANT_RESOLVE error" and return + SOUP_ERROR_CANT_RESOLVE instead. + + * libsoup/soup-server.c: Update for socket/address changes. Don't + poke into SoupSocket's private fields. + (soup_server_run_async): Just connect to the socket's + "new_connection" signal. + + * libsoup/soup-context.c (try_create_connection, + soup_context_connect_cb): Update for socket changes. Replace + SOUP_CONNECT_ERROR codes with plain SOUP_ERROR codes. + + * libsoup/soup-misc.c (soup_signal_connect_once): Utility function + to connect to a signal handler and connect another function to + clean up the first signal handler after its first invocation. + (Lets us use signals to replace one-off callbacks.) + + * libsoup/soup-private.h: Remove SoupSocketPrivate since it is + actually private now. + (struct _SoupServer): Remove accept_tag. + + * libsoup/soup-queue.c (soup_queue_read_done_cb, start_request): + Don't unref the iochannel. + (soup_queue_connect_cb): Takes a SoupKnownErrorCode now. + + * libsoup/soup-socks.c: Update for socket/address changes + + * tests/simple-httpd.c (main): + s/SOUP_SERVER_ANY_PORT/SOUP_ADDRESS_ANY_PORT/ + * tests/simple-proxy.c (main): Likewise + + * tests/timeserver.c: Update for SoupSocket's "new_connection" + signal, and for SoupAddress changes. + +2003-08-14 Dan Winship <danw@ximian.com> + + * libsoup/soup-connection.c: New, split out from soup-context and + made into a GObject. + (soup_connection_disconnect): Disconnects the connection and emits + a signal. (Replaces the old "keep_alive" flag.) + (soup_connection_is_connected): Checks if the connection is still + connected + (connection_died): Just disconnect, rather than freeing the + connection. This way if anyone else is still referencing it they + won't end up with an invalid pointer. + + * libsoup/soup-context.c: Make this a GObject, remove all the + SoupConnection code. Add an "ntlm_auths" field to SoupHost so that + SoupContext can keep track of connection auth stuff there without + SoupConnection needing to care. Various other updates. + + * libsoup/soup-private.h: Remove SoupContext and SoupConnection + definitions. + + * libsoup/*.c, tests/get.c: Update for context/connection changes + + * libsoup/soup-socks.c (soup_connect_socks_proxy): Change the + definition to deal with the fact that there's no + soup_connection_get_context any more. + + * libsoup/soup-queue.c (soup_queue_read_headers_cb): Don't deal + with connection persistence here. + (soup_queue_read_done_cb): Do it here instead. Disconnect the + connection when appropriate. + (proxy_connect, proxy_https_connect, proxy_https_connect_cb): + Reference-count the connection properly. (I think.) + + * libsoup/soup-marshal.list: New, for SoupConnection's + "disconnected" signal. + + * libsoup/Makefile.am: add rules to build soup-marshal.[ch] + + * configure.in: Use AM_PATH_GLIB_2 rather than pkg-config, so that + GLIB_GENMARSHAL gets set too. + +2003-08-14 Dan Winship <danw@ximian.com> + + * libsoup/soup-error.c: Fix a spelling mistake. + + * libsoup/*.c: Fix use of @/%/#/() in gtk-doc comments + +2003-08-12 Dan Winship <danw@ximian.com> + + * libsoup/soup-auth.c: Make this an abstract GObject. Tweak some + of the interfaces around a little bit. + + * libsoup/soup-auth-basic.c: subclass for Basic auth + + * libsoup/soup-auth-digest.c: subclass for Digest auth + + * libsoup/soup-auth-ntlm.c: subclass for NTLM auth. Move all of + the code from soup-ntlm.c here, and make it private. + + * libsoup/soup-ntlm.c: gone + + * libsoup/soup-misc.h: Remove the definition of SoupAuthType from + here, and change the signature of SoupAuthorizeFn. + + * libsoup/soup-context.c: Use g_object_unref to free auths, use + methods instead of directly access private fields. + + * libsoup/soup-queue.c: Likewise + + * libsoup/soup-server-auth.c (soup_server_auth_free): Remove all + NTLM references. We have no plans to implement server-side NTLM + auth. + + * tests/auth-test.c (identify_auth): Update for auth api changes + +2003-08-12 Dan Winship <danw@ximian.com> + + * configure.in (GLIB): add gobject-2.0 to the PKG_CHECK_MODULES + call + + * libsoup/soup-address.c: Make this a GObject. + (soup_address_ref, soup_address_unref): Gone. + (soup_address_copy): Gone. Wasn't being used anyway. + + * libsoup/soup-dns.c: Move all of the DNS code and caching stuff + here from soup-address.c, so that soup-address doesn't need to + worry about trying to cache zero-ref addresses. + + * libsoup/soup-socket.c: Make this a GObject. Use "guint" + consistently for port numbers. + (soup_socket_ref, soup_socket_unref): Gone. + + * libsoup/soup-private.h: Change the SoupSocket definition to be + SoupSocketPrivate. (Still need to keep this here since soup-server + pokes around in its internals.) + (SOUP_MAKE_TYPE): Copied from gal's E_MAKE_TYPE. + + * libsoup/soup-server.c (read_done_cb, write_done_cb): Unref the + reader/writer rather than leaking them. + + * libsoup/*: Use GObject methods for socket/address refcounting + + * tests/auth-test.c (main) + * tests/timeserver.c (main): Call g_type_init. + + * tests/get.c (main): Call g_type_init. + (get_url, got_url): Fix some bugs that could make -r mode get into + infinite loops downloading the same files over and over. Plug some + memory leaks to make this more useful for valgrinding libsoup. + + * tests/simple-httpd.c (main): Call g_type_init. Set up a signal + handler for SIGINT so we can exit cleanly, since valgrind won't + give a leak report if you don't. Plug a few memory leaks. + + * tests/simple-proxy.c (main): Likewise + +2003-08-12 Dan Winship <danw@ximian.com> + + Pull over some new test programs from the soup-refactoring branch, + along with the SoupUri changes they depend on. + + * tests/simple-httpd.c: A really simple HTTP server, to test the + server code. + + * tests/simple-proxy.c: An even simpler HTTP proxy + + * tests/get.c: Add "-r" flag to recursively get files (thereby + testing multiple-connections-at-once code). Also good for setting + up a tree to use with simple-httpd. + + * tests/timeserver.c (main): Fix a bug. (s/ipv6/ipv4/ in the + normal case) + + * tests/uri-parsing.c: Regression test for the new soup-uri.c + + * libsoup/soup-uri.c: Rewrite/update to conform to RFC 2396, and + pull in some optimizations from camel-url. Also, make SoupProtocol + a GQuark so we can still compare them with ==, but we can also + recognize any protocol. + (soup_uri_new_with_base): New, to merge base and relative URIs + (soup_uri_to_string): Update this. Change the "show_password" flag + (which we always passed FALSE for) to "just_path", for places that + want the path+query without the protocol, host, etc. + + * libsoup/soup-queue.c (soup_get_request_header): Just use + soup_uri_to_string to generate the request URI. + + * libsoup/soup-auth.c (compute_response, digest_auth_func): Use + "soup_uri_to_path (uri, TRUE)" rather than trying to reassemble + the URI by hand badly. + * libsoup/soup-server-auth.c (parse_digest): Likewise + + * libsoup/soup-socks.c (soup_connect_socks_proxy): Change a + switch() to an series of if()s since SOUP_PROTOCOL_* aren't + constants any more. + + * libsoup/soup-context.c (soup_context_uri_hash, + soup_context_uri_equal): s/querystring/query/ + +2003-08-12 Dan Winship <danw@ximian.com> + + * configure.in: Bump API version to 2.2 and package version to + 2.1.0. Remove NSS and OpenSSL checks and proxy-related config. Use + libgnutls-config to find GNUTLS. + + * libsoup-2.2.pc.in: Update, and rename from soup-2.0.pc + + * Makefile.am: Update for pc file rename + + * libsoup/Makefile.am: s/2.0/2.2/ everywhere. Remove NSS, OpenSSL, + and libsoup-ssl-proxy stuff. + + * libsoup/soup-ssl-proxy.c + * libsoup/soup-nss.[ch] + * libsoup/soup-openssl.[ch]: gone + + * libsoup/soup-ssl.c: remove NSS and OpenSSL bits + + * tests/Makefile.am (get_LDADD, timeserver_LDADD, + auth_test_LDADD): Update libsoup version + +2003-08-07 Dan Winship <danw@ximian.com> + + * libsoup/soup-auth.c (soup_auth_lookup, soup_auth_set_context, + soup_auth_invalidate): These are all really SoupContext functions, + so move them to soup-context.c (and rename them appropriately). + (soup_auth_get_protection_space): New method to get the + "protection space" of an auth (paths where it is valid). + (soup_auth_invalidate): New method to try to un-authenticate an + auth (so we can keep the domain info cached even if the auth info + is wrong). + (basic_pspace_func): Basic protection space is all directories + below the current one. + (basic_invalidate_func): Clear the encoded username/password + (digest_pspace_func): Digest protection space is either the whole + server, or "what the domain parameter says" (though we don't deal + with cross-host domains). + (digest_invalidate_func): Return FALSE; bad digest auth info isn't + cacheable. + (digest_parse_func, digest_free): Set/free domain parameter + (ntlm_pspace): NTLM protection space is always the whole server. + (ntlm_invalidate): Clear the auth state. + (soup_auth_new_ntlm): Make this non-static + (SoupAuth): Replace the quad-state "status" field with an + "authenticated" boolean. + + * libsoup/soup-private.h (SoupHost): Replace the "valid_auths" + hash with separate "auth_realms" (path->realm) and "auths" + (realm->auth) hashes. Also add a "use_ntlm" flag. + + * libsoup/soup-context.c (soup_context_unref): Update SoupHost + freeing code. + (connection_free): Don't the connection's auth, just free it. + (soup_context_lookup_auth): Formerly soup_auth_lookup, but now + does two-stage lookup (path->realm then realm->auth) and also + deals with NTLM hacks. + (soup_context_update_auth): Mostly formerly soup_auth_set_context, + but also large parts of authorize_handler. Updates the auth hashes + based on information from a 401 or 407 response. Does a better job + than authorize_handler did of not throwing away good information. + (soup_context_preauthenticate): New; fakes up auth info so that + requests will end up using authentication without the server + needing to return an error first. + (soup_context_authenticate_auth): Moved out of authorize_handler + so it can be used at request-sending time too, if we know that we + need it. (That way we can avoid requeuing the request if it isn't + going to be able to be authenticated.) + (soup_context_invalidate_auth): Sort of like the old + soup_auth_invalidate, but only destroys the auth data, while still + remembering the path->realm mapping. + + * libsoup/soup-message.c (authorize_handler): Mostly moved into + soup_context_update_auth. + (maybe_validate_auth): Remove this; it was only useful because of + bugs elsewhere in the auth handling. + + * libsoup/soup-queue.c (soup_encode_http_auth): Update for + soup_context_lookup_auth. If the returned auth isn't + authenticated, call soup_context_authenticate_auth() on it. + + * tests/auth-test.c: New (from soup-refactoring branch). Tests + that the Basic/Digest auth code does the right thing. (TODO: find + a good way to add NTLM tests too.) + + * tests/Makefile.am (check_PROGRAMS): add auth-test + +2003-07-29 Dan Winship <danw@ximian.com> + + * configure.in: 1.99.25 ("Potato and Leek Soup") + + * libsoup/soup-message.c (requeue_read_finished, + release_connection): Free the passed-in body data. Otherwise the + response body ends up getting leaked on most 3xx and 4xx + responses. + (soup_message_cleanup): Remove a piece of code that didn't + actually do anything and its associated confused comment. + + * libsoup/soup-auth.c (ntlm_free): plug an occasional NTLM auth leak + + * libsoup/soup-context.c (connection_free): plug a non-occasional + NTLM auth leak. + +2003-06-26 Joe Shaw <joe@ximian.com> + + * configure.in: Version 1.99.24 + +2003-06-24 Dan Winship <danw@ximian.com> + + * configure.in: Check pkgconfig for openssl, since 0.9.7 (a) uses + it, and (b) depends on lots of new things sometimes (like on RH9). + + * libsoup/soup-openssl.c: + * libsoup/soup-ssl-proxy.c: Change #ifdef HAVE_OPENSSL_SSL_H to + just #ifdef HAVE_OPENSSL since the header check doesn't get run in + the pkgconfig case + +2003-06-19 Dan Winship <danw@ximian.com> + + * libsoup/soup-queue.c (soup_queue_read_done_cb): unref the + old read_tag before changing/clearing it. + (soup_queue_write_done_cb): Likewise with the write_tag. + + * libsoup/soup-transfer.c (issue_final_callback): ref the reader + around the stop+callback. + (soup_transfer_write_cb): Likewise. + +2003-06-12 Dan Winship <danw@ximian.com> + + * libsoup/soup-transfer.c (SoupReader, SoupWriter): add a + ref_count field. + (soup_transfer_read, create_writer): Set initial ref_count to 2 + (one for soup-transfer, one for the caller). + (soup_transfer_read_ref, soup_transfer_read_unref): ref/unref a + reader + (soup_transfer_read_stop): Clears the GIOChannel callbacks and + drops soup-transfer's ref. + (soup_transfer_read_cancel): Now just a stop+unref + (soup_transfer_write_ref, soup_transfer_write_unref, + soup_transfer_write_stop, soup_transfer_write_cancel): Similarly. + + * libsoup/soup-message.c (soup_message_cleanup): when setting up + the "finish reading" callbacks, unref the reader so it will be + destroyed once it's done reading. + (soup_message_requeue): Likewise. + + * libsoup/soup-queue.c (soup_queue_read_headers_cb): Update for + prototype change (no longer returns a SoupTransferDone). + (soup_queue_read_chunk_cb): Likewise. + + * libsoup/soup-server.c (read_headers_cb): Likewise + +2003-06-11 Dan Winship <danw@ximian.com> + + * libsoup/soup-transfer.c: Change all functions to take a + SoupReader * or SoupWriter * instead of a guint. + + * libsoup/soup-private.h (SoupMessagePrivate): make read_tag and + write_tag pointers instead of guints. + +2003-06-02 Chris Toshok <toshok@ximian.com> + + * libsoup/soup-ssl.c: remove #include for soup-nss.h + +2003-06-02 Chris Toshok <toshok@ximian.com> + + * libsoup/Makefile.am (INCLUDES): remove NSS_CFLAGS. + (libsoup_2_0_la_LIBADD): remove NSS_LIBS. + (libsoup_2_0_la_SOURCES): remove soup-nss.[ch] + +2003-06-02 Chris Toshok <toshok@ximian.com> + + * configure.in: Bump version to 1.99.23. + +2003-05-30 Chris Toshok <toshok@ximian.com> + + * libsoup/soup-queue.c (soup_queue_error_cb): always force a + reconnect when there's an error with ssl connection. This fixes + #43387, but it runs the risk of sending requests multiple times to + the exchange server, and it results in lots of shorter lived + connections and more forking (in the ssl proxy case), depending on + the length of the operation. + +2003-05-21 Dan Winship <danw@ximian.com> + + * configure.in: 1.99.22 (codename: French Onion Soup) + +2003-05-20 Dan Winship <danw@ximian.com> + + * libsoup/soup-message.c (soup_message_requeue): Clear the + write_tag as well so we don't double-cancel it. #43395. + + * libsoup/soup-queue.c (soup_queue_error_cb): The connection might + be destroyed by the end of the func, so we have to call + soup_connection_set_used at the beginning. + + * libsoup/soup-openssl.c (soup_openssl_read, soup_openssl_write): + Call g_set_error() so that we don't SEGV immediately after + returning G_IO_STATUS_ERROR. + +2003-05-08 Joe Shaw <joe@ximian.com> + + * configure.in: Bump version to 1.99.21 + + * libsoup/soup-queue.c (proxy_connect): If the proxy HTTPS + tunnelling fails, the other message which shares our same + connection will free it first, so set ours to NULL. + +2003-05-08 Dan Winship <danw@ximian.com> + + * libsoup/soup-auth.c (ntlm_auth): If the auth status is PENDING, + return an NTLM request string. Otherwise return the "response" + field (which should include the NTLM authenticate message) + (ntlm_init): Don't bother setting "response" to the NTLM request + string. Just leave it NULL in that case. + + * libsoup/soup-message.c (authorize_handler): Never try to reuse + an NTLM auth returned from soup_auth_lookup. Only set the auth on + the connection when it's SOUP_AUTH_STATUS_SUCCESSFUL. Otherwise, + call soup_auth_set_context() on it just like for non-NTLM auth. + The net effect of all of this is that now we record when a context + needs NTLM auth just like with non-NTLM auth, so that that info + gets preserved across connections. + (soup_message_requeue): No longer need the hackery here to + preserve the connection auth state. + +2003-05-07 Dan Winship <danw@ximian.com> + + * libsoup/soup-context.c (soup_connection_set_in_use): New, to + toggle the connection's in_use flag, and set up the death watch + when it's not in use. + (connection_death): This is only hooked up when the connection is + not in use now, so don't need to check that. Should fix the + infinite connection_death loop. + (soup_connection_is_new): Keep a distinct "new" flag rather than + defining "new" as "has been released at least once". + (soup_connection_set_used): Mark a connection no-longer new. + (soup_context_connect_cb): Mark the connection as new. Don't set + up the death watch since it's in_use. + (try_existing_connections): Use soup_connection_set_in_use. + (soup_connection_release): Likewise + + * libsoup/soup-message.c (requeue_read_finished): Call + soup_connection_set_used so that the connection isn't still + considered new when we send the message the second time. + + * libsoup/soup-queue.c (soup_queue_error_cb): Call + soup_connection_set_used (assuming we don't close the connection) + (soup_queue_read_done_cb): Likewise. + + * libsoup/soup-transfer.c (soup_transfer_read_cb): If we read + nothing, call soup_transfer_read_error_cb rather than just + cancelling, or else it will get cancelled again later. + +2003-05-07 Dan Winship <danw@ximian.com> + + * soup-2.0.pc.in (Libs): Don't put @OPENSSL_LIBS@ here; the + library doesn't depend on them, only the proxy does. #42473 + +2003-05-06 Dan Winship <danw@ximian.com> + + * src/libsoup/soup-message.c (global_handlers): Change the + redirect handler to be a RESPONSE_ERROR_CLASS_HANDLER for + SOUP_ERROR_CLASS_REDIRECT rather than a RESPONSE_HEADER_HANDLER + for "Location" to get around the non-64-bit-clean union + initialization pointed out by Jeremy Katz <katzj@redhat.com>. + (redirect_handler): Update for that. + +2003-04-28 Dan Winship <danw@ximian.com> + + * configure.in: 1.99.20 + + * libsoup/soup-transfer.c (soup_transfer_read_error_cb): Make sure + we always call UNIGNORE_CANCEL. Might fix #41971 + +2003-04-25 Dan Winship <danw@ximian.com> + + * libsoup/soup-queue.c (soup_queue_error_cb): if an old connection + suddenly gets an io error while reading or writing, assume it's a + timeout or something, close the connection, and requeue the + message. + +2003-04-23 Dan Winship <danw@ximian.com> + + * libsoup/soup-message.c (soup_message_cleanup): Don't set up the + soup-transfer callbacks to keep reading off the connection unless + we're actually going to keep the connection around afterward. + Otherwise we can just close it. + + * libsoup/soup-transfer.c: Re-kludge the awful IGNORE_CANCEL + thingy so that it's possible to cancel a read from inside a + callback so that the above change actually works instead of just + crashing. + +2003-04-20 Rodney Dawes <dobey@ximian.com> + + * configure.in: Up version to 1.99.18 + * libsoup/Makefile.am: Line separator after GNUTLS_CFLAGS + +2003-04-11 Dan Winship <danw@ximian.com> + + * libsoup/soup-context.c (soup_connection_purge_idle): New + function to close all idle connections. (Needed for #41117 or else + there's no way to force-discard NTLM authentication.) + + * libsoup/soup-queue.c (soup_queue_shutdown): Use it + +2003-04-10 Joe Shaw <joe@ximian.com> + + * libsoup/soup-queue.c (proxy_https_connect): + proxy_https_connect_cb() might not get called if connecting to the + proxy fails, and it causes us to double-free the connection. + Always set the message's connection to NULL before freeing it. + +2003-04-09 Dan Winship <danw@ximian.com> + + * configure.in: 1.99.17 + +2003-04-07 Dan Winship <danw@ximian.com> + + * libsoup/soup-context.c (connection_death): Revert Joe's changes. + We can't release the connection there because there may be + SoupMessages still pointing to it. (Needs to be revisited.) + +2003-04-03 JP Rosevear <jpr@ximian.com> + + * libsoup/soup-ssl.c (soup_ssl_hup_waitpid): guard against EINTR + error during waitpid + + * libsoup/soup-address.c: ditto + +2003-04-02 Joe Shaw <joe@ximian.com> + + * libsoup/soup-context.c (connection_death): Only drop the + connection if we get an error condition on the channel. Fixes a + double-free. + +2003-04-02 Joe Shaw <joe@ximian.com> + + * libsoup/soup-context.c (connection_death): Just call + soup_connection_release() from here and return whether the + connection is in use. + +2003-03-31 Ian Peters <itp@ximian.com> + + * libsoup/soup-gnutls.c (soup_gnutls_close): loop on gnutls_bye in + case of EAGAIN or EINTR, since shutting down an SSL connection + requires more than just closing a socket. + +2003-03-28 Dan Winship <danw@ximian.com> + + * libsoup/soup-message.c (soup_message_set_context): If the new + context points to a different server from the old context, call + soup_message_cleanup. Otherwise it tries to reuse the old + connection... + +2003-03-25 Joe Shaw <joe@ximian.com> + + * configure.in: Bump up to 1.99.16 + +2003-03-24 Joe Shaw <joe@ximian.com> + + * soup-error.[ch]: Add SOUP_ERROR_SSL_FAILED which gives a + slightly better error message on various SSL failures than the + previous message. + + * soup-queue.c (soup_queue_error_cb): Throw the + SOUP_ERROR_SSL_FAILED error when we fail an SSL handshake. + +2003-03-21 Joe Shaw <joe@ximian.com> + + * soup-server.c: Use non-deprecated g_main_loop_* calls + throughout. + (soup_server_unref): Don't unref the main loop if it's NULL. + Fixes a glib warning. + +2003-03-18 Dan Winship <danw@ximian.com> + + * configure.in: comment out NSS checks. The NSS code doesn't work + and there are no current plans to fix it. + + * README (Features): Mention GnuTLS, remove NSS and the rest of + the "Planned Features" section. + + * MAINTAINERS: remove Alex + + * libsoup/soup-openssl.c (soup_openssl_get_iochannel): Bump the + timeout to 10 seconds (and get rid of the 3 tries) so we don't + fail to connect just because the server is slow/far away. + +2003-03-17 Joe Shaw <joe@ximian.com> + + * configure.in: Bump up to 1.99.15. + +2003-03-12 Ian Peters <itp@ximian.com> + + * libsoup/soup-gnutls.c: because creating client credentials is + expensive, keep the same one around as long as possible, only + recreating it if the ssl_ca_file changes. Wrap + gnutls_certificate_credentials in a refcounted struct to avoid + freeing it while another established connection may potentially + need it (say, to rehandshake). + +2003-03-11 Frank Belew <frb@ximian.com> + + * soup-2.0.pc.in: add ssl libs to defaults, since ssl doesn't + use pkgconfig + +2003-03-10 Joe Shaw <joe@ximian.com> + + * configure.in: Bump up to 1.99.14. + + * configure.in, libsoup/Makefile.am, libsoup/soup.gnutls.[ch], + libsoup/soup-ssl.c: Add support for GnuTLS. Patch from Ian + Peters. + +2003-03-07 Joe Shaw <joe@ximian.com> + + * configure.in: Bump up to 1.99.13. + + * libsoup/soup-context.c (soup_context_connect_cb): Add G_IO_IN to + the list of conditions to watch. If the remote end hangs up the + connection, we'll get a successful read of 0 bytes, not a HUP. + The connection will have to be released by the point we check for + it in connection_death(). + + * libsoup/soup-queue.c (soup_queue_error_cb): Get rid of some + (apparently) errant resetting of the read and write tags. I think + this might have been causing some reentrancy and crashes. + + * libsoup/soup-socket.c (soup_socket_get_iochannel): Set the IO + channel to NULL encoding and not buffered. + + * libsoup/soup-transfer.c (soup_transfer_read_cb): Remove some + incorrect comments. + +2003-02-28 Joe Shaw <joe@ximian.com> + + * configure.in: Bump up to 1.99.12. + + * libsoup/soup-transfer.c (soup_transfer_read_cb): We can get a + header_len of 0 and a total_read of 0 in the case of a SIGPIPE; in + this case we probably don't want to call the error callback, we + just want to act like our transfer was cancelled. + +2003-02-27 Joe Shaw <joe@ximian.com> + + Try to apply some order to the iochannel refcounting... + + * configure.in: Bump up to 1.99.11. + + * libsoup/soup-context.c (soup_connection_get_iochannel): The + connections needs to own a reference to the iochannel! If we're + using HTTPS, release the ref we get from soup_socket_get_iochannel + and replace it with the ref we get from soup_ssl_get_iochannel(). + Then, always ref the channel that we return (ugh, but that's the + soup way). + (connection_free): Release the connection's ref to the iochannel. + + * libsoup/soup-ssl.c (soup_ssl_get_iochannel_real): Ref the + iochannel. The reference we pass back will be owned by the + connection. + (soup_ssl_hup_waitpid): Release our ref. + +2003-02-27 Joe Shaw <joe@ximian.com> + + * configure.in: Bump up to 1.99.10. + + * libsoup/soup-ssl.c (soup_ssl_get_iochannel_real): Ref the + iochannel, return to the status quo. Sigh. + +2003-02-26 Joe Shaw <joe@ximian.com> + + * configure.in: Bump up to 1.99.9. + + * libsoup/soup-ssl.c (soup_ssl_hup_waitpid): Comment out the unref, + it's causing problems with HTTPS and proxies; the iochannel + refcounting is waaaaaay horked. + +2003-02-26 Frank Belew <frb@ximian.com> + + * libsoup/Makefile.am: added workaround to link ssl-proxy statically + +2003-02-11 Joe Shaw <joe@ximian.com> + + * configure.in: Bump up to 1.99.8 for snaps. + + * libsoup/soup-address.c (soup_gethostbyname): Fix this for Solaris. + It returns the address to the resulting hostent or NULL on failure, + unlike Linux which returns an error code. + +2003-02-11 Joe Shaw <joe@ximian.com> + + * configure.in: Bump up to 1.99.7 for snaps. + + * libsoup/soup-openssl.c (soup_openssl_get_iochannel): Print out + the error string from OpenSSL if we can't establish a connection. + +2003-02-04 Joe Shaw <joe@ximian.com> + + * configure.in: Bump up to 1.99.6 for snaps. + + * libsoup/soup-server.c (destroy_message): We already assigned + chan, so don't reassign it, and unref it in all cases. + (issue_bad_request): Always unref after a call to + soup_socket_get_iochannel(), because it refs it. + (conn_accept): Fix some funky GIOChannel reffing here. + + * libsoup/soup-ssl.c (soup_ssl_get_iochannel_real): Don't call + g_io_channel_ref() on the socket. This is the exact opposite of + what we want to do. Create a temporary structure containing the + parent pid and the old socket and unref the socket when our + callback is called. This should fix GIOChannels being leaked on + SSL connections. + + * libsoup/soup-ssl-proxy.c: Always close the GIOChannels after the + main loop quits. + +2003-01-22 Joe Shaw <joe@ximian.com> + + * configure.in: Bump up to 1.99.5 for the snaps. + + * libsoup/soup-address.c (soup_address_new): If we found the + address in our hash, we need to return NULL or else Soup will + think we're doing an async lookup and do some cancellation on + us. Besides, we were returning the wrong type anyway and it + was crashing things. + +2003-01-17 Joe Shaw <joe@ximian.com> + + * libsoup/soup-ssl-proxy.c (soup_ssl_proxy_readwrite): It's not + uncommon for us to get a G_IO_ERROR_AGAIN when trying to write + out, so keep trying until we succeed. + +2003-01-10 Joe Shaw <joe@ximian.com> + + * libsoup/soup-openssl.c (verify_cb): Load some X509 and SSL error + strings and print out the error when the cert can't verify. + +2003-01-09 Dan Winship <danw@ximian.com> + + * libsoup/soup-address.c (soup_gethostbyname): Fix a memcpy + overrun noticed by valgrind + +2002-12-20 Joe Shaw <joe@ximian.com> + + * libsoup/soup-server.c (soup_server_new_with_host): Added. + Starts a server only on the interface specified, instead of all + network interfaces. + +2002-12-16 Jeremy Katz <katzj@redhat.com> + + * configure.in: use $libdir instead of /usr/lib when looking for + libraries + +2002-12-11 Joe Shaw <joe@ximian.com> + + * libsoup/soup-queue.c (proxy_https_connect_cb): I am an idiot. + Don't set a variable to NULL and then immediately try to + dereference it. + +2002-12-09 Joe Shaw <joe@ximian.com> + + * libsoup/soup-openssl.c (soup_openssl_get_iochannel): Put a + timeout on the select()s when we get SSL_ERROR_WANT_READ/WRITE so + we don't hang forever if we don't get more data. + + * libsoup/soup-ssl-proxy.c (main): Don't set our fds to blocking + or else we'll hang forever in SSL_connect() if the other side + hangs up. + + * libsoup/soup-queue.c (proxy_https_connect_cb): We never want to + release the connection on message free, even if the connection was + unsuccessful. + +2002-12-03 Joe Shaw <joe@ximian.com> + + * libsoup/soup-ssl.c (soup_ssl_get_iochannel_real): Call + g_io_channel_set_close_on_unref() on the second half of the socket + pair so we don't leak file descriptors. + +2002-12-03 Frank Belew <frb@ximian.com> + + * libsoup/soup-address.c: add signal.h to the list of headers to + pick up SIGKILL + +2002-11-25 Joe Shaw <joe@ximian.com> + + * Makefile.am: Build the tests directory again + +2002-11-21 Rodney Dawes <dobey@ximian.com> + + * configure.in: Don't require autoconf 2.5x, needs to work with 2.13 + +2002-11-20 Michael Meeks <michael@ximian.com> + + * configure.in: require autoconf 2.52 not 2.53. + +2002-11-18 Dan Winship <danw@ximian.com> + + * libsoup/soup-address.c (soup_address_hash): Don't use s6_addr32 + since it's apparently non-portable. Use s6_addr instead. + (soup_gethostbyaddr): fix a sometimes-uninitialized variable. + + * libsoup/soup-error.c: Fix spelling of + SOUP_ERROR_MOVED_PERMANENTLY and its description. + + * libsoup/soup-message.c (soup_message_get_request_header, etc): + Remove long-deprecated API. + + * libsoup/soup-socket.c (soup_socket_connect): remove unused + variable. + + * libsoup/soup-openssl.c (soup_openssl_read): Use gsize. + * libsoup/soup-server.c (cgi_read): Likewise + * libsoup/soup-socks.c (soup_socks_write, soup_socks_read): + Likewise. + * libsoup/soup-ssl-proxy.c (soup_ssl_proxy_readwrite): Likewise. + * libsoup/soup-transfer.c (soup_transfer_read_cb, + soup_transfer_write_cb): Likewise. + + * tests/timeserver.c: Add "-6" to listen on the IPv6 local address + instead of IPv4. (Tested on OS X.) + +2002-11-15 Dan Winship <danw@ximian.com> + + * libsoup/*: Change old Helix Code refs to Ximian (and update + copyright dates). + +2002-11-15 Frank Belew <frb@ximian.com> + + * tests/Makefile.am: uncomment lines to make timeserver build + correctly + +2002-11-14 Joe Shaw <joe@ximian.com> + + * libsoup/soup-address.c (soup_address_new): When we get an + address from the hash, call our address lookup callback or else + the connection will hang. + +2002-11-13 Dan Winship <danw@ximian.com> + + * tests/timeserver.c: Oops, commit this. + + * tests/Makefile.am (noinst_PROGRAMS): reenable timeserver. + +2002-11-13 Joe Shaw <joe@ximian.com> + + * libsoup/Makefile.am: Replace the BINDIR define with LIBEXECDIR. + (install-exec-hook): Install libsoup-ssl-proxy into libexecdir + instead of bindir. + + * libsoup/soup-openssl.c (soup_openssl_close): Call SSL_shutdown() + to properly shut down the SSL connection before closing the + socket. + + * libsoup/soup-ssl-proxy.c (soup_ssl_proxy_readwrite): Close the + iochannels before quitting the main loop. + + * tests/Makefile.am: disable building timeserver, the source file + wasn't added. + +2002-11-12 Dan Winship <danw@ximian.com> + + * configure.in: Check for IPv6 support in networking headers. + + * libsoup/soup-address.c: Make the internal structure of + SoupAddress entirely private, and make SoupAddress be more like a + hostent and less like a sockaddr. (Ie, make it not have a port + associated with it.) Document undocumented functions. Add + completely-untested support for IPv6. + (soup_address_new_from_sockaddr): New, to parse a sockaddr into a + SoupAddress and a port. + (soup_address_ipv4_any, soup_address_ipv6_any): Return static + addresses corresponding to the IPv6 and IPv6 "any" addresses. + (soup_address_get_canonical_name): Use inet_ntop/inet_ntoa. + (soup_address_make_sockaddr): Now constructs a new sockaddr, which + may be a sockaddr_in or sockaddr_in6. + (soup_address_gethostname, soup_address_gethostaddr): Remove + these. They aren't reliable, especially on multihomed hosts. + (soup_gethostbyname, soup_gethostbyaddr): support IPv6 + (soup_address_new): Keep pending lookups in a separate hash table + from completed lookups. Fix a bug when canceling a lookup when + there was more one outstanding request for it. + (soup_address_lookup_in_cache): Removed. + + * libsoup/soup-socket.c: Add a port field to SoupSocket (since + it's not in SoupAddress any more). + (soup_socket_connect): Simplify this. Don't use + soup_address_lookup_in_cache, just call soup_address_new, since we + already know the code can deal with the callback being invoked + immediately. + (soup_socket_new_sync, soup_socket_new): Take a port argument. + (soup_socket_server_new): Take a SoupAddress to use as the local + address to bind to. This lets the caller choose between the IPv4 + and IPv6 "any" addresses, and also lets you bind to a single + interface of a multi-homed machine. + (soup_socket_server_accept, soup_socket_server_try_accept): Merge + the common code. + + * libsoup/soup-server.c (soup_server_new): Pass + soup_address_ipv4_any() to soup_socket_server_new(). + + * libsoup/soup-socks.c (soup_connect_socks_proxy, + soup_socks_write): Fix up for the API changes, but it won't work + with IPv6 yet. + + * tests/timeserver.c: Another really simple test, for the server + socket code. + + * tests/Makefile.am: build timeserver + +2002-11-11 Dan Winship <danw@ximian.com> + + * libsoup/soup-address.c: Move the SoupAddress code from + soup-socket.c and soup-socket-unix.c to here. + + * libsoup/soup-socket.c: Move the remaining code from + soup-socket-unix.c here. + + * libsoup/soup-socket-unix.c: Gone + + * tests/get.c: really really trivial test program + + * configure.in (AC_OUTPUT): + * Makefile.am (SUBDIRS): add tests/ + +2002-11-05 Dan Winship <danw@ximian.com> + + * Split libsoup out of soup. ChangeLog.old contains the original + soup ChangeLog. + + * Makefile.am, etc: Fix things up to work with the new directory + layout. Disable docs until we fix them. + + * autogen.sh: Use gnome-autogen.sh + + * configure.in: Require autoconf 2.53. Remove stuff that was only + needed for httpd or wsdl code. Remove glib1 support. Bump version + to 2.0. + + * libsoup/Makefile.am: Rename library to libsoup-2.0, put includes + in ${includedir}/soup-2.0 + + * libsoup/*: Merge soup-0-7 back onto the trunk. Remove + SOAP-specific stuff, Windows support, and other things that + weren't being maintained. + + * soup-config.in, soupConf.sh: Kill these. We only support + pkg-config now. |