1 Changes in libsoup from 2.27.90 to 2.27.91:
3 * Added SoupPasswordManager, an interface for managing
4 persistent password storage, and SoupPasswordManagerGNOME
5 (in libsoup-gnome), which implements it using gnome-keyring.
6 tests/get.c provides a minimal example of how to use it.
8 * libsoup should now notice when the server closes a
9 persistent connection, and close its side of the connection
10 sooner. This should hopefully fix the spurious "Connection
11 terminated unexpectedly" errors in WebKitGTK. [#578990]
13 * Fixed some problems with connection management in
14 SoupSession that could cause a session to eventually "stall"
15 and be unable to process new requests. [#592084]
17 * Fixed an infinite loop that caused 100% CPU usage if the
18 network went down at exactly the right time while there were
19 unsent messages in the queue. [#592492]
21 * Fixed a crash in SoupLogger. [#591857]
23 * Fixed the definition of soup_message_is_keepalive() for
24 HTTP/1.0 messages, to fix a problem introduced in 2.27.90
25 where some messages would load completely but never emit
28 * Fixed a crash in SoupServer introduced in 2.27.90 when
29 processing a request with no "Host" header.
31 Changes in libsoup from 2.27.5 to 2.27.90:
33 * libsoup now uses glib's GResolver rather than its own DNS
34 code. For 2.27.90, the only visible change should be that
35 internationalized domain names are now supported. [#548287]
37 * Added soup_message_disable_feature(), which allows you to
38 disable particular features (eg, cookies, proxy,
39 content-sniffing, etc) on a per-message basis. [#574773]
41 * It is now possible to implement "OPTIONS *" in a SoupServer;
42 you must explicitly register a handler for "*" in order to
45 * Ignore Content-Length on EOF-terminated responses, to match
46 other browsers and therefore cope with broken servers that
47 send the wrong length. [Patch from Benjamin Otte.]
49 * Fixed the status code when trying to fetch an https URI with
50 a non-gnutls build of libsoup. [#590464]
52 * Fixed strict-aliasing warnings introduced in 2.27.4
55 * Fixed some warnings noted by fortify [#591226] and -Wextra.
57 * libsoup now uses automake 1.11's silent-rules support by
58 default (if you are building with automake 1.11). Use
59 "./configure --disable-silent-rules" or "make V=1" to
62 Changes in libsoup from 2.27.4 to 2.27.5:
64 * Fixed a crash when a web server redirected a request to a
65 non-http URI (eg, "about:blank"). [#528882]
67 * Fixed a hang when trying to create an attachment on certain
68 bugzilla installations from epiphany. [#584645]
70 * Fixed verification of V1 TLS certificates [#589323, Patrick
73 * Fixed compile problems on Windows (in the ssl code), and on
74 Linux (when the most recent version of gtk-doc was
77 Changes in libsoup from 2.27.2 to 2.27.4:
79 * Added SoupContentSniffer and the "content-sniffed" signal on
80 SoupMessage, to do Content-Type sniffing per the HTML5 /
81 draft-abarth-mime-sniff algorithm. [#572589, Gustavo Noronha
84 * Updated the earlier SoupSession timeout fixes ([#574414],
85 [#578928]) so that async connect() also times out [#588177,
86 Mark Nauwelaerts] and SSL works on Windows again [#587910,
89 * Fixed the behavior on a 301 response to a POST to match
90 real-world usage rather than what the spec says. (We were
91 doing the right thing on 302 and 303, but had missed 301.)
94 * Changed configure so that if GNUTLS isn't found then it
95 errors out, rather than silently building an SSL-less
96 libsoup. Configure with --disable-ssl if you actually don't
99 Changes in libsoup from 2.27.1 to 2.27.2:
101 * Replaced SoupProxyResolver with SoupProxyURIResolver, which
102 is a bit simpler, works with non-HTTP URIs (and so could be
103 used by gvfsd-ftp) and supports proxy auth correctly.
106 * Fixed SoupSession to not try to resolve http server
107 hostnames when it's just going to pass the hostname off to a
108 proxy server anyway. This fixes things on hosts that use a
109 proxy for everything and have no working DNS config
110 [#577532] and also makes WebKitGTK behave more like other
111 browsers in terms of per-host connection limits (we now
112 limit connections based on hostname rather than on IP
115 We also no longer set the AI_CANONNAME flag when calling
116 getaddrinfo(), which saves us a little bit of unnecessary
117 network traffic. [Pointed out by Christophe Gillette on the
120 * libsoup now always uses SSL 3.0 (not TLS 1.0 or 1.1) for
121 https URIs, to work around problems with older servers that
122 don't implement the (apparently quite confusing) TLS/SSL
123 compatibility rules correctly. Makes a bunch of
124 previously-inaccessible sites now accessible in WebKitGTK
125 (notably PayPal) [#581342]. Will eventually be revisited, to
126 first try TLS 1.1 and fall back if that fails.
128 * Fixed Digest auth to (recent) Apple CalDAV servers.
131 * Changed the way the SoupSession "authenticate" signal works
132 a bit. We now never emit "authenticate" before sending a
133 request, even if we know for sure that it's going to fail,
134 because this makes the semantics of the authenticate handler
135 too complicated (and because we'll only get into this
136 situation if a previous call to the authenticate handler
137 failed anyway). Fixes problems in WebKitGTK when you cancel
138 a password dialog, and then later try to load the page
139 again. [#583462, mostly figured out by Gustavo Noronha
142 * Fixed a bug in the CRLF-vs-LF patch (#571283) that caused
143 libsoup to fail to parse the response headers (returning
144 SOUP_STATUS_MALFORMED) if a CR LF got split across two
147 * Allow using PUT in soup_form_request_for_data(), to work
148 with certain broken web APIs. [#581860, Ross Burton]. Also,
149 fixed a problem with empty POST bodies that made some parts
150 of gmail not work in WebKitGTK.
152 * Applied some minor bugfixes to configure.in and autogen.sh
153 [#583911, #583942]. Fixed configure.in to not use gcc
154 warning options that the installed version of gcc doesn't
157 * Added G_GNUC_NULL_TERMINATED and G_GNUC_PRINTF to a few
158 methods that should have had them. [#581754, Ross Burton]
160 Changes in libsoup from 2.26.1 to 2.27.1:
162 * SOUP_SESSION_TIMEOUT now works properly with
163 SoupSessionAsync [#574414] and SSL [#578928]. Added
164 tests/timeout-test to test this.
168 * soup_date_to_string() now handles SOUP_DATE_RFC2822
169 [#579055, Enrico Tröger]
171 * soup_date_new_from_string() now accepts 24:00 as a
172 time in ISO8601 timestamps
174 * soup_date_to_string() now coerces the date to UTC
175 for HTTP and cookie dates, and outputs the UTC
176 correct offset for the other date types.
178 * Added regression tests to tests/date
180 * soup_headers_parse() now completely ignores
181 syntactically-incorrect headers, rather than passing them to
182 soup_message_headers_append() and causing a g_warning.
183 soup_message_headers_append() now also rejects 0-length
184 header names. Updated tests/header-parsing to check this.
187 * Fix a crash when cancelling a message from a "restarted"
188 handler, and updated a regression test to notice the
189 underlying cause. [#580193]
191 * Completing the API updates for #576760 from 2.26.1,
192 soup_message_headers_get() is now marked deprecated in favor
193 of soup_message_headers_get_one() and _get_list().
195 Changes in libsoup from 2.26.0 to 2.26.1:
197 * libsoup uses libproxy for PAC and WPAD proxy resolution
198 again. However, it arranges to do all communication with
199 GConf itself, to ensure that libproxy doesn't call it in
200 non-thread-safe ways. [#571527] Also, fixed a bug in
201 SoupSessionSync when proxy resolution failed. [#574957,
202 patch from Milan Crha].
204 (Also fixed three SoupProxyResolverGNOME bugs since the
205 2.26.0.9 preview release. [#578746, #578809])
207 * SoupURI now handles unencoded spaces in URIs. In particular,
208 redirects via Location headers with spaces in them now work.
211 * libsoup can now deal with servers (and clients) that
212 erroneously use LF LF instead of CR LF CR LF to separate
213 the headers and body. [#571283]
215 * Added soup_message_headers_get_one() and
216 soup_message_headers_get_list(), which will eventually
217 deprecate soup_message_headers_get(). This lets applications
218 deal correctly with implementations that erroneously send
219 multiple copies of single-valued headers. [#576760]
221 * In particular, soup_message_headers_get_content_type() now
222 ignores duplicate Content-Type headers [#576760] and also
223 ignores syntactically-incorrect Content-Type headers.
226 * SoupCookieJar can now store multiple cookies with the same
227 domain and name, but different paths. [#577360]
229 * Abnormal SSL connection closes are now treated as ordinary
230 EOFs, for compatibility with certain sites. [#577386]
232 * soup_header_g_string_append_param() now allows NULL values.
235 * soup_message_headers_append() now rejects header names and
236 values with newlines or certain other illegal data in them,
237 rather than generating syntactically invalid headers.
239 * Fixed a small bug in soup_date_new_from_string's ISO 8601
240 handling [qv #578369 for g_time_val_from_iso8601].
242 * The regression tests now work correctly on machines where
243 "localhost" resolves to "::1" instead of "127.0.0.1".
244 [#576583, patch from Andreas Rottmann]
246 * Fixed warnings when a message has a network problem when
247 many other messages are queued. [#578809]
249 * Miscellaneous documentation fixes/clarifications.
251 Changes in libsoup from 2.25.91 to 2.26.0:
253 * Temporarily disable libproxy support to work around a bug in
254 its gnome plugin that causes gvfsd-http (and probably
255 eventually other apps) to crash. [#571527]. For now,
256 SoupProxyResolverGNOME uses only GConf. To be fixed in
259 * Fixed a bug that showed up in WebKit, where if many messages
260 were queued all at once to a server that doesn't support
261 persistent connections, some of the requests will get lost.
262 #574365, reported by Xan Lopez.
264 * Fixed SoupServer to support using SOUP_ENCODING_EOF, so you
265 can stream responses of unknown length to HTTP/1.0 clients.
266 [#572153]. Added a regression test for this, and for chunked
267 and Content-Length-based streaming.
269 * Fixed several bugs that prevented SoupCookieJarSqlite from
270 working. [#572409, patch from Xan Lopez]
272 * Added G_{BEGIN,END}_DECLS guards to public headers that were
273 missing it. (Xan Lopez)
275 * Misc gtk-doc improvements
277 Changes in libsoup from 2.25.5 to 2.25.91:
279 * Fixed a crash in SoupProxyResolverGNOME when the proxy
280 requires authentication. (This does not make proxy
281 authentication *work* yet, it just makes it not crash.)
283 * Updated documentation
285 Changes in libsoup from 2.25.4 to 2.25.5:
287 * SoupProxyResolverGConf (which was incomplete) is gone, and
288 libsoup-gnome now requires libproxy, which is now officially
289 an external dependency of GNOME.
291 * Fixed a bug in SoupCookieJar that was making it send
292 "Cookie: (null)" when it had no cookies for a site, which
293 confused some web servers (WebKit bug 23240).
295 * Fixed a bug with using SOUP_MEMORY_TEMPORARY buffers and
296 soup_message_body_set_accumulate(FALSE). (Part of WebKit bug
297 18343, noticed by Gustavo Noronha Silva.)
299 * Fixed the build with non-gcc compilers
301 Changes in libsoup from 2.25.3 to 2.25.4:
303 * Added soup_session_get_feature() and
304 soup_session_get_features(), to query the features currently
305 available in a session (which is needed by the patch in
306 https://bugs.webkit.org/show_bug.cgi?id=22624)
308 Changes in libsoup from 2.25.2 to 2.25.3:
310 * Fixed a crash when using both cookies and a proxy. [#562191,
313 * Fixed soup_form_decode() to correctly handle forms with
314 URI-encoded parameter names [#563302, Evan Nemerson] and
315 added a regression test.
317 * Fixed a crash in SoupProxyResolverGConf. [#563145]
319 Changes in libsoup from 2.25.1 to 2.25.2:
321 * Fixed client behavior when presented with multiple auth
322 types to choose the *strongest* auth type (eg, Digest)
323 rather than the *weakest* one [#562339, Pontus Oldberg].
324 Added a regression test for this.
326 * Moved libsoup-gnome headers to a different directory to make
327 it easier to split libsoup and libsoup-gnome into separate
328 packages, and to ensure that things that only want to be
329 looking at plain libsoup headers (like gir-repository) don't
330 accidentally see the libsoup-gnome ones.
332 * Some minor doc fixes
334 * Fixed libsoup-gnome linking with --as-needed. [#559342]
336 Changes in libsoup from 2.24.1 to 2.25.1:
338 libsoup 2.25.1 introduces a new library, libsoup-gnome, which
339 will be used for features which are important to GNOME apps,
340 but which require GNOME-specific libraries that non-GNOME apps
341 may not want to add dependencies on.
343 In 2.25.1, libsoup-gnome contains:
345 * SOUP_TYPE_PROXY_RESOLVER_GNOME, a SoupSessionFeature
346 type that can be added to a SoupSession to provide
347 automatic proxy handling via the GConf proxy keys. (See
348 below) The default implementation uses libproxy, which
349 also handles WPAD, PAC, etc, but if libproxy is not
350 available it will use GConf directly, supporting only
351 the basic HTTP proxy functionality.
353 * SoupCookieJarSqlite, a SoupSessionFeature that handles
354 cookies and stores them in a Firefox 3-compatible sqlite
355 file. (This is not actually a "GNOME-specific" feature,
356 but I didn't want to make libsoup itself depend on
357 sqlite, and I didn't want to make the dependency
358 optional. This might change before 2.26.)
360 * SOUP_TYPE_GNOME_FEATURES_2_26: a SoupSessionFeature type
361 that can be added to a SoupSession to add all
362 GNOME-integration features that are available for 2.26;
363 as of 2.25.1, this is just the GNOME proxy resolver, but
364 by 2.26.0 it may also include gnome-keyring support and
365 possibly other features.
367 Applications/libraries that are currently doing GConf proxy
368 lookup by hand can be updated as follows:
370 * Remove all of the existing code that listens to the
371 GConf keys and sets SOUP_SESSION_PROXY_URI
373 * Change the configure check to require
374 "libsoup-gnome-2.4 >= 2.25.1" instead of "libsoup-2.4"
376 * #include <libsoup/soup-gnome.h>
378 * After creating your SoupSession, do:
380 soup_session_add_feature_by_type (session, SOUP_TYPE_PROXY_RESOLVER_GNOME);
382 (Or alternatively, use SOUP_SESSION_ADD_FEATURE_BY_TYPE
383 with soup_session_async_new_with_options() or
384 soup_session_sync_new_with_options().)
387 Other new features and bug fixes in 2.25.1 include:
389 * SoupCookieJarText, like SoupCookieJarSqlite, but using the
390 old-style cookies.txt format, and in the base libsoup rather
393 * Various bugfixes to SoupCookie and SoupCookieJar to fix the
394 problems with cookies not working on certain sites.
396 * The new SoupMultipart type provides support for multipart
397 MIME bodies, and soup-form now includes several methods for
398 generating and parsing multipart form data and file uploads.
400 * SoupMessageHeaders now has methods for easy handling of the
401 Content-Type, Content-Disposition, Range, and Content-Range
402 headers. The Content-Disposition handling recognizes
403 RFC2231-encoded UTF-8 filenames.
405 * SoupServer now automatically handles partial GET requests;
406 if your server returns SOUP_STATUS_OK in response to a
407 partial GET, libsoup will automatically convert it to a
408 SOUP_STATUS_PARTIAL_CONTENT response with only the requested
411 Thanks to Xan Lopez and Diego Escalante Urrelo for their work
412 on SoupCookie, SoupCookieJar, SoupCookieJarText, and
415 Changes in libsoup from 2.24.0.1 to 2.24.1:
417 * Fixed a crash when unreffing the session from a
418 soup_session_queue_message() callback [#533473], and added
419 regression test. In particular, this fixes a crash in
420 seahorse when trying to connect to a non-responsive
423 * Fixed an infinite loop when giving a bad password to a site
424 that uses non-standard capitalization in the
425 WWW-Authenticate header (eg, gmail.com) [#536285].
427 * Fixed a leak in SoupSessionAsync when using a non-default
428 GMainContext. [addendum to #498509, Arnout Vandecappelle]
429 Added additional code to the regression tests to make sure
430 sessions and servers do not get leaked.
432 * Fixed a leak in the XML-RPC code
434 * Compile fixes for "gcc -pedantic" [#553976, Sander Dijkhuis]
435 and -DG_DISABLE_DEPRECATED / -DG_DISABLE_SINGLE_INCLUDES
436 [#557072, Cosimo Cecchi]
438 * Patched xmlrpc-test to accept the incorrect response to
439 test_echo() that php-xmlrpc gives when it's built against
440 libxml2 >= 2.7.1 (qv http://bugs.php.net/45996), so that
441 I can "make distcheck"...
443 * Updated generated documentation
445 Changes in libsoup from 2.23.92 to 2.24.0.1:
447 * Reverted part of the fix for #528882, which caused the DAAP
448 plugin in rhythmbox to crash. [#553466]
450 Changes in libsoup from 2.23.91 to 2.23.92:
452 * Fixed the handling of a 302 response to a HEAD request,
453 which should NOT be treated like a 303 response. [#551190,
456 Changes in libsoup from 2.23.6 to 2.23.91:
458 * Fixed a crash in gvfs [#528882], though there is still an
459 unknown bug there. As part of this fix, libsoup will now
460 return an error if you try to do an operation on a non-HTTP
461 URI. (Previously it was just treating any URI scheme except
464 * Added soup_date_to_timeval() for gvfs. [#549006, patch from
467 Changes in libsoup from 2.23.1 to 2.23.6:
469 * Fixed use of g_idle_add() so that heavy I/O won't end up
470 blocking libsoup callbacks. [#536676, Benjamin Otte]
472 * Allow the caller to override the Host header. [#539803, Marc
475 * Properly handle responses larger than 4G. [#539861, Peter
478 * Fixed the build when using certain LDFLAGS [#541506, Götz
481 * Fixed a small bug in Digest auth handling. [#544681, Mads
484 * Fixed multiple Windows bugs [Tor Lillqvist]
486 Changes in libsoup from 2.4.1 to 2.23.1:
488 * This is the first unstable release leading up to GNOME 2.24.
489 Bumped the libsoup version number up to 2.23.x to match the
490 GNOME version; note that the API version is still "2.4",
491 meaning in particular that you still call it "libsoup-2.4"
492 when using pkg-config.
494 * Added SoupSessionFeature, an interface type that will be
495 used for several new features. Ported SoupLogger and
496 SoupAuthManager to use it.
498 * Added SoupCookie and SoupCookieJar. This API is already
499 being used in Epiphany, via WebKit, but it is not yet
502 * Fixed GnuTLS support on Win32. [#528752, Marc Maurer]
504 Changes in libsoup from 2.4.0 to 2.4.1:
506 * Fixed SoupMessage to not downgrade to HTTP/1.0 for the
507 second attempt when it receives an HTTP/1.0 redirect or 401.
508 [#521848, Tommu Komulainen]
510 * Fixed Host: header syntax when the host is an IPv6 address
513 * Fixed SoupSession to not emit "authenticate" multiple times
514 for messages that have been requeued. [#522601, Tommi
515 Komulainen]. Also added two new signals to SoupSession,
516 request-queued and request-unqueued, to help simplify
517 certain session-helpers and avoid bugs like this in the
520 * Fixed soup_server_pause_message() to actually work (rather
521 than *un*pausing the message).
523 * Added a property SOUP_SESSION_IDLE_TIMEOUT that can be used
524 to set a timeout after which idle connections will
525 automatically be closed. [#518214, Jorn Baayen]
527 * Implemented RFC 2069-style Digest auth, and fixed SoupAuth
528 to compare auth scheme names case-insensitively, to fix
529 authentication against Apple's calendar server. [#498484]
531 * Fixed a crash in SoupAuthDomainDigest if the client provided
532 an unrecognized username. [pointed out by Curtis Magyar on
535 * Fixed a few SoupDate bugs. (In particular, it was outputting
536 the wrong day of the week when stringifying dates.)
538 * Improved the cleanup of idle connections, to fix slow load
539 times with the libsoup backend of WebKit.
541 * Added a new SoupMessage signal "wrote-body-data" that can be
542 used for progress information when sending a large request
543 body. Also allow providing the request body in multiple
544 chunks even when using Content-Length encoding. [#525101,
547 * libsoup now ignores SIGPIPE globally, instead of
548 un-thread-safe-ly ignoring it only around network writes. In
549 particular, this means it is ignored when the SSL code needs
550 to unexpectedly do a write when we asked it to do a read.
551 [#524397, Curtis Magyar]
553 * The discard-body-chunks-once-they're-no-longer-needed
554 behavior, confusingly called SOUP_MESSAGE_OVERWRITE_CHUNKS,
555 is now controlled by a SoupMessageBody method
556 (soup_message_body_set_accumulate()), and can be applied to
557 either the request body or the response body.
558 (OVERWRITE_CHUNKS is still available for backward
559 compatibility.) [#522146, Christian Kellner]
561 * The DNS cache no longer caches "no such host" results, since
562 some name servers lie to clients outside their firewall,
563 which could then cause problems for laptops moved between
564 networks. [#523269, Jörgen Scheibengruber]
566 * Added some new regression tests, fixed some small bugs in
569 Changes in libsoup from 2.3.4 to 2.4.0:
571 * Fixed a small memory leak in SoupSession. [#518798, Wouter
574 * Minor fixes to redirect behavior; PROPFINDs can now be
575 automatically redirected (pointed out by Christian Kellner),
576 and 302 is treated like 307, not 303. Also fixed to make
577 sure that redirect-test actually gets run by "make check".
579 * The SoupSocket I/O methods now set nread/nwrote even on
580 error. [Benjamin Otte]
582 Changes in libsoup from 2.3.2 to 2.3.4:
584 * The documentation should be accessible from devhelp again
585 [#518384, Mart Raudsepp]. (Also fixed another
586 documentation-generation bug that affected builds from svn,
587 but not the 2.3.2 tarball for some reason. [#518317,
590 * Fixed dependencies in libsoup-2.4.pc file [#517631,
593 Changes in libsoup from 2.3.0.1 to 2.3.2:
595 API changes / Behavior changes:
597 * soup_server_add_auth_domain() now refs the auth domain when
598 adding it. (soup_server_remove_auth_domain() already
599 unreffed it.) This means existing applications using
600 SoupAuthDomain will now have a small memory leak. Those
601 applications should update their libsoup-2.4 requirement to
602 ">= 2.3.2" at some point before the final GNOME 2.22.0
603 release, and then fix the code to unref the auth domain
604 after adding it to the server.
606 * SoupSession's automatic redirect-handling behavior now obeys
607 RFC 2616 more closely. In particular, status codes 300 and
608 304 are no longer mistakenly considered redirects; POSTs
609 that receive 303 are now redirected into GETs; and POSTs
610 that receive 301, 302, or 307 are now not redirected.
612 Applications that were using the SOUP_MESSAGE_NO_REDIRECT
613 flag to prevent libsoup from redirecting POSTs incorrectly
614 before should now be able to remove that if they depend on
615 libsoup-2.4 >= 2.3.2.
619 * Added a SOUP_SESSION_USER_AGENT property to SoupSession, and
620 SOUP_SERVER_SERVER_HEADER to SoupServer, to support
621 automatically adding "User-Agent" and "Server" headers to
622 messages. (The default behavior is to do nothing, as
625 * Added several new methods to soup-forms.h. Applications that
626 are encoding a fixed set of form fields can now just pass
627 them to soup_form_encode(), rather than needing to construct
628 a GHashTable or GData list. (Likewise, the new
629 soup_uri_set_query_from_fields() behaves similarly for
630 directly updating a URI with form data.) There are also now
631 soup_form_request_new() and other related methods, to
632 directly create a GET or POST SoupMessage for submitting a
635 The original soup_form_* methods have all been renamed,
636 although #defines exist for backward compatibility.
638 * Added soup_message_set_chunk_allocator() and
639 soup_buffer_new_with_owner(), to give applications more
640 control over memory usage/copying when doing streaming HTTP.
641 [Wouter Cloetens, #513810].
643 * Added several new methods to soup-value-utils.h for working
644 with multiple array or hash table values at once:
645 soup_value_hash_new_with_vals(),
646 soup_value_hash_insert_vals(),
647 soup_value_hash_lookup_vals(),
648 soup_value_array_new_with_vals(), and
649 soup_value_array_append_vals().
651 This helps to simplify XML-RPC calls that send or receive
654 * Added soup_date_to_time_t().
656 * Added SoupMessageHeadersIterator, an iterator type for
657 SoupMessageHeaders that can be used instead of
658 soup_message_headers_foreach().
662 * Fixed a crash-when-idle in evolution-exchange [#437835] and
665 * Added the API version to the gtk-doc installation dir, to
666 prevent parallel-installation problems with libsoup 2.2 and
667 2.4. [#512810, Daniel Gryniewicz].
669 * Fixed tests/query-test to compile correctly on Solaris.
670 [#513602, patch from Jeff Cai]
672 * Fixed some other minor HTTP conformance issues.
676 * Although not present in the release tarball, there are now
677 experimental python bindings for libsoup in GNOME subversion
678 (in the python/ subdirectory of libsoup trunk). These are
679 not yet stable (and are not built by default or installed
680 even when building from svn), but comments on them are
681 welcome at libsoup-list@gnome.org
683 Changes in libsoup from the 2.2 series to 2.3.0.1:
685 libsoup 2.3.0 is the first beta release of the libsoup 2.4
686 series. It is an API break from the earlier 2.2 series that
687 fixes various bugs and API warts and lays the groundwork for
688 language bindings and various new features in upcoming
691 (2.3.0.1 is identical to the 2.3.0 release in terms of code,
692 but includes this updated NEWS file which was accidentally
693 left out of the 2.3.0 tarball.)
695 http://library.gnome.org/devel/libsoup/unstable/libsoup-porting-2.2-2.4.html
696 goes over the API changes in detail. If you have questions not
697 answered by the porting document, please send mail to
698 libsoup-list@gnome.org.
700 Specific user-reported bugs fixed in this release:
702 * SoupURI now correctly handles URIs with complex encoded
703 queries [#266516, Jean-Yves Lefort]
705 * It is now possible for a SoupServer to use Digest auth
706 without needing to have the cleartext password available.
707 [#347108, Anas Nashif]
709 * Digest authentication now properly handles "stale=true" and
710 "nextnonce=..." [#471380, Jari Urpalainen]
712 * SoupServer is now subclassible [#491653, Mathias Hasselmann]
714 * soup_server_run_async and soup_server_quit no longer ref and
715 unref the server, as that doesn't match ordinary GObject
716 conventions [#494128, Mathias Hasselmann]
718 * The test programs no longer use a symbol name that conflicts
719 with Cygwin [#501631, Cygwin Ports Maintainer]
721 * libsoup can now handle the not-quite-HTTP responses returned
722 by Shoutcast servers [#502325, Wouter Cloetens]
724 * If you use libsoup while disconnected from the network, it
725 no longer caches the failed DNS results [#508593, Bradley
728 Items from http://live.gnome.org/LibSoup/ToDo fixed:
730 * "Expect: 100-continue" processing now works correctly on
731 both client and server.
733 * SoupSessions are no longer leaked
735 * The XML-RPC API is improved. The SOAP API is gone...
737 * Added utility functions for HTML form handling
739 * Improved message header handling
741 * SoupServer now automatically adds a "Date" header
745 Changes in libsoup from 2.2.103 to 2.2.104:
747 * soup_message_io_pause() and soup_message_io_pause() are now
748 allowed for client messages (and in particular, they don't
749 mess up when called from the "got_chunk" callback).
750 [#452280, Marco Barisione]
752 * Fixed some bugs in SOUP_SESSION_ASYNC_CONTEXT support that
753 would cause parts of an operation to run in the default
754 context rather than the session's context. Also fixed some
755 leaks and added a regression test. [#498509, Wouter
758 * There is a new test/sample program, tests/pull-api.c,
759 showing how to implement a pull API using SoupSessionAsync.
760 (This depends on the fixes for #452280 and #498509, so it
761 won't work with older versions of libsoup.)
763 * Discovered "valgrind --leak-resolution=med" and fixed some
766 Changes in libsoup from 2.2.102 to 2.2.103:
768 * Fix memory corruption in SoupSessionAsync that caused
769 rhythmbox to crash. [#484988, patch from Rob Bradford]
771 * Fix socket refcounting in SoupServer to fix warnings /
772 possible crash. [#459896, Emanuele Aina]
774 Changes in libsoup from 2.2.101 to 2.2.102:
776 * Unbreak the build when building without SSL. Not that you
777 should be building without SSL anyway, but... (reported by
780 Changes in libsoup from 2.2.100 to 2.2.101:
782 * Fix build on cygwin [384498]
784 * Fix SSL rehandshaking on synchronous sockets [415402, Jacob
785 Berkman] and add a regression test for it.
787 * Fix two bugs in https tunnels over proxies that require
788 authentication (noticed by Varadhan), and add a regression
791 * Ensure that if you queue multiple messages at once to an
792 http server that requires authentication but that you
793 haven't authenticated to yet, that all of the messages get
794 properly authenticated [271540, James Willcox]. And add a
795 regression test for it.
797 * Fix NTLM authentication, which got broken by the previous
798 fix. [471389, Varadhan]. Add a basic NTLM regression test
799 that doesn't really test the crypto/encoding parts, but at
800 least makes sure that the message flow is correct.
802 * Allow trailing whitespace after HTTP version in
803 Response-Line, for compatibility with broken servers
804 [475169, Stephane Loeuillet]. Add that case to the
805 header-parsing regression test.
807 * Fix crash when the session's "authenticate" handler returns
808 a username and no password when using NTLM. [480987, Wendell
811 * Use "new" glib base64 and iso8601 methods rather than
812 duplicating them. [337010, patch from Emmanuele Bassi].
814 * Implement soup_session_queue_message() for SoupSessionSync.
816 * Add G_BEGIN_DECLS / G_END_DECLS to all headers that were
817 missing them. [438776, patch from Jonathon Jongsma].
819 * Fix broken definition of SOUP_IS_MESSAGE_FILTER_CLASS. Noted
820 by "cascardo" on libsoup-list.
822 * Remove documentation of non-public MD5 methods [440092,
823 Jonathon Jongsma]. Removed a mysterious half-sentence in the
824 SoupMessage docs [458116, Marco Barisione].
826 Changes in libsoup from 2.2.99 to 2.2.100:
828 * Fixed soup_headers_parse_status_line() so WebDAV response
829 parsing will work again. [406997]
831 * Fixed a bug in the header-parsing regression test that
832 caused the test to fail sometimes, even though the actual
833 header-parsing code was fine.
835 Changes in libsoup from 2.2.98 to 2.2.99:
837 * Fixed header parsing, including a crash in SoupServer with
838 certain malformed requests [391970].
840 * Fixed redirection to other hosts with SoupSessionAsync.
843 * Fixed a small memory leak pointed out by Chris Austin.
845 Changes in libsoup from 2.2.97 to 2.2.98:
847 * The XML-RPC code now correctly interprets <value>foo</value>
848 as meaning the same thing as
849 <value><string>foo</string></value>. [364490] Pointed out by
852 * Memory leak fixes from Andrew W. Nosenko.
854 * A few symbols that should have been static before now are.
855 [376387] Patch from Matthias Clasen.
857 Changes in libsoup from 2.2.96 to 2.2.97:
859 * Fixed SOAP and XML-RPC code to handle whitespace and
860 comments in the XML better. (Based on a patch from Andrew W.
863 * Fixed lots of typecasting/constness warnings in the code
864 (mostly via a patch from Andrew W. Nosenko)
866 * Fixed build on Cygwin [321827]
868 * Fixed libsoup-2.2.pc fields [343340] and make it get
869 uninstalled correctly [356809]. (Mikhail Zabaluev and
872 * Fixed some small leaks in SoupServer pointed out by Paolo
875 Changes in libsoup from 2.2.95.1 to 2.2.96:
877 * SoupServer now works even if you don't explicitly set an
878 encoding for the response. (In particular, the automatic 404
879 if you request a path with no handlers now works. Problem
880 pointed out by Dennis Jacobfeuerborn.)
882 * WWW-Authenticate and Proxy-Authenticate responses with no
883 realm parameter are now ignored, as per RFC 2617, fixing a
884 crash pointed out by Nate Nielsen.
886 * Added soup_xmlrpc_message_from_string(), from Fernando
889 * simple-httpd and "get" now support HEAD
891 Changes in libsoup from 2.2.94 to 2.2.95.1:
893 * Even more fixes to XML-RPC, found by the new XML-RPC
894 regression test. This includes some API changes that I don't
895 feel guilty about, because the code totally didn't work at
898 * Fixed a bug in soup_mktime_utc()
900 * (2.2.95 was identical to 2.2.95.1. The only difference is
901 that the shared library version was belatedly bumped from
902 8.2.0 to 8.3.0 to reflect the API "additions")
904 Changes in libsoup from 2.2.93 to 2.2.94:
906 * Various fixes to the XML-RPC code (which apparently had not
907 actually ever worked before) from Brent Smith. [343973,
910 * Added client and server API tutorials to the docs
912 * auth-test now uses a local Apache 2.2 install, if possible,
913 rather than depending on files that used to be on an old
914 Ximian web server but haven't been anywhere for a long time.
917 Changes in libsoup from 2.2.92 to 2.2.93:
919 * Fixed outgoing data corruption caused when SoupServer
920 started writing out a response a second time after already
921 having started once. [334469]. Also fixed 342640 and another
922 bug caused by the workaround for 334469 in 2.2.92. Based on
923 patches and analysis from William Jon McCann and Armin
926 * Fixed a deadlock when changing a session's proxy URI.
927 [309867 / bnc 174255, based on a patch by Veerapuram
930 * Fixed https-via-proxies in the synchronous case. [bnc 174255]
932 * Fixed a crash in evolution-exchange [342545, fix based on an
933 analysis by Wang Xin].
935 * Fixed simple-proxy to not crash at startup. Oops. (Alex
938 Changes in libsoup from 2.2.91 to 2.2.92:
940 * Fixed server-side digest auth to return a valid "algorithm"
941 value and client-side to not crash if it sees an invalid one
944 * Fixed the Request-Line parsing code to not hardcode a
945 maximum URI length (to allow very long DAAP requests from
946 iTunes in Rhythmbox). [335040]
948 * Fixed some warnings (signed/unsigned mismatch).
950 Changes in libsoup from 2.2.7 to 2.2.91:
952 * (The large version number bump is because there was an
953 internal 2.2.90 release for SUSE 10.1 alphas, which was
954 supposed to be intermediate between 2.2.7 and 2.4.0. But
955 2.4.0 didn't end up happening, and I don't want to regress
956 the version number at this point.)
958 * SoupSession, SoupServer, SoupConnection, SoupSocket, and
959 SoupAddress now have an "async-context" property that allows
960 you to use the async API in a non-default GMainContext.
961 [Based on patches from Armin Bauer and Jürg Billeter.]
963 * SoupSession, SoupConnection, and SoupSocket now have a
964 "timeout" property to stop synchronous sockets from hanging
965 forever if the remote end is unresponsive (from Varadhan).
967 * Fixed some bugs in soup_date_iso8601_parse(). [324671, from
970 * More Windows build fixes from Tor.
972 Changes in libsoup from 2.2.6.1 to 2.2.7:
974 * Fixed a crash when using NTLM connections [316313, probably
975 also 318252]. (Also 321208, which was a bug introduced in
976 the original fix for 316313.)
978 * Fixed a bug that could cause soup to suck up all available
979 CPU when a connection to a SoupServer was dropped by the
980 other side [319305, patch from Jonathan Matthew]
982 * Fixed the creation of struct elements in XMLRPC messages
983 [321362, patch from Sebastian Bauer]
985 * Plugged a small memory leak in SoupSocket (from Wang Xin).
987 * Fixed two compile problems, a gccism [320349, patch from
988 Roland Illig], and a strict-aliasing warning from gcc 4.1.
990 Changes in libsoup from 2.2.6 to 2.2.6.1:
992 * Fixed a crash when using SoupSoapMessage
994 Changes from 2.2.5 to 2.2.6:
996 * Fixed a crash when canceling a message (from Tambet Ingo)
998 * Fixed a bug where a connection could be leaked forever in
999 some circumstances if a request got a 30x, 401, or 407
1000 response, eventually causing a hang when the session hit its
1001 maximum connection limit. (Dan/Tambet)
1003 * Fixed a memory leak. (Tambet)
1005 * Fixed a bug that would sometimes show up when connecting to
1006 a server on localhost [#312540]
1008 * Added some API to SoupServer and SoupSocket to help fix a
1009 long-standing rcd bug.
1011 Changes from 2.2.4 to 2.2.5:
1013 * Win32 support (from Tor Lillqvist)
1015 * Up-to-date API documentation pretty much everywhere
1017 * Basic XMLRPC support (from Mariano Suarez-Alvarez, Fernando
1018 Herrera, and Jeff Bailey)
1020 * New HTTP timestamp-manipulation methods soup_date_parse,
1021 soup_date_generate, and soup_date_iso8601_parse.
1023 * SoupSession now handles relative URLs in the Location header
1024 (in violation of RFC 2616, but in line with how some servers
1027 Changes from 2.2.3 to 2.2.4:
1029 * Fixed a problem with NTLM authentication against
1030 multi-domain servers. [306877]
1032 * Fixed DNS lookups on Solaris. [254551, 268389]
1034 Changes from 2.2.2 to 2.2.3:
1036 * Now compiles against gnutls 1.2.0 [257811]
1038 * Fixed a bug that could result in 100% CPU usage if an SSL
1039 server closed the connection uncleanly. [273352]
1041 Changes from 2.2.1 to 2.2.2:
1043 * The SSL validation fix from 2.2.1 [264414] is now completely
1044 fixed. (Part of the fix didn't actually make it into 2.2.1)
1046 * HTTPS certificate validation now works when using an HTTP
1049 * HTTP proxy code deals better with proxies that try to make
1050 the user do HTML-form-based authentication. [268531]
1052 * 64-bit fixes for NTLM auth code. [270323, from Michael
1055 Changes from 2.2.0 to 2.2.1:
1057 * Updated for a libgcrypt API change between 1.1.9x and 1.2.x
1058 that caused a crash at runtime if you compiled against
1061 * SSL certificate validation failure should now always result
1062 in a status of SOUP_STATUS_SSL_FAILED, rather than getting
1063 turned into SOUP_STATUS_IO_ERROR. [264414]
1066 Changes in libsoup from the 2.0 series (1.99.x versions) to 2.2:
1068 * Most of the libsoup datatypes are now GObjects. (SoupUri
1069 is currently an exception to this.)
1071 * SoupMessage now emits signals at various stages of
1072 processing. (Eg, "wrote_body", "got_headers".) (You
1073 can also still use soup_message_add_*handler().)
1075 * SoupContexts are gone; soup_message_new() now takes a URI
1078 * All formerly global state is now maintained by the
1079 SoupSession object. (This includes the connection pool,
1080 proxy server, cached authentication information, SSL
1083 * You can create a SoupSessionAsync (for 2.0-like
1084 behavior) or SoupSessionSync (for blocking,
1087 * You can add SoupMessageFilter objects to a session
1088 to have certain processing automatically performed
1089 on every message sent via that session. (Eg, setting
1092 * NTLM authentication is no longer supported by
1093 default. You must enable it by setting the
1094 SOUP_SESSION_USE_NTLM flag on the session.
1096 * The preferred method of handling authentication is
1097 now via the "authenticate" and "reauthenticate"
1098 signals on SoupSession. (The old style, of encoding
1099 the user and password information into the url is
1100 also still supported.)
1102 * The SOUP_ERROR_* values are now SOUP_STATUS_* (so that we
1103 don't have "SOUP_ERROR_OK" and the like).
1105 * SOUP_MESSAGE_IS_ERROR() is gone, since some cases
1106 want to include 3xx responses and some don't.
1108 * SOUP_ERROR_CANT_AUTHENTICATE and
1109 SOUP_ERROR_CANT_AUTHENTICATE_PROXY are now gone,
1110 since they didn't carry any information that
1111 SOUP_STATUS_UNAUTHORIZED and
1112 SOUP_STATUS_PROXY_UNAUTHORIZED don't.
1114 * DNS errors now show up as the new status code
1115 SOUP_STATUS_CANT_RESOLVE rather than being mixed in
1116 with SOUP_ERROR_CANT_CONNECT.
1118 * Minimal SOAP support has been added back, via
1119 SoupSoapMessage/SoupSoapResponse
1121 * The HTTP I/O state machine was completely rewritten, fixing
1122 numerous crashes, leaks, and protocol errors.
1124 * SoupUri now conforms to RFC 2396. Mostly.
1126 * Various test programs have been added under tests/
1130 * Support for OpenSSL (which was horribly buggy) and
1131 Mozilla NSS (which was never finished). We only
1132 support GNUTLS for SSL now.
1136 * CGI support in SoupServer