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