LibSoup Changelog

New in version 2.52 Beta 1

August 20th, 2015
  • Added a new GVariant-based XMLRPC API, and deprecated the old GValue-based API (along with the associated GValue-manipulating utilities). [#746495, Xavier Claessens]
  • Multiple build fixes for Visual Studio [#752952, Chun-wei Fan]
  • Added VAPI generation [#750679, Daniel Espinosa]
  • Fixed the mode bits on soup-cookie.c, which was previously marked executable for some reason. [rh #1247285]
  • Updated translations: Norwegian bokmal, Portuguese, Thai, Turkish

New in version 2.51.3 (June 23rd, 2015)

  • Fixed "make check" in non-English locales [rh #1224989, #749397]
  • Fixed some compiler warnings [#748514, Philip Withnall]
  • New/Updated translations:
  • Aragonese, Catalan, Occitan, Russian

New in version 2.50.0 (March 24th, 2015)

  • Updated translations: Basque, Chinese (Taiwan), Danish, Indonesian, Norwegian bokmal

New in version 2.50.0 RC (March 20th, 2015)

  • Fixed an NTLM problem that caused spurious "Authentication Failed" errors in evolution-ews. [#735197]
  • New/updated translations:
  • Bosnian, Czech, Greek, Hebrew, Italian, Korean, Lithuanian, Polish, Serbian, Slovak, Slovenian, Spanish, Swedish

New in version 2.50.0 Beta 2 (March 16th, 2015)

  • WebSockets! Libsoup now has support for WebSockets in both SoupSession and SoupServer. [#627738, Dan Winship and Lionel Landwerlin, based on code from the Cockpit project]
  • Added support for NTLMv2 Session Security to SoupAuthNTLM. (This is transparent to the app/user; if the server supports it, it will be used.) [#739192, Adam Seering]
  • Added soup_server_accept_iostream() to allow feeding a non-GSocketConnection GIOStream to SoupServer (eg, when accepting HTTP requests on some other sort of connection). [#744186, Marc-André Lureau]
  • Added soup_session_steal_connection() and soup_client_context_steal_connection(), to allow you to steal a GIOStream from a SoupSession or SoupServer and then use it for non-HTTP purposes. [#721343, Dan Winship]
  • Added soup_server_add_early_handler(), for adding SoupServer handlers to run at :got-headers time rather than :got-body (eg, to set up a streaming read of the request body). [#625645, Dan Winship]
  • Added a new SOUP_MESSAGE_IGNORE_CONNECTION_LIMITS flag, which can be used to bypass SoupSession:max-conns and SoupSession:max-conns-per-host on a per-message basis. [#744720, Carlos Garcia Campos]
  • Multiple SoupCache fixes from Carlos Garcia Campos:
  • Leaked resources are now cleaned up when opening the cache. [#667682]
  • The "Age" header is no longer added to cached responses. [#741108]
  • Fixed the interpretation of the "must-revalidate" directive to not be stricter than required. [#744468]
  • Messages retrieved from cache now behave slightly more like non-cache messages in terms of SoupSession signals and timing. [#744788] Additionally, there is a new SoupMessage::starting signal, which is like SoupSession::request-started, but emitted for cached resources as well. [#731153]
  • Fixed soup_session_cancel_message() to work reliably on paused messages. [#745094, Sven Neumann]
  • Added code-coverage support to the build.
  • Fixed the library symbol check in "make check" to work when building with linker options that result in slightly different organization. [#741348, Iain Lane]
  • Added a hack to SoupSessionFeature so that people will stop re-reporting an old Eclipse bug against libsoup. [#710242]
  • Miscellaneous bug and leak fixes in the test programs, leak fixes in libsoup, and documentation updates.
  • Updated translations:
  • Brazilian Portuguese, French, Galician, Hungarian, Slovak, Slovenian, Spanish, Turkish

New in version 2.49.1 (February 5th, 2015)

  • Fixed a bug in the SoupMessage:event signal that broke evolution's ability to connect to https hosts with "bad" certificates. [#739951, Dan Winship]
  • Fixed a case where the async codepaths could potentially block on a synchronous write [#727138, Dan Winship]
  • Fixed the symbol soup_server_set_ssl_cert_file() to get exported, and added soup_server_get_uris() to the documentation. [Tristan Van Berkom]
  • Improved a bunch of introspection annotations [#729987, Evan Nemerson]
  • Clarified some documentation. [Tristan Van Berkom, Dan Winship]
  • Fixed Windows build, twice [#738003, Kouhei Sutou, and #738551, Kalev Lember].
  • Updated translations: Bengali (Indian), Chinese (Traditional), Italian, Latvian, Serbian, Telugu, Ukranian

New in version 2.48.1 (February 5th, 2015)

  • Fixed a bug in the SoupMessage:event signal that broke evolution's ability to connect to https hosts with "bad" certificates. [#739951, Dan Winship]
  • Fixed a case where the async codepaths could potentially block on a synchronous write [#727138, Dan Winship]
  • Fixed the symbol soup_server_set_ssl_cert_file() to get exported, and added soup_server_get_uris() to the documentation. [Tristan Van Berkom]
  • Improved a bunch of introspection annotations [#729987, Evan Nemerson]
  • Clarified some documentation. [Tristan Van Berkom, Dan Winship]
  • Fixed Windows build, twice [#738003, Kouhei Sutou, and #738551, Kalev Lember].
  • Updated translations: Bengali (Indian), Chinese (Traditional), Italian, Latvian, Serbian, Telugu, Ukranian

New in version 2.45.3 (December 20th, 2013)

  • The documentation has finally been updated to reflect the new APIs added in 2.42.
  • Added GBytes-valued :request-body-data and :response-body-data properties to SoupMessage, which should help some bindings.
  • We now set TCP_NODELAY on sockets, improving throughput a bit. In particular, this avoids an unnecessary extra round trip in the TLS handshake.
  • The SoupSession APIs that return GErrors now return the actual underlying gio errors in the event of connection failures and the like.
  • Updated the copy of the Public Suffix list used by soup-tld.

New in version 2.42.3 (November 15th, 2013)

  • Fixed an authentication error when using NTLM when connecting to an https site over a proxy; the code was getting confused and thinking that the 200 OK response to the CONNECT meant that NTLM auth had succeeded. [#698728, Dan]
  • Fixed a bug that could cause synchronous sessions to get stuck in a state where no new messages would ever get processed. [#703463, Philip Withnall]
  • Fixed a bug in the connection-pool code, which would in certain cases accidentally keep using a connection after a message was cancelled while in progress, causing the next request on that connection to get the response to the previous request, etc. [#708006, David Woodhouse]
  • Fixed some problems when falling back from samba single-sign-on-based NTLM to ordinary ask-for-a-password NTLM. [#703186, David Woodhouse]
  • If you called g_input_stream_close() on a SoupRequests's GInputStream before you finished reading it, it would block until the rest of the response had been read (which in the case of, eg, an infinite audio stream, meant that it would block forever). [#695652, Dan]
  • Updated translations: Indonesian

New in version 2.44.2 (November 12th, 2013)

  • Fixed a hang with internet radio streams in Rhythmbox (and some other places).
  • Fixed a connection leak when cancelling the close of a message GInputStream.
  • Plugged a few memory leaks.
  • Fix build with --without-ntlm.
  • Fixed a few warnings.
  • Fixed connection-test to pass with current glib.
  • Tests are now more verbose by default under "make check", since current automake just redirects all the output to a log file anyway.

New in version 2.44.1 (October 16th, 2013)

  • If you called g_input_stream_close() on SoupMessage or SoupRequests's GInputStream before you finished reading it, it would block until the rest of the response had been read (which in the case of, eg, an infinite audio stream, meant that it would block forever). This was an unintended change from 2.42 and is now fixed. [#695652, Dan]
  • soup_session_queue_message() on a plain SoupSession (not SoupSessionAsync) was operating synchronously rather than asynchronously as it should have. [#707711, Dan]
  • soup-form methods now use the HTML5 x-www-form-urlencoded rules rather than the HTML4 ones. (In particular, they leave
  • "-", "_", and "." unencoded.) [#708621, Alban Browaeys]
  • The test programs now explicitly request the "memory" GSettings backend, meaning they won't print a warning if they get it accidentally, and they won't accidentally use the dconf proxy settings if the dconf backend is available. [Dan]
  • Fix SoupSession so that if you override the proxy configuration at construct time, it doesn't try to resolve the default GProxyResolver. (This is important in particular for programs that expect to run outside a user session, which would otherwise spew errors from the dconf GSettings backend about not being able to connect to dconf.) Likewise with TLS settings and the TLS backend. [#708696, Dan]
  • Fix the SoupServer:tls-certificate property; soup_server_is_https() had not been updated to recognize it, and so would return FALSE, which in turn meant that the server would return 400 Bad Request in response to https requests. [#709647, Fabiano Fidêncio]
  • Fixed a sporadic failure in tests/connection-test. [Dan]
  • Updated translations:
  • Tajik

New in version 2.44.0 (September 24th, 2013)

  • New/updated translations: Dutch, Indonesian.

New in version 2.44 Beta 1 (August 20th, 2013)

  • Fixed the handling of unsatisfiable range requests in SoupServer [pointed out on mailing list, Dan]. Also, added more documentation clarifying that you don't need to handle range requests yourself in many cases.
  • Fixed the handling of IPv6 address literals with scope IDs. (Requires the latest glib as well for the complete fix.) [#669724, Dan]

New in version 2.43.5 (July 30th, 2013)

  • SoupProxyURIResolver is now deprecated in favor of the SoupSession:proxy-resolver property (which takes a GProxyResolver). [#680273, Dan]
  • The SoupKnownStatusCode enum is now called SoupStatus. The old name continues to exist as an alias, but is deprecated. (This change has no visible effect in C; it is primarily to help language bindings, so that, eg, SOUP_STATUS_NOT_FOUND maps to "Soup.Status.NOT_FOUND" rather than "Soup.KnownStatusCode.NOT_FOUND".) [#684409, Dan]
  • Fixed the parsing of URI schemes in SoupURI (in particular, to allow scheme names with digits in them). [#703776, Dan]
  • Fixed SoupLogger to print a message's response headers even if the message gets cancelled before the complete response body is received. [#703200, Andres Gomez]
  • Fixed a build problem in non-UTF-8 locales [#702534, Ross Lagerwall]
  • SoupSession now warns if you use soup_session_pause_message() or soup_session_unpause_message() on a synchronous message (which has never worked, though that fact wasn't documented). [#703461, Philip Withnall]

New in version 2.43.4 (July 10th, 2013)

  • Fixed a bug that could cause synchronous sessions to get stuck in a state where no new messages would ever get processed. [#703463, Philip Withnall]
  • Fixed another memory leak in SoupSocket (found while added a test case for #700472)
  • Switched to using g_cclosure_marshal_generic() rather than using glib-genmarshal. [#686042, Olivier Blin]
  • Changed SoupServer to call unref() on the query hash table after calling the handler, rather than destroy(), so that the handler can keep a copy of the query data if it wants. [#702793, Bernhard Schuster]
  • Fixed a few introspection annotations
  • Updated examples/get to use SoupLogger and to allow redirecting the output to a file [#703231, #703229, Andres Gomez]

New in version 2.43.2 (May 29th, 2013)

  • Fixed an authentication error when using NTLM when connecting to an https site over a proxy; the code was getting confused and thinking that the 200 OK response to the CONNECT meant that NTLM auth had succeeded. [#698728, Dan]
  • Fixed a memory leak in SoupSocket. [#700472, Richard Röjfors]
  • Fixed a missing include error on some platforms [#700003, Erik van Pienbroek]
  • Fixed warnings when running against the "dummy" TLS backend. [#700518, Dan]

New in version 2.43.1 (May 1st, 2013)

  • Including no longer pulls in the system networking headers. This may cause some packages to no longer compile, if they were accidentally depending on this. Adding "#include " will fix them on both unix and Windows. (This was done as part of fixing the build on Windows.) [#692134, Dan]

New in version 2.42.2 (April 29th, 2013)

  • Fixed SoupSession:proxy-resolver [#698163, Dan]
  • Further win32 build fixes [#692134, Dan]
  • Fixed several test programs to still work if glib-networking isn't installed [Dan], and fixed another to still work if the kernel has no IPv6 support. [#698220, Dan]

New in version 2.42.0 (March 25th, 2013)

  • Fixed a compiler warning on 32bit in a test program. [Kalev Lember]
  • New/updated translations: Hindi, Kannada, Korean, Malayalam, Marathi, Odia, Persian, Tadjik, Tamil, Telugu.

New in version 2.41.92 (March 19th, 2013)

  • Fixed a bug that caused libsoup to retry an incorrect password repeatedly, forever, in a certain case that affected Google calendars in evolution in particuar. [Red Hat bug #916224, Dan]
  • Also added code to make such infinite retry loops impossible in the future. [Dan]
  • Fixed SoupRequestData's handling of URIs with "" in them. [#695246, Žan DoberÅ¡ek]
  • Added the SoupSession:proxy-resolver property, to override the GProxyResolver used by a session. (This means there are now three different ways of controlling proxy resolution in SoupSession... this will be cleaned up a bit after 2.42.) [#680273, Dan]
  • Added missing G_BEGIN_DECLS/G_END_DECLS to soup-message-headers.h, so that its functions can be called from C++. [Carlos Garcia Campos]
  • Updated translations: Assamese, Belarusian, Brazilian Portuguese, Catalan (Valencian), Catalan, Danish, Estonian, French, Greek, Gujarati, Hungarian, Italian, Latvian, Portuguese, Russian, Slovenian, Thai

New in version 2.41.91 (March 6th, 2013)

  • Fixed a crash that showed up with XMLRPC requests in WebKitGTK. [#694920, Sergio]
  • Fixed SoupCache to update the cached headers when it receives a 304 Not Modified response, and added a test for this. [#695121, Sergio]
  • libsoup now builds under automake 1.13 (and "make check" works under the parallel test harness which is the default in 1.13) [#694135]
  • The tests/ directory now contains only actual test programs that are run by "make check", and the programs that are intended more as example code are under examples/.
  • New/updated translations: Aragonese, Chinese (traditional), Czech, Galician, Hebrew, Lithuanian, Norwegian bokmÃ¥l, Punjabi, Spanish, Uyghur, Vietnamese

New in version 2.41.90 (February 20th, 2013)

  • Added SoupSession:local-address property, which allows you to force connections to bind to a particular local address (eg, to control the interface that is used). [#693215, Jonh Wendell]
  • Fixed SoupCache to properly handle messages that get cancelled, and added tests for this. [#692310, Sergio]
  • Fixed a reference leak in SoupCache that resulted in epiphany hanging for several seconds on exit and then eventually printing "Cache flush finished despite X pending requests". And added more tests. [#682527, Sergio]
  • Fixed SoupAuthNTLM so that SoupSession:authenticate gets emitted with retrying=TRUE if the first attempt fails (ie, make it work the same way as SoupAuthBasic and SoupAuthDigest). [#693222, Dan]
  • Fixed the SoupSession:add-feature-by-type property to accept non-SoupSessionFeature features as well (eg, auth types) [Dan]
  • Fixed a build bug that would break all the apache-based tests if you didn't have PHP installed. [#693311, Dan]
  • Updated translations: Malayalam, Polish, Serbian, Slovak

New in version 2.41.5 (February 6th, 2013)

  • Reverted the change to SoupURI's password handling from 2.41.4, since it turns out to have broken some things. [#692149, Dan]
  • Avoid a g_return_if_fail() when loading SoupSession:ssl-ca-file fails. [#691930, Guillaume Desmottes]
  • Fixed a bug in SoupBodyInputStream that caused redirects in WebKitGTK to hang. [#692026, Sergio]
  • Updated translations: Belarusian, Chinese (traditional), German, Italian, Norwegian bokmÃ¥l, Serbian, Uyghur

New in version 2.41.4 (January 15th, 2013)

  • Lots of docs fixes, including catching up with some (but not all!) of the API additions and deprecations, and a new chapter with hints on porting from SoupSessionAsync/SoupSessionSync to the new-and-improved plain SoupSession.
  • The plain SoupSession type now supports soup_session_queue_message() (with SoupSessionAsync semantics) and soup_session_send_message() (with SoupSessionSync semantics), and there are now soup_session_new() and soup_session_new_with_options().
  • The mirroring of the SoupMessage API onto SoupRequestHTTP, added in 2.41.3, has been reverted. However, new APIs soup_session_send() and soup_session_send_async() have been added that let you use the GInputStream-based API with SoupMessages rather than SoupRequest, so if you're doing HTTP-specific stuff, you can just use that instead.
  • soup_message_get_https_status() now returns the certificate and flags for unsuccessful https connections as well as successful ones. [#690176]
  • Fixed a deadlock when calling soup_session_abort() on a SoupSessionSync in some cases. [#691399]
  • Internal SoupCache rewrites/improvements [#682112, Sergio]
  • Plugged a memory leak in SoupCache [#690382, Sudarsana Nagineni] and one in SoupAuthDigest [#690142]
  • LIBSOUP_DISABLE_DEPRECATED has been renamed to SOUP_DISABLE_DEPRECATED, but that's just to keep gtk-doc happy, and you shouldn't use it. You should use SOUP_VERSION_MIN_REQUIRED instead.
  • Fixed the samba-windbind-based NTLM support, which appears to have been broken before.
  • SoupAuthManager is now a public class (so you can remove it as a feature from a session, or disable it for a particular message). It also has a new method soup_auto_manager_use_auth(), which can be used to "preload" authentication for a host so that libsoup will use authentication on the very first request.
  • SoupURI now treats "" as having a password of "" rather than NULL, since a NULL password would not be valid for any known HTTP auth type.
  • build: libsoup now uses autoreconf instead of, and no longer uses AM_GLIB_GNU_GETTEXT [Javier Jardon].
  • Updated translations:
  • Assamese, Bulgarian, Estonian, Friulian, Galician, Hebrew, Polish, Slovenian, Spanish

New in version 2.41.3 (December 18th, 2012)

  • BUILD DEPENDENCY CHANGES: libsoup-gnome no longer depends on libgnome-keyring, and the sqlite3 dependency has been moved from libsoup-gnome to libsoup proper. (See below).
  • SoupRequest is now stable API. SoupRequester, however, is deprecated. Instead you can now call soup_session_request() or soup_session_request_uri() to create a SoupRequest.
  • Some documentation has been updated to reflect this, but much more still needs to be (in particular the "Client-side Tutorial").
  • SoupRequestHTTP now has a number of fields and methods that mirror the SoupMessage data, so you don't have to use soup_request_http_get_message() in many cases. On the flip side, there is also now soup_message_get_request(). And you can create a SoupRequestHTTP directly (and override its request method) by using soup_session_request_http() or soup_session_request_http_uri()).
  • soup_message_set_chunk_allocator() is now deprecated; apps that want to do streaming reads should just use SoupRequest, which is vastly more sane.
  • SoupPasswordManager is now deprecated, and SoupPasswordManagerGNOME is now a no-op (and libsoup-gnome no longer links against libgnome-keyring). [#594377, #679866]
  • SoupCookieJarSqlite is now deprecated in favor of SoupCookieJarDB, which is exactly the same thing except that it's in libsoup itself rather than being in libsoup-gnome (something that many people have requested over the years). This means that libsoup now requires sqlite3... if this offends you horribly then you have a few months to speak up...
  • SoupProxyResolverGNOME is now deprecated; there hasn't been any real reason to use it since SoupProxyResolverDefault was added.
  • As a result of the last three items, libsoup-gnome now consists entirely of deprecated APIs, and there is no reason you should use it any more (though packagers need to keep building it, for backward compatibility).
  • SoupSession is no longer an abstract class, and you can create a plain SoupSession, which behaves in a more traditionally-gio-like way (allowing a mix of sync and async methods, etc). This "plain" SoupSession also has more sane default values of certain properties, and has certain SoupSessionFeatures built in.
  • This will eventually replace SoupSessionAsync and SoupSessionSync completely, but most of the documentation hasn't yet been updated at this point...
  • This change involved merging the majority of the SoupSessionAsync and SoupSessionSync code into SoupSession, getting rid of lots of redundancy in the process. There may be some bug fallout from this (probably on the SoupSessionSync side, since WebKit's tests tend to shake out all SoupSessionAsync bugs). However, this should help to avoid SoupSessionSync-only bugs in the future, since much more of the code is now shared.
  • Usernames and passwords passed into SoupSession a URI will now be cleared after they're used, so that if they are wrong, the authenticate signal will be emitted on the next round. [#689673, Martin Robinson]
  • SoupURI now leaves "" in URIs as-is, rather than decoding it to "\0", which was not intended and is never useful.
  • Fixed a bug in SoupBodyOutputStream that could cause libsoup to sometimes use blocking I/O rather than non-blocking when writing chunked message bodies. [#688974, Milan Plzik]
  • Fixed a bug in SoupFilterInputStream that could cause some non-blocking reads to suck up CPU while waiting for the network. (This was noticed with multipart/x-mixed-replace processing; it's not clear if it affected anything else.) [Gustavo]
  • tests: misc small fixes
  • New/updated translations: Assamese, Galician, Japanese, Odia, Polish, Spanish

New in version 2.40.1 (October 17th, 2012)

  • Improved the parsing of multipart/x-mixed-replace responses. [#685752, Gustavo]
  • Fixed handling of IPv6 address literals. [#684990, Dan]
  • New/updated translations: Catalan, Catalan (Valencian), Norwegian bokmÃ¥l

New in version 2.38.0 (March 27th, 2012)

  • Minor documentation fixes

New in version 2.37.2 (November 29th, 2011)

  • Fixed up the output of SoupDirectoryInputStream, thus improving the display of local directories in WebKit-based browsers. [#662266, Sergio]
  • Fixed a bug introduced in 2.37.1 that caused some cancelled SoupMessages to be leaked. [#662847, Sergio]
  • Added new SoupSession properties "http-aliases" and "https-aliases" that allow you to configure more explicitly what URL protocols are treated as aliases for http (eg, "dav:", "webcal:", etc), and which should be recognized as meaning something else, (eg, "ftp:") [Dan]
  • Added soup_session_would_redirect() and soup_session_redirect_message(), to help users that want to handle some or all redirects themselves. Added soup_message_set_redirect() to make it easier to return redirection responses from a SoupServer. [Dan]
  • Added the SoupSession "use-thread-context" property, which tells it to use GMainContexts in a gio-compliant way (and in particular, allows having different messages running in different GMainContexts on the same SoupSession, though only to a limited extent since SoupSessionAsync is still not thread-safe). In particular, this was added in order to address WebKit bug 68238. [Dan]
  • Made SoupURI %-encode non-ASCII characters when parsing URIs, in particular to fix a problem with certain servers sending syntactically invalid redirects that they would then only interpret correctly if you fixed the syntax for them. (@$!@#! Although the new code is probably more correct than the old code anyway, so...) [#662806, Dan]
  • Fixed a connection-handling bug that could cause problems with servers that requested authentication and then timed out the connection while the application was waiting for the user to enter a password. [#660057, Dan]
  • Made NTLM and Basic authentication handle some non-ASCII usernames and passwords. (NTLM should handle most. It's impossible to fix Basic in the general case.) [#576838, Joachim Breitner, "sponsored by ITOMIG GmbH and the City of Böblingen"]
  • Added support for "deflate" Content-Encoding, so that we can work with broken servers that insisted on using it even though we explicitly indicated in the request headers that we didn't support it. (@$#!#) [#661682, Sergio]

New in version 2.36.1 (October 18th, 2011)

  • Fixed a problem with connections being assigned to multiple requests at once after a redirection [#651146, Sergio]
  • Bumped the glib requirement to 2.30.0; although libsoup does not use any new glib 2.30 APIs, there are several important bugfixes in glib between 2.28 and 2.30 that libsoup needs.

New in version 2.36.0 (October 3rd, 2011)

  • Improvements to gtk-doc documentation. [Dan]

New in version 2.35.90 (September 15th, 2011)

  • Added SOUP_MESSAGE_CAN_REBUILD flag, to use with soup_message_body_set_accumulate(FALSE) on a request body, to indicate that the caller will recreate the request body after it has been discarded if the message needs to be re-sent. [#656650]
  • Fixed the build on mingw-w64 by not using "interface" as as variable name. [#656402, Erik van Pienbroek]
  • (The multihosted https server regression mentioned in the 2.35.5 NEWS turned out to be a glib-networking bug, which is fixed as of 2.29.18.)

New in version 2.34.2 (May 27th, 2011)

  • Minor build fix for Debian/Ubuntu [#648948]
  • Two SoupCache-related leak fixes [Xan]
  • Fixed a docs typo

New in version 2.34.1 (April 29th, 2011)

  • Two multipart forms/Content-Disposition fixes [Dan]:
  • UTF-8-encoded header encoding/decoding rules updated to match RFC 5987. In particular, a UTF-8-encoded filename parameter in Content-Disposition will now override an ASCII one.
  • When not using UTF-8-encoded filenames in Content-Disposition, always quote the filename, since some servers erroneously fail to handle non-quoted ones. [#641280]
  • Fixed several memory leaks [Dan, Xan]
  • Fixed decoding base64 data: URLs [#646896, Sergio]
  • Simplified the libsoup-gnome build on Windows by dropping the gnome-keyring dependency. [Fridrich Å trba]
  • Fixed a bug in soup_uri_to_string() in which (invalid) port numbers could be output as negative numbers (tripping up a WebKit "sanity checking" test). [#647767, Sergio]
  • Fixed a cache corruption bug in SoupCache. [#648285, Sergio]
  • Fixed a crash in SoupSessionSync when using soup_session_abort().

New in version 2.34 (April 5th, 2011)

  • Fixed the GMainContext handling of the new
  • SoupProxyResolverDefault (which among other things fixes
  • gstreamer usage inside epiphany). [#646201, Sebastian Dröge]
  • Tweaked the introspection Makefile rules to fix a problem
  • building on Debian/Ubuntu. [#645505]
  • Belated bumped the shared library versioning to reflect the API additions since 2.32.0

New in version 2.33.92 (March 22nd, 2011)

  • Added SoupProxyResolverDefault, which uses uses gio's GProxyResolver to resolve proxies [#642982, Gustavo Noronha Silva]. Despite the "default" in the name, it is not used by default, for compatibility reasons, but it is available in plain libsoup, not libsoup-gnome. (Of course, it depends on having glib-networking installed.)
  • Updated SoupProxyResolverGNOME to be based on SoupProxyResolverDefault, but explicitly requesting the "gnome" GProxyResolver if it is available [#625898], and removed the old code that used GConf and libproxy directly.
  • Added soup_server_disconnect(), to explicitly disconnect a SoupServer, since it is not possible to g_object_unref() it from memory-managed language bindings. [#638576, Andreas Rottmann]
  • SoupDate now parses month names case-insensitively [#644048, Christian Dywan]
  • Avoid a g_return_if_fail() when using SOUP_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY with non-http URIs (file:, data:, etc). [#643226]
  • SoupCookieJar now catches overflows when parsing very distant dates [#643462, based on a patch from Mark Starovoytov]
  • Fixed a buggy interaction between request body streaming and restarted requests [David Woodhouse]. Added some new tests to tests/chunk-test.c to make sure that a specific (unsupported!) way of using those methods would not get broken in the future.
  • Fixed soup_socket_get_remote_address(), which had been broken since 2.33.4 (and which in turn caused soup_client_context_get_address/_get_host to be broken) [#645227]

New in version 2.33.90 (February 22nd, 2011)

  • Attempted to make libsoup's dependency on glib-networking (for TLS support) more explicit, by requiring that glib-networking be present at compile time unless the builder explicitly passes "--disable-tls-check", and noting that packagers should give libsoup a runtime dependency on glib-networking.
  • Fixed a bug in talking to servers with virtual hosts with Unicode names (IDNs) [#642075]
  • Added a "Connection: Keep-Alive" header when talking to HTTP/1.0 hosts, to improve performance. [#640414, Sergio Villar Senin]
  • Changed SoupCache to not cache multipart/x-mixed-replace content. [#642028, Sergio Villar Senin]

New in version 2.33.6 (February 1st, 2011)

  • Made SoupSessionAsync do idle-connection cleanup more sanely, resulting in faster load times for pages with lots of subresources. [#639768, Sergio Villar Senin]
  • Fixed soup_form_decode()'s behavior (and by extension, SoupServer query string handling) with datasets that contain multiple values for the same key, and added a test case. [#639783, Sven Neumann]
  • Fixed warnings pointed out by gcc 4.6, including a bug in SoupCache that would cause unnecessary revalidations [#640556].
  • Belated copied a fix from the WebKit copy of soup-cache.c into ours, and fixed a bug in the local copy of soup-request-data.c [#641022, Sergio Villar Senin], in preparation for making WebKit use the libsoup versions.

New in version 2.33.5 (January 11th, 2011)

  • Fixed certain cases of soup_session_cancel_message() with SoupSessionSync that could previously cause warnings or crashes. [#637741]

New in version 2.32.2 (November 30th, 2010)

  • Fixed a regression in 2.32.0 that caused evolution-exchange to get stuck and stop updating. [#634422]
  • Fixed a regression in 2.32.0 with apps using asynchronous sessions from multiple threads (in particular, gupnp) [#635101]
  • Fixed the regression test for #631525 to not cause spurious "make check" failures on some machines.

New in version 2.32.1 (November 16th, 2010)

  • Fixed a regression in 2.32.0 with the use of persistent connections that caused spurious "Connection terminated unexpectedly" errors. [#631525, debugged by Sergio Villar]
  • Fixed a regression in 2.32.0 that caused proxy-related DNS errors to return SOUP_STATUS_CANT_RESOLVE rather than SOUP_STATUS_CANT_RESOLVE_PROXY.
  • Usernames/passwords specified explicitly in request URIs now override existing cached auth info. [#631679, Sergio Villar]
  • Changed soup_uri_decode() and soup_uri_normalize() to just ignore malformed %-encoding rather than returning NULL, for consistency with soup_uri_new(). [#630540]
  • Fixed soup_form_decode() to ignore invalid parameters, and soup_form_encode_hash() to just g_return_if_fail() rather than crashing if there are NULL values in the hash. [#620220]
  • Added another workaround for stupid servers that close the connection before returning the full response (in this case, when using chunked encoding and failing to include the final 0-length chunk). [#629160]
  • Fixed a bug in SoupCookieJarText that deleted excess cookies whenever any cookie expired. [#631641, Michał Kazior]
  • Fixed a small leak in SoupContentDecoder if you were using it incorrectly. [pointed out in email by Christophe Gillette]
  • Added regression tests for passwords-in-URIs [#631679, Sergio Villar] and SOUP_SESSION_IDLE_TIMEOUT.

New in version 2.31.92 (September 14th, 2010)

  • Updated for gobject-introspection 0.9.5. Also added some new annotations and removed a bunch of private headers from the scanning process.
  • Percent-encoded characters in URIs are no longer automatically normalized to uppercase, since apparently some servers are stupid. [#628728, Sergio Villar Senin]
  • Fixed a crash when resolving a URI containing both spaces and non-UTF8 8bit characters. [#629449]

New in version 2.31.90 (August 17th, 2010)

  • libsoup now tries to connect to each IP address associated with a hostname, if the first one fails. In particular, if a host has both IPv4 and IPv6 addresses, and only one of them
  • is reachable from the current host, libsoup will now try the other one rather than failing. (libc is supposed to sort the IP addresses in the right order, such that, eg, if you don't have IPv6 connectivity, it will put the IPv4 address first. For some reason though, this seems to be broken on some distros.) [#526321]
  • Fixed Accept-Language header generation in locales where "," is used as the decimal point.

New in version 2.31.6 (August 3rd, 2010)

  • Disabled TLS 1.2 in addition to the already-disabled 1.1 and 1.0 [see below, in libsoup 2.27.2], thus making libsoup usable with gnutls 2.10. [#622857. This commit, 01a43ad9, can be applied to libsoup 2.30.x as well if you need that release to work with gnutls 2.10.]
  • When using libproxy 0.3 or newer, libsoup no longer leaks proxy-related environment variables into child processes [#603285]
  • Changed the way message/connection binding works in SoupSession so that (among other things), when there are multiple requests queued to a host, and one of them gets a network error, the other requests are still allowed to try to succeed, rather than all failing immediately. [#619633]
  • SoupSession now limits the number of times a message can be redirected, to avoid infinite loops [#604383, José Millán Soto]
  • Fixed handling of certain messages where the response headers included "Connection: close" but the server did not actually close the connection at the end. [#611481]
  • Fixed some incorrect g-i annotations [#621021]
  • Fixed an out-of-bounds memory access when processing certain Set-Cookie headers [#620288]
  • Improved msg->reason_phrase on network errors [#623274]
  • Fixed gir file disting [#621727, Yaakov Selkowitz]

New in version 2.30.2 (June 22nd, 2010)

  • Fixed a problem with SoupSessionAsync that would cause messages to get lost if you aborted a previous message while it was still looking up the hostname. Fixed several other problems that were discovered while adding a regression test for that. [#618641, thanks to Claudio Saavedra for a good test case]
  • SoupSession now only allows a message to be redirected a fixed number of times, and returns an error after that. [#604383, José Millán Soto]
  • Fixed another connecting-to-lame-https-server problem, and a getting-stuck-in-a-loop-reconnecting bug that it revealed. [#615535]
  • Fixed an invalid read when parsing certain Cookie headers [#620288]
  • Fixed a memory leak in soup_form_request_from_data [#619897]
  • Failed SSL connections now include the correct reason_phrase ("SSL handshake failed" rather than "SSL support not available").

New in version 2.30.1 (April 27th, 2010)

  • Fix for https through proxies that close the connection when returning a "407 Proxy Authentication Required" response, and add a regression test for that case. [#611663]
  • Fixed multiple forms/multipart-related interoperability problems reported by Egon Andersen:
  • Don't quote the multipart boundary string if it's not needed, since RFC 2616 recommends that you
  • don't, and some servers don't handle quotes there correctly. (Sigh.) [#614176]
  • Don't put an extra blank line before the first multipart part, since it's unnecessary and some servers don't handle a multipart preamble correctly. (Sigh.) [#614183]
  • Don't put Content-Transfer-Encoding headers in the multipart/form-data parts, even though the HTML 4
  • spec says you must, since no other browsers do, and some servers don't handle them correctly. (Sigh.) [#614198]
  • Changed SoupCookieJarSqlite to actually erase deleted cookies from the database. [#615711, Lukasz Slachciak]
  • Fixed SoupLogger to be more robust against getting passed bad data by the session. [#611663]
  • Fixed SoupAuthDomain to ignore paths when doing proxy auth
  • Fixed a g_warning when hovering over a javascript link in WebKit. [#613442, Xan Lopez]