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