summaryrefslogtreecommitdiff
path: root/ChangeLog.pre-git
diff options
context:
space:
mode:
authorDan Winship <danw@gnome.org>2009-04-24 11:01:13 -0400
committerDan Winship <danw@gnome.org>2009-04-24 11:01:13 -0400
commitdc198fb438c5d66c340c5ebc004288b17a99db1f (patch)
tree897d5145a557ca5846498b5607c0b9e7fb6bd18d /ChangeLog.pre-git
parent2978f794ec34f81231224ab824873d82108ee60c (diff)
downloadlibsoup-dc198fb438c5d66c340c5ebc004288b17a99db1f.tar.gz
Belatedly move Changelog to Changelog.pre-git, update for that
Diffstat (limited to 'ChangeLog.pre-git')
-rw-r--r--ChangeLog.pre-git6957
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.