2.41.5
[platform/upstream/libsoup.git] / NEWS
1 Changes in libsoup from 2.41.4 to 2.41.5:
2
3         * Reverted the change to SoupURI's password handling from
4           2.41.4, since it turns out to have broken some things.
5           [#692149, Dan]
6
7         * Avoid a g_return_if_fail() when loading
8           SoupSession:ssl-ca-file fails. [#691930, Guillaume
9           Desmottes]
10
11         * Fixed a bug in SoupBodyInputStream that caused redirects in
12           WebKitGTK to hang. [#692026, Sergio]
13
14         * Updated translations:
15           Belarusian, Chinese (traditional), German, Italian,
16           Norwegian bokmål, Serbian, Uyghur
17
18 Changes in libsoup from 2.41.3 to 2.41.4:
19
20         * Lots of docs fixes, including catching up with some (but not
21           all!) of the API additions and deprecations, and a new
22           chapter with hints on porting from
23           SoupSessionAsync/SoupSessionSync to the new-and-improved
24           plain SoupSession.
25
26         * The plain SoupSession type now supports
27           soup_session_queue_message() (with SoupSessionAsync
28           semantics) and soup_session_send_message() (with
29           SoupSessionSync semantics), and there are now
30           soup_session_new() and soup_session_new_with_options().
31
32         * The mirroring of the SoupMessage API onto SoupRequestHTTP,
33           added in 2.41.3, has been reverted. However, new APIs
34           soup_session_send() and soup_session_send_async() have been
35           added that let you use the GInputStream-based API with
36           SoupMessages rather than SoupRequest, so if you're doing
37           HTTP-specific stuff, you can just use that instead.
38
39         * soup_message_get_https_status() now returns the certificate
40           and flags for unsuccessful https connections as well as
41           successful ones. [#690176]
42
43         * Fixed a deadlock when calling soup_session_abort() on a
44           SoupSessionSync in some cases. [#691399] 
45
46         * Internal SoupCache rewrites/improvements [#682112, Sergio]
47
48         * Plugged a memory leak in SoupCache [#690382, Sudarsana
49           Nagineni] and one in SoupAuthDigest [#690142]
50
51         * LIBSOUP_DISABLE_DEPRECATED has been renamed to
52           SOUP_DISABLE_DEPRECATED, but that's just to keep gtk-doc
53           happy, and you shouldn't use it. You should use
54           SOUP_VERSION_MIN_REQUIRED instead.
55
56         * Fixed the samba-windbind-based NTLM support, which appears
57           to have been broken before.
58
59         * SoupAuthManager is now a public class (so you can remove it
60           as a feature from a session, or disable it for a particular
61           message). It also has a new method
62           soup_auto_manager_use_auth(), which can be used to "preload"
63           authentication for a host so that libsoup will use
64           authentication on the very first request.
65
66         * SoupURI now treats "http://user@example.com" as having a
67           password of "" rather than NULL, since a NULL password would
68           not be valid for any known HTTP auth type.
69
70         * build: libsoup now uses autoreconf instead of
71           gnome-autogen.sh, and no longer uses AM_GLIB_GNU_GETTEXT
72           [Javier Jardon].
73
74         * Updated translations:
75           Assamese, Bulgarian, Estonian, Friulian, Galician, Hebrew,
76           Polish, Slovenian, Spanish
77
78 Changes in libsoup from 2.41.2 to 2.41.3 (codename: "I Left My
79 Deprecated APIs in A Coruña"):
80
81         * BUILD DEPENDENCY CHANGES: libsoup-gnome no longer depends on
82           libgnome-keyring, and the sqlite3 dependency has been moved
83           from libsoup-gnome to libsoup proper. (See below).
84
85
86         * SoupRequest is now stable API. SoupRequester, however, is
87           deprecated. Instead you can now call soup_session_request()
88           or soup_session_request_uri() to create a SoupRequest.
89
90           Some documentation has been updated to reflect this, but
91           much more still needs to be (in particular the "Client-side
92           Tutorial").
93
94         * SoupRequestHTTP now has a number of fields and methods that
95           mirror the SoupMessage data, so you don't have to use
96           soup_request_http_get_message() in many cases. On the flip
97           side, there is also now soup_message_get_request(). And you
98           can create a SoupRequestHTTP directly (and override its
99           request method) by using soup_session_request_http() or
100           soup_session_request_http_uri()).
101
102         * soup_message_set_chunk_allocator() is now deprecated; apps
103           that want to do streaming reads should just use SoupRequest,
104           which is vastly more sane.
105
106
107         * SoupPasswordManager is now deprecated, and
108           SoupPasswordManagerGNOME is now a no-op (and libsoup-gnome
109           no longer links against libgnome-keyring). [#594377, #679866]
110
111         * SoupCookieJarSqlite is now deprecated in favor of
112           SoupCookieJarDB, which is exactly the same thing except that
113           it's in libsoup itself rather than being in libsoup-gnome
114           (something that many people have requested). This means that
115           libsoup now requires sqlite3... if this offends you horribly
116           then you have a few months to speak up...
117
118         * SoupProxyResolverGNOME is now deprecated; there hasn't been
119           any real reason to use it since SoupProxyResolverDefault was
120           added.
121
122         * As a result of the last three items, libsoup-gnome now
123           consists entirely of deprecated APIs, and there is no reason
124           you should use it any more (though packagers need to keep
125           building it, for backward compatibility).
126
127
128         * SoupSession is no longer an abstract class, and you can
129           create a plain SoupSession, which behaves in a more
130           traditionally-gio-like way (allowing a mix of sync and async
131           methods, etc). This "plain" SoupSession also has more sane
132           default values of certain properties, and has certain
133           SoupSessionFeatures built in.
134
135           This will eventually replace SoupSessionAsync and
136           SoupSessionSync completely, but most of the documentation
137           hasn't yet been updated at this point...
138
139           This change involved merging the majority of the
140           SoupSessionAsync and SoupSessionSync code into SoupSession,
141           getting rid of lots of redundancy in the process. There may
142           be some bug fallout from this (probably on the
143           SoupSessionSync side, since WebKit's tests tend to shake out
144           all SoupSessionAsync bugs). However, this should help to
145           avoid SoupSessionSync-only bugs in the future, since much
146           more of the code is now shared.
147
148
149         * Usernames and passwords passed into SoupSession a URI will
150           now be cleared after they're used, so that if they are
151           wrong, the authenticate signal will be emitted on the next
152           round. [#689673, Martin Robinson]
153
154         * SoupURI now leaves "%00" in URIs as-is, rather than decoding
155           it to "\0", which was not intended and is never useful.
156
157         * Fixed a bug in SoupBodyOutputStream that could cause libsoup
158           to sometimes use blocking I/O rather than non-blocking when
159           writing chunked message bodies. [#688974, Milan Plzik]
160
161         * Fixed a bug in SoupFilterInputStream that could cause some
162           non-blocking reads to suck up CPU while waiting for the
163           network. (This was noticed with multipart/x-mixed-replace
164           processing; it's not clear if it affected anything else.)
165           [Gustavo]
166
167         * tests: misc small fixes
168
169
170         * New/updated translations:
171           Assamese, Galician, Japanese, Odia, Polish, Spanish
172
173 Changes in libsoup from 2.41.1 to 2.41.2:
174
175         * libsoup-2.4.so and libsoup-gnome-2.4.so now only export the
176           symbols that are part of the public API. (Plus, temporarily,
177           one additional symbol, soup_message_io_cleanup, which is
178           used by gvfs and possibly a few other modules, even though
179           it shouldn't be. If you copied soup-input-stream.c from
180           gvfs, you should port your code to use SoupRequest instead.)
181           [Dan, #595176]
182
183         * Added SOUP_VERSION_MIN_REQUIRED / SOUP_VERSION_MAX_ALLOWED
184           macros like the corresponding glib ones, to allow libsoup
185           users to request per-version deprecation/availability
186           warnings. [Dan]
187
188         * Fixed a crash caused by a race condition in SoupSessionSync,
189           and reorganized some code to avoid other possible similar
190           race conditions. [#684238, Dan]
191
192         * Fixed a crash when a DNS resolution failed, caused by a bug
193           in the GTask porting in 2.41.1. [#688330, Milan Crha]
194
195         * Fixed a problem that would cause g_warning()s in epiphany
196           when browsing sites that (incorrectly) returned empty
197           Cache-Control headers. [#683433, Dan]
198
199         * We now add a Host header to HTTP/1.0 requests as well as
200           HTTP/1.1 ones. [Dan]
201
202         * Fixed a bug in the printing of IPv6 address literals in the
203           Host header in SoupLogger. (They were being sent across the
204           wire correctly, they were just printed wrong by SoupLogger.)
205           [Dan]
206
207         * Belatedly added soup-multipart-input-stream.h to soup.h.
208           [Dan]
209
210         * Removed an evil hack in the long-deprecated
211           SoupProxyResolver code (not to be confused with
212           SoupProxyURIResolver), to avoid warnings with glib master.
213           If you had previously implemented a custom
214           SoupProxyResolver, then it will probably (silently) stop
215           working, but you should have ported it to
216           SoupProxyURIResolver years ago anyway... [Dan, #687659]
217
218         * Fixed a few race conditions in the test programs that could
219           cause "make check" to fail on slow or heavily-loaded
220           machines. [Dan]
221
222         * Further cleaned up and reorganized the internal HTTP I/O
223           codepaths, in preparation for an improved SoupCache.
224           [#682112, Sergio] (This change should not actually be
225           externally noticeable. But if SoupContentDecoder or
226           SoupContentSniffer turns out to be broken in this release,
227           this would be why).
228
229         * New/updated translations:
230           Slovak, Uyghur
231
232 Changes in libsoup from 2.40.1 to 2.41.1:
233
234         * Changed the behavior of NTLM authentication to be more like
235           what other apps apparently do. Now if the user does not
236           specify a domain in the username (eg, "MYDOMAIN\username"),
237           then we will not specify a domain in the NTLM response
238           (rather than assuming that the user is in the server's
239           default domain). People who get broken by this change should
240           be able to fix it by including an explicit domain in their
241           username, but the theory is that no one should get broken by
242           this... If this change does turn out to hurt more than it
243           helps then it may be reverted later. [#624613, Dan, based on
244           a suggestion from David Woodhouse]
245
246         * Fixed a crash caused by a race condition in SoupSessionSync.
247           [#684238, Dan]
248
249         * SoupRequest now supports resource:// URIs, for reading from
250           gresource. [#682721, Carlos]
251
252         * Added new compile-time and runtime APIs for checking the
253           libsoup version. [#684514, Martin Robinson]
254
255         * Updated to take advantage of (and require) glib 2.35;
256           removed all g_type_init() calls and ported to GTask. [Dan]
257
258         * Added support for Apache 2.4 to the unit tests. [Dan]
259
260         * New translations:
261           Uzbek (Cyrillic)
262
263 Changes in libsoup from 2.40.0 to 2.40.1:
264
265         * Improved the parsing of multipart/x-mixed-replace responses.
266           [#685752, Gustavo]
267
268         * Fixed handling of IPv6 address literals. [#684990, Dan]
269
270         * New/updated translations:
271           Catalan, Catalan (Valencian), Norwegian bokmål
272
273 Changes in libsoup from 2.39.92 to 2.40.0:
274
275         * New/updated translations:
276           Bengali (India), Bulgarian, Chinese (Simplified), Estonian,
277           German, Hebrew, Hindi, Hungarian, Latvian, Malayalam,
278           Punjabi, Tamil, Telugu, Thai, Ukranian
279
280 Changes in libsoup from 2.39.91 to 2.39.92:
281
282         * Fixed some g_warnings (and a possible crash) with the
283           soup_request_send_async(). [#683404, Dan]
284
285         * Fixed a hang with SoupSessionSync [#682923, Dan]
286
287         * Handle empty "Cache-Control" headers. [Sergio]
288
289         * New/updated translations:
290           Assamese, Belarusian, Brazilian Portuguese, British English,
291           Chinese (Traditional), Czech, Danish, French, Galician,
292           Greek, Gujarati, Hungarian, Indonesian, Italian, Lithuanian,
293           Marathi, Persian, Polish, Portuguese, Russian, Serbian,
294           Slovenian, Spanish
295
296 Changes in libsoup from 2.39.90 to 2.39.91:
297
298         * Added missing (transfer full) annotation to
299           soup_cookie_jar_add_cookie() and
300           soup_cookie_jar_add_cookie_with_first_party(), fixing
301           crashes in bindings. [#682554, Daniel Drake]
302
303         * Fixed a crash [#682569, Alexander Larsson] and a win32 build
304           problem [#683200, Kalev Lember] introduced by the memory
305           leak fixes in 2.39.90
306
307         * Fixed the SoupMessage:network-event signal, which had been
308           skipping the G_SOCKET_CLIENT_COMPLETE state in tunneled
309           https connections. And added a test for this. [Dan]
310
311         * New/updated translations:
312           French, Japanese, Korean, Latvian, Lithuanian, Polish,
313           Punjabi, Swedish, Tamil
314
315 Changes in libsoup from 2.39.5 to 2.39.90:
316
317         * Added SoupMultipartInputStream, for handling multipart
318           responses (particularly multipart/x-mixed-replace).
319           [#656684, Gustavo]
320
321         * Fixed a potential crash in SoupSessionAsync after the
322           session is finalized.
323
324         * Fixed a regression in soup_tls_is_public_suffix() [#681085,
325           Sergio]
326
327         * Added a SOUP_MESSAGE_IDEMPOTENT flag, so that apps can
328           bypass the "POSTs must be sent on new connections" check,
329           which was causing evolution-ews to have to create a new
330           connection for every request. [#681493, Milan Crha]
331
332         * Changed SoupSession so that pending SoupMessages now hold a
333           ref on the session. It is possible that this will break code
334           that was depending on the old, dumb, behavior (where
335           unreffing the session with messages pending would cause
336           those messages to be cancelled), in which case this will be
337           reverted before 2.40.
338
339         * Fixed memory leaks found by valgrind.
340
341         * Cleaned up some code in SoupCache. [#681509, Sergio]
342
343         * New/updated translations:
344           Bengali (India), Chinese (Traditional), German, Marathi,
345           Turkish, Ukranian
346
347 Changes in libsoup from 2.39.4.1 to 2.39.5:
348
349         * Fixed several bugs in the soup-message-io updates that could
350           cause hangs or I/O errors. [#679527 and other bugs not filed
351           in bugzilla]
352
353         * Fixed SoupServer:async-context to work properly again
354
355         * Further fixes to soup_uri_normalize() when using the
356           "unescape_extra" parameter. [#680018]
357
358         * Fixed soup_xmlrpc_parse_method_call() to handle the case
359           where there is no <params> element (which is legal).
360           [#671661]
361
362         * Fixed the deprecation warning on soup_message_headers_get()
363           [#680143]
364
365         * Added warnings to some erroneous SoupSocket usages rather
366           than returning bogus data. [#673083, Simon McVittie]
367
368         * Fixed build under Windows/MinGW
369
370         * SoupSocket no longer emits the "readable" signal when a
371           socket is disconnected if that socket is non-blocking.
372
373         * Updated public suffix list to the current version.
374
375         * New/Updated translations:
376           Assamese, Chinese (simplified), Esperanto, Galician, Greek, Gujarati,
377           Hebrew, Norwegian bokmål, Russian, Serbian, Slovenian
378
379 Changes in libsoup from 2.39.4 to 2.39.4.1:
380
381         * Fixed indentation problems in tld-parser.py so it will work
382           under python 3. [#680089, "marduk"]
383
384         * Actually fixed cookies in non-suffixed/private domains,
385           which still didn't work after the last fix. [#679230,
386           Carlos]
387
388         * Updated translations:
389           Spanish
390
391 Changes in libsoup from 2.39.3 to 2.39.4:
392
393         * Fixed the SoupRequest codepaths to properly retry in the
394           case where the server closes a persistent connection when we
395           try to use it. [Dan, might be the fix for #679527, but this
396           is not yet confirmed]
397
398         * Fixed the content-type and content-length of requests
399           retrieved from SoupCache. [#680029, Carlos Garcia Campos]
400
401         * Fixed the handling of cookies in non-suffixed and private
402           domains ("localhost", "foo.local", etc) [#679230, Sergio and
403           Dan]
404
405         * Fixed cookie parsing to allow attribute values on "secure"
406           and "HttpOnly". (Neither is supposed to have a value, but it
407           happens in the real world.) [#678753, Dan, based on a patch
408           from "Basavaraj"]
409
410         * Fixed soup_uri_normalize() to not always run the "fixup"
411           codepath. [#680018, pointed out by Yann Soubeyrand]
412
413         * Fixed a (rare) crash when closing the stream returned from
414           SoupRequestHTTP. [Dan]
415
416         * Use G_DEPRECATED on deprecated functions, and then fix up
417           the warnings this caused due to libsoup using its own
418           deprecated functions. [#671770, Javier Jardón]
419
420         * Fixed up "make dist" by, among other things, rewriting
421           tld-parser in python. [#678909, Colin Walters]
422
423         * Removed the "getbug" example program in tests/, which didn't
424           work any more anyway. [Dan]
425
426         * Various internal code cleanups. [Dan] Fixed one crash
427           resulting from this [#680055, Alban Browaeys]; hopefully
428           there won't be any more.
429
430         * New/Updated translations:
431           Assamese, Belarusian, Bulgarian, Chinese (traditional), Hebrew,
432           Indonesian, Lithuanian, Norwegian bokmål, Vietnamese
433
434 Changes in libsoup from 2.39.2 to 2.39.3:
435
436         * Added new functions for comparing domains against the
437           "public suffix" list (http://publicsuffix.org/), and in
438           particular fixed SoupCookieJar to not allow setting cookies
439           in "public" domains (eg, ".co.uk"). [#673802, Sergio]
440
441         * Added two new SoupCookieJar APIs
442           (soup_cookie_jar_get_cookies() and
443           soup_cookie_jar_set_cookie_with_first_party()) as part of
444           fixing the handling of HttpOnly cookies in WebKitGTK.
445           [#677922, Christophe Dumez]
446
447         * Fixed g-i annotation of
448           soup_message_headers_get_content_type(). [#677002, Dan]
449
450         * Updated translations:
451           Galician, Greek, Slovenian, Spanish, Telugu
452
453 Changes in libsoup from 2.39.1 to 2.39.2:
454
455         * Fixed several bugs that resulted from the I/O code rewrite
456           in 2.39.1, and added more test cases to exercise the new
457           code paths:
458
459                 * Problems with cancelling messages from the
460                   got-headers signal [#674747, Dan]
461
462                 * Persistent connections were not always being closed
463                   properly after a message was cancelled mid-response.
464                   [Dan]
465
466                 * Cancelling a SoupRequest before it started I/O
467                   didn't work. [Dan]
468
469                 * Asynchronous HTTP authentication via the SoupRequest
470                   API [#675306, Dan]
471
472                 * Memory leak [#676038, Ray Strode]
473
474                 * Refcounting bug that manifested as a crash in rygel
475                   [#676038, Ray Strode]
476
477                 * Handling failed CONNECT requests via SoupRequest
478                   [#675865, Sergio]
479
480                 * Messages with trailing junk following a compressed
481                   message body [#676477, Dan]
482
483         * Fixed three cache-related bugs that affect some sites
484           (notably Twitter) [Sergio]
485
486         * Fixed a bug in the /usr/bin/ntlm_auth integration when you
487           don't already have credentials cached, and avoid printing
488           warning messages when ntlm_auth is present but not usable.
489           [Dan]
490
491         * Fixed some g-ir-scanner warnings, and included
492           SoupRequester/SoupRequest in the introspected API [#676742,
493           Jasper St. Pierre]
494
495         * Added soup_buffer_get_as_bytes() [#676776, Jasper]
496
497         * New/updated translations:
498           Belarusian, Chinese (simplified), French, Galician, Greek,
499           Hebrew, Polish, Punjabi, Romanian, Slovenian, Spanish
500
501 Changes in libsoup from 2.38.1 to 2.39.1:
502
503         * Major rewrite of the I/O code to use gio streams more
504           directly. In particular, when using SoupRequestHTTP now, the
505           input stream that is returned is actually pulling data from
506           the socket, rather than just repeatedly pausing and
507           unpausing the underlying SoupMessage and waiting for data to
508           be pushed into it. This also means that SoupRequestHTTP now
509           works with SoupSessionSync as well. [#591739, Dan]
510
511           (The SoupRequest API is still protected by unstable-API
512           #ifdefs, but will be made public later in this cycle.)
513
514         * Libsoup now finally supports SOCKS proxies again. [#553269,
515           Dan]
516
517         * Certain error messages returned from the streaming API
518           (SoupRequest, etc) are now localized; more strings will be
519           localized later on.
520
521         * New translations: Galician, Hebrew, Indonesian, Norwegian
522           bokmål, Polish, Russian, Slovenian, Spanish.
523
524         * Added a SoupCookieJar:is-persistent property, to distinguish
525           memory-only jars from SoupCookieJarText and
526           SoupCookieJarSqlite. [#672838, Carlos Garcia Campos]
527
528 Changes in libsoup from 2.38.0 to 2.38.1:
529
530         * Fixed a situation where soup_connection_disconnect() could
531           end up calling g_object_unref(NULL) when an idle connection
532           was closed. [Sergio, #672178]
533
534         * Fixed two warnings when cancelling an in-progress
535           soup_socket_connect_async(). [pointed out on the mailing
536           list by Sven Neumann]
537
538         * Fixed a crash when disposing a SoupServer with open
539           connections. [#673468, Jonny Lamb]
540
541         * Fixed the SoupSession:ssl-use-system-ca-file property to get
542           turned off (rather than on) when you set it to FALSE... Also
543           fixed up the property notifications around the various
544           certificate-verification properties (ssl-ca-file,
545           ssl-use-system-ca-file, and tls-database).
546
547         * Fixed SoupSession to not leak paused SoupMessages that
548           were still in progress when it was unreffed. [#673905]
549
550         * Updated the win32 file: URI code again, to fix regressions
551           in the WebKit tests. [WebKit bug #82484]
552
553 Changes in libsoup from 2.37.92 to 2.38.0:
554
555         * Minor documentation fixes
556
557 Changes in libsoup from 2.37.91 to 2.37.92:
558
559         * Added soup_session_prefetch_dns() and deprecated
560           soup_session_prepare_for_uri(). The new method takes a
561           completion callback, allowing you to know how many DNS
562           resolutions are currently outstanding, so you don't spam the
563           resolver. [Sergio, WebKit bug #41630]
564
565 Changes in libsoup from 2.37.90 to 2.37.91:
566
567         * Fixed an out-of-bounds memory read that could occur when
568           parsing malformed requests/responses.
569
570         * Fixed a build-related bug in Makefile.glib that affected
571           locales such as Estonian where "Z" is not the last (ASCII)
572           letter of the alphabet. [#654395, Priit Laes]
573
574         * Fixed the handling of file: URIs with query components,
575           which got broken in 2.37.90.
576
577         * Fixed SoupAuthManagerNTLM to not fall back to allowing Basic
578           auth when NTLM failed.
579
580         * Further tweaked the warnings/fallback in SoupURI, so that
581           soup_uri_to_string() on an http URI with a NULL path would
582           translate that to "/" like it used to. [#670431]
583
584         * Fixed a warning when cancelling the load of a page with many
585           subresources. [#667245]
586
587         * Use G_GNUC_BEGIN/END_IGNORE_DEPRECATIONS if GLib is new
588           enough, to avoid getting warned about the use of
589           GValueArray.
590
591 Changes in libsoup from 2.37.5 to 2.37.90:
592
593         * libsoup is now beta-testing Makefile.glib from bug 654395.
594           If 2.37.90 fails to build in some strange way that 2.37.5
595           did not, this is probably why.
596
597         * Replaced some of the SoupURI g_return_if_fail()s that were
598           added in 2.37.5 with g_warn_if_fail()s. Although it had
599           always been documented that SoupURIs must have a non-NULL
600           path, most SoupURI functions treated NULL the same as "",
601           and various apps (eg, rhythmbox, midori) were accidentally
602           relying on this. [Dan]
603
604         * Added various return-if-fails and other sanity checks to
605           various functions. [#669479, Robert Swain, Mark Nauwelaerts,
606           Simon McVittie]
607
608         * Updated docs/annotation of soup_form_decode_multipart() to
609           note that all of the out parameters are (allow-none). Fixed
610           the file_control_name parameter to actually allow NULL like
611           the docs already claimed. [#669479, Simon McVittie]
612
613         * Fixed a minor URI parsing bug. (It was allowing URI schemes
614           to contain numbers.) [Dan]
615
616         * Fixed a few memory leaks introduced in the 2.37 cycle. [Dan]
617
618         * Fixed SoupServer to be able to correctly respond to HTTP/1.0
619           requests over IPv6 (which previously would always have
620           returned "400 Bad Request"). [#666399, Dan]
621
622         * Changed SoupSessionAsync to make it possible to finalize it
623           from the "wrong" thread. [#667364, Dan].
624
625         * Fixed SoupCache to not cache resources whose URIs have query
626           components (unless they have explicit cache headers); to not
627           generate broken conditional requests for resources that
628           cannot be conditionally validated; and to not spew warnings
629           when receiving invalid Cache-Control headers. [#668865,
630           Sergio].
631
632 Changes in libsoup from 2.37.4 to 2.37.5:
633
634         * Fixed a bug in SoupSession:use-thread-context [Dan]
635
636         * Fixed the case of cancelling a message from
637           SoupSession::request-started [#668098, Raphael Kubo da
638           Costa]
639
640         * Fixed a crash in epiphany when loading a page with more than
641           1000 or so images. [#668508, Dan]
642
643         * Fixed a bunch of cases involving invalid URLs found while
644           testing SoupServer against an HTTP protocol fuzzer. Also
645           fixed up some documentation/annotations and added some new
646           test cases. [#667637, Simon McVittie]
647
648         * Fixed SoupRequestFile to work on Windows. [Paweł Forysiuk]
649
650 Changes in libsoup from 2.37.3 to 2.37.4:
651
652         * SoupMessage now has a "network-event" signal that can be
653           monitored for information about DNS, proxy lookup, TCP
654           connections, and TLS handshakes. [Dan]
655
656         * The HTTP header parsing code now avoids hitting
657           g_return_if_fails() (and returns an error instead) in a few
658           cases of seriously-invalid headers. [#666316, Simon
659           McVittie, Dan]
660
661         * POSTs and other non-idempotent requests are now always sent
662           on newly-created connections. You can also force this
663           behavior on other messages by setting the
664           SOUP_MESSAGE_NEW_CONNECTION flag. [#578990, Dan]
665
666         * Server-closed idle connections are now detected ahead of
667           time on Windows, preventing occasional spurious "Connection
668           terminated unexpectedly" errors. (This had been fixed on
669           UNIX since 2.28, but the earlier fix didn't work with
670           WinSock.) [#578990, Dan]
671
672         * Plugged a leak in SoupRequestHTTP. [#667099, Xan]
673
674 Changes in libsoup from 2.37.2 to 2.37.3:
675
676         * Now requires glib 2.31
677
678         * Simplified SoupHTTPInputStream and SoupRequestHTTP, allowing
679           related simplifications in WebKit's ResourceHandleSoup. This
680           is an ABI-incompatible change, but SoupHTTPInputStream is an
681           unstable API. [#663451, Dan]
682
683         * Fixed a bug that caused the SOUP_MESSAGE_CERTIFICATE_TRUSTED
684           flag to always be cleared, causing epiphany to claim all
685           https pages were untrusted. [#665182, Dan]
686
687         * Fixed some bugs in the handling of SoupSession:http-aliases
688           and SoupSession:https-aliases.
689
690         * Fixed handling of ACLOCAL_FLAGS [#641470, Craig Keogh]
691
692         * Fixed SoupContentDecoder's "ignore Content-Encoding: gzip
693           because the server didn't actually mean it" hack to handle
694           x-gzip too.
695
696         * Clarified the documentation on SoupSession:ssl-strict
697           [#666280]
698
699 Changes in libsoup from 2.37.1 to 2.37.2:
700
701         * Fixed up the output of SoupDirectoryInputStream, thus
702           improving the display of local directories in WebKit-based
703           browsers. [#662266, Sergio]
704
705         * Fixed a bug introduced in 2.37.1 that caused some cancelled
706           SoupMessages to be leaked. [#662847, Sergio]
707
708         * Added new SoupSession properties "http-aliases" and
709           "https-aliases" that allow you to configure more explicitly
710           what URL protocols are treated as aliases for http (eg,
711           "dav:", "webcal:", etc), and which should be recognized as
712           meaning something else, (eg, "ftp:") [Dan]
713
714         * Added soup_session_would_redirect() and
715           soup_session_redirect_message(), to help users that want to
716           handle some or all redirects themselves. Added
717           soup_message_set_redirect() to make it easier to return
718           redirection responses from a SoupServer. [Dan]
719
720         * Added the SoupSession "use-thread-context" property, which
721           tells it to use GMainContexts in a gio-compliant way (and in
722           particular, allows having different messages running in
723           different GMainContexts on the same SoupSession, though only
724           to a limited extent since SoupSessionAsync is still not
725           thread-safe). In particular, this was added in order to
726           address WebKit bug 68238. [Dan]
727
728         * Made SoupURI %-encode non-ASCII characters when parsing
729           URIs, in particular to fix a problem with certain servers
730           sending syntactically invalid redirects that they would then
731           only interpret correctly if you fixed the syntax for them.
732           (@$!@#! Although the new code is probably more correct than
733           the old code anyway, so...) [#662806, Dan]
734
735         * Fixed a connection-handling bug that could cause problems
736           with servers that requested authentication and then timed
737           out the connection while the application was waiting for the
738           user to enter a password. [#660057, Dan]
739
740         * Made NTLM and Basic authentication handle some non-ASCII
741           usernames and passwords. (NTLM should handle most. It's
742           impossible to fix Basic in the general case.) [#576838,
743           Joachim Breitner, "sponsored by ITOMIG GmbH and the City of
744           Böblingen"]
745
746         * Added support for "deflate" Content-Encoding, so that we can
747           work with broken servers that insisted on using it even
748           though we explicitly indicated in the request headers that
749           we didn't support it. (@$#!#) [#661682, Sergio]
750
751 Changes in libsoup from 2.36.0 to 2.37.1:
752
753         * Fixed a problem with connections being assigned to multiple
754           requests at once after a redirection [#651146, Sergio]. Made
755           soup_session_pause/unpause_message() work in any state, not
756           just while the HTTP I/O is occurring, and used this to add a
757           test case for that bug. [Dan]
758
759         * Ported SoupSession to use GTlsDatabase internally, and added
760           two new properties, SoupSession:use-system-ca-file (to
761           specify that the session should use the default system
762           tlsdb) and SoupSession:tlsdb (to specify a specific tlsdb to
763           use). [Dan]
764
765         * Likewise, added SoupServer:tls-certificate, for specifying a
766           certificate/key for an https server to use.
767
768         * Made SoupHTTPInputStream use memory more efficiently.
769           [#659255, Sergio]
770
771         * Fixed soup_message_get_https_status() to return information
772           more reliably (with latest glib-networking).
773
774         * Bumped the glib requirement to 2.30.0; although libsoup does
775           not use any new glib 2.30 APIs, there are several important
776           bugfixes in glib between 2.28 and 2.30 that libsoup needs.
777           Currently libsoup builds against either glib 2.30.x or glib
778           2.31.x.
779
780 Changes in libsoup from 2.35.92 to 2.36.0:
781
782         * Improvements to gtk-doc documentation. [Dan]
783
784 Changes in libsoup from 2.35.90 to 2.35.92:
785
786         * Fixed a problem where SoupHTTPRequest response bodies could
787           be truncated. [#659256, Sergio]
788
789         * Fixed a bug in copying TLS information from SoupSocket to
790           SoupMessage, causing all https connections to be reported as
791           "untrusted" in epiphany. [Dan]
792
793         * Made SoupSession remove items from its host cache after a
794           while, so that if a host changes IP address, it will
795           eventually try to re-resolve it. [#646959, Sergio]
796
797 Changes in libsoup from 2.35.5 to 2.35.90:
798
799         * Added SOUP_MESSAGE_CAN_REBUILD flag, to use with
800           soup_message_body_set_accumulate(FALSE) on a request body,
801           to indicate that the caller will recreate the request body
802           after it has been discarded if the message needs to be
803           re-sent. [#656650]
804
805         * Fixed the build on mingw-w64 by not using "interface" as
806           as variable name. [#656402, Erik van Pienbroek]
807
808         * (The multihosted https server regression mentioned in the
809           2.35.5 NEWS turned out to be a glib-networking bug, which is
810           fixed as of 2.29.18.)
811
812 Changes in libsoup from 2.35.4 to 2.35.5:
813
814         * Support NTLM single sign on via samba's /usr/bin/ntlm_auth.
815           [#650940, Mandy Wu]. This is enabled by default (if NTLM is
816           enabled for the session and the ntlm_auth binary is
817           available), but will fall back to the standard
818           password-based authentication if SSO fails.
819
820         * Default to TLS+extensions for https connections, falling
821           back to SSLv3-without-extensions (the old default) only if
822           the server fails to negotiate TLS. [#581342]
823
824                 * As a result of this change, some users are currently
825                   seeing problems with sites that serve multiple https
826                   hosts from a single IP address (eg,
827                   *.launchpad.net). There is no known workaround at
828                   this time.
829
830         * Fixed a longstanding problem with https pages sometimes not
831           loading when using a proxy. [#631368, based on patches from
832           DongJae Kim and Thierry Reding]
833
834         * SoupContentSniffer: don't use gio's sniffing rules, since
835           the spec now recommends that browsers not do any additional
836           sniffing beyond what's in the spec. [#648846, "arno"]
837
838         * Fixed SoupRequestHTTP to work properly with alternate
839           GMainContexts. [#653707]
840
841         * Added some annotations from Vala's vapi files. [#655397,
842           Evan Nemerson]. Also, removed SoupProxyResolver from the
843           gir/typelib, since it had been deprecated since before
844           introspection was available, and it was being scanned wrong
845           anyway.
846
847 Changes in libsoup from 2.35.3 to 2.35.4:
848
849         * CVE-2011-2524: Fixed a security hole that caused some
850           SoupServer users to unintentionally allow accessing the
851           entire local filesystem when they thought they were only
852           providing access to a single directory. [#653258]
853
854         * Plugged another SoupCache memory leak [Xan]
855
856         * Simplified SoupCache keys, and handle collisions. [#649963,
857           Sergio]
858
859         * Annotate SoupSession:add-feature, etc, as (skip), so they
860           don't conflict with the methods of the same name. [#655150,
861           Jasper St. Pierre]
862
863 Changes in libsoup from 2.34.1 to 2.35.3:
864
865         * SoupCache fixes [Sergio]:
866
867                 * Don't store hop-by-hop headers [#650094]
868
869                 * Fix status code and headers of responses returned
870                   from the cache after being revalidated [#649965]
871
872                 * Added versioning support to the cache file format
873                   [#652554] and extended it to keep track of the
874                   status code [#649965]
875
876                 * Fixed storage of time values in the cache [#653349]
877
878                 * Fixed a use-after-free that could result in bogus
879                   data being written to the cache [#650620]
880
881                 * Various leaks [#649309]
882
883         * Work around an Apache bug where it tells browsers to
884           automatically decode .gz files but still keep the .gz in the
885           name. [#613361, Dan]
886
887         * Fixed an overflow when sending a response larger than 2^31
888           bytes (eg, streaming movies in Rygel). [#638468, Jens Georg]
889
890         * Always send the Keep-Alive header, not just to hosts we
891           already know to be HTTP/1.0 [#648680, Sergio]
892
893         * Fixed various leaks [#652699, Sergio], [#651643, Milan],
894           [etc, Xan]
895
896         * Minor build fix for Debian/Ubuntu [#648948]
897
898         * Fixed a docs typo
899
900 Changes in libsoup from 2.34.0 to 2.34.1:
901
902         * Two multipart forms/Content-Disposition fixes [Dan]:
903
904                 * UTF-8-encoded header encoding/decoding rules updated
905                   to match RFC 5987. In particular, a UTF-8-encoded
906                   filename parameter in Content-Disposition will now
907                   override an ASCII one.
908
909                 * When not using UTF-8-encoded filenames in
910                   Content-Disposition, always quote the filename,
911                   since some servers erroneously fail to handle
912                   non-quoted ones. [#641280]
913
914         * Fixed several memory leaks [Dan, Xan]
915
916         * Fixed decoding base64 data: URLs [#646896, Sergio]
917
918         * Simplified the libsoup-gnome build on Windows by dropping
919           the gnome-keyring dependency. [Fridrich Štrba]
920
921         * Fixed a bug in soup_uri_to_string() in which (invalid) port
922           numbers could be output as negative numbers (tripping up a
923           WebKit "sanity checking" test). [#647767, Sergio]
924
925         * Fixed a cache corruption bug in SoupCache. [#648285, Sergio]
926
927         * Fixed a crash in SoupSessionSync when using
928           soup_session_abort().
929
930 Changes in libsoup from 2.33.92 to 2.34.0:
931
932         * Fixed the GMainContext handling of the new
933           SoupProxyResolverDefault (which among other things fixes
934           gstreamer usage inside epiphany). [#646201, Sebastian Dröge]
935
936         * Tweaked the introspection Makefile rules to fix a problem
937           building on Debian/Ubuntu. [#645505]
938
939         * Belated bumped the shared library versioning to reflect the
940           API additions since 2.32.0
941
942 Changes in libsoup from 2.33.90 to 2.33.92:
943
944         * LIBSOUP NO LONGER DEPENDS ON GCONF OR LIBPROXY.
945           (see below).
946
947         * Added SoupProxyResolverDefault, which uses uses gio's
948           GProxyResolver to resolve proxies [#642982, Gustavo Noronha
949           Silva]. Despite the "default" in the name, it is not used by
950           default, for compatibility reasons, but it is available in
951           plain libsoup, not libsoup-gnome. (Of course, it depends on
952           having glib-networking installed.)
953
954         * Updated SoupProxyResolverGNOME to be based on
955           SoupProxyResolverDefault, but explicitly requesting the
956           "gnome" GProxyResolver if it is available [#625898], and
957           removed the old code that used GConf and libproxy directly.
958
959         * Added soup_server_disconnect(), to explicitly disconnect a
960           SoupServer, since it is not possible to g_object_unref() it
961           from memory-managed language bindings. [#638576, Andreas
962           Rottmann]
963
964         * SoupDate now parses month names case-insensitively [#644048,
965           Christian Dywan]
966
967         * Avoid a g_return_if_fail() when using
968           SOUP_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY with non-http URIs
969           (file:, data:, etc). [#643226]
970
971         * SoupCookieJar now catches overflows when parsing very
972           distant dates [#643462, based on a patch from Mark
973           Starovoytov]
974
975         * Fixed a buggy interaction between request body streaming and
976           restarted requests [David Woodhouse]. Added some new tests
977           to tests/chunk-test.c to make sure that a specific
978           (unsupported!) way of using those methods would not get
979           broken in the future.
980
981         * Fixed soup_socket_get_remote_address(), which had been
982           broken since 2.33.4 (and which in turn caused
983           soup_client_context_get_address/_get_host to be broken).
984           [#645227]
985
986 Changes in libsoup from 2.33.6 to 2.33.90:
987
988         * Attempted to make libsoup's dependency on glib-networking
989           (for TLS support) more explicit, by requiring that
990           glib-networking be present at compile time unless the
991           builder explicitly passes "--disable-tls-check", and noting
992           that packagers should give libsoup a runtime dependency on
993           glib-networking.
994
995         * Fixed a bug in talking to servers with virtual hosts with
996           Unicode names (IDNs) [#642075]
997
998         * Added a "Connection: Keep-Alive" header when talking to
999           HTTP/1.0 hosts, to improve performance. [#640414, Sergio
1000           Villar Senin]
1001
1002         * Changed SoupCache to not cache multipart/x-mixed-replace
1003           content. [#642028, Sergio Villar Senin]
1004
1005 Changes in libsoup from 2.33.5 to 2.33.6:
1006
1007         * Made SoupSessionAsync do idle-connection cleanup more
1008           sanely, resulting in faster load times for pages with lots
1009           of subresources. [#639768, Sergio Villar Senin]
1010
1011         * Fixed soup_form_decode()'s behavior (and by extension,
1012           SoupServer query string handling) with datasets that contain
1013           multiple values for the same key, and added a test case.
1014           [#639783, Sven Neumann]
1015
1016         * Fixed warnings pointed out by gcc 4.6, including a bug in
1017           SoupCache that would cause unnecessary revalidations
1018           [#640556].
1019
1020         * Belated copied a fix from the WebKit copy of soup-cache.c
1021           into ours, and fixed a bug in the local copy of
1022           soup-request-data.c [#641022, Sergio Villar Senin], in
1023           preparation for making WebKit use the libsoup versions.
1024
1025 Changes in libsoup from 2.33.4 to 2.33.5:
1026
1027         * Fixed certain cases of soup_session_cancel_message() with
1028           SoupSessionSync that could previously cause warnings or
1029           crashes. [#637741]
1030
1031 Changes in libsoup from 2.32.2 to 2.33.4:
1032
1033         * SoupSocket now uses GSocketConnection and GTlsConnection
1034           internally rather than making socket calls directly and
1035           using GIOStream, and TLS is handled via glib's APIs rather
1036           than using gnutls directly.
1037
1038         * The gzip Content-Encoding handler is now implemented using
1039           GZlibDecompressor
1040
1041         * As a result of the above two changes, libsoup no longer
1042           directly depends on gnutls, libgcrypt, or zlib, though it
1043           still indirectly depends on zlib via glib and libxml2. Also,
1044           although libsoup does not depend on glib-networking as a
1045           build-time dependency, some "make check" tests will be
1046           skipped if it is not installed.
1047
1048         * The SoupRequest/SoupCache code from WebKit has been
1049           imported, but it is not yet recommended for general use, and
1050           is not necessarily API stable. [#523100, Sergio Villar, with
1051           the SoupRequest parts based on the Summer of Code work by
1052           Gabriel Corvalan and the cache parts based on an earlier
1053           patch by Xan Lopez]
1054
1055         * Added SoupMessage:tls-certificate and
1056           SoupMessage:tls-errors, which give more information about
1057           the certificate used to authenticate a TLS connection.
1058
1059         * It is now possible to disable Basic or Digest auth in a
1060           session by using soup_session_remove_feature_by_type() with
1061           SOUP_TYPE_AUTH_BASIC or SOUP_TYPE_AUTH_DIGEST. Likewise, the
1062           right way to enable NTLM support now is to call
1063           soup_session_add_feature_by_type() with SOUP_TYPE_AUTH_NTLM;
1064           SOUP_SESSION_USE_NTLM is now deprecated.
1065
1066         * Allow setting cookies on file:// URIs, since other browsers
1067           do, and WebKit has a test for it. [#603825]
1068
1069         * .gir/.typelib files now include C header/library information
1070           (needed by vala and some other bindings) [#635395, Evan
1071           Nemerson]
1072
1073         * Added annotations on soup_message_headers_get_content_type()
1074           [Lucas Rocha] and SoupHTTPVersion [John Palmieri]
1075
1076         * Fixed a Set-Cookie processing leak [#636741, Jonathan
1077           Jongsma]
1078
1079 Changes in libsoup from 2.32.1 to 2.32.2:
1080
1081         * Fixed a regression in 2.32.0 that caused evolution-exchange
1082           to get stuck and stop updating. [#634422]
1083
1084         * Fixed a regression in 2.32.0 with apps using asynchronous
1085           sessions from multiple threads (in particular, gupnp)
1086           [#635101]
1087
1088         * Fixed the regression test for #631525 to not cause spurious
1089           "make check" failures on some machines.
1090
1091 Changes in libsoup from 2.32.0 to 2.32.1:
1092
1093         * Fixed a regression in 2.32.0 with the use of persistent
1094           connections that caused spurious "Connection terminated
1095           unexpectedly" errors. [#631525, debugged by Sergio Villar]
1096
1097         * Fixed a regression in 2.32.0 that caused proxy-related
1098           DNS errors to return SOUP_STATUS_CANT_RESOLVE rather than
1099           SOUP_STATUS_CANT_RESOLVE_PROXY.
1100
1101         * Usernames/passwords specified explicitly in request URIs now
1102           override existing cached auth info. [#631679, Sergio Villar]
1103
1104         * Changed soup_uri_decode() and soup_uri_normalize() to just
1105           ignore malformed %-encoding rather than returning NULL,
1106           for consistency with soup_uri_new(). [#630540]
1107
1108         * Fixed soup_form_decode() to ignore invalid parameters,
1109           and soup_form_encode_hash() to just g_return_if_fail()
1110           rather than crashing if there are NULL values in the
1111           hash. [#620220]
1112
1113         * Added another workaround for stupid servers that close the
1114           connection before returning the full response (in this case,
1115           when using chunked encoding and failing to include the
1116           final 0-length chunk). [#629160]
1117
1118         * Fixed a bug in SoupCookieJarText that deleted excess cookies
1119           whenever any cookie expired. [#631641, Michał Kazior]
1120
1121         * Fixed a small leak in SoupContentDecoder if you were using
1122           it incorrectly. [pointed out in email by Christophe
1123           Gillette]
1124
1125         * Added regression tests for passwords-in-URIs [#631679,
1126           Sergio Villar] and SOUP_SESSION_IDLE_TIMEOUT.
1127
1128 Changes in libsoup from 2.31.92 to 2.32.0:
1129
1130         * (No changes, just a version bump)
1131
1132 Changes in libsoup from 2.31.90 to 2.31.92:
1133
1134         * Updated for gobject-introspection 0.9.5. Also added some new
1135           annotations and removed a bunch of private headers from the
1136           scanning process.
1137
1138         * Percent-encoded characters in URIs are no longer
1139           automatically normalized to uppercase, since apparently some
1140           servers are stupid. [#628728, Sergio Villar Senin]
1141
1142         * Fixed a crash when resolving a URI containing both spaces
1143           and non-UTF8 8bit characters. [#629449]
1144
1145 Changes in libsoup from 2.31.2 to 2.31.90:
1146
1147         * libsoup now tries to connect to each IP address associated
1148           with a hostname, if the first one fails. In particular, if a
1149           host has both IPv4 and IPv6 addresses, and only one of them
1150           is reachable from the current host, libsoup will now try the
1151           other one rather than failing. (libc is supposed to sort the
1152           IP addresses in the right order, such that, eg, if you don't
1153           have IPv6 connectivity, it will put the IPv4 address first.
1154           For some reason though, this seems to be broken on some
1155           distros.) [#526321].
1156
1157         * Fixed Accept-Language header generation in locales where ","
1158           is used as the decimal point.
1159
1160 Changes in libsoup from 2.31.2 to 2.31.6:
1161
1162         * Disabled TLS 1.2 in addition to the already-disabled 1.1 and
1163           1.0 [see below, in libsoup 2.27.2], thus making libsoup
1164           usable with gnutls 2.10. [#622857. This commit, 01a43ad9,
1165           can be applied to libsoup 2.30.x as well if you need that
1166           release to work with gnutls 2.10.]
1167
1168         * When using libproxy 0.3 or newer, libsoup no longer leaks
1169           proxy-related environment variables into child processes
1170           [#603285]
1171
1172         * Changed the way message/connection binding works in
1173           SoupSession so that (among other things), when there are
1174           multiple requests queued to a host, and one of them gets a
1175           network error, the other requests are still allowed to try
1176           to succeed, rather than all failing immediately. [#619633]
1177
1178         * SoupSession now limits the number of times a message can be
1179           redirected, to avoid infinite loops [#604383, José Millán
1180           Soto]
1181
1182         * Fixed handling of certain messages where the response
1183           headers included "Connection: close" but the server did not
1184           actually close the connection at the end. [#611481]
1185
1186         * Fixed some incorrect g-i annotations [#621021]
1187
1188         * Fixed an out-of-bounds memory access when processing certain
1189           Set-Cookie headers [#620288]
1190
1191         * Improved msg->reason_phrase on network errors [#623274]
1192
1193         * Fixed gir file disting [#621727, Yaakov Selkowitz]
1194
1195 Changes in libsoup from 2.30.1 to 2.31.2:
1196
1197         * gobject-introspection has now been merged in. Use
1198           --enable-introspection to build. [#576595, Andreas Rottmann]
1199           Note that the introspected API is not yet stable, and in
1200           particular, there are numerous values annotated as "utf8"
1201           which are actually not guaranteed to be utf8. (Eg, most
1202           header data.)
1203
1204                 * Added some helper functions for bindings:
1205                   soup_buffer_new_take(),
1206                   soup_message_body_append_take(), and
1207                   soup_buffer_get_data(). [#576595, Andreas Rottmann]
1208
1209                 * Also added properties for several SoupMessage public
1210                   fields, and getter methods for various boxed types
1211                   (SoupCookie, SoupDate, SoupURI).
1212
1213                 * Added some additional hash-table annotations.
1214                   [#619086, Gustavo Noronha Silva]
1215
1216         * Marked SoupSession abstract. [#617216, Lorenzo Gil, the
1217           first bug filed by someone trying to use libsoup via
1218           introspection!] Likewise for SoupAuth and SoupAuthDomain.
1219
1220         * Fixed a problem with SoupSessionAsync that would cause
1221           messages to get lost if you aborted a previous message while
1222           it was still looking up the hostname. Fixed several other
1223           problems that were discovered while adding a regression test
1224           for that. [#618641, thanks to Claudio Saavedra for a good
1225           test case]
1226
1227         * Fixed another connecting-to-lame-http-server problem, and a
1228           getting-stuck-in-a-loop-reconnecting bug that it revealed.
1229           [#615535]
1230
1231 Changes in libsoup from 2.30.0 to 2.30.1:
1232
1233         * Fix for https through proxies that close the connection when
1234           returning a "407 Proxy Authentication Required" response,
1235           and add a regression test for that case. [#611663]
1236
1237         * Fixed multiple forms/multipart-related interoperability
1238           problems reported by Egon Andersen:
1239
1240                 * Don't quote the multipart boundary string if it's
1241                   not needed, since RFC 2616 recommends that you
1242                   don't, and some servers don't handle quotes there
1243                   correctly. (Sigh.) [#614176]
1244
1245                 * Don't put an extra blank line before the first
1246                   multipart part, since it's unnecessary and some
1247                   servers don't handle a multipart preamble correctly.
1248                   (Sigh.) [#614183]
1249
1250                 * Don't put Content-Transfer-Encoding headers in the
1251                   multipart/form-data parts, even though the HTML 4
1252                   spec says you must, since no other browsers do, and
1253                   some servers don't handle them correctly. (Sigh.)
1254                   [#614198]
1255
1256         * Changed SoupCookieJarSqlite to actually erase deleted
1257           cookies from the database. [#615711, Lukasz Slachciak]
1258
1259         * Fixed SoupLogger to be more robust against getting passed
1260           bad data by the session. [#611663]
1261
1262         * Fixed SoupAuthDomain to ignore paths when doing proxy auth
1263
1264         * Fixed a g_warning when hovering over a javascript link in
1265           WebKit. [#613442, Xan Lopez]
1266
1267 Changes in libsoup from 2.29.91 to 2.30.0:
1268
1269         * Fixed a crash in the whitespace-stripping code in
1270           soup_uri_new() [#612644, "arnaud.lb"]
1271
1272         * Update content-sniffing algorithm to match Chrome and the
1273           soon-to-be-updated sniffing spec. [#611502, Gustavo Noronha
1274           Silva]
1275
1276         * We now handle "Content-Encoding: x-gzip" as well as "gzip"
1277           (even though "x-gzip" has been deprecated for more than 10
1278           years). [#611476]
1279
1280         * Fixed leaks found by valgrind
1281
1282         * Make the "make check" programs only bind to 127.0.0.1, not
1283           any public network interfaces. [#609489, Saleem Absulrasool]
1284
1285         * Add a test to sniffing-test to make sure that Content-Type
1286           parameters are preserved correctly. [Gustavo Noronha Silva]
1287
1288 Changes in libsoup from 2.29.90 to 2.29.91:
1289
1290         * Added SOUP_SESSION_SSL_STRICT and
1291           SOUP_MESSAGE_CERTIFICATE_TRUSTED, to allow callers to
1292           determine if an https response comes from a server with a
1293           recognized/valid or unrecognized/invalid certificate.
1294           [#610374, Gustavo Noronha Silva]
1295
1296         * Fixed handling of certain badly-formatted URIs [#590524]
1297
1298 Changes in libsoup from 2.29.6 to 2.29.90:
1299
1300         * Added soup_cookie_jar_set_accept_policy() and related API
1301           for implementing cookie acceptance policies. [#608353, Xan
1302           Lopez]
1303
1304         * Fixed the "request-read" signal in SoupServer to actually be
1305           emitted.
1306
1307 Changes in libsoup from 2.29.5 to 2.29.6:
1308
1309         * Fixed SoupContentDecoder to ignore trailing junk after the
1310           encoded message body (as other browsers do), rather than
1311           getting stuck in an infinite loop. [#606352]
1312
1313         * Fixed an invalid read in soup_cookie_applies_to_uri()
1314           [#607024, pointed out by Xan]
1315
1316         * Fixed linking on OS X [#606959]
1317
1318         * Removed a harmless warning in SoupServer. [#606645]
1319
1320 Changes in libsoup from 2.29.3 to 2.29.5:
1321
1322         * Added SoupContentDecoder, providing support for
1323           Content-Encoding: gzip for WebKitGTK. [#522772]
1324
1325         * Added "accept-language" and "accept-language-auto"
1326           properties to SoupSession, to support the Accept-Language
1327           header. [#597004, Mario Sanchez Prada]
1328
1329         * Fixed a bug in SoupPasswordManagerGNOME that could cause
1330           crashes if you typed the wrong password once and then tried
1331           again. [#595554, debugged by Gustavo Noronha Silva]
1332
1333         * Fixed a crash in SoupAuthDigest if the server claims support
1334           for both qop=auth and qop=auth-int. (This was not noticed
1335           sooner because no one actually supports qop=auth-int, and
1336           the server in question here was probably confused. :)
1337
1338         * Updated cookie parsing/output to more closely match
1339           draft-ietf-httpstate-cookie-00. [Also fixes #603496 (WebKit
1340           unit test), and #604794 (hang parsing malformed Set-Cookie
1341           header)]
1342
1343         * Fixed https-via-proxy to not hang if there is an error
1344           communicating with the proxy immediately after the TLS
1345           negotiation. [#587528]
1346
1347         * Fixed a bug that broke gobject-introspection's introspection
1348           of libsoup. [#603696, Vincent Untz]
1349
1350         * Handle spurious CR/LFs between responses. [#602863,
1351           Alexander V. Butenko]
1352
1353         * Fixed soup-message-client-io to not erroneously include URI
1354           fragments on the Request-Line when sending via a proxy.
1355           [Related to WebKit bug #28687]
1356
1357         * Fixed Digest authentication against certain (buggy?)
1358           clients/servers that require you to use quotes in exactly the
1359           same places where the spec uses them. [#582219]
1360
1361         * Fix ugly gtype-related hack to work with the latest unstable
1362           glib. [Benjamin Otte]
1363
1364 Changes in libsoup from 2.28.1 to 2.29.3:
1365
1366         * Fixed a crash in SoupCookieJarSqlite when using cookie
1367           databases not created by libsoup (eg, upgraded epiphany
1368           installations). [Patch from Emilio Pozuelo Monfort]
1369
1370         * Fixed SoupCookieJar to handle non-http URIs properly (so
1371           that, eg, JavaScript bookmarklets that try to set/read
1372           cookies won't cause crashes). [#602498]
1373
1374         * HEAD requests that receive a "303 See Other" response will
1375           now do a HEAD, not a GET, on the redirected-to resource.
1376           Fixes gvfs access to some sites, including certain
1377           youtube.com URIs. [#600830]
1378
1379         * Fixed a g_warning that would always trigger in the
1380           server-side SoupCookie code. [#602389]
1381
1382         * Fixed the server-side SoupMultipart code to be able to parse
1383           multiparts containing binary attachments, rather than
1384           rejecting them as malformed. [#601640]
1385
1386         * Fixed the Request-Line format in the https-over-proxy case.
1387           Among other things, this fixes access to bugzilla.gnome.org
1388           from WebKitGTK-based browsers. [#598277, #600826]
1389
1390         * Fixed a leak in SoupSession if a message was cancelled while
1391           the initial socket connection was in progress. [#596074,
1392           debugged by Arnout Vandecappelle]
1393
1394         * Fixed server-side parsing of Digest auth. [#602898, Chris
1395           Head]
1396
1397         * Fixed WinSock initialization on Windows. [#600689, Tor
1398           Lillqvist]
1399
1400         * Fixed a sporadic crash in the SSL code on Windows. [#600748,
1401           Tor Lillqvist]
1402
1403         * Fixed handling of https connections with timeouts on
1404           Windows. [#600749, Tor Lillqvist]
1405
1406         * Added soup_session_prepare_for_uri(), to allow DNS
1407           prefetching for faster browsing. [#598948, José Millán Soto]
1408
1409         * SoupSession now avoids redundant DNS lookups again when
1410           first connecting to a new site, resulting in (probably
1411           imperceptibly) faster loads.
1412
1413         * Added some debugging APIs to SoupConnection and SoupSession
1414           for use by, eg, epiphany's soup-fly extension. [#589163,
1415           José Millán Soto]
1416
1417 Changes in libsoup from 2.28.0 to 2.28.1:
1418
1419         * libsoup will now attempt to make multiple connections to a
1420           server at once when there are multiple messages queued to
1421           that server. The previous behavior (only allowing a single
1422           pending connection to each server) resulted in slow load
1423           times on pages with lots of subresources (images, css, js,
1424           etc) on servers that disallow persistent connections.
1425           [#594768]
1426
1427         * There should now be fewer (no?) "Connection terminated
1428           unexpectedly" errors in WebKitGTK.
1429
1430         * Fixed a crash in SoupCookieJarSqlite [#596859, patch from
1431           Alexander Sack].
1432
1433         * Fixed soup_address_get_physical() and address-to-name
1434           resolution of SoupAddress [patch from Enrico Tröger].
1435
1436         * Fixed a bug in SoupContentSniffer that could cause false
1437           negatives [#597545, patch from Alejandro Castro].
1438
1439         * Fixed the configure error if you have gnutls-devel but not
1440           gcrypt-devel installed [#587709].
1441
1442 Changes in libsoup from 2.27.92 to 2.28.0:
1443
1444         * Fixed a handful of leaks found with valgrind, including a
1445           large one in SoupContentSniffer [WebKit bug 28148].
1446
1447         * Changed the behavior of SoupCookieJarSqlite to improve
1448           performance. [#584522, patch from Gustavo Noronha Silva]
1449
1450         * Fixed a crash in SoupSocket that affected gupnp. [#594951,
1451           patch from Olivier Crête]
1452
1453         * Fixed the type of the SOUP_METHOD_* and SOUP_URI_SCHEME_*
1454           macros to be const char * rather than gpointer. [#594508]
1455
1456 Changes in libsoup from 2.27.91 to 2.27.92:
1457
1458         * Removed SoupPasswordManager from the public API until its
1459           problems can be addressed. Although it is still present, you
1460           need to #define a special symbol for it to be visible in the
1461           header files; see #594377 for details.
1462
1463         * Fixed a bug where empty query components were dropped from
1464           URIs. [#594405]
1465
1466         * Fixed "make check" to work (but warn) when building with
1467           --disable-ssl.
1468
1469         * Fixed some small documentation bugs pointed out by Dominik
1470           Bylica and Lucian Langa.
1471
1472 Changes in libsoup from 2.27.90 to 2.27.91:
1473
1474         * Added SoupPasswordManager, an interface for managing
1475           persistent password storage, and SoupPasswordManagerGNOME
1476           (in libsoup-gnome), which implements it using gnome-keyring.
1477           tests/get.c provides a minimal example of how to use it.
1478
1479         * libsoup should now notice when the server closes a
1480           persistent connection, and close its side of the connection
1481           sooner. This should hopefully fix the spurious "Connection
1482           terminated unexpectedly" errors in WebKitGTK. [#578990]
1483
1484         * Fixed some problems with connection management in
1485           SoupSession that could cause a session to eventually "stall"
1486           and be unable to process new requests. [#592084]
1487
1488         * Fixed an infinite loop that caused 100% CPU usage if the
1489           network went down at exactly the right time while there were
1490           unsent messages in the queue. [#592492]
1491
1492         * Fixed a crash in SoupLogger. [#591857]
1493
1494         * Fixed the definition of soup_message_is_keepalive() for
1495           HTTP/1.0 messages, to fix a problem introduced in 2.27.90
1496           where some messages would load completely but never emit
1497           "finished".
1498
1499         * Fixed a crash in SoupServer introduced in 2.27.90 when
1500           processing a request with no "Host" header.
1501
1502 Changes in libsoup from 2.27.5 to 2.27.90:
1503
1504         * libsoup now uses glib's GResolver rather than its own DNS
1505           code. For 2.27.90, the only visible change should be that
1506           internationalized domain names are now supported. [#548287]
1507
1508         * Added soup_message_disable_feature(), which allows you to
1509           disable particular features (eg, cookies, proxy,
1510           content-sniffing, etc) on a per-message basis. [#574773]
1511
1512         * It is now possible to implement "OPTIONS *" in a SoupServer;
1513           you must explicitly register a handler for "*" in order to
1514           do this. [#590751]
1515
1516         * Ignore Content-Length on EOF-terminated responses, to match
1517           other browsers and therefore cope with broken servers that
1518           send the wrong length. [Patch from Benjamin Otte.]
1519
1520         * Fixed the status code when trying to fetch an https URI with
1521           a non-gnutls build of libsoup. [#590464]
1522
1523         * Fixed strict-aliasing warnings introduced in 2.27.4
1524           [#588771]
1525
1526         * Fixed some warnings noted by fortify [#591226] and -Wextra.
1527
1528         * libsoup now uses automake 1.11's silent-rules support by
1529           default (if you are building with automake 1.11). Use
1530           "./configure --disable-silent-rules" or "make V=1" to
1531           disable.
1532
1533 Changes in libsoup from 2.27.4 to 2.27.5:
1534
1535         * Fixed a crash when a web server redirected a request to a
1536           non-http URI (eg, "about:blank"). [#528882]
1537
1538         * Fixed a hang when trying to create an attachment on certain
1539           bugzilla installations from epiphany. [#584645]
1540
1541         * Fixed verification of V1 TLS certificates [#589323, Patrick
1542           Ohly]
1543
1544         * Fixed compile problems on Windows (in the ssl code), and on
1545           Linux (when the most recent version of gtk-doc was
1546           installed).
1547
1548 Changes in libsoup from 2.27.2 to 2.27.4:
1549
1550         * Added SoupContentSniffer and the "content-sniffed" signal on
1551           SoupMessage, to do Content-Type sniffing per the HTML5 /
1552           draft-abarth-mime-sniff algorithm. [#572589, Gustavo Noronha
1553           Silva]
1554
1555         * Updated the earlier SoupSession timeout fixes ([#574414],
1556           [#578928]) so that async connect() also times out [#588177,
1557           Mark Nauwelaerts] and SSL works on Windows again [#587910,
1558           Fridrich Strba].
1559
1560         * Fixed the behavior on a 301 response to a POST to match
1561           real-world usage rather than what the spec says. (We were
1562           doing the right thing on 302 and 303, but had missed 301.)
1563           [#586692]
1564
1565         * Changed configure so that if GNUTLS isn't found then it
1566           errors out, rather than silently building an SSL-less
1567           libsoup. Configure with --disable-ssl if you actually don't
1568           want SSL. [#584955]
1569
1570 Changes in libsoup from 2.27.1 to 2.27.2:
1571
1572         * Replaced SoupProxyResolver with SoupProxyURIResolver, which
1573           is a bit simpler, works with non-HTTP URIs (and so could be
1574           used by gvfsd-ftp) and supports proxy auth correctly.
1575           [#580051]
1576
1577         * Fixed SoupSession to not try to resolve http server
1578           hostnames when it's just going to pass the hostname off to a
1579           proxy server anyway. This fixes things on hosts that use a
1580           proxy for everything and have no working DNS config
1581           [#577532] and also makes WebKitGTK behave more like other
1582           browsers in terms of per-host connection limits (we now
1583           limit connections based on hostname rather than on IP
1584           address).
1585
1586           We also no longer set the AI_CANONNAME flag when calling
1587           getaddrinfo(), which saves us a little bit of unnecessary
1588           network traffic. [Pointed out by Christophe Gillette on the
1589           mailing list.]
1590
1591         * libsoup now always uses SSL 3.0 (not TLS 1.0 or 1.1) for
1592           https URIs, to work around problems with older servers that
1593           don't implement the (apparently quite confusing) TLS/SSL
1594           compatibility rules correctly. Makes a bunch of
1595           previously-inaccessible sites now accessible in WebKitGTK
1596           (notably PayPal) [#581342]. Will eventually be revisited, to
1597           first try TLS 1.1 and fall back if that fails.
1598
1599         * Fixed Digest auth to (recent) Apple CalDAV servers.
1600           [#583091]
1601
1602         * Changed the way the SoupSession "authenticate" signal works
1603           a bit. We now never emit "authenticate" before sending a
1604           request, even if we know for sure that it's going to fail,
1605           because this makes the semantics of the authenticate handler
1606           too complicated (and because we'll only get into this
1607           situation if a previous call to the authenticate handler
1608           failed anyway). Fixes problems in WebKitGTK when you cancel
1609           a password dialog, and then later try to load the page
1610           again. [#583462, mostly figured out by Gustavo Noronha
1611           Silva].
1612
1613         * Fixed a bug in the CRLF-vs-LF patch (#571283) that caused
1614           libsoup to fail to parse the response headers (returning
1615           SOUP_STATUS_MALFORMED) if a CR LF got split across two
1616           read()s. [#582002]
1617
1618         * Allow using PUT in soup_form_request_for_data(), to work
1619           with certain broken web APIs. [#581860, Ross Burton]. Also,
1620           fixed a problem with empty POST bodies that made some parts
1621           of gmail not work in WebKitGTK.
1622
1623         * Applied some minor bugfixes to configure.in and autogen.sh
1624           [#583911, #583942]. Fixed configure.in to not use gcc
1625           warning options that the installed version of gcc doesn't
1626           recognize [#578851].
1627
1628         * Added G_GNUC_NULL_TERMINATED and G_GNUC_PRINTF to a few
1629           methods that should have had them. [#581754, Ross Burton]
1630
1631 Changes in libsoup from 2.26.1 to 2.27.1:
1632
1633         * SOUP_SESSION_TIMEOUT now works properly with
1634           SoupSessionAsync [#574414] and SSL [#578928]. Added
1635           tests/timeout-test to test this.
1636
1637         * SoupDate fixes:
1638
1639                 * soup_date_to_string() now handles SOUP_DATE_RFC2822
1640                   [#579055, Enrico Tröger]
1641
1642                 * soup_date_new_from_string() now accepts 24:00 as a
1643                   time in ISO8601 timestamps
1644
1645                 * soup_date_to_string() now coerces the date to UTC
1646                   for HTTP and cookie dates, and outputs the UTC
1647                   correct offset for the other date types.
1648
1649                 * Added regression tests to tests/date
1650
1651         * soup_headers_parse() now completely ignores
1652           syntactically-incorrect headers, rather than passing them to
1653           soup_message_headers_append() and causing a g_warning.
1654           soup_message_headers_append() now also rejects 0-length
1655           header names. Updated tests/header-parsing to check this.
1656           [#579318]
1657
1658         * Fix a crash when cancelling a message from a "restarted"
1659           handler, and updated a regression test to notice the
1660           underlying cause. [#580193]
1661
1662         * Completing the API updates for #576760 from 2.26.1,
1663           soup_message_headers_get() is now marked deprecated in favor
1664           of soup_message_headers_get_one() and _get_list().
1665
1666 Changes in libsoup from 2.26.0 to 2.26.1:
1667
1668         * libsoup uses libproxy for PAC and WPAD proxy resolution
1669           again. However, it arranges to do all communication with
1670           GConf itself, to ensure that libproxy doesn't call it in
1671           non-thread-safe ways. [#571527] Also, fixed a bug in
1672           SoupSessionSync when proxy resolution failed. [#574957,
1673           patch from Milan Crha].
1674
1675           (Also fixed three SoupProxyResolverGNOME bugs since the
1676           2.26.0.9 preview release. [#578746, #578809])
1677
1678         * SoupURI now handles unencoded spaces in URIs. In particular,
1679           redirects via Location headers with spaces in them now work.
1680           [#566530]
1681
1682         * libsoup can now deal with servers (and clients) that
1683           erroneously use LF LF instead of CR LF CR LF to separate
1684           the headers and body. [#571283]
1685
1686         * Added soup_message_headers_get_one() and
1687           soup_message_headers_get_list(), which will eventually
1688           deprecate soup_message_headers_get(). This lets applications
1689           deal correctly with implementations that erroneously send
1690           multiple copies of single-valued headers. [#576760]
1691
1692         * In particular, soup_message_headers_get_content_type() now
1693           ignores duplicate Content-Type headers [#576760] and also
1694           ignores syntactically-incorrect Content-Type headers.
1695           [#577630]
1696
1697         * SoupCookieJar can now store multiple cookies with the same
1698           domain and name, but different paths. [#577360]
1699
1700         * Abnormal SSL connection closes are now treated as ordinary
1701           EOFs, for compatibility with certain sites. [#577386]
1702
1703         * soup_header_g_string_append_param() now allows NULL values.
1704           [#577728]
1705
1706         * soup_message_headers_append() now rejects header names and
1707           values with newlines or certain other illegal data in them,
1708           rather than generating syntactically invalid headers.
1709
1710         * Fixed a small bug in soup_date_new_from_string's ISO 8601
1711           handling [qv #578369 for g_time_val_from_iso8601].
1712
1713         * The regression tests now work correctly on machines where
1714           "localhost" resolves to "::1" instead of "127.0.0.1".
1715           [#576583, patch from Andreas Rottmann]
1716
1717         * Fixed warnings when a message has a network problem when
1718           many other messages are queued. [#578809]
1719
1720         * Miscellaneous documentation fixes/clarifications.
1721
1722 Changes in libsoup from 2.25.91 to 2.26.0:
1723
1724         * Temporarily disable libproxy support to work around a bug in
1725           its gnome plugin that causes gvfsd-http (and probably
1726           eventually other apps) to crash. [#571527]. For now,
1727           SoupProxyResolverGNOME uses only GConf. To be fixed in
1728           2.26.1
1729
1730         * Fixed a bug that showed up in WebKit, where if many messages
1731           were queued all at once to a server that doesn't support
1732           persistent connections, some of the requests will get lost.
1733           #574365, reported by Xan Lopez.
1734
1735         * Fixed SoupServer to support using SOUP_ENCODING_EOF, so you
1736           can stream responses of unknown length to HTTP/1.0 clients.
1737           [#572153]. Added a regression test for this, and for chunked
1738           and Content-Length-based streaming.
1739
1740         * Fixed several bugs that prevented SoupCookieJarSqlite from
1741           working. [#572409, patch from Xan Lopez]
1742
1743         * Added G_{BEGIN,END}_DECLS guards to public headers that were
1744           missing it. (Xan Lopez)
1745
1746         * Misc gtk-doc improvements
1747
1748 Changes in libsoup from 2.25.5 to 2.25.91:
1749
1750         * Fixed a crash in SoupProxyResolverGNOME when the proxy
1751           requires authentication. (This does not make proxy
1752           authentication *work* yet, it just makes it not crash.)
1753
1754         * Updated documentation
1755
1756 Changes in libsoup from 2.25.4 to 2.25.5:
1757
1758         * SoupProxyResolverGConf (which was incomplete) is gone, and
1759           libsoup-gnome now requires libproxy, which is now officially
1760           an external dependency of GNOME.
1761
1762         * Fixed a bug in SoupCookieJar that was making it send
1763           "Cookie: (null)" when it had no cookies for a site, which
1764           confused some web servers (WebKit bug 23240).
1765
1766         * Fixed a bug with using SOUP_MEMORY_TEMPORARY buffers and
1767           soup_message_body_set_accumulate(FALSE). (Part of WebKit bug
1768           18343, noticed by Gustavo Noronha Silva.)
1769
1770         * Fixed the build with non-gcc compilers
1771
1772 Changes in libsoup from 2.25.3 to 2.25.4:
1773
1774         * Added soup_session_get_feature() and
1775           soup_session_get_features(), to query the features currently
1776           available in a session (which is needed by the patch in
1777           https://bugs.webkit.org/show_bug.cgi?id=22624)
1778
1779 Changes in libsoup from 2.25.2 to 2.25.3:
1780
1781         * Fixed a crash when using both cookies and a proxy. [#562191,
1782           Mark Lee]
1783
1784         * Fixed soup_form_decode() to correctly handle forms with
1785           URI-encoded parameter names [#563302, Evan Nemerson] and
1786           added a regression test.
1787
1788         * Fixed a crash in SoupProxyResolverGConf. [#563145]
1789
1790 Changes in libsoup from 2.25.1 to 2.25.2:
1791
1792         * Fixed client behavior when presented with multiple auth
1793           types to choose the *strongest* auth type (eg, Digest)
1794           rather than the *weakest* one [#562339, Pontus Oldberg].
1795           Added a regression test for this.
1796
1797         * Moved libsoup-gnome headers to a different directory to make
1798           it easier to split libsoup and libsoup-gnome into separate
1799           packages, and to ensure that things that only want to be
1800           looking at plain libsoup headers (like gir-repository) don't
1801           accidentally see the libsoup-gnome ones.
1802
1803         * Some minor doc fixes
1804
1805         * Fixed libsoup-gnome linking with --as-needed. [#559342]
1806
1807 Changes in libsoup from 2.24.1 to 2.25.1:
1808
1809         libsoup 2.25.1 introduces a new library, libsoup-gnome, which
1810         will be used for features which are important to GNOME apps,
1811         but which require GNOME-specific libraries that non-GNOME apps
1812         may not want to add dependencies on.
1813
1814         In 2.25.1, libsoup-gnome contains:
1815
1816             * SOUP_TYPE_PROXY_RESOLVER_GNOME, a SoupSessionFeature
1817               type that can be added to a SoupSession to provide
1818               automatic proxy handling via the GConf proxy keys. (See
1819               below) The default implementation uses libproxy, which
1820               also handles WPAD, PAC, etc, but if libproxy is not
1821               available it will use GConf directly, supporting only
1822               the basic HTTP proxy functionality.
1823
1824             * SoupCookieJarSqlite, a SoupSessionFeature that handles
1825               cookies and stores them in a Firefox 3-compatible sqlite
1826               file. (This is not actually a "GNOME-specific" feature,
1827               but I didn't want to make libsoup itself depend on
1828               sqlite, and I didn't want to make the dependency
1829               optional. This might change before 2.26.)
1830
1831             * SOUP_TYPE_GNOME_FEATURES_2_26: a SoupSessionFeature type
1832               that can be added to a SoupSession to add all
1833               GNOME-integration features that are available for 2.26;
1834               as of 2.25.1, this is just the GNOME proxy resolver, but
1835               by 2.26.0 it may also include gnome-keyring support and
1836               possibly other features.
1837
1838         Applications/libraries that are currently doing GConf proxy
1839         lookup by hand can be updated as follows:
1840
1841             * Remove all of the existing code that listens to the
1842               GConf keys and sets SOUP_SESSION_PROXY_URI
1843
1844             * Change the configure check to require
1845               "libsoup-gnome-2.4 >= 2.25.1" instead of "libsoup-2.4"
1846
1847             * #include <libsoup/soup-gnome.h>
1848
1849             * After creating your SoupSession, do:
1850
1851                   soup_session_add_feature_by_type (session, SOUP_TYPE_PROXY_RESOLVER_GNOME);
1852
1853               (Or alternatively, use SOUP_SESSION_ADD_FEATURE_BY_TYPE
1854               with soup_session_async_new_with_options() or
1855               soup_session_sync_new_with_options().)
1856
1857
1858         Other new features and bug fixes in 2.25.1 include:
1859
1860         * SoupCookieJarText, like SoupCookieJarSqlite, but using the
1861           old-style cookies.txt format, and in the base libsoup rather
1862           than libsoup-gnome.
1863
1864         * Various bugfixes to SoupCookie and SoupCookieJar to fix the
1865           problems with cookies not working on certain sites.
1866
1867         * The new SoupMultipart type provides support for multipart
1868           MIME bodies, and soup-form now includes several methods for
1869           generating and parsing multipart form data and file uploads.
1870
1871         * SoupMessageHeaders now has methods for easy handling of the
1872           Content-Type, Content-Disposition, Range, and Content-Range
1873           headers. The Content-Disposition handling recognizes
1874           RFC2231-encoded UTF-8 filenames.
1875
1876         * SoupServer now automatically handles partial GET requests;
1877           if your server returns SOUP_STATUS_OK in response to a
1878           partial GET, libsoup will automatically convert it to a
1879           SOUP_STATUS_PARTIAL_CONTENT response with only the requested
1880           portions.
1881
1882         Thanks to Xan Lopez and Diego Escalante Urrelo for their work
1883         on SoupCookie, SoupCookieJar, SoupCookieJarText, and
1884         SoupCookieJarSqlite.
1885
1886 Changes in libsoup from 2.24.0.1 to 2.24.1:
1887
1888         * Fixed a crash when unreffing the session from a
1889           soup_session_queue_message() callback [#533473], and added
1890           regression test. In particular, this fixes a crash in
1891           seahorse when trying to connect to a non-responsive
1892           keyserver.
1893
1894         * Fixed an infinite loop when giving a bad password to a site
1895           that uses non-standard capitalization in the
1896           WWW-Authenticate header (eg, gmail.com) [#536285].
1897
1898         * Fixed a leak in SoupSessionAsync when using a non-default
1899           GMainContext. [addendum to #498509, Arnout Vandecappelle]
1900           Added additional code to the regression tests to make sure
1901           sessions and servers do not get leaked.
1902
1903         * Fixed a leak in the XML-RPC code
1904
1905         * Compile fixes for "gcc -pedantic" [#553976, Sander Dijkhuis]
1906           and -DG_DISABLE_DEPRECATED / -DG_DISABLE_SINGLE_INCLUDES
1907           [#557072, Cosimo Cecchi]
1908
1909         * Patched xmlrpc-test to accept the incorrect response to
1910           test_echo() that php-xmlrpc gives when it's built against
1911           libxml2 >= 2.7.1 (qv http://bugs.php.net/45996), so that
1912           I can "make distcheck"...
1913
1914         * Updated generated documentation
1915
1916 Changes in libsoup from 2.23.92 to 2.24.0.1:
1917
1918         * Reverted part of the fix for #528882, which caused the DAAP
1919           plugin in rhythmbox to crash. [#553466]
1920
1921 Changes in libsoup from 2.23.91 to 2.23.92:
1922
1923         * Fixed the handling of a 302 response to a HEAD request,
1924           which should NOT be treated like a 303 response. [#551190,
1925           Jonathan Matthew]
1926
1927 Changes in libsoup from 2.23.6 to 2.23.91:
1928
1929         * Fixed a crash in gvfs [#528882], though there is still an
1930           unknown bug there. As part of this fix, libsoup will now
1931           return an error if you try to do an operation on a non-HTTP
1932           URI. (Previously it was just treating any URI scheme except
1933           "https" as HTTP.)
1934
1935         * Added soup_date_to_timeval() for gvfs. [#549006, patch from
1936           Bastien Nocera]
1937
1938 Changes in libsoup from 2.23.1 to 2.23.6:
1939
1940         * Fixed use of g_idle_add() so that heavy I/O won't end up
1941           blocking libsoup callbacks. [#536676, Benjamin Otte]
1942
1943         * Allow the caller to override the Host header. [#539803, Marc
1944           Maurer]
1945
1946         * Properly handle responses larger than 4G. [#539861, Peter
1947           Christensen]
1948
1949         * Fixed the build when using certain LDFLAGS [#541506, Götz
1950           Waschk]
1951
1952         * Fixed a small bug in Digest auth handling. [#544681, Mads
1953           Chr. Olesen]
1954
1955         * Fixed multiple Windows bugs [Tor Lillqvist]
1956
1957 Changes in libsoup from 2.4.1 to 2.23.1:
1958
1959         * This is the first unstable release leading up to GNOME 2.24.
1960           Bumped the libsoup version number up to 2.23.x to match the
1961           GNOME version; note that the API version is still "2.4",
1962           meaning in particular that you still call it "libsoup-2.4"
1963           when using pkg-config.
1964
1965         * Added SoupSessionFeature, an interface type that will be
1966           used for several new features. Ported SoupLogger and
1967           SoupAuthManager to use it.
1968
1969         * Added SoupCookie and SoupCookieJar. This API is already
1970           being used in Epiphany, via WebKit, but it is not yet
1971           complete.
1972
1973         * Fixed GnuTLS support on Win32. [#528752, Marc Maurer]
1974
1975 Changes in libsoup from 2.4.0 to 2.4.1:
1976
1977         * Fixed SoupMessage to not downgrade to HTTP/1.0 for the
1978           second attempt when it receives an HTTP/1.0 redirect or 401.
1979           [#521848, Tommu Komulainen]
1980
1981         * Fixed Host: header syntax when the host is an IPv6 address
1982           literal.
1983
1984         * Fixed SoupSession to not emit "authenticate" multiple times
1985           for messages that have been requeued. [#522601, Tommi
1986           Komulainen]. Also added two new signals to SoupSession,
1987           request-queued and request-unqueued, to help simplify
1988           certain session-helpers and avoid bugs like this in the
1989           future.
1990
1991         * Fixed soup_server_pause_message() to actually work (rather
1992           than *un*pausing the message).
1993
1994         * Added a property SOUP_SESSION_IDLE_TIMEOUT that can be used
1995           to set a timeout after which idle connections will
1996           automatically be closed. [#518214, Jorn Baayen]
1997
1998         * Implemented RFC 2069-style Digest auth, and fixed SoupAuth
1999           to compare auth scheme names case-insensitively, to fix
2000           authentication against Apple's calendar server. [#498484]
2001
2002         * Fixed a crash in SoupAuthDomainDigest if the client provided
2003           an unrecognized username. [pointed out by Curtis Magyar on
2004           IRC]
2005
2006         * Fixed a few SoupDate bugs. (In particular, it was outputting
2007           the wrong day of the week when stringifying dates.)
2008
2009         * Improved the cleanup of idle connections, to fix slow load
2010           times with the libsoup backend of WebKit.
2011
2012         * Added a new SoupMessage signal "wrote-body-data" that can be
2013           used for progress information when sending a large request
2014           body. Also allow providing the request body in multiple
2015           chunks even when using Content-Length encoding. [#525101,
2016           Christian Kellner]
2017
2018         * libsoup now ignores SIGPIPE globally, instead of
2019           un-thread-safe-ly ignoring it only around network writes. In
2020           particular, this means it is ignored when the SSL code needs
2021           to unexpectedly do a write when we asked it to do a read.
2022           [#524397, Curtis Magyar]
2023
2024         * The discard-body-chunks-once-they're-no-longer-needed
2025           behavior, confusingly called SOUP_MESSAGE_OVERWRITE_CHUNKS,
2026           is now controlled by a SoupMessageBody method
2027           (soup_message_body_set_accumulate()), and can be applied to
2028           either the request body or the response body.
2029           (OVERWRITE_CHUNKS is still available for backward
2030           compatibility.) [#522146, Christian Kellner]
2031
2032         * The DNS cache no longer caches "no such host" results, since
2033           some name servers lie to clients outside their firewall,
2034           which could then cause problems for laptops moved between
2035           networks. [#523269, Jörgen Scheibengruber]
2036
2037         * Added some new regression tests, fixed some small bugs in
2038           the existing ones.
2039
2040 Changes in libsoup from 2.3.4 to 2.4.0:
2041
2042         * Fixed a small memory leak in SoupSession. [#518798, Wouter
2043           Cloetens]
2044
2045         * Minor fixes to redirect behavior; PROPFINDs can now be
2046           automatically redirected (pointed out by Christian Kellner),
2047           and 302 is treated like 307, not 303. Also fixed to make
2048           sure that redirect-test actually gets run by "make check".
2049
2050         * The SoupSocket I/O methods now set nread/nwrote even on
2051           error. [Benjamin Otte]
2052
2053 Changes in libsoup from 2.3.2 to 2.3.4:
2054
2055         * The documentation should be accessible from devhelp again
2056           [#518384, Mart Raudsepp]. (Also fixed another
2057           documentation-generation bug that affected builds from svn,
2058           but not the 2.3.2 tarball for some reason. [#518317,
2059           Benjamin Otte].)
2060
2061         * Fixed dependencies in libsoup-2.4.pc file [#517631,
2062           Sebastian Dröge]
2063
2064 Changes in libsoup from 2.3.0.1 to 2.3.2:
2065
2066         API changes / Behavior changes:
2067
2068         * soup_server_add_auth_domain() now refs the auth domain when
2069           adding it. (soup_server_remove_auth_domain() already
2070           unreffed it.) This means existing applications using
2071           SoupAuthDomain will now have a small memory leak. Those
2072           applications should update their libsoup-2.4 requirement to
2073           ">= 2.3.2" at some point before the final GNOME 2.22.0
2074           release, and then fix the code to unref the auth domain
2075           after adding it to the server.
2076
2077         * SoupSession's automatic redirect-handling behavior now obeys
2078           RFC 2616 more closely. In particular, status codes 300 and
2079           304 are no longer mistakenly considered redirects; POSTs
2080           that receive 303 are now redirected into GETs; and POSTs
2081           that receive 301, 302, or 307 are now not redirected.
2082
2083           Applications that were using the SOUP_MESSAGE_NO_REDIRECT
2084           flag to prevent libsoup from redirecting POSTs incorrectly
2085           before should now be able to remove that if they depend on
2086           libsoup-2.4 >= 2.3.2.
2087
2088         API additions:
2089
2090         * Added a SOUP_SESSION_USER_AGENT property to SoupSession, and
2091           SOUP_SERVER_SERVER_HEADER to SoupServer, to support
2092           automatically adding "User-Agent" and "Server" headers to
2093           messages. (The default behavior is to do nothing, as
2094           before.)
2095
2096         * Added several new methods to soup-forms.h. Applications that
2097           are encoding a fixed set of form fields can now just pass
2098           them to soup_form_encode(), rather than needing to construct
2099           a GHashTable or GData list. (Likewise, the new
2100           soup_uri_set_query_from_fields() behaves similarly for
2101           directly updating a URI with form data.) There are also now
2102           soup_form_request_new() and other related methods, to
2103           directly create a GET or POST SoupMessage for submitting a
2104           form query.
2105
2106           The original soup_form_* methods have all been renamed,
2107           although #defines exist for backward compatibility.
2108
2109         * Added soup_message_set_chunk_allocator() and
2110           soup_buffer_new_with_owner(), to give applications more
2111           control over memory usage/copying when doing streaming HTTP.
2112           [Wouter Cloetens, #513810].
2113
2114         * Added several new methods to soup-value-utils.h for working
2115           with multiple array or hash table values at once:
2116           soup_value_hash_new_with_vals(),
2117           soup_value_hash_insert_vals(),
2118           soup_value_hash_lookup_vals(),
2119           soup_value_array_new_with_vals(), and
2120           soup_value_array_append_vals().
2121
2122           This helps to simplify XML-RPC calls that send or receive
2123           structs or arrays.
2124
2125         * Added soup_date_to_time_t().
2126
2127         * Added SoupMessageHeadersIterator, an iterator type for
2128           SoupMessageHeaders that can be used instead of
2129           soup_message_headers_foreach().
2130
2131         Bug fixes:
2132
2133         * Fixed a crash-when-idle in evolution-exchange [#437835] and
2134           rhythmbox [#506552].
2135
2136         * Added the API version to the gtk-doc installation dir, to
2137           prevent parallel-installation problems with libsoup 2.2 and
2138           2.4. [#512810, Daniel Gryniewicz].
2139
2140         * Fixed tests/query-test to compile correctly on Solaris.
2141           [#513602, patch from Jeff Cai]
2142
2143         * Fixed some other minor HTTP conformance issues.
2144
2145         Python bindings:
2146
2147         * Although not present in the release tarball, there are now
2148           experimental python bindings for libsoup in GNOME subversion
2149           (in the python/ subdirectory of libsoup trunk). These are
2150           not yet stable (and are not built by default or installed
2151           even when building from svn), but comments on them are
2152           welcome at libsoup-list@gnome.org
2153
2154 Changes in libsoup from the 2.2 series to 2.3.0.1:
2155
2156         libsoup 2.3.0 is the first beta release of the libsoup 2.4
2157         series. It is an API break from the earlier 2.2 series that
2158         fixes various bugs and API warts and lays the groundwork for
2159         language bindings and various new features in upcoming
2160         releases.
2161
2162         (2.3.0.1 is identical to the 2.3.0 release in terms of code,
2163         but includes this updated NEWS file which was accidentally
2164         left out of the 2.3.0 tarball.)
2165
2166         http://library.gnome.org/devel/libsoup/unstable/libsoup-porting-2.2-2.4.html
2167         goes over the API changes in detail. If you have questions not
2168         answered by the porting document, please send mail to
2169         libsoup-list@gnome.org.
2170
2171         Specific user-reported bugs fixed in this release:
2172
2173         * SoupURI now correctly handles URIs with complex encoded
2174           queries [#266516, Jean-Yves Lefort]
2175
2176         * It is now possible for a SoupServer to use Digest auth
2177           without needing to have the cleartext password available.
2178           [#347108, Anas Nashif]
2179
2180         * Digest authentication now properly handles "stale=true" and
2181           "nextnonce=..." [#471380, Jari Urpalainen]
2182
2183         * SoupServer is now subclassible [#491653, Mathias Hasselmann]
2184
2185         * soup_server_run_async and soup_server_quit no longer ref and
2186           unref the server, as that doesn't match ordinary GObject
2187           conventions [#494128, Mathias Hasselmann]
2188
2189         * The test programs no longer use a symbol name that conflicts
2190           with Cygwin [#501631, Cygwin Ports Maintainer]
2191
2192         * libsoup can now handle the not-quite-HTTP responses returned
2193           by Shoutcast servers [#502325, Wouter Cloetens]
2194
2195         * If you use libsoup while disconnected from the network, it
2196           no longer caches the failed DNS results [#508593, Bradley
2197           Worley]
2198
2199         Items from http://live.gnome.org/LibSoup/ToDo fixed:
2200
2201         * "Expect: 100-continue" processing now works correctly on
2202           both client and server.
2203
2204         * SoupSessions are no longer leaked
2205
2206         * The XML-RPC API is improved. The SOAP API is gone...
2207
2208         * Added utility functions for HTML form handling
2209
2210         * Improved message header handling
2211
2212         * SoupServer now automatically adds a "Date" header
2213
2214 ==========
2215
2216 Changes in libsoup from 2.2.103 to 2.2.104:
2217
2218         * soup_message_io_pause() and soup_message_io_pause() are now
2219           allowed for client messages (and in particular, they don't
2220           mess up when called from the "got_chunk" callback).
2221           [#452280, Marco Barisione]
2222
2223         * Fixed some bugs in SOUP_SESSION_ASYNC_CONTEXT support that
2224           would cause parts of an operation to run in the default
2225           context rather than the session's context. Also fixed some
2226           leaks and added a regression test. [#498509, Wouter
2227           Cloetens]
2228
2229         * There is a new test/sample program, tests/pull-api.c,
2230           showing how to implement a pull API using SoupSessionAsync.
2231           (This depends on the fixes for #452280 and #498509, so it
2232           won't work with older versions of libsoup.)
2233
2234         * Discovered "valgrind --leak-resolution=med" and fixed some
2235           more memory leaks.
2236
2237 Changes in libsoup from 2.2.102 to 2.2.103:
2238
2239         * Fix memory corruption in SoupSessionAsync that caused
2240           rhythmbox to crash. [#484988, patch from Rob Bradford]
2241
2242         * Fix socket refcounting in SoupServer to fix warnings /
2243           possible crash. [#459896, Emanuele Aina]
2244
2245 Changes in libsoup from 2.2.101 to 2.2.102:
2246
2247         * Unbreak the build when building without SSL. Not that you
2248           should be building without SSL anyway, but... (reported by
2249           guenther).
2250
2251 Changes in libsoup from 2.2.100 to 2.2.101:
2252
2253         * Fix build on cygwin [384498]
2254
2255         * Fix SSL rehandshaking on synchronous sockets [415402, Jacob
2256           Berkman] and add a regression test for it.
2257
2258         * Fix two bugs in https tunnels over proxies that require
2259           authentication (noticed by Varadhan), and add a regression
2260           test for them.
2261
2262         * Ensure that if you queue multiple messages at once to an
2263           http server that requires authentication but that you
2264           haven't authenticated to yet, that all of the messages get
2265           properly authenticated [271540, James Willcox]. And add a
2266           regression test for it.
2267
2268         * Fix NTLM authentication, which got broken by the previous
2269           fix. [471389, Varadhan]. Add a basic NTLM regression test
2270           that doesn't really test the crypto/encoding parts, but at
2271           least makes sure that the message flow is correct.
2272
2273         * Allow trailing whitespace after HTTP version in
2274           Response-Line, for compatibility with broken servers
2275           [475169, Stephane Loeuillet]. Add that case to the
2276           header-parsing regression test.
2277
2278         * Fix crash when the session's "authenticate" handler returns
2279           a username and no password when using NTLM. [480987, Wendell
2280           MacKenzie]
2281
2282         * Use "new" glib base64 and iso8601 methods rather than
2283           duplicating them. [337010, patch from Emmanuele Bassi].
2284
2285         * Implement soup_session_queue_message() for SoupSessionSync.
2286
2287         * Add G_BEGIN_DECLS / G_END_DECLS to all headers that were
2288           missing them. [438776, patch from Jonathon Jongsma].
2289
2290         * Fix broken definition of SOUP_IS_MESSAGE_FILTER_CLASS. Noted
2291           by "cascardo" on libsoup-list.
2292
2293         * Remove documentation of non-public MD5 methods [440092,
2294           Jonathon Jongsma]. Removed a mysterious half-sentence in the
2295           SoupMessage docs [458116, Marco Barisione].
2296
2297 Changes in libsoup from 2.2.99 to 2.2.100:
2298
2299         * Fixed soup_headers_parse_status_line() so WebDAV response
2300           parsing will work again. [406997]
2301
2302         * Fixed a bug in the header-parsing regression test that
2303           caused the test to fail sometimes, even though the actual
2304           header-parsing code was fine.
2305
2306 Changes in libsoup from 2.2.98 to 2.2.99:
2307
2308         * Fixed header parsing, including a crash in SoupServer with
2309           certain malformed requests [391970].
2310
2311         * Fixed redirection to other hosts with SoupSessionAsync.
2312           [382251]
2313
2314         * Fixed a small memory leak pointed out by Chris Austin.
2315
2316 Changes in libsoup from 2.2.97 to 2.2.98:
2317
2318         * The XML-RPC code now correctly interprets <value>foo</value>
2319           as meaning the same thing as
2320           <value><string>foo</string></value>. [364490] Pointed out by
2321           Todd Kulesza.
2322
2323         * Memory leak fixes from Andrew W. Nosenko.
2324
2325         * A few symbols that should have been static before now are.
2326           [376387] Patch from Matthias Clasen.
2327
2328 Changes in libsoup from 2.2.96 to 2.2.97:
2329
2330         * Fixed SOAP and XML-RPC code to handle whitespace and
2331           comments in the XML better. (Based on a patch from Andrew W.
2332           Nosenko.)
2333
2334         * Fixed lots of typecasting/constness warnings in the code
2335           (mostly via a patch from Andrew W. Nosenko)
2336
2337         * Fixed build on Cygwin [321827]
2338
2339         * Fixed libsoup-2.2.pc fields [343340] and make it get
2340           uninstalled correctly [356809]. (Mikhail Zabaluev and
2341           Matthew Barnes)
2342
2343         * Fixed some small leaks in SoupServer pointed out by Paolo
2344           Borelli. [351500]
2345
2346 Changes in libsoup from 2.2.95.1 to 2.2.96:
2347
2348         * SoupServer now works even if you don't explicitly set an
2349           encoding for the response. (In particular, the automatic 404
2350           if you request a path with no handlers now works. Problem
2351           pointed out by Dennis Jacobfeuerborn.)
2352
2353         * WWW-Authenticate and Proxy-Authenticate responses with no
2354           realm parameter are now ignored, as per RFC 2617, fixing a
2355           crash pointed out by Nate Nielsen.
2356
2357         * Added soup_xmlrpc_message_from_string(), from Fernando
2358           Herrera [348532].
2359
2360         * simple-httpd and "get" now support HEAD
2361
2362 Changes in libsoup from 2.2.94 to 2.2.95.1:
2363
2364         * Even more fixes to XML-RPC, found by the new XML-RPC
2365           regression test. This includes some API changes that I don't
2366           feel guilty about, because the code totally didn't work at
2367           all before.
2368
2369         * Fixed a bug in soup_mktime_utc()
2370
2371         * (2.2.95 was identical to 2.2.95.1. The only difference is
2372           that the shared library version was belatedly bumped from
2373           8.2.0 to 8.3.0 to reflect the API "additions")
2374
2375 Changes in libsoup from 2.2.93 to 2.2.94:
2376
2377         * Various fixes to the XML-RPC code (which apparently had not
2378           actually ever worked before) from Brent Smith. [343973,
2379           344222, 344458]
2380
2381         * Added client and server API tutorials to the docs
2382
2383         * auth-test now uses a local Apache 2.2 install, if possible,
2384           rather than depending on files that used to be on an old
2385           Ximian web server but haven't been anywhere for a long time.
2386           [311825]
2387
2388 Changes in libsoup from 2.2.92 to 2.2.93:
2389
2390         * Fixed outgoing data corruption caused when SoupServer
2391           started writing out a response a second time after already
2392           having started once. [334469]. Also fixed 342640 and another
2393           bug caused by the workaround for 334469 in 2.2.92. Based on
2394           patches and analysis from William Jon McCann and Armin
2395           Bauer.
2396
2397         * Fixed a deadlock when changing a session's proxy URI.
2398           [309867 / bnc 174255, based on a patch by Veerapuram
2399           Varadhan].
2400
2401         * Fixed https-via-proxies in the synchronous case. [bnc 174255]
2402
2403         * Fixed a crash in evolution-exchange [342545, fix based on an
2404           analysis by Wang Xin].
2405
2406         * Fixed simple-proxy to not crash at startup. Oops. (Alex
2407           Larsson)
2408
2409 Changes in libsoup from 2.2.91 to 2.2.92:
2410
2411         * Fixed server-side digest auth to return a valid "algorithm"
2412           value and client-side to not crash if it sees an invalid one
2413           [328615].
2414
2415         * Fixed the Request-Line parsing code to not hardcode a
2416           maximum URI length (to allow very long DAAP requests from
2417           iTunes in Rhythmbox). [335040]
2418
2419         * Fixed some warnings (signed/unsigned mismatch).
2420
2421 Changes in libsoup from 2.2.7 to 2.2.91:
2422
2423         * (The large version number bump is because there was an
2424           internal 2.2.90 release for SUSE 10.1 alphas, which was
2425           supposed to be intermediate between 2.2.7 and 2.4.0. But
2426           2.4.0 didn't end up happening, and I don't want to regress
2427           the version number at this point.)
2428
2429         * SoupSession, SoupServer, SoupConnection, SoupSocket, and
2430           SoupAddress now have an "async-context" property that allows
2431           you to use the async API in a non-default GMainContext.
2432           [Based on patches from Armin Bauer and Jürg Billeter.]
2433
2434         * SoupSession, SoupConnection, and SoupSocket now have a
2435           "timeout" property to stop synchronous sockets from hanging
2436           forever if the remote end is unresponsive (from Varadhan).
2437
2438         * Fixed some bugs in soup_date_iso8601_parse(). [324671, from
2439           Emmanuele Bassi]
2440
2441         * More Windows build fixes from Tor.
2442
2443 Changes in libsoup from 2.2.6.1 to 2.2.7:
2444
2445         * Fixed a crash when using NTLM connections [316313, probably
2446           also 318252]. (Also 321208, which was a bug introduced in
2447           the original fix for 316313.)
2448
2449         * Fixed a bug that could cause soup to suck up all available
2450           CPU when a connection to a SoupServer was dropped by the
2451           other side [319305, patch from Jonathan Matthew]
2452
2453         * Fixed the creation of struct elements in XMLRPC messages
2454           [321362, patch from Sebastian Bauer]
2455
2456         * Plugged a small memory leak in SoupSocket (from Wang Xin).
2457
2458         * Fixed two compile problems, a gccism [320349, patch from
2459           Roland Illig], and a strict-aliasing warning from gcc 4.1.
2460
2461 Changes in libsoup from 2.2.6 to 2.2.6.1:
2462
2463         * Fixed a crash when using SoupSoapMessage
2464
2465 Changes from 2.2.5 to 2.2.6:
2466
2467         * Fixed a crash when canceling a message (from Tambet Ingo)
2468
2469         * Fixed a bug where a connection could be leaked forever in
2470           some circumstances if a request got a 30x, 401, or 407
2471           response, eventually causing a hang when the session hit its
2472           maximum connection limit. (Dan/Tambet)
2473
2474         * Fixed a memory leak. (Tambet)
2475
2476         * Fixed a bug that would sometimes show up when connecting to
2477           a server on localhost [#312540]
2478
2479         * Added some API to SoupServer and SoupSocket to help fix a
2480           long-standing rcd bug.
2481
2482 Changes from 2.2.4 to 2.2.5:
2483
2484         * Win32 support (from Tor Lillqvist)
2485
2486         * Up-to-date API documentation pretty much everywhere
2487
2488         * Basic XMLRPC support (from Mariano Suarez-Alvarez, Fernando
2489           Herrera, and Jeff Bailey)
2490
2491         * New HTTP timestamp-manipulation methods soup_date_parse,
2492           soup_date_generate, and soup_date_iso8601_parse.
2493
2494         * SoupSession now handles relative URLs in the Location header
2495           (in violation of RFC 2616, but in line with how some servers
2496           behave.) [270688]
2497
2498 Changes from 2.2.3 to 2.2.4:
2499
2500         * Fixed a problem with NTLM authentication against
2501           multi-domain servers. [306877]
2502
2503         * Fixed DNS lookups on Solaris. [254551, 268389]
2504
2505 Changes from 2.2.2 to 2.2.3:
2506
2507         * Now compiles against gnutls 1.2.0 [257811]
2508
2509         * Fixed a bug that could result in 100% CPU usage if an SSL
2510           server closed the connection uncleanly. [273352]
2511
2512 Changes from 2.2.1 to 2.2.2:
2513
2514         * The SSL validation fix from 2.2.1 [264414] is now completely
2515           fixed. (Part of the fix didn't actually make it into 2.2.1)
2516
2517         * HTTPS certificate validation now works when using an HTTP
2518           proxy. [268583]
2519
2520         * HTTP proxy code deals better with proxies that try to make
2521           the user do HTML-form-based authentication. [268531]
2522
2523         * 64-bit fixes for NTLM auth code. [270323, from Michael
2524           Zucchi]
2525
2526 Changes from 2.2.0 to 2.2.1:
2527
2528         * Updated for a libgcrypt API change between 1.1.9x and 1.2.x
2529           that caused a crash at runtime if you compiled against
2530           1.2.x. [266342]
2531
2532         * SSL certificate validation failure should now always result
2533           in a status of SOUP_STATUS_SSL_FAILED, rather than getting
2534           turned into SOUP_STATUS_IO_ERROR. [264414]
2535
2536
2537 Changes in libsoup from the 2.0 series (1.99.x versions) to 2.2:
2538
2539         * Most of the libsoup datatypes are now GObjects. (SoupUri
2540           is currently an exception to this.)
2541
2542                 * SoupMessage now emits signals at various stages of
2543                   processing. (Eg, "wrote_body", "got_headers".) (You
2544                   can also still use soup_message_add_*handler().)
2545
2546         * SoupContexts are gone; soup_message_new() now takes a URI
2547           string.
2548
2549         * All formerly global state is now maintained by the
2550           SoupSession object. (This includes the connection pool,
2551           proxy server, cached authentication information, SSL
2552           certificates, etc.)
2553
2554                 * You can create a SoupSessionAsync (for 2.0-like
2555                   behavior) or SoupSessionSync (for blocking,
2556                   synchronous usage).
2557
2558                 * You can add SoupMessageFilter objects to a session
2559                   to have certain processing automatically performed
2560                   on every message sent via that session. (Eg, setting
2561                   up handlers.)
2562
2563                 * NTLM authentication is no longer supported by
2564                   default. You must enable it by setting the
2565                   SOUP_SESSION_USE_NTLM flag on the session.
2566
2567                 * The preferred method of handling authentication is
2568                   now via the "authenticate" and "reauthenticate"
2569                   signals on SoupSession. (The old style, of encoding
2570                   the user and password information into the url is
2571                   also still supported.)
2572
2573         * The SOUP_ERROR_* values are now SOUP_STATUS_* (so that we
2574           don't have "SOUP_ERROR_OK" and the like).
2575
2576                 * SOUP_MESSAGE_IS_ERROR() is gone, since some cases
2577                   want to include 3xx responses and some don't.
2578
2579                 * SOUP_ERROR_CANT_AUTHENTICATE and
2580                   SOUP_ERROR_CANT_AUTHENTICATE_PROXY are now gone,
2581                   since they didn't carry any information that
2582                   SOUP_STATUS_UNAUTHORIZED and
2583                   SOUP_STATUS_PROXY_UNAUTHORIZED don't.
2584
2585                 * DNS errors now show up as the new status code
2586                   SOUP_STATUS_CANT_RESOLVE rather than being mixed in
2587                   with SOUP_ERROR_CANT_CONNECT.
2588
2589         * Minimal SOAP support has been added back, via
2590           SoupSoapMessage/SoupSoapResponse
2591
2592         * The HTTP I/O state machine was completely rewritten, fixing
2593           numerous crashes, leaks, and protocol errors.
2594
2595         * SoupUri now conforms to RFC 2396. Mostly.
2596
2597         * Various test programs have been added under tests/
2598
2599         * Removed:
2600
2601                 * Support for OpenSSL (which was horribly buggy) and
2602                   Mozilla NSS (which was never finished). We only
2603                   support GNUTLS for SSL now.
2604
2605                 * SOCKS support
2606
2607                 * CGI support in SoupServer