source: trunk/third/libsoup/ChangeLog @ 21519

Revision 21519, 99.8 KB checked in by ghudson, 20 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r21518, which included commits to RCS files with non-trunk default branches.
RevLine 
[21518]12005-01-24  Dan Winship  <danw@novell.com>
2
3        * configure.in: bump version to 2.2.2
4
5        * NEWS: update
6
72005-01-08  Not Zed  <NotZed@Ximian.com>
8
9        ** See ximian bug #70323.
10
11        * libsoup/soup-connection-ntlm.c: replace all unsigned long/long
12        types with guint32, as the code needs 32 bit longs.
13
142004-10-20  Dan Winship  <danw@novell.com>
15
16        * libsoup/soup-gnutls.c: Commit the alleged changes from the 10-06
17        commit, which somehow did not actually get committed then.
18
19        * libsoup/soup-connection.c (SoupConnectionPrivate): add a flag
20        indicating whether or not the connection is connected.
21        (tunnel_connect_finished): If successful, set connected. If the
22        server returns a 3xx response, translate it to 407 (under the
23        assumption that it's trying to redirect us to an HTML login page,
24        as in bug 68531). Use soup_socket_start_proxy_ssl() rather than
25        soup_socket_start_ssl().
26        (socket_connect_result, soup_connection_connect_sync): If
27        successful, set connected
28        (soup_connection_disconnect): Don't emit "disconnected" if we
29        aren't yet connected, or the message that was waiting for this
30        connection may get stranded in the queue. (also part of 68531)
31
32        * libsoup/soup-socket.c (soup_socket_start_proxy_ssl): New, starts
33        SSL and lets the caller pass the expected hostname. Fixes a
34        problem where SSL certification validation would always fail if
35        you used a proxy, because it was comparing the cert against the
36        proxy's hostname. (68583)
37
382004-10-06  Dan Winship  <danw@novell.com>
39
40        * configure.in: Bump version to 2.2.1
41
42        * NEWS: update
43
442004-10-06  Dan Winship  <danw@novell.com>
45
46        * libsoup/soup-ssl.h (SoupSocketError): add
47        SOUP_SSL_ERROR_CERTIFICATE.
48
49        * libsoup/soup-gnutls.c (do_handshake): Pass the GError to
50        verify_certificate.
51        (verify_certificate): Set the GError appropriately rather than
52        spewing g_warnings.
53
54        * libsoup/soup-socket.c (read_from_network, soup_socket_write): If
55        the GIOChannel operation returns an error, store it as GOBject
56        data on the socket (as a hack so soup-message-io.c can access it
57        without us needing to change SoupSocket's API).
58
59        * libsoup/soup-message-io.c (io_error): peek at the socket's
60        "last_error" datum and set the message's status to SSL_FAILED
61        (with the GError's message string) rather than IO_ERROR, if
62        appropriate. For 64414.
63
642004-09-30  Dan Winship  <danw@novell.com>
65
66        * libsoup/soup-gnutls.c (soup_gnutls_init): Add this, with some
67        extra initialization needed for libgcrypt 1.2 or higher. Fixes
68        66342.
69        (soup_ssl_get_client_credentials,
70        soup_ssl_get_server_credentials): Call soup_gnutls_init().
71
[21107]722004-08-26  Dan Winship  <danw@novell.com>
73
74        * configure.in: Bump version to 2.2.0.
75
76        * AUTHORS: Update this to reflect the last 2 years.
77
78        * NEWS: Brief summary of 1.99.x -> 2.2 changes
79
80        * README, TODO: Updates
81
822004-08-26  Dan Winship  <danw@novell.com>
83
84        * libsoup/*: add/fix lots of gtk-doc comments
85       
86        * libsoup/soup-misc.c (soup_str_case_hash, soup_str_case_equal):
87        Fix bug noticed while documenting. (We were using the
88        locale-case-insensitive functions rather than the g_ascii_ ones.)
89
90        * libsoup/soup-message.h (SoupMessageFlags): remove the (never
91        implemented) NO_PIPELINE and NO_COOKIE flags.
92
93        * docs/reference/tmpl/*.sgml: Regenerate, fill in some stuff.
94        There are still problems here with gtk-doc not recognizing many of
95        the objects in libsoup...
96
972004-08-13  JP Rosevear  <jpr@novell.com>
98
99        * configure.in: bump version, libtool number
100
1012004-08-09  Dan Winship  <danw@novell.com>
102
103        * libsoup/soup-connection.c (soup_connection_connect_sync): Don't
104        use conn after emitting the "connect_result" signal, since it
105        might be destroyed by that. Based on a patch from hpj.
106
1072004-08-02  Dan Winship  <danw@novell.com>
108
109        * libsoup/soup-uri.h: Add flag "broken_encoding" to SoupUri.
110
111        * libsoup/soup-uri.c: (soup_uri_to_string): if broken_encoding is
112        set, don't re-encode the URL parts. Based on a patch by
113        Alfred.Peng@Sun.COM.
114
1152004-07-19  JP Rosevear  <jpr@novell.com>
116
117        * configure.in: bump version, libtool number
118
1192004-07-15  Dan Winship  <danw@novell.com>
120
121        * libsoup/soup-session-sync.c (send_message): Simplify this. If
122        the message comes back from soup_connection_send_request not
123        FINISHED, get a new connection rather than reusing the old one.
124        This fixes a race condition in which a connection could end up
125        double-booked, and fixes the handling of messages that get
126        redirected to another server.
127
1282004-07-13  Dan Winship  <danw@novell.com>
129
130        * libsoup/soup-session.c (connect_result): If the connection
131        attempt succeeded, reserve the connection before releasing
132        host_lock. Otherwise, another thread might find it in the
133        connection pool before the caller can queue a message on it.
134        #60693
135
136        * libsoup/soup-session-async.c (got_connection): Call
137        soup_connection_release(), since we don't have a specific message
138        in mind for the connection, so we need it to be considered idle.
139
140        * libsoup/soup-connection.c (soup_connection_release): New
141        function, to undo a soup_connection_reserve().
142        (soup_connection_send_request, soup_connection_reserve,
143        soup_connection_authenticate, soup_connection_reauthenticate):
144        Document these
145
1462004-07-12  Dan Winship  <danw@novell.com>
147
148        * libsoup/soup-session-sync.c (send_message): signal the
149        "connections available" condition after the message finishes. Duh.
150
151        * libsoup-2.2.pc.in (Cflags, Libs): add XML_CFLAGS and XML_LIBS
152
1532004-07-08  Dan Winship  <danw@novell.com>
154
155        * libsoup/soup-soap-response.c: Revert previous change for now; it
156        breaks the build on distros with older libxmls.
157
1582004-07-08  Dan Winship  <danw@novell.com>
159
160        * tests/dict.c: Basic SOAP test, using Aonaware's SOAP->DICT
161        gateway
162
1632004-07-07  Fernando Herrera  <fherrera@onirica.com>
164
165        * libsoup/soup-soap-response.c: (finalize), (init),
166        (soup_soap_response_from_string): Use a parse context for the
167        xml document, so we can safely use the option to ignore
168        blank spaces and '\n'.
169
1702004-07-06  Dan Winship  <danw@novell.com>
171
172        * libsoup/soup-uri.c (soup_uri_new_with_base): if the protocol is
173        http or https, require a hostname. For #61049
174
175        * tests/uri-parsing.c (rel_tests, do_uri): Update for that
176
1772004-06-03  JP Rosevear <jpr@novell.com>
178
179        * configure.in: bump version to 2.1.11, libtool number
180
1812004-06-01  Dan Winship  <danw@novell.com>
182
183        * libsoup/soup-address.c: Redo the various IPv4/IPv6-abstracting
184        macros to not use ?: expressions as lvalues, since that's
185        apparently a GNU extension.
186        (soup_address_resolve_async): Use a timeout rather than an idle
187        handler to poll the dns result. (soup-dns really should be
188        rewritten to not require polling, but this is easier for now.)
189        #59240
190
191        * libsoup/soup-server.c (call_handler): Don't use GNU-only
192        non-constant structure initialization
193
194        * tests/dns.c: Simple test of the dns code
195
196        * tests/Makefile.am (noinst_PROGRAMS): build it
197
1982004-05-19  JP Rosevear  <jpr@novell.com>
199
200        * configure.in (SOUP_API_VERSION): bump version, libtool numbers
201
2022004-05-18  Dan Winship  <danw@novell.com>
203
204        * libsoup/soup-ssl.h:
205        * libsoup/soup-nossl.c: define some GError codes and stuff
206
207        * libsoup/soup-gnutls.c: add missing #include <gnutls/x509.h>
208        (do_handshake): when returning G_IO_STATUS_AGAIN, set the GError
209        to SOUP_SSL_ERROR_HANDSHAKE_NEEDS_READ or _NEEDS_WRITE
210        appropriately.
211
212        * libsoup/soup-socket.c (soup_socket_write): Handle
213        SOUP_SSL_ERROR_HANDSHAKE_NEEDS_READ, by setting an io watch for
214        G_IO_IN instead of G_IO_OUT. Fixes the rcd-sucking-up-all-cpu bug
215        (#58434)
216        (read_from_network): Handle the reverse case (which would cause
217        hanging rather than spinning, and might be the cause of some
218        connector 1.5 slowness?)
219
2202004-05-11  Dan Winship  <danw@novell.com>
221
222        * libsoup/soup-misc.c (soup_signal_connect_once): Do this less
223        kludgefully, using the magic of GClosure, to fix x86_64 problems
224        reported by snorp.
225
2262004-05-04  Sivaiah Nallagatla <snallagatla@novell.com>
227
228        * libsoup/soup-soap-message.c (finalize) : free
229        the elements of priv structure before freeing priv
230
2312004-04-20  Dan Winship  <danw@ximian.com>
232
233        * libsoup/soup-connection-ntlm.c (ntlm_authorize_post): if
234        re-sending the message, call soup_message_restarted()
235        (send_request): Connect to "restarted" signal, and remove the 401
236        handlers from there; doing it here didn't work because if the
237        connection was closed, the message would be re-sent on a new
238        connection, but would still have the handlers from the old
239        connection attached to it, which would make authentication fail.
240
241        * libsoup/soup-message-handlers.c (soup_message_run_handlers):
242        Copy the handler list before starting, to protect against handlers
243        that modify the handler list.
244
2452004-04-15  Dan Winship  <danw@ximian.com>
246
247        * libsoup/soup-connection.c (soup_connection_connect_sync):
248        Connect to the socket's "disconnect" signal. (We were only doing
249        this from the async version before, which meant that synchronous
250        SoupConnections could outlive their sockets and start causing
251        errors.) #57004
252
253        * libsoup/soup-connection-ntlm.c (send_request): Remove the old
254        Authorization header before adding a new one.
255
2562004-04-02  JP Rosevear  <jpr@ximian.com>
257
258        * configure.in: bump version, libtool number
259
2602004-03-15  Dan Winship  <danw@ximian.com>
261
262        * libsoup/soup-soap-message.c (soup_soap_message_persist): Fix up
263        types to kill a warning with -Wall -O2
264
2652004-03-05  JP Rosevear <jpr@ximian.com>
266
267        * configure.in: bump version, libtool number
268
2692004-03-02  Dan Winship  <danw@ximian.com>
270
271        * libsoup/soup-dns.c (check_hostent): Only loop on EINTR if
272        bytes_read is -1, since the value of errno is irrelevant when
273        bytes_read is 0. Probably #54960.
274
2752004-03-01  Rodrigo Moya <rodrigo@ximian.com>
276
277        * libsoup/soup-soap-response.h: removed not-implemented function's
278        prototype.
279
2802004-02-27  Rodney Dawes  <dobey@ximian.com>
281
282        * configure.in:
283        * libsoup/Makefile.am: Use a different variable for linking to the
284        static version of gnutls, so we don't pull the .a files into the .pc
285
286        Fixes #53346
287
2882004-02-20  Dan Winship  <danw@ximian.com>
289
290        * libsoup/soup-message-io.c (read_metadata, read_body_chunk,
291        write_data): Pass gsize *, not guint *, to soup_socket_read/write,
292        to make this work on 64-bit platforms. (Grr. C type checking
293        sucks.) #54631
294       
295        * tests/revserver.c: Likewise
296
2972004-02-18  Rodrigo Moya <rodrigo@ximian.com>
298
299        Fixes #54512
300
301        * libsoup/soup-soap-response.c (soup_soap_parameter_get_int_value):
302        don't leak the value returned from xmlNodeGetContent().
303        (soup_soap_parameter_get_string_value,
304        soup_soap_parameter_get_property): return a g_strdup'ed
305        string, not the value returned by xmlNodeGetContent, so that
306        callers can use g_free, and not xmlFree.
307
308        * libsoup/soup-soap-response.h: made soup_parameter_get_property
309        not return const.
310
3112004-02-17  Dan Winship  <danw@ximian.com>
312
313        * libsoup/soup-soap-message.h (SOUP_IS_SOAP_MESSAGE_CLASS): Fix a
314        typo. #54433, from Mariano Suarez-Alvarez.
315
316        * libsoup/soup-soap-response.h (SOUP_IS_SOAP_RESPONSE_CLASS):
317        Likewise
318
3192004-02-17  Rodney Dawes  <dobey@ximian.com>
320
321        * libsoup/soup-message.c (soup_message_new): HTTP connections require
322        a hostname, and we also hash on the host for message queueing in the
323        session, if the host is NULL we free the SoupUri and return NULL
324
3252004-02-14  Dan Winship  <danw@ximian.com>
326
327        * configure.in: Use POSIX-compliant "test $foo = bar", rather than
328        GNU-only "test $foo == bar". #54354, from Julio M. Merino Vidal.
329
3302004-02-12  Joe Shaw  <joe@ximian.com>
331
332        * libsoup/soup-dns.c (check_hostent): Call read() in a do-while
333        loop to prevent DNS errors from short reads.
334
3352004-02-11  Joe Shaw  <joe@ximian.com>
336
337        * configure.in: Bumped version number to 2.1.7 and libtool
338        current.
339
3402004-02-11  Dan Winship  <danw@ximian.com>
341
342        * libsoup/soup-connection.c (soup_connection_disconnect): Update
343        Joe's comment here with a gory explanation of exactly what's going
344        on. (It's not just an SSL bug either, it affects all connections.)
345
3462004-02-10  Joe Shaw  <joe@ximian.com>
347
348        * libsoup/soup-connection.c (soup_connection_disconnect): Add a
349        workaround for SSL connections which time-out but don't close the
350        socket until we try sending data again later.
351
352        * libsoup/soup-socket.c (soup_socket_connect, soup_socket_listen):
353        Don't free the sockaddr from soup_address_get_sockaddr(); we don't
354        own it, the SoupAddress does.
355
3562004-02-09  JP Rosevear  <jpr@ximian.com>
357
358        * configure.in: Bump libtool numbers
359
3602004-02-05  Dan Winship  <danw@ximian.com>
361
362        * libsoup/soup-session.c (soup_session_add_filter): Ref the filter
363        when adding it.
364        (soup_session_remove_filter): And unref it here (we were already
365        unreffing it in dispose().)
366
3672004-02-05  Joe Shaw  <joe@ximian.com>
368
369        * libsoup/soup-dns.c (soup_dns_entry_unref): Don't try to free the
370        hostent if it's NULL.
371        (soup_dns_entry_check_lookup): If the entry is resolved, but the
372        hostent is NULL, uncache it.
373
3742004-02-04  Dan Winship  <danw@ximian.com>
375
376        * libsoup/soup-connection-ntlm.c (ntlm_authorize_pre): Always
377        remove the WWW-Authenticate headers before returning, so the
378        session won't fall back to Basic auth. Also, leave the connection
379        in the "authenticating" state rather than setting it to
380        "authenticated".
381        (ntlm_authorize_post): Only requeue the message if it's in the
382        "authenticating" state (and set it to "authenticated"). Fixes an
383        "unepectedly disconnected" error if authentication fails.
384
3852004-02-03  Dan Winship  <danw@ximian.com>
386
387        * libsoup/soup-message-io.c (io_cleanup): Call
388        soup_message_io_stop so we don't get a callback on the io after
389        it's been cleaned up.
390
391        * libsoup/soup-session.c (add_auth): Only remove the Authorization
392        header if we have another one to add. (Otherwise it messes up
393        SoupConnectionNTLM.)
394
395        * libsoup/soup-socket.c (read_from_buf): Use memmove rather than
396        memcpy here, since the source and destination will overlap if
397        *nread is small and read_buf->len is large. (Noticed by valgrind,
398        #53625.)
399
4002004-02-02  Joe Shaw  <joe@ximian.com>
401
402        * libsoup/soup-gnutls.c (soup_gnutls_close): Call gnutls_bye()
403        with the GNUTLS_SHUT_WR flag (instead of RDWR) and check only for
404        GNUTLS_E_INTERRUPTED.  GNUTLS_E_AGAIN will be returned by recv()
405        when there are no messages on the wire on a non-blocking socket.
406        This sends a SSL hangup message and then allows us to immediately
407        close the socket.
408
4092004-01-30  Rodrigo Moya <rodrigo@ximian.com>
410
411        * configure.in: bumped version number to 2.1.6.
412
4132004-01-29  Rodrigo Moya <rodrigo@ximian.com>
414
415        * libsoup/soup-soap-response.[ch] (soup_soap_parameter_get_property):
416        new function.
417
4182004-01-29  Rodrigo Moya <rodrigo@ximian.com>
419
420        * libsoup/soup-soap-response.[ch]
421        (soup_soap_parameter_get_string_value): removed 'const' from return
422        type.
423
4242004-01-29  Joe Shaw  <joe@ximian.com>
425
426        * libsoup/soup-gnutls.c (verify_certificate): Initialize the
427        certificate before we try to use it.  Ahem.
428
4292004-01-23  Joe Shaw  <joe@ximian.com>
430
431        * configure.in: Bump version to 2.1.5 and SOUP_RELEASE to 2
432
4332004-01-21  Joe Shaw  <joe@ximian.com>
434
435        * configure.in: Require at least GnuTLS 1.0.0.
436
437        * libsoup/soup-gnutls.c: Fix the use of deprecated GnuTLS
438        functions.
439        (verify_certificate): Use gnutls_x509_crt_import() and
440        gnutls_x509_crt_check_hostname() instead of
441        gnutls_x509_check_certificates_hostname().
442        (init_dh_params): Use gnutls_dh_params_generate2() instead of
443        gnutls_dh_params_generate() and gnutls_dh_params_set().
444
4452004-01-20  Joe Shaw  <joe@ximian.com>
446
447        * libsoup/soup-gnutls.c (soup_gnutls_close): gnutls_bye() doesn't
448        close the socket itself, so we need to do it or else our
449        connections stay in CLOSE_WAIT forever.
450
4512004-01-16  Jason Leach  <leach@wam.umd.edu>
452
453        * libsoup/Makefile.am: builddir != srcdir fixes.
454
4552004-01-14  Joe Shaw  <joe@ximian.com>
456
457        * libsoup/soup-gnutls.c (verify_certificate): Remove the
458        check for GNUTLS_CERT_CORRUPTED, it's not in 1.0.x.
459
4602004-01-12  JP Rosevear  <jpr@ximian.com>
461
462        * configure.in: bump version and libtool revision
463
4642004-01-12  Dan Winship  <danw@ximian.com>
465
466        * tests/simple-httpd.c (main): Add a g_thread_init() so this works
467        again.
468
4692004-01-10  Larry Ewing  <lewing@ximian.com>
470
471        * libsoup-2.2.pc.in (Libs): use LIBGNUTLS_LIBS in the substitution
472        string.
473
4742004-01-09  Joe Shaw  <joe@ximian.com>
475
476        * acinclude.m4: Include the libgnutls.m4 file.
477
478        * configure.in: Remove manual checking for libgnutls-config and
479        use the AM_PATH_LIBGNUTLS so we can pass in a minimum required
480        version, which is 0.9.7 for now.
481
482        * libsoup/Makefile.am: Some changes for the above change.
483
484        * libsoup/soup-gnutls.c: Check for HAVE_SSL, not
485        HAVE_GNUTLS_GNUTLS_H.
486        (verify_certificate): Uncomment the SSL certificate hostname
487        check.
488
489        * libsoup/soup-session.c (set_property): Be smart about flushing
490        our SSL credentials only when the CA file is set to something
491        different than it was before.
492
4932004-01-09  Harish K <kharish@novell.com>
494        * libsoup/soup-soap-response.c (soup_soap_response_from_string):
495        added code to ignore Header element, if present, while creating
496        response objects. 
497       
4982004-01-05  Dan Winship  <danw@ximian.com>
499
500        * configure.in: Remove no-longer-relevant socklen_t check
501
502        * libsoup/soup-address.c: Reorder #includes for FreeBSD (From Joe
503        Marcus Clarke, #52566)
504
505        * libsoup/soup-dns.c: Likewise
506
5072003-12-29  JP Rosevear <jpr@ximian.com>
508
509        * configure.in: bump version and libtool numbers
510
5112003-12-22  Dan Winship  <danw@ximian.com>
512
513        * README, TODO: Update these
514
5152003-12-22  Dan Winship  <danw@ximian.com>
516
517        * libsoup/soup-socket.c: Lots of thread-safety stuff, primarly so
518        you can disconnect a socket from one thread while doing I/O in
519        another.
520
521        * libsoup/soup-message-io.c (soup_message_io_cancel): Split into
522        soup_message_io_stop() and io_cleanup(), to separate out the "stop
523        reading/writing" and "free data" phases to allow thread-safe
524        synchronous cancellation.
525        (soup_message_io_finished): call both soup_message_io_stop() and
526        io_cleanup()
527        (io_error): Only set SOUP_STATUS_IO_ERROR on the message if it
528        doesn't already have a transport error status (eg, CANCELLED).
529        (new_iostate): Call io_cleanup() if needed.
530
531        * libsoup/soup-status.h: add "SOUP_STATUS_NONE" for 0, to make it
532        clearer that it's not a status.
533
534        * libsoup/soup-message.c (finalize, restarted, finished,
535        soup_message_set_uri): s/soup_message_io_cancel/soup_message_io_stop/
536        (soup_message_cleanup_response): s/0/SOUP_STATUS_NONE/
537
538        * libsoup/soup-connection.c (send_request): Remove
539        soup_message_io_cancel call.
540
541        * libsoup/soup-session-sync.c (send_message): Connect to the
542        connection's "disconnected" signal rather than using a weak ref,
543        since that's what we really care about, and it's possible that the
544        connection may have an extra ref on it somewhere that would keep
545        it from being destroyed even if it was disconnected.
546
5472003-12-20  Joe Shaw  <joe@ximian.com>
548
549        * libsoup/soup-session.c (lookup_auth): If const_path is NULL un
550        the non-proxy case, then use the root ("/").
551
5522003-12-19  Dan Winship  <danw@ximian.com>
553
554        * libsoup/soup-message-filter.c: New. An interface for objects
555        that want to act on every message passing through a session.
556        (Initially being used for authentication, but could also be used
557        for cache handling, cookie management, etc.)
558
559        * libsoup/soup-connection.c (class_init, etc): Add a message
560        filter property.
561        (send_request): If the connection has a message filter set, run
562        it on the message before sending it.
563        (soup_connection_connect_async, etc): When setting up a tunnel, if
564        we get back a 407 and the session tries to requeue the message,
565        either re-send it, or return SOUP_STATUS_TRY_AGAIN (depending on
566        whether or not the proxy closed the connection).
567        (soup_connection_connect_sync): Likewise
568        (send_request, request_done): Ref/unref the connection
569
570        * libsoup/soup-session.c (soup_session_get_type): Implement the
571        SoupMessageFilter interface.
572        (soup_session_get_connection): Use the session as the connection's
573        message filter
574        (soup_session_add_filter, soup_session_remove_filter): Add/remove
575        filters from the session
576        (setup_message): do auth handling, and call each of the session's
577        filters' setup_message methods as well.
578        (soup_session_send_message_via): No longer needed.
579        (connect_result): Handle SOUP_STATUS_TRY_AGAIN.
580
581        * libsoup/soup-session-async.c (run_queue): Use
582        soup_connection_send_request, since soup_session_send_message_via
583        is gone now.
584
585        * libsoup/soup-session-sync.c (send_message): Likewise
586
587        * libsoup/soup-message.c (soup_message_is_keepalive): A successful
588        response to a CONNECT is always keepalive, even if it's HTTP/1.0
589        with no Connection header.
590
591        * libsoup/soup-status.h: add SOUP_STATUS_TRY_AGAIN
592
593        * libsoup/soup-types.h: Add SoupMessageFilter, and macros for
594        gobject interface types.
595
596        * tests/get.c (main): Add a -p flag to specify a proxy
597
598        * tests/simple-proxy.c: Fix #includes
599
6002003-12-18  Dan Winship  <danw@ximian.com>
601
602        * libsoup/soup-connection.c (soup_connection_disconnect): Actually
603        disconnect the socket rather than just unreffing it, since the IO
604        code may be holding an extra ref on it.
605        (send_request): connect to the "restarted" signal too
606        (request_restarted): Deal with "Connection: close"
607
608        * libsoup/soup-connection-ntlm.c (ntlm_authorize_pre): Make this
609        not go into an infinite loop if the server only supports Basic.
610
6112003-12-17  Rodrigo Moya <rodrigo@ximian.com>
612
613        * libsoup/Makefile.am: install soup-message-queue.h with the rest
614        of the headers.
615
6162003-12-17  Dan Winship  <danw@ximian.com>
617
618        * configure.in: Add gthread to glib check
619
620        * libsoup/soup-session.c: Make this an abstract class.
621
622        * libsoup/soup-session-async.c: A SoupSession class for
623        asynchronous gmain-based operation; replaces the old SoupSession.
624
625        * libsoup/soup-session-sync.c: A SoupSession class for synchronous
626        blocking operation for use with threaded apps.
627
628        * libsoup/soup-types.h, libsoup/soup.h: add the new session
629        subclasses
630
631        * libsoup/soup-connection.c (soup_connection_connect_sync): Don't
632        try to unref the socket if the socket creation fails.
633        (soup_connection_reserve): New, to explicitly mark a connection as
634        being in use without queueing a message on it.
635
636        * libsoup/soup-dns.c (check_hostent): Oof. Fix the logic of the
637        "block" flag to not be reversed.
638
639        * libsoup/soup-message.c (finished): set status to FINISHED here.
640        (soup_message_cancel): Gone; needs to be done at the session
641        level.
642
643        * libsoup/soup-message-queue.c: Add a mutex and make all of the
644        operations thread-safe.
645
646        * libsoup/soup-socket.c (disconnect_internal): Make this
647        thread-safe.
648        (soup_socket_connect): Make the sync case work correctly.
649
650        * libsoup/Makefile.am: add the SoupSession subclasses
651
652        * tests/Makefile.am: libsoup depends on libgthread now, so
653        revserver doesn't need to explicitly.
654
655        * tests/get.c, tests/auth-test.c, tests/simple-proxy.c: Use
656        soup_session_async_new().
657
6582003-12-16  Rodrigo Moya <rodrigo@ximian.com>
659
660        * libsoup/soup-soap-response.[ch] (soup_soap_parameter_get_int_value):
661        new function.
662
6632003-12-16  Joe Shaw  <joe@ximian.com>
664
665        * libsoup/soup-connection.c (socket_connect_result,
666        soup_connection_connect_sync): Only set up a tunnel if the
667        destination protocol is HTTPS.
668
669        * libsoup/soup-message.c (class_init): Add a default handler for
670        wrote_body.
671        (wrote_body): Run the SOUP_HANDLER_POST_REQUEST handlers here.
672        (soup_message_cancel): Don't set the status to
673        SOUP_STATUS_CANCELLED and call soup_message_finished() if the
674        status is already SOUP_MESSAGE_STATUS_FINISHED.
675
676        * libsoup/soup-session.c (set_property): Don't cancel the session
677        if the proxy URI set as a property isn't different from the old
678        one.
679        (get_host_for_message): Refactor some code so that we can easily
680        get the right SoupSessionHost for proxies as well as from the
681        message.
682        (authenticate_auth): Take a gboolean proxy parameter.  Check it to
683        see which URI (message URI or proxy URI) to use for
684        authentication.  Add a long comment about lack of clarity in RFC
685        2617 with respect to proxies and protection spaces.
686
6872003-12-15  Dan Winship  <danw@ximian.com>
688
689        * libsoup/soup-socket.h (soup_socket_read, soup_socket_read_until,
690        soup_socket_write): s/guint/gsize/ to match the definitions in
691        soup-socket.c. #52167.
692
6932003-12-12  Rodrigo Moya <rodrigo@ximian.com>
694
695        * libsoup/soup-soap-message.c: removed debugging of the messages here.
696
6972003-12-12  Rodrigo Moya <rodrigo@ximian.com>
698
699        * libsoup/soup-soap-message.c (soup_soap_message_start_envelope):
700        added information for SOAP-ENV namespace.
701
7022003-12-10  Dan Winship  <danw@ximian.com>
703
704        * libsoup/soup-message-client-io.c (parse_response_headers): if we
705        receive an HTTP/1.0 response to an HTTP/1.1 request, downgrade the
706        message's http_version so the keep-alive handling is correct.
707        Fixes a problem noticed almost simultaneously by Rodrigo and Joe.
708
709        * libsoup/soup-message.c (soup_message_restarted, etc): Add a
710        "restarted" signal as suggested by Joe.
711
712        * libsoup/soup-message-io.c (soup_message_io_finished): emit
713        either "restarted" or "finished" as appropriate
714
715        * libsoup/soup-session.c (soup_session_queue_message): Connect to
716        "restarted" and run the queue if a message gets restarted
717
718        * libsoup/soup-status.h: Remove a stray comma that gtk-doc doesn't
719        like.
720
7212003-12-10  Tambet Ingo  <tambet@ximian.com>
722
723        * configure.in: Use autoconfig to check for socklen_t ...
724
725        * libsoup/soup-address.c: ... and remove it from here ...
726
727        * libsoup/soup-dns.c: ... and here.
728
7292003-12-09  Rodrigo Moya <rodrigo@ximian.com>
730
731        * libsoup/soup-soap-message.c (soup_soap_message_persist):
732        (soup_soap_message_parse_response): print out request/response's
733        contents, if in debug mode.
734
7352003-12-07  JP Rosevear  <jpr@ximian.com>
736
737        * configure.in: Bump version
738
7392003-11-28  Rodrigo Moya <rodrigo@ximian.com>
740
741        * libsoup/soup-soap-response.[ch]
742        (soup_soap_parameter_get_first_child,
743        soup_soap_parameter_get_first_child_by_name,
744        soup_soap_parameter_get_next_child,
745        soup_soap_parameter_get_next_child_by_name): new functions to
746        manage SoupSoapParameter's children.
747        (soup_soap_response_get_first_parameter): dont return a GList, but
748        a SoupSoapParameter contained in the GList.
749
7502003-11-26  Rodrigo Moya <rodrigo@ximian.com>
751
752        * libsoup/soup-soap-response.[ch]
753        (soup_soap_parameter_get_string_value): new function.
754
7552003-11-26  Rodrigo Moya <rodrigo@ximian.com>
756
757        * libsoup/soup-soap-response.[ch]: added SoupSoapParameter
758        structure, to "hide" the usage of xmlNode's.
759        (soup_soap_parameter_get_name): functions to manage SOAP
760        response parameters.
761        (soup_soap_response_get_first_parameter,
762        soup_soap_response_get_first_parameter_by_name,
763        soup_soap_response_get_next_parameter,
764        soup_soap_response_get_next_parameter_by_name):
765        new functions for an easy access to the response's parameters.
766        (soup_soap_response_from_string): removed warnings.
767
7682003-11-25  Rodrigo Moya <rodrigo@ximian.com>
769
770        * libsoup/soup-soap-response.c (soup_soap_response_set_method_name):
771        fixed typo.
772
7732003-11-25  Rodrigo Moya <rodrigo@ximian.com>
774
775        * libsoup/soup-soap-response.[ch] (soup_soap_response_get_method_name,
776        soup_soap_response_set_method_name, soup_soap_message_get_parameters):
777        new functions.
778        (finalize): NULL out new private fields.
779        (soup_soap_response_from_string): added validation code.
780
7812003-11-23  Rodrigo Moya <rodrigo@ximian.com>
782
783        * libsoup/soup-soap-response.[ch]: new class for managing SOAP
784        responses.
785
786        * libsoup/soup-soap-message.[ch] (soup_soap_message_parse_response):
787        new function.
788
789        * libsoup/Makefile.am: added new files.
790
7912003-11-18  Rodney Dawes  <dobey@ximian.com>
792
793        * gtk-doc.make: Add gtk-doc.make to cvs for systems without gtk-doc
794
7952003-11-18  Rodney Dawes  <dobey@ximian.com>
796
797        * acinclude.m4: Add GTK_DOC_CHECK
798
7992003-11-18  Dan Winship  <danw@ximian.com>
800
801        * configure.in: Replace old gtk-doc test with GTK_DOC_CHECK()
802        (AC_OUTPUT): add docs/Makefile, docs/reference/Makefile
803
804        * autogen.sh (REQUIRED_AUTOMAKE_VERSION): 1.6, for gtk-doc.make
805
806        * Makefile.am: updates for gtk-doc
807        (SUBDIRS): add back "docs"
808
809        * docs/Makefile.am (EXTRA_DIST): remove, since those old docs
810        aren't around any more
811
812        * docs/reference/*: set up gtk-doc
813
814        * libsoup/Makefile.am (INCLUDES): Change G_LOG_DOMAIN to
815        "libsoup". Remove unused defines.
816
817        * libsoup/soup-connection.c: Fix doc comments
818        * libsoup/soup-message.c: Likewise
819        * libsoup/soup-misc.c: Likewise
820        * libsoup/soup-socket.c: Likewise
821        * libsoup/soup-uri.c: Likewise
822
823        * libsoup/soup-address.h: Fixes to please gtk-doc
824        * libsoup/soup-connection.h: Likewise
825        * libsoup/soup-message.h: Likewise
826        * libsoup/soup-message-private.h: Likewise
827        * libsoup/soup-misc.h: Likewise
828        * libsoup/soup-server-auth.h: Likewise
829        * libsoup/soup-socket.h: Likewise
830        * libsoup/soup-status.h: Likewise
831
8322003-11-18  Dan Winship  <danw@ximian.com>
833
834        * configure.in: Fix up the SSL checks some. Remove some useless
835        old header checks.
836
837        * libsoup/soup-misc.h: declare soup_ssl_supported.
838
839        * libsoup/soup-gnutls.c: add soup_ssl_supported declaration.
840
841        * libsoup/soup-nossl.c: Not an SSL implementation, built if
842        HAVE_SSL is not defined.
843
844        * libsoup/Makefile.am (libsoup_2_2_la_SOURCES): add soup-nossl.c
845
846        * libsoup/soup-socket.c (soup_socket_start_ssl): Return success or
847        failure.
848        (listen_watch): Deal with soup_socket_start_ssl failing.
849
850        * libsoup/soup-connection.c (tunnel_connect_finished,
851        socket_connect_result, soup_connection_connect_sync): Deal with
852        the soup_socket_start_ssl failing.
853
854        * libsoup/soup-server.c (soup_server_new): Deal with
855        soup_ssl_get_server_credentials failing
856
8572003-11-18  Rodrigo Moya <rodrigo@ximian.com>
858
859        * libsoup/soup-soap-message.[ch] (soup_soap_message_start_fault,
860        soup_soap_message_end_fault, soup_soap_message_start_fault_detail,
861        soup_soap_message_end_fault_detail, soup_soap_message_start_header,
862        soup_soap_message_end_header,
863        soup_soap_message_start_header_element,
864        soup_soap_message_end_header_element, soup_soap_message_write_int,
865        soup_soap_message_write_double, soup_soap_message_write_base64,
866        soup_soap_message_write_time, soup_soap_message_write_string,
867        soup_soap_message_write_buffer, soup_soap_message_set_element_type,
868        soup_soap_message_set_null, soup_soap_message_add_attribute,
869        soup_soap_message_add_namespace,
870        soup_soap_message_set_default_namespace,
871        soup_soap_message_get_namespace_prefix,
872        soup_soap_message_set_encoding_style, soup_soap_message_reset,
873        soup_soap_message_persist): new functions from old SoupSerializer.
874
8752003-11-17  Rodrigo Moya <rodrigo@ximian.com>
876
877        * libsoup/soup-soap-message.[ch] (soup_soap_message_new,
878        soup_soap_message_new_from_uri): added a bunch of initialization
879        parameters.
880        (soup_soap_message_get_xml_doc, soup_soap_message_start_envelope,
881        soup_soap_message_end_envelope, soup_soap_message_start_body,
882        soup_soap_message_end_body, soup_soap_message_start_element,
883        soup_soap_message_end_element):
884        new functions.
885
886        * configure.in: depend on libxml-2.0 for the SOAP code.
887
888        * libsoup/Makefile.am: use XML CFLAGS and LIBS.
889
8902003-11-17  Joe Shaw  <joe@ximian.com>
891
892        * configure.in: Add in the --enable-libgpg-error flag from the 2.0
893        branch.
894
895        * acinclude.m4: Include the gpg-error macros.
896
8972003-11-17  Rodrigo Moya <rodrigo@ximian.com>
898
899        * libsoup/soup-soap-message.[ch]: new class to make it easier to
900        build SOAP messages.
901
902        * libsoup/Makefile.am: added new files.
903
904        * configure.in: increased version number.
905
9062003-10-24  Joe Shaw  <joe@ximian.com>
907
908        * libsoup/soup-address.c (update_address_from_entry): Call
909        soup_dns_entry_get_hostent() on the SoupAddress passed in, not the
910        one in addr->priv->lookup.  Fixes a crash on synchronous DNS
911        lookups.
912
913        * libsoup/soup-server.c (soup_server_new): We need to ref the
914        address we're binding to, because soup_socket_get_local_address()
915        doesn't ref for us.
916
9172003-10-23  Dan Winship  <danw@ximian.com>
918
919        * libsoup/soup-socket.c (init): Initialize flags to default
920        values.
921
9222003-09-23  Dan Winship  <danw@ximian.com>
923
924        * libsoup/soup-gnutls.c (SoupGNUTLSCred): Remove refcounting, but
925        note whether or not the CA file has been loaded.
926        (SoupGNUTLSChannel): add a "hostname" field.
927        (verify_certificate): Remove the comment about not being able to
928        verify the hostname because of soup problems. Now it's because of
929        GNUTLS problems instead.
930        (soup_ssl_wrap_iochannel): Renamed from soup_ssl_get_iochannel,
931        and takes a hostname and a creds argument now.
932        (soup_ssl_get_client_credentials,
933        soup_ssl_get_server_credentials): Return client/server credentials
934        structures.
935        (soup_ssl_free_client_credentials,
936        soup_ssl_free_server_credentials): and free them.
937
938        * libsoup/soup-session.c (class_init, set_property, get_property):
939        add ssl_ca_file property
940        (get_host_for_message): when returning an SSL host for the first
941        time, create a client credentials structure for the session.
942        (run_queue): Pass the ssl creds to the new connection. Also fix an
943        unrelated bug that caused infinite loops on "bad hostname".
944
945        * libsoup/soup-server.c: Use GObject properties, including
946        ssl_cert_file and ssl_key_file properties.
947        (soup_server_new): Remove "protocol" argument; if the cert file
948        and key file properties were set, create a server credential
949        structure from them and pass that to soup_socket_server_new.
950
951        * libsoup/soup-connection.c (SoupConnectionPrivate): Rename
952        dest_uri to origin_uri to match RFC 2616 terminology. Add an
953        "ssl_creds" field.
954        (class_init, set_property, get_property): add SSL_CREDS property
955        (soup_connection_connect_async, soup_connection_connect_sync):
956        Pass ssl_creds to soup_socket_client_new calls.
957
958        * libsoup/soup-socket.c: Use GObject properties, including an
959        ssl_creds property
960        (soup_socket_set_flags): Gone (replaced with boolean properties)
961        (soup_socket_new): Make this take a list of properties
962        (listen_watch): copy ssl creds from listener to new socket
963        (soup_socket_start_ssl): Pass remote hostname and socket creds
964        structure to soup_ssl_wrap_iochannel.
965        (soup_socket_client_new_async, soup_socket_client_new_sync,
966        soup_socket_server_new): Replace the SSL boolean with an ssl_creds
967        structure.
968
969        * libsoup/soup-misc.c (soup_set_ssl_ca_file,
970        soup_set_ssl_cert_files, soup_get_ssl_ca_file,
971        soup_get_ssl_cert_files): Gone. SSL state is now per-session or
972        per-server.
973
974        * tests/get.c: add a "-c CAfile" argument, for loading a CA
975        certificate file to validate https connections against
976
977        * tests/simple-httpd.c: Add "-c certfile" and "-k keyfile"
978        arguments for loading an SSL server certificate. Only start an SSL
979        server if those arguments were used.
980
981        * tests/test-cert.pem:
982        * tests/test-key.pem: SSL certificate for testing simple-httpd
983
984        * tests/revserver.c: Update for API changes
985        * tests/simple-proxy.c: Likewise
986
9872003-09-22  Dan Winship  <danw@ximian.com>
988
989        * libsoup/soup-message-io.c: Move RESPONSE_BLOCK_SIZE #define here
990        from soup-private.h
991
992        * libsoup/soup-misc.c (soup_load_config, etc): Remove all this.
993        (soup_set_security_policy, soup_get_security_policy): Remove,
994        since the GNUTLS backend doesn't actually implement it.
995        (soup_set_ssl_ca_dir, soup_get_ssl_ca_dir): Likewise
996
997        * libsoup/soup-misc.h: sync to soup-misc.c. Don't #include extra
998        stuff.
999
1000        * libsoup/soup-types.h (SOUP_MAKE_TYPE): Move this here from
1001        soup-private.h
1002
1003        * libsoup/soup-ssl.h: Merge soup_ssl_get_iochannel and
1004        soup_ssl_get_server_iochannel into a single function that takes a
1005        SoupSSLType.
1006
1007        * libsoup/soup-gnutls.c: Remove soup_get_ssl_ca_dir() reference.
1008        (soup_ssl_get_iochannel): Renamed from soup_gnutls_get_iochannel.
1009        (soup_gnutls_set_security_policy): Gone
1010
1011        * libsoup/soup-gnutls.h
1012        * libsoup/soup-ssl.c: Gone; soup-ssl.h is the #include file for
1013        soup-gnutls.c now
1014
1015        * libsoup/soup-socket.c: Move soup_sockaddr_max
1016        #define here from soup-private.h
1017        (soup_socket_start_ssl): Update for new soup_ssl_get_iochannel
1018        prototype.
1019
1020        * libsoup/soup-private.h: Gone
1021       
1022        * libsoup/soup-address.c: Fix #includes for soup-private.h and
1023        soup-misc.h changes
1024        * libsoup/soup-auth-digest.c: Likewise
1025        * libsoup/soup-auth.c: Likewise
1026        * libsoup/soup-connection-ntlm.c: Likewise
1027        * libsoup/soup-connection.c: Likewise
1028        * libsoup/soup-dns.c: Likewise
1029        * libsoup/soup-gnutls.c: Likewise
1030        * libsoup/soup-headers.c: Likewise
1031        * libsoup/soup-message-client-io.c: Likewise
1032        * libsoup/soup-message-handlers.c: Likewise
1033        * libsoup/soup-message-io.c: Likewise
1034        * libsoup/soup-message-server-io.c: Likewise
1035        * libsoup/soup-message.c: Likewise
1036        * libsoup/soup-server-message.c: Likewise
1037        * libsoup/soup-server.c: Likewise
1038        * libsoup/soup-session.c: Likewise
1039        * libsoup/soup-socket.c: Likewise
1040        * tests/auth-test.c: Likewise
1041
10422003-09-19  Dan Winship  <danw@ximian.com>
1043
1044        * libsoup/soup-address.c (update_address_from_entry): free the
1045        hostent.
1046
1047        * libsoup/soup-connection-ntlm.c (ntlm_authorize_pre): Don't leak
1048        the domain
1049
1050        * libsoup/soup-gnutls.c (soup_gnutls_get_iochannel): Add some more
1051        iochannel initialization. Not sure how this worked before...
1052
1053        * libsoup/soup-message.c (soup_message_cleanup_response): Renamed
1054        from soup_message_prepare (and a few things removed).
1055
1056        * libsoup/soup-message-client-io.c (soup_message_send_request):
1057        s/soup_message_prepare/soup_message_cleanup_response/
1058
1059        * libsoup/soup-message-io.c (io_read): Replace the final "\r\n"
1060        with "\0" on the headers before passing them to the parse
1061        function.
1062        (io_read): Call soup_message_cleanup_response after returning an
1063        informational response so the data doesn't leak.
1064
1065        * libsoup/soup-headers.c (soup_headers_parse): Update for
1066        soup-message-io.c:io_read change
1067
1068        * libsoup/soup-server.c (soup_server_new,
1069        soup_server_new_with_host): Don't leak the SoupAddress.
1070
1071        * libsoup/soup-session.c (class_init): Make PROP_PROXY_URI not
1072        CONSTRUCT_ONLY.
1073        (set_property): If the proxy uri changes, call
1074        soup_session_abort() and cleanup_hosts().
1075        (request_finished, final_finished): Fix a bug when requeuing
1076        messages.
1077
1078        * tests/libsoup.supp: valgrind suppression file for soup tests
1079
1080        * tests/Makefile.am (EXTRA_DIST): dist it.
1081        (noinst_PROGRAMS): move the former check_PROGRAMS to
1082        noinst_PROGRAMS instead.
1083
10842003-09-18  Dan Winship  <danw@ximian.com>
1085
1086        * libsoup/soup-message.c: Add wrote_informational and
1087        got_informational signals.
1088
1089        * libsoup/soup-message-client-io.c (get_request_headers): Set the
1090        EXPECT_CONTINUE flag on the message if that header is set.
1091
1092        * libsoup/soup-message-server-io.c (parse_request_headers):
1093        Likewise
1094
1095        * libsoup/soup-message-io.c (io_write): Set read_state to HEADERS
1096        when blocking on an expect-continue. Emit wrote_informational
1097        instead of wrote_headers in the 1xx case.
1098        (io_read): Set read_state to BLOCKING, not NOT_STARTED after
1099        reading a 100 Continue response. Emit got_informational instead of
1100        got_headers in the 1xx case.
1101
1102        * libsoup/soup-session.c (soup_session_send_message): Reorder
1103        things to deal with the fact that the message could finish right
1104        away if there is a connection available and the server is very
1105        close.
1106
1107        * libsoup/soup-status.h: Rename SOUP_STATUS_CLASS_TRANSPORT to
1108        SOUP_STATUS_CLASS_TRANSPORT_ERROR.
1109
11102003-09-17  Dan Winship  <danw@ximian.com>
1111
1112        * libsoup/soup-session.c (find_oldest_connection): Fix two bugs
1113        (one that pruned too little, one that pruned too much).
1114        (queue_message): When requeuing, don't run the queue;
1115        final_finished will take care of that later.
1116        (soup_session_abort): New, to cancel all pending requests.
1117
1118        * libsoup/soup-socket.c (soup_socket_connect, got_address): ref
1119        the socket while waiting for the address to resolve
1120
11212003-09-17  Dan Winship  <danw@ximian.com>
1122
1123        * libsoup/soup-connection.c (soup_connection_new): Replaces the
1124        three previous soup_connection_new* functions and uses gobject
1125        properties to set the destination and proxy uris.
1126        (class_init): set up two more signals, authenticate and
1127        reauthenticate.
1128        (soup_connection_send_request): virtualize
1129        (send_request): Default implementation
1130
1131        * libsoup/soup-connection-ntlm.c: New SoupConnection subclass that
1132        also handles NTLM authentication. Includes all of the NTLM code
1133        formerly in soup-auth-ntlm.c.
1134
1135        * libsoup/soup-auth-ntlm.[ch]: Gone.
1136
1137        * libsoup/soup-auth.c: Remove NTLM refs
1138
1139        * libsoup/soup-session.c (class_init): Add gobject properties for
1140        proxy, max_conns, use_ntlm. Change the "authenticate" and
1141        "reauthenticate" signal prototypes to not pass a SoupAuth (so they
1142        can be used for authenticating SoupConnectionNTLM as well, which
1143        doesn't use a SoupAuth).
1144        (soup_session_new): Renamed from soup_session_new_default.
1145        (soup_session_new_with_options): Replaces
1146        soup_session_new_with_proxy and soup_session_new_full. Takes
1147        gobject properties.
1148        (run_queue): Create a new connection of type SoupConnection or
1149        SoupConnectionNTLM depending on our "use_ntlm" property. Connect
1150        to its authenticate and reauthenticate signals.
1151        (connection_authenticate, connection_reauthenticate): proxy these
1152        signals.
1153
1154        * libsoup/soup-address.c (update_address_from_entry): Fix a
1155        crasher when failing to resolve the address.
1156
1157        * libsoup/soup-dns.c (check_hostent): Fix some "how was this
1158        working before" bugs.
1159
1160        * libsoup/soup-message-client-io.c (soup_message_send_request):
1161        call soup_message_prepare() to clean up the existing response
1162        state.
1163
1164        * libsoup/soup-message-io.c (io_error): Set the read_state to DONE
1165        when processing an OK EOF.
1166
1167        * libsoup/soup-status.h (SoupStatusClass): fix the numbering of
1168        these so that SOUP_STATUS_CLASS_SUCCESS is 2, etc.
1169
1170        * tests/auth-test.c (authenticate, reauthenticate): Update for new
1171        prototypes.
1172        (main): Use soup_session_new.
1173        * tests/get.c (main): Likewise.
1174        * tests/simple-proxy.c (main): Likewise.
1175
11762003-09-10  Dan Winship  <danw@ximian.com>
1177
1178        * libsoup/soup-session.c: Add "authenticate" and "reauthenticate"
1179        signals.
1180        (invalidate_auth): Remove the call to soup_auth_invalidate.
1181        (authenticate_auth): soup_auth_fn is gone. If the URI doesn't
1182        contain authentication, then emit "authenticate" or
1183        "reauthenticate" (depending on whether or not this is the first
1184        time we've asked for a password for this auth).
1185        (update_auth_internal): If the server rejects our
1186        username/password, don't bail out immediately. Try doing a
1187        "reauthenticate" first.
1188
1189        * libsoup/soup-misc.c (soup_set_authorize_callback): Gone
1190
1191        * libsoup/soup-auth.c (soup_auth_new_from_header_list): Remove the
1192        "pref" arg.
1193        (soup_auth_invalidate): Remove this; it doesn't actually do
1194        anything useful for us.
1195
1196        * libsoup/soup-auth-basic.c (invalidate): Remove
1197        * libsoup/soup-auth-digest.c: (invalidate): Remove
1198        * libsoup/soup-auth-ntlm.c: (invalidate): Remove
1199
1200        * libsoup/soup-uri.c: Remove all references to "authmech".
1201        (soup_uri_set_auth): Remove this too.
1202
1203        * tests/auth-test.c: Update to use the "authenticate" and
1204        "reauthenticate" signals instead of encoding usernames and
1205        passwords in the URIs. Add a few more test cases.
1206
12072003-09-10  Dan Winship  <danw@ximian.com>
1208
1209        * libsoup/soup-message-private.h (SoupMessagePrivate): Remove the
1210        "status" field from here, since it's mostly used by SoupSession,
1211        which shouldn't need access to SoupMessagePrivate.
1212
1213        * libsoup/soup-message.h (SoupMessage): Move it here.
1214        (SoupCallbackFn): Remove this alias for SoupMessageCallbackFn.
1215        (soup_message_set_uri): also moved from soup-message-private.h
1216
1217        * libsoup/soup-message.c: s/msg->priv->status/msg->status/.
1218
1219        * libsoup/soup-message-handlers.c:
1220        s/SoupCallbackFn/SoupMessageCallbackFn/ everywhere.
1221
1222        * libsoup/soup-message-io.c (soup_message_io_client,
1223        soup_message_io_server, soup_message_io_unpause): Don't set up an
1224        idle handler, just jump right in to reading/writing; if this is a
1225        synchronous socket, then the caller wants to block, and if it's
1226        not, then we'll quickly get an EAGAIN anyway.
1227
1228        * libsoup/soup-session.c: (queue_message): Likewise.
1229        (*) Update for SoupMessageStatus move and remove
1230        soup-message-private.h include.
1231
1232        * libsoup/soup-server-message.c: Remove soup-message-private.h
1233        include.
1234
1235        * libsoup/soup-server.c: Likewise.
1236
1237        * libsoup/soup-connection.c (soup_connection_is_connected,
1238        soup_connection_is_new): Remove these, since they weren't being
1239        used.
1240
1241        * libsoup/soup-md5-utils.c: Moved from md5-utils.c and renamed, to
1242        avoid namespace pollution.
1243
1244        * libsoup/soup-auth-digest.c: Update for that.
1245        * libsoup/soup-server-auth.c: Likewise
1246
1247        * tests/auth-test.c: Remove soup-message-private.h include
1248
12492003-09-09  Dan Winship  <danw@ximian.com>
1250
1251        Beginnings of improved synchronous API support
1252
1253        * libsoup/soup-dns.c: Simplify this by making it not automatically
1254        return the result: force the caller to poll. (This isn't really a
1255        performance issue: the results should come back quickly anyway.)
1256        Also, make the cache thread-safe.
1257        (soup_dns_entry_from_name): Was soup_gethostbyname
1258        (soup_dns_entry_from_addr): Was soup_gethostbyaddr
1259        (soup_dns_entry_check_lookup): Used to poll to see if DNS is done
1260        (soup_dns_entry_get_hostent): Gets the hostent from an entry (and
1261        blocks if it's not resolved yet).
1262
1263        * libsoup/soup-address.c: Update for soup-dns changes.
1264        (soup_address_new): Don't automatically start resolving the
1265        hostname now, since we don't know if the caller is going to want
1266        it resolved synchronously or asynchronously.
1267        (soup_address_resolve_async): Renamed from soup_address_resolve.
1268        (soup_address_resolve_sync): New routine to do blocking
1269        synchronous DNS.
1270
1271        * libsoup/soup-socket.c (soup_socket_connect): Now returns a
1272        status value directly when connecting synchronously.
1273        (soup_socket_client_new_async, soup_socket_client_new_sync):
1274        Separate async/sync client socket functions.
1275        (soup_socket_get_iochannel): Made static since it was not used
1276        outside soup-socket.
1277
1278        * libsoup/soup-connection.c (soup_connection_new,
1279        soup_connection_new_proxy, soup_connection_new_tunnel): Just set
1280        up the data, don't actually start connecting.
1281        (soup_connection_connect_async, soup_connection_connect_sync): New
1282        async and sync SoupConnection connecting routines.
1283        (soup_connection_get_socket): Remove this since it wasn't being
1284        used.
1285
1286        * libsoup/soup-session.c (final_finished): Run the queue since a
1287        connection is now freed up.
1288        (run_queue): Update for soup_connection_new* changes.
1289
1290        * libsoup/soup-misc.c (soup_substring_index): Remove, since it
1291        wasn't being used any more.
1292
1293        * libsoup/soup-private.h: Remove some prototypes for functions
1294        that no longer exist.
1295
1296        * libsoup/soup-uri.c (soup_uri_copy_root): New utility function
1297        (copies the protocol, host, and port of a SoupUri).
1298
1299        * tests/auth-test.c:
1300        * tests/get.c:
1301        * tests/simple-proxy.c: belatedly update for soup-session change
1302
1303        * tests/revserver.c: Handle each new connection in its own thread,
1304        using synchronous SoupSocket calls.
1305
13062003-09-05  Dan Winship  <danw@ximian.com>
1307
1308        * libsoup/soup-session.c: Move a bunch of logic here from
1309        soup-context. Now the session keeps track of hosts (instead of
1310        having a global soup_hosts hash) and their connections.
1311        (soup_session_new_with_proxy, soup_session_new_full): New session
1312        constructors to specify a proxy or a proxy and connection limits
1313        (send_request): Add Authorization and Proxy-Authorization headers
1314        before sending off the request.
1315        (soup_session_queue_message, et al): Improve the way this works.
1316        There's no need to use timeouts to wait for connections to become
1317        free; we *know* when they become free.
1318
1319        * libsoup/soup-private.h: Remove SoupHost and some other
1320        no-longer-used stuff.
1321
1322        * libsoup/soup-misc.c (soup_set_proxy, soup_get_proxy,
1323        soup_set_connection_limit, soup_set_connection_limit): Gone. These
1324        are all per-session now.
1325
1326        * libsoup/soup-message.c: Remove all SoupContext references
1327        (mostly replaced with SoupUri references)
1328        (cleanup_message): priv->connect_tag and priv->connection are gone
1329        now, so this was just soup_message_io_cancel(). So remove
1330        cleanup_message and replace it with that everywhere.
1331        (soup_message_disconnect): Gone.
1332        (soup_message_set_uri): Replaces soup_message_set_context.
1333        (soup_message_set_connection, soup_message_get_connection): Gone
1334
1335        * libsoup/soup-message-server-io.c (parse_request_headers):
1336        s/soup_message_set_context/soup_message_set_uri/
1337
1338        * libsoup/soup-message-private.h (SoupMessagePrivate): Remove
1339        connect_tag, context, and connection.
1340
1341        * libsoup/soup-message-client-io.c (encode_http_auth): Gone.
1342
1343        * libsoup/soup-context.c: Gone
1344
1345        * tests/auth-test.c (identify_auth): update for session/context
1346        changes
1347
13482003-09-03  Dan Winship  <danw@ximian.com>
1349
1350        * libsoup/soup-status.h: Renamed from soup-error.h, with types
1351        and defines renamed accordingly.
1352
1353        * libsoup/soup-message.h (SoupMessage): Rename errorcode to
1354        status_code and errorphrase to reason_phrase. Remove errorclass.
1355        (SOUP_MESSAGE_IS_ERROR): Remove this. You can't classify redirects
1356        as being either "errors" or "not errors", so its semantics are
1357        guaranteed to be wrong sometimes.
1358
1359        * libsoup/soup-message.c (soup_message_set_status,
1360        soup_message_set_status_full): Renamed
1361
1362        * libsoup/soup-message-handlers.c
1363        (soup_message_add_status_code_handler,
1364        soup_message_add_status_class_handler): Rename.
1365
1366        * libsoup/soup-session.c (soup_session_send_message): Make this
1367        return a status code rather than a status class.
1368
1369        * libsoup/soup-message-private.h (SoupMessagePrivate): Remove some
1370        unrelated unused fields (retries, callback, user_data).
1371
1372        * ...: Updates
1373
13742003-09-02  Dan Winship  <danw@ximian.com>
1375
1376        * libsoup/soup-session.c: First draft at the new object to
1377        maintain formerly-global state. (Not yet complete; still need to
1378        get rid of SoupContext).
1379
1380        * libsoup/soup-message-queue.c: Data structure used by SoupSession
1381
1382        * libsoup/soup-queue.c: Gone. Mostly moved into soup-session, but
1383        some bits went into soup-connection.
1384
1385        * libsoup/soup-connection.c (soup_connection_send_request): New,
1386        to send a request on a connection. The connection updates its
1387        internal state and then hands off to soup_message_send_request.
1388        (request_done): Callback set up by soup_connection_send_request.
1389        Marks the connection as no-longer-in-use, and disconnects it if
1390        the message says to.
1391        (soup_connection_set_in_use, soup_connection_mark_old): No longer
1392        needed; the connection takes care of this itself now.
1393        (soup_connection_new_proxy): New, to create a new connection that
1394        is explicitly marked as being through an HTTP proxy.
1395        (soup_connection_new_tunnel): New, to create a new HTTPS
1396        connection through a proxy. (Includes the code to send the
1397        CONNECT.)
1398
1399        * libsoup/soup-context.c (try_existing_connections): Don't need to
1400        call soup_connection_set_in_use.
1401        (try_create_connection): Use soup_connection_new,
1402        soup_connection_new_proxy, or soup_connection_new_tunnel as
1403        appropriate.
1404
1405        * libsoup/soup-message.c (soup_message_prepare): Replaces
1406        queue_message.
1407        (soup_message_queue, soup_message_requeue, soup_message_prepare):
1408        Gone. This must be done via a SoupSession now.
1409        (soup_message_set_connection): don't need to mark in_use/not
1410        in_use. Also, msg->priv->socket is gone now.
1411        (soup_message_get_socket): Gone.
1412
1413        * libsoup/soup-message-handlers.c (soup_message_run_handlers):
1414        Remove references to global handlers.
1415        (redirect_handler, authorize_handler): Moved to soup-session.c.
1416
1417        * libsoup/soup-misc.c (soup_shutdown): Gone; just unref the
1418        session to shut down now.
1419
1420        * libsoup/soup.h: add soup-session.h
1421
1422        * libsoup/Makefile.am: updates
1423
1424        * tests/auth-test.c, tests/get.c, tests/simple-proxy.c: Use
1425        SoupSession.
1426
14272003-08-29  Dan Winship  <danw@ximian.com>
1428
1429        * libsoup/soup-message-io.c: Major rewrite. There is now only a
1430        single IO state object (instead of one for reading and one for
1431        writing), and the IO code handles switching back and forth between
1432        reading and writing as appropriate (including handling the extra
1433        switches needed for "Expect: 100-continue").
1434        (soup_message_io_client, soup_message_io_server): The new entry
1435        points.
1436        (soup_message_io_cancel): If the caller cancels the IO when we
1437        were expecting to read more data, disconnect the socket.
1438
1439        * libsoup/soup-message.h (SoupMessageFlags): add
1440        SOUP_MESSAGE_EXPECT_CONTINUE, to indicate that the IO code should
1441        do the special expect-continue handling.
1442
1443        * libsoup/soup-message.c: Move all the signal stuff here. Remove
1444        the "done_reading" and "done_writing" signals and replace them
1445        with a single "finished" signal. (A single signal. Say that 10
1446        times fast!)
1447        (soup_message_got_headers, etc): Functions to emit signals.
1448        (got_headers, got_chunk, got_body): Default signal methods that
1449        call soup_message_run_handlers.
1450        (finished): Default signal method that replaces
1451        soup_message_issue_callback.
1452        ([various]): s/soup_message_issue_callback/soup_message_finished/
1453        (soup_message_requeue): There's no soup_message_set_read_callbacks
1454        any more, so if the caller requeues while it's still reading, just
1455        cancel the read.
1456        (soup_message_add_chunk, soup_message_add_final_chunk,
1457        soup_message_pop_chunk): Moved here from soup-server-message,
1458        although we don't actually quite support using chunked encoding
1459        for requests yet.
1460
1461        * libsoup/soup-server-message.c (soup_server_message_new): No
1462        longer takes a socket argument.
1463        (soup_server_message_add_chunk, soup_server_message_get_chunk):
1464        Moved into SoupMessage.
1465
1466        * libsoup/soup-message-handlers.c (global_handlers): Make these
1467        POST_BODY rather than PRE_BODY, so they won't mess up the IO
1468        channel when the requeue the message.
1469        (soup_message_run_handlers): Don't need to issue the message
1470        callback from here any more.
1471        (authorize_handler): Just leave the error as 401 or 407 (see
1472        soup-error.h change)
1473
1474        * libsoup/soup-message-client-io.c (soup_message_send_request):
1475        Replaces soup_message_write_request and
1476        soup_message_read_response.
1477
1478        * libsoup/soup-message-server-io.c: Parallel to
1479        soup-message-client-io.c, this defines the server-side header
1480        handling.
1481        (soup_message_read_request): Its entry point.
1482
1483        * libsoup/soup-server.c: Lots of code moved into
1484        soup-message-server-io.c. Update for other changes.
1485
1486        * libsoup/soup-queue.c: Update for changes
1487
1488        * libsoup/soup-socket.c (read_from_network, soup_socket_write):
1489        Don't call soup_socket_disconnect() on an error, just return
1490        SOUP_SOCKET_ERROR. Otherwise soup_socket_disconnect() could emit
1491        signals that will mess up the caller of the read/write function.
1492
1493        * libsoup/soup-connection.c (soup_connection_disconnect): When
1494        disconnecting the socket, disconnect from its signals first to
1495        prevent bad reentrancy.
1496
1497        * libsoup/soup-error.h: Kill off SOUP_ERROR_CANT_AUTHENTICATE and
1498        SOUP_ERROR_CANT_AUTHENTICATE_PROXY, since they don't really say
1499        anything that SOUP_ERROR_UNATHORIZED and
1500        SOUP_ERROR_PROXY_UNAUTHORIZED don't say. (And now, all of the
1501        "transport" errors actually are transport-related.)
1502
1503        * tests/auth-test.c (main): s/CANT_AUTHENTICATE/UNAUTHORIZED/
1504
1505        * tests/simple-proxy.c: Complicate this a bunch. In particular,
1506        use SOUP_MESSAGE_OVERWRITE_CHUNKS and the GOT_CHUNK signal, and
1507        pass the data back to the client in chunked format.
1508
15092003-08-27  Dan Winship  <danw@ximian.com>
1510
1511        * libsoup/soup-types.h: New header with typedefs, to avoid
1512        #include loops among other headers.
1513
1514        * libsoup/Makefile.am (libsoupinclude_HEADERS): add it
1515
1516        * libsoup/*.[ch], tests/*.c: Update for soup-types.h
1517       
15182003-08-26  Dan Winship  <danw@ximian.com>
1519
1520        * libsoup/soup-message-client-io.c (soup_message_write_request,
1521        soup_message_read_response): Higher-than-soup-message-io-level
1522        functions to do client-side IO. (Code that used to be in
1523        soup-queue.c)
1524        (get_request_header_cb): Fix a bug in the generation of the Host:
1525        header; need to include the port number if it's not the default.
1526
1527        * libsoup/soup-message-io.c (soup_message_write,
1528        soup_message_write_simple): Take separate user_datas for the get_*
1529        callbacks and the done callbacks.
1530
1531        * libsoup/soup-queue.c: Update to use soup_message_write_request
1532        and soup_message_read_response.
1533
1534        * libsoup/soup-connection.c (soup_connection_new): Change the
1535        prototype to take a SoupUri and a callback.
1536
1537        * libsoup/soup-context.c (try_create_connection,
1538        soup_context_connect_cb): Update for soup_connection_new change.
1539
1540        * libsoup/soup-server.c (read_done_cb, issue_bad_request): Update
1541        for soup_message_write changes
1542
1543        * libsoup/soup-uri.c (soup_uri_uses_default_port): new utility
1544        function
1545
15462003-08-26  Dan Winship  <danw@ximian.com>
1547
1548        * libsoup/soup-message-private.h: Define SoupMessage signal stuff
1549        (READ_HEADERS, READ_CHUNK, READ_BODY, READ_ERROR, WROTE_HEADERS,
1550        WROTE_CHUNK, WROTE_BODY, WRITE_ERROR).
1551
1552        * libsoup/soup-message.c (class_init): set up signals
1553        (requeue_read_finished): Update for changes.
1554
1555        * libsoup/soup-message-io.c (soup_message_read): Split out
1556        parse_headers_cb from read_headers_cb. Also add a SoupDataBuffer *
1557        arg to say where to store the message body. Set up
1558        read_headers_cb, read_chunk_cb, read_body_cb, and error_cb as
1559        signal handlers.
1560        (do_read): Call r->parse_headers_cb, then emit READ_HEADERS
1561        (read_body_chunk): emit READ_CHUNK.
1562        (issue_final_callback): Set r->body. emit READ_BODY.
1563        (failed_read): emit READ_ERROR.
1564        (soup_message_read_set_callbacks): Disconnect old signal handlers,
1565        connect new ones.
1566        (soup_message_read_cancel): Disconnect signal handlers.
1567        (soup_message_write, soup_message_write_simple): Set up
1568        wrote_body_cb and error_cb as signal handlers.
1569        (do_write): emit WROTE_HEADERS and WROTE_CHUNK, even though
1570        nothing currently ever listens for them. emit WROTE_BODY when
1571        done.
1572        (failed_write): emit WRITE_ERROR
1573
1574        * libsoup/soup-queue.c (soup_queue_parse_headers_cb,
1575        soup_queue_read_headers_cb): Split this into two unequal chunks.
1576        (read_header_cb only runs the pre-body handlers).
1577        (soup_queue_read_chunk_cb, soup_queue_read_done_cb): Update
1578        prototypes.
1579        (soup_queue_write_done_cb): Update call to soup_message_read
1580
1581        * libsoup/soup-server.c (parse_headers_cb): Renamed from
1582        read_headers_cb
1583        (read_done_cb): Update prototype
1584        (start_request): Update soup_message_read call.
1585
15862003-08-25  Dan Winship  <danw@ximian.com>
1587
1588        * libsoup/soup-message-io.c (soup_message_read,
1589        soup_message_write, soup_message_write_simple): Add a "user_data"
1590        arg, pass it to the callbacks.
1591
1592        * libsoup/soup-message.c (soup_message_requeue,
1593        requeue_read_finished, requeue_read_error): Update for that
1594
1595        * libsoup/soup-queue.c: Likewise
1596
1597        * libsoup/soup-server.c: Likewise
1598
15992003-08-25  Dan Winship  <danw@ximian.com>
1600
1601        * libsoup/soup-message.c (soup_message_new): Take a uri string
1602        instead of a context. Also, swap the args (so the method comes
1603        before the URI, just like in the protocol).
1604        (soup_message_new_from_uri): Like soup_messgae_new, but takes a
1605        SoupUri instead of a string
1606        (soup_message_set_request, soup_message_set_response): Replace
1607        soup_message_new_full.
1608        (cleanup_message): Was soup_message_cleanup, but is static now.
1609        (queue_message): Do the pre-queuing message cleanup here instead
1610        of in soup_queue_message.
1611        (soup_message_queue): Set the callback and user_data, then call
1612        queue_message.
1613        (requeue_read_error, requeue_read_finished, soup_message_requeue):
1614        Use queue_message
1615        (soup_message_get_uri): Replaces soup_message_get_context.
1616
1617        * libsoup/soup-message.h (SoupMessage): Remove msg->context. (It's
1618        part of SoupMessagePrivate now)
1619
1620        * libsoup/soup-context.c: #include soup-message-private
1621        (soup_context_from_uri): constify the uri arg.
1622
1623        * libsoup/soup-queue.c: Various context/uri fixes
1624        (proxy_https_connect): Use soup_message_new_from_uri.
1625        (soup_queue_message): Drastically simplified since most of the
1626        work is in soup-messsage.c:queue_message() now
1627
1628        * libsoup/soup-auth-digest.c (compute_response,
1629        get_authorization): Use soup_message_get_uri.
1630
1631        * libsoup/soup-server-auth.c (parse_digest): Likewise
1632
1633        * libsoup/soup-server.c (call_handler): Likewise
1634
1635        * tests/simple-httpd.c (server_callback): Likewise.
1636
1637        * tests/simple-proxy.c (server_callback): Likewise
1638
1639        * tests/get.c (got_url): Likewise.
1640        (get_url): Update soup_message_new usage.
1641
1642        * tests/auth-test.c: #include soup-message-private. Update for
1643        context changes and soup_message_new change.
1644
16452003-08-22  Dan Winship  <danw@ximian.com>
1646
1647        * libsoup/soup-message-private.h: New file containing
1648        SoupMessagePrivate and some other soup-message-internal
1649        types/functions. Also includes the new, expanded SoupMessageStatus
1650        enum.
1651
1652        * libsoup/soup-message-io.c: Replaces what used to be in
1653        soup-transfer, but now all the interfaces take SoupMessages
1654        instead of SoupReader/SoupWriter and deal with maintaining
1655        msg->priv->{read,write}_state themselves. Fixes up all the
1656        refcounting madness.
1657
1658        * libsoup/soup-message-handlers.c: Move the handler code here,
1659        mostly unchanged. (But rename SoupHandlerType to SoupHandlerPhase
1660        to make the distinction from SoupHandlerKind clearer.)
1661
1662        * libsoup/soup-message.c: Update for soup-message-io and new
1663        SoupMessageStatus values. Remove handler code.
1664        (soup_message_cleanup): Remove the hack to try to preserve the
1665        connection if the message gets cleaned up before it finishes
1666        reading. soup_message_requeue handles this in the requeuing case,
1667        and there's no especially compelling reason to bother doing it in
1668        any other case. (And the soup-message-io api doesn't support
1669        having a read operation that's not connected to any message.)
1670
1671        * libsoup/soup-private.h: remove SoupMessagePrivate
1672
1673        * libsoup/soup-queue.c: Update for soup-message-io and new
1674        SoupMessageStatus values.
1675
1676        * libsoup/soup-server-message.c: Likewise
1677
1678        * libsoup/soup-server.c: Likewise
1679
1680        * libsoup/soup-transfer.c: Gone (yay)
1681
1682        * libsoup/Makefile.am (libsoup_2_2_la_SOURCES): update
1683
16842003-08-20  Dan Winship  <danw@ximian.com>
1685
1686        * libsoup/soup-message.c: Make this a GObject. (Note that since
1687        SoupMessage was not refcounted before, it's not really refcounted
1688        now either. TBF)
1689        (soup_message_free): Gone, replaced by g_object_unref
1690        (soup_message_copy, soup_message_foreach_remove_header): Remove
1691        these, since neither was currently functional.
1692        (soup_message_is_keepalive): New utility function to look at
1693        HTTP version and request/response headers to decide if a message
1694        indicates the connection should be kept alive.
1695        (soup_message_set_connection, soup_message_get_connection): New
1696        (soup_message_get_socket): New
1697
1698        * libsoup/soup-server-message.c: Make this a subclass of
1699        SoupMessage.
1700        (soup_server_message_new): Now takes a SoupServer and SoupSocket
1701        (soup_server_message_get_server): New
1702        (soup_server_message_set_encoding,
1703        soup_server_message_get_encoding): Get/set whether the message
1704        should be sent with content-length or chunked encoding
1705        (soup_server_message_is_started, soup_server_message_is_finished):
1706        Private member accessors.
1707        (soup_server_message_add_chunk): Renamed from add_data
1708        (soup_server_message_get_chunk): Pops a chunk from the list.
1709        (soup_server_message_get_source): Gone
1710
1711        * libsoup/soup-server.c: Update for SoupServerMessage changes.
1712        (error_cb, write_done_cb): All the cleanup stuff that used to be
1713        here happens automatically by unreffing the message now.
1714        (get_response_header): Remove some erroneous leftover CGI stuff
1715        (issue_bad_request): add "Connection: close" to the response.
1716        (read_headers_cb): clean this up a bit. Reject HTTP/1.1 messages
1717        with no Host header as per RFC 2616.
1718
1719        * libsoup/soup-connection.c (soup_connection_start_ssl): Gone
1720        (soup_connection_set_in_use): Let the caller set the connection to
1721        "not in use" even after the socket has been disconnected.
1722
1723        * libsoup/soup-context.c: Use soup_message_get_connection
1724
1725        * libsoup/soup-headers.c (soup_headers_parse_request): Remove the
1726        check on request length, since it was rejecting
1727        "GET / HTTP/1.0\r\n\r\n", which is a valid complete request.
1728
1729        * libsoup/soup-queue.c: Use soup_message_get_connection and
1730        soup_message_get_socket.
1731        (soup_queue_read_done_cb): Use soup_message_is_keepalive
1732        (proxy_https_connect_cb): Use soup_socket_start_ssl rather than
1733        soup_connection_start_ssl
1734
1735        * libsoup/soup-socket.c (finalize): disconnect the GIOChannel
1736        handlers if the socket hasn't been disconnected yet.
1737
1738        * libsoup/soup-transfer.c (soup_reader_read_body_chunk,
1739        reader_read): Fix these so that reader_read will exit properly if
1740        the read is cancelled.
1741
1742        * tests/auth-test.c (main): s/soup_message_free/g_object_unref/
1743
1744        * tests/simple-httpd.c (server_callback): set the message to
1745        content-length encoding.
1746        * tests/simple-proxy.c (server_callback): Likewise
1747
17482003-08-19  Dan Winship  <danw@ximian.com>
1749
1750        * libsoup/soup-socket.c (soup_socket_read,
1751        soup_socket_read_until, soup_socket_write): New API for doing
1752        socket IO. Works both synchronously and asynchronously, and
1753        buffers data to prevent the "100 Continue" problem.
1754        (soup_socket_set_flag): Replaces formerly-private
1755        soup_set_sockopts. (primarily to let the caller turn off
1756        SOUP_SOCKET_FLAG_NONBLOCKING).
1757
1758        * libsoup/soup-transfer.c (soup_transfer_read,
1759        soup_transfer_write, soup_transfer_write_simple): Take a
1760        SoupSocket instead of a GIOChannel. Use the new socket IO api.
1761        Changed the prototypes of some of the callbacks to be less
1762        hackish.
1763
1764        * libsoup/soup-connection.c (soup_connection_get_socket): Replaces
1765        soup_connection_get_iochannel.
1766
1767        * libsoup/soup-message.c: Fix up for soup-transfer changes
1768
1769        * libsoup/soup-queue.c: Likewise
1770
1771        * libsoup/soup-server.c: Likewise
1772
1773        * tests/revserver.c: A slightly more complicated replacement for
1774        timeserver. (Does both reads and writes)
1775
17762003-08-19  Dan Winship  <danw@ximian.com>
1777
1778        * libsoup/soup-socks.[ch]: Remove this. RC doesn't let you
1779        configure it, and no one has complained, and it looks like the
1780        SOCKS5 auth code doesn't actually work anyway...
1781
1782        * libsoup/soup-queue.c (proxy_connect): Remove SOCKS code.
1783
1784        * libsoup/soup-uri.h: Remove SOUP_PROTOCOL_SOCKS4 and
1785        SOUP_PROTOCOL_SOCKS5
1786
1787        * libsoup/soup-misc.c: Remove a references to SOCKS in a comment
1788
1789        * libsoup/Makefile.am (libsoup_2_2_la_SOURCES): remove
1790        soup-socks.[ch]
1791
17922003-08-19  Dan Winship  <danw@ximian.com>
1793
1794        * libsoup/soup-server.c: Make this a GObject. Remove
1795        SoupServerMessage code (to soup-server-message.c). Remove CGI
1796        server code (for now?)
1797        (soup_server_add_handler, soup_server_remove_handler): Rename
1798        (from register/unregister) to make it clearer what they do.
1799
1800        * libsoup/soup-server-message.c: Moved out of soup-server.c
1801
1802        * libsoup/soup-private.h: Remove SoupServer def
1803
1804        * libsoup/Makefile.am (libsoupinclude_HEADERS,
1805        libsoup_2_2_la_SOURCES): add soup-server-message.[ch]
1806
1807        * tests/simple-httpd.c:
1808        * tests/simple-proxy.c: Update for SoupServer changes
1809
18102003-08-18  Dan Winship  <danw@ximian.com>
1811
1812        * libsoup/soup-address.c (SoupAddressPrivate): Make this more like
1813        a struct sockaddr again (like it used to be). In particular, add
1814        back the "port" field. Add a bunch of macros to try (and fail) to
1815        simplify some of the code.
1816        (soup_address_new): Now returns a SoupAddress directly rather than
1817        a random handle, and the caller can just use g_object_unref to
1818        cancel the lookup. Also, the callback now uses a
1819        SoupKnownErrorCode rather than a special-purpose address-lookup
1820        error code.
1821        (soup_address_new_cancel): No longer needed.
1822        (soup_address_new_sync): Removed
1823        (soup_address_new_any): Replaces soup_address_ipv4_any and
1824        soup_address_ipv6_any.
1825        (soup_address_get_name, etc): Gone. Use soup_address_resolve()
1826        now.
1827        (soup_address_get_physical): Renamed from
1828        soup_address_get_canonical_name.
1829        (soup_address_get_sockaddr): Replaces soup_address_make_sockaddr()
1830
1831        * libsoup/soup-socket.c: Update for SoupAddress changes and make
1832        similar changes here.
1833        (soup_socket_new): Just creates a generic SoupSocket now.
1834        (soup_socket_connect): Client setup
1835        (soup_socket_listen): Server setup. Now also sets up an iochannel
1836        listening for connects and emits a "new_connection" signal as they
1837        come in.
1838        (soup_socket_start_ssl): Turns on SSL.
1839        (soup_socket_client_new, soup_socket_server_new): Utility
1840        functions that wrap the above.
1841        (soup_socket_new_cancel, soup_socket_new_sync): Gone
1842        (soup_socket_server_accept, soup_socket_server_try_accept): No
1843        longer needed.
1844        (soup_socket_get_iochannel): No longer adds a ref when returning
1845        the iochannel. Also, we set it to "close_on_unref" so that if a
1846        caller adds a ref to it, the connection will actually remain open
1847        even after the SoupSocket is destroyed.
1848        (soup_socket_get_local_address, soup_socket_get_remote_address):
1849        Let the caller get both of these.
1850
1851        * libsoup/soup-connection.c: Don't keep a private copy of the
1852        socket's iochannel.
1853        (soup_connection_new): Don't need to set socket options here.
1854        SoupSocket does it.
1855        (soup_connection_start_ssl): Just call soup_socket_start_ssl.
1856        (soup_connection_get_iochannel): Just return the socket's
1857        iochannel (and don't ref it)
1858
1859        * libsoup/soup-error.c: add SOUP_ERROR_CANT_RESOLVE and
1860        SOUP_ERROR_CANT_RESOLVE_PROXY
1861
1862        * libsoup/soup-dns.c (soup_ntop): Make the address arg const.
1863        Remove the "FIXME add a CANT_RESOLVE error" and return
1864        SOUP_ERROR_CANT_RESOLVE instead.
1865
1866        * libsoup/soup-server.c: Update for socket/address changes. Don't
1867        poke into SoupSocket's private fields.
1868        (soup_server_run_async): Just connect to the socket's
1869        "new_connection" signal.
1870
1871        * libsoup/soup-context.c (try_create_connection,
1872        soup_context_connect_cb): Update for socket changes. Replace
1873        SOUP_CONNECT_ERROR codes with plain SOUP_ERROR codes.
1874
1875        * libsoup/soup-misc.c (soup_signal_connect_once): Utility function
1876        to connect to a signal handler and connect another function to
1877        clean up the first signal handler after its first invocation.
1878        (Lets us use signals to replace one-off callbacks.)
1879
1880        * libsoup/soup-private.h: Remove SoupSocketPrivate since it is
1881        actually private now.
1882        (struct _SoupServer): Remove accept_tag.
1883
1884        * libsoup/soup-queue.c (soup_queue_read_done_cb, start_request):
1885        Don't unref the iochannel.
1886        (soup_queue_connect_cb): Takes a SoupKnownErrorCode now.
1887
1888        * libsoup/soup-socks.c: Update for socket/address changes
1889
1890        * tests/simple-httpd.c (main):
1891        s/SOUP_SERVER_ANY_PORT/SOUP_ADDRESS_ANY_PORT/
1892        * tests/simple-proxy.c (main): Likewise
1893
1894        * tests/timeserver.c: Update for SoupSocket's "new_connection"
1895        signal, and for SoupAddress changes.
1896
18972003-08-14  Dan Winship  <danw@ximian.com>
1898
1899        * libsoup/soup-connection.c: New, split out from soup-context and
1900        made into a GObject.
1901        (soup_connection_disconnect): Disconnects the connection and emits
1902        a signal. (Replaces the old "keep_alive" flag.)
1903        (soup_connection_is_connected): Checks if the connection is still
1904        connected
1905        (connection_died): Just disconnect, rather than freeing the
1906        connection. This way if anyone else is still referencing it they
1907        won't end up with an invalid pointer.
1908
1909        * libsoup/soup-context.c: Make this a GObject, remove all the
1910        SoupConnection code. Add an "ntlm_auths" field to SoupHost so that
1911        SoupContext can keep track of connection auth stuff there without
1912        SoupConnection needing to care. Various other updates.
1913
1914        * libsoup/soup-private.h: Remove SoupContext and SoupConnection
1915        definitions.
1916
1917        * libsoup/*.c, tests/get.c: Update for context/connection changes
1918
1919        * libsoup/soup-socks.c (soup_connect_socks_proxy): Change the
1920        definition to deal with the fact that there's no
1921        soup_connection_get_context any more.
1922
1923        * libsoup/soup-queue.c (soup_queue_read_headers_cb): Don't deal
1924        with connection persistence here.
1925        (soup_queue_read_done_cb): Do it here instead. Disconnect the
1926        connection when appropriate.
1927        (proxy_connect, proxy_https_connect, proxy_https_connect_cb):
1928        Reference-count the connection properly. (I think.)
1929
1930        * libsoup/soup-marshal.list: New, for SoupConnection's
1931        "disconnected" signal.
1932
1933        * libsoup/Makefile.am: add rules to build soup-marshal.[ch]
1934
1935        * configure.in: Use AM_PATH_GLIB_2 rather than pkg-config, so that
1936        GLIB_GENMARSHAL gets set too.
1937
19382003-08-14  Dan Winship  <danw@ximian.com>
1939
1940        * libsoup/soup-error.c: Fix a spelling mistake.
1941
1942        * libsoup/*.c: Fix use of @/%/#/() in gtk-doc comments
1943
19442003-08-12  Dan Winship  <danw@ximian.com>
1945
1946        * libsoup/soup-auth.c: Make this an abstract GObject. Tweak some
1947        of the interfaces around a little bit.
1948
1949        * libsoup/soup-auth-basic.c: subclass for Basic auth
1950
1951        * libsoup/soup-auth-digest.c: subclass for Digest auth
1952
1953        * libsoup/soup-auth-ntlm.c: subclass for NTLM auth. Move all of
1954        the code from soup-ntlm.c here, and make it private.
1955
1956        * libsoup/soup-ntlm.c: gone
1957
1958        * libsoup/soup-misc.h: Remove the definition of SoupAuthType from
1959        here, and change the signature of SoupAuthorizeFn.
1960
1961        * libsoup/soup-context.c: Use g_object_unref to free auths, use
1962        methods instead of directly access private fields.
1963
1964        * libsoup/soup-queue.c: Likewise
1965
1966        * libsoup/soup-server-auth.c (soup_server_auth_free): Remove all
1967        NTLM references. We have no plans to implement server-side NTLM
1968        auth.
1969
1970        * tests/auth-test.c (identify_auth): Update for auth api changes
1971
19722003-08-12  Dan Winship  <danw@ximian.com>
1973
1974        * configure.in (GLIB): add gobject-2.0 to the PKG_CHECK_MODULES
1975        call
1976
1977        * libsoup/soup-address.c: Make this a GObject.
1978        (soup_address_ref, soup_address_unref): Gone.
1979        (soup_address_copy): Gone. Wasn't being used anyway.
1980
1981        * libsoup/soup-dns.c: Move all of the DNS code and caching stuff
1982        here from soup-address.c, so that soup-address doesn't need to
1983        worry about trying to cache zero-ref addresses.
1984
1985        * libsoup/soup-socket.c: Make this a GObject. Use "guint"
1986        consistently for port numbers.
1987        (soup_socket_ref, soup_socket_unref): Gone.
1988
1989        * libsoup/soup-private.h: Change the SoupSocket definition to be
1990        SoupSocketPrivate. (Still need to keep this here since soup-server
1991        pokes around in its internals.)
1992        (SOUP_MAKE_TYPE): Copied from gal's E_MAKE_TYPE.
1993
1994        * libsoup/soup-server.c (read_done_cb, write_done_cb): Unref the
1995        reader/writer rather than leaking them.
1996
1997        * libsoup/*: Use GObject methods for socket/address refcounting
1998       
1999        * tests/auth-test.c (main)
2000        * tests/timeserver.c (main): Call g_type_init.
2001
2002        * tests/get.c (main): Call g_type_init.
2003        (get_url, got_url): Fix some bugs that could make -r mode get into
2004        infinite loops downloading the same files over and over. Plug some
2005        memory leaks to make this more useful for valgrinding libsoup.
2006
2007        * tests/simple-httpd.c (main): Call g_type_init. Set up a signal
2008        handler for SIGINT so we can exit cleanly, since valgrind won't
2009        give a leak report if you don't. Plug a few memory leaks.
2010
2011        * tests/simple-proxy.c (main): Likewise
2012
20132003-08-12  Dan Winship  <danw@ximian.com>
2014
2015        Pull over some new test programs from the soup-refactoring branch,
2016        along with the SoupUri changes they depend on.
2017
2018        * tests/simple-httpd.c: A really simple HTTP server, to test the
2019        server code.
2020
2021        * tests/simple-proxy.c: An even simpler HTTP proxy
2022
2023        * tests/get.c: Add "-r" flag to recursively get files (thereby
2024        testing multiple-connections-at-once code). Also good for setting
2025        up a tree to use with simple-httpd.
2026
2027        * tests/timeserver.c (main): Fix a bug. (s/ipv6/ipv4/ in the
2028        normal case)
2029
2030        * tests/uri-parsing.c: Regression test for the new soup-uri.c
2031
2032        * libsoup/soup-uri.c: Rewrite/update to conform to RFC 2396, and
2033        pull in some optimizations from camel-url. Also, make SoupProtocol
2034        a GQuark so we can still compare them with ==, but we can also
2035        recognize any protocol.
2036        (soup_uri_new_with_base): New, to merge base and relative URIs
2037        (soup_uri_to_string): Update this. Change the "show_password" flag
2038        (which we always passed FALSE for) to "just_path", for places that
2039        want the path+query without the protocol, host, etc.
2040
2041        * libsoup/soup-queue.c (soup_get_request_header): Just use
2042        soup_uri_to_string to generate the request URI.
2043
2044        * libsoup/soup-auth.c (compute_response, digest_auth_func): Use
2045        "soup_uri_to_path (uri, TRUE)" rather than trying to reassemble
2046        the URI by hand badly.
2047        * libsoup/soup-server-auth.c (parse_digest): Likewise
2048
2049        * libsoup/soup-socks.c (soup_connect_socks_proxy): Change a
2050        switch() to an series of if()s since SOUP_PROTOCOL_* aren't
2051        constants any more.
2052
2053        * libsoup/soup-context.c (soup_context_uri_hash,
2054        soup_context_uri_equal): s/querystring/query/
2055
20562003-08-12  Dan Winship  <danw@ximian.com>
2057
2058        * configure.in: Bump API version to 2.2 and package version to
2059        2.1.0. Remove NSS and OpenSSL checks and proxy-related config. Use
2060        libgnutls-config to find GNUTLS.
2061
2062        * libsoup-2.2.pc.in: Update, and rename from soup-2.0.pc
2063
2064        * Makefile.am: Update for pc file rename
2065
2066        * libsoup/Makefile.am: s/2.0/2.2/ everywhere. Remove NSS, OpenSSL,
2067        and libsoup-ssl-proxy stuff.
2068
2069        * libsoup/soup-ssl-proxy.c
2070        * libsoup/soup-nss.[ch]
2071        * libsoup/soup-openssl.[ch]: gone
2072
2073        * libsoup/soup-ssl.c: remove NSS and OpenSSL bits
2074
2075        * tests/Makefile.am (get_LDADD, timeserver_LDADD,
2076        auth_test_LDADD): Update libsoup version
2077
20782003-08-07  Dan Winship  <danw@ximian.com>
2079
2080        * libsoup/soup-auth.c (soup_auth_lookup, soup_auth_set_context,
2081        soup_auth_invalidate): These are all really SoupContext functions,
2082        so move them to soup-context.c (and rename them appropriately).
2083        (soup_auth_get_protection_space): New method to get the
2084        "protection space" of an auth (paths where it is valid).
2085        (soup_auth_invalidate): New method to try to un-authenticate an
2086        auth (so we can keep the domain info cached even if the auth info
2087        is wrong).
2088        (basic_pspace_func): Basic protection space is all directories
2089        below the current one.
2090        (basic_invalidate_func): Clear the encoded username/password
2091        (digest_pspace_func): Digest protection space is either the whole
2092        server, or "what the domain parameter says" (though we don't deal
2093        with cross-host domains).
2094        (digest_invalidate_func): Return FALSE; bad digest auth info isn't
2095        cacheable.
2096        (digest_parse_func, digest_free): Set/free domain parameter
2097        (ntlm_pspace): NTLM protection space is always the whole server.
2098        (ntlm_invalidate): Clear the auth state.
2099        (soup_auth_new_ntlm): Make this non-static
2100        (SoupAuth): Replace the quad-state "status" field with an
2101        "authenticated" boolean.
2102       
2103        * libsoup/soup-private.h (SoupHost): Replace the "valid_auths"
2104        hash with separate "auth_realms" (path->realm) and "auths"
2105        (realm->auth) hashes. Also add a "use_ntlm" flag.
2106
2107        * libsoup/soup-context.c (soup_context_unref): Update SoupHost
2108        freeing code.
2109        (connection_free): Don't the connection's auth, just free it.
2110        (soup_context_lookup_auth): Formerly soup_auth_lookup, but now
2111        does two-stage lookup (path->realm then realm->auth) and also
2112        deals with NTLM hacks.
2113        (soup_context_update_auth): Mostly formerly soup_auth_set_context,
2114        but also large parts of authorize_handler. Updates the auth hashes
2115        based on information from a 401 or 407 response. Does a better job
2116        than authorize_handler did of not throwing away good information.
2117        (soup_context_preauthenticate): New; fakes up auth info so that
2118        requests will end up using authentication without the server
2119        needing to return an error first.
2120        (soup_context_authenticate_auth): Moved out of authorize_handler
2121        so it can be used at request-sending time too, if we know that we
2122        need it. (That way we can avoid requeuing the request if it isn't
2123        going to be able to be authenticated.)
2124        (soup_context_invalidate_auth): Sort of like the old
2125        soup_auth_invalidate, but only destroys the auth data, while still
2126        remembering the path->realm mapping.
2127
2128        * libsoup/soup-message.c (authorize_handler): Mostly moved into
2129        soup_context_update_auth.
2130        (maybe_validate_auth): Remove this; it was only useful because of
2131        bugs elsewhere in the auth handling.
2132       
2133        * libsoup/soup-queue.c (soup_encode_http_auth): Update for
2134        soup_context_lookup_auth. If the returned auth isn't
2135        authenticated, call soup_context_authenticate_auth() on it.
2136
2137        * tests/auth-test.c: New (from soup-refactoring branch). Tests
2138        that the Basic/Digest auth code does the right thing. (TODO: find
2139        a good way to add NTLM tests too.)
2140
2141        * tests/Makefile.am (check_PROGRAMS): add auth-test
2142
21432003-07-29  Dan Winship  <danw@ximian.com>
2144
2145        * configure.in: 1.99.25 ("Potato and Leek Soup")
2146
2147        * libsoup/soup-message.c (requeue_read_finished,
2148        release_connection): Free the passed-in body data. Otherwise the
2149        response body ends up getting leaked on most 3xx and 4xx
2150        responses.
2151        (soup_message_cleanup): Remove a piece of code that didn't
2152        actually do anything and its associated confused comment.
2153
2154        * libsoup/soup-auth.c (ntlm_free): plug an occasional NTLM auth leak
2155
2156        * libsoup/soup-context.c (connection_free): plug a non-occasional
2157        NTLM auth leak.
2158
21592003-06-26  Joe Shaw  <joe@ximian.com>
2160
2161        * configure.in: Version 1.99.24
2162
21632003-06-24  Dan Winship  <danw@ximian.com>
2164
2165        * configure.in: Check pkgconfig for openssl, since 0.9.7 (a) uses
2166        it, and (b) depends on lots of new things sometimes (like on RH9).
2167
2168        * libsoup/soup-openssl.c:
2169        * libsoup/soup-ssl-proxy.c: Change #ifdef HAVE_OPENSSL_SSL_H to
2170        just #ifdef HAVE_OPENSSL since the header check doesn't get run in
2171        the pkgconfig case
2172
21732003-06-19  Dan Winship  <danw@ximian.com>
2174
2175        * libsoup/soup-queue.c (soup_queue_read_done_cb): unref the
2176        old read_tag before changing/clearing it.
2177        (soup_queue_write_done_cb): Likewise with the write_tag.
2178
2179        * libsoup/soup-transfer.c (issue_final_callback): ref the reader
2180        around the stop+callback.
2181        (soup_transfer_write_cb): Likewise.
2182
21832003-06-12  Dan Winship  <danw@ximian.com>
2184
2185        * libsoup/soup-transfer.c (SoupReader, SoupWriter): add a
2186        ref_count field.
2187        (soup_transfer_read, create_writer): Set initial ref_count to 2
2188        (one for soup-transfer, one for the caller).
2189        (soup_transfer_read_ref, soup_transfer_read_unref): ref/unref a
2190        reader
2191        (soup_transfer_read_stop): Clears the GIOChannel callbacks and
2192        drops soup-transfer's ref.
2193        (soup_transfer_read_cancel): Now just a stop+unref
2194        (soup_transfer_write_ref, soup_transfer_write_unref,
2195        soup_transfer_write_stop, soup_transfer_write_cancel): Similarly.
2196
2197        * libsoup/soup-message.c (soup_message_cleanup): when setting up
2198        the "finish reading" callbacks, unref the reader so it will be
2199        destroyed once it's done reading.
2200        (soup_message_requeue): Likewise.
2201
2202        * libsoup/soup-queue.c (soup_queue_read_headers_cb): Update for
2203        prototype change (no longer returns a SoupTransferDone).
2204        (soup_queue_read_chunk_cb): Likewise.
2205
2206        * libsoup/soup-server.c (read_headers_cb): Likewise
2207
22082003-06-11  Dan Winship  <danw@ximian.com>
2209
2210        * libsoup/soup-transfer.c: Change all functions to take a
2211        SoupReader * or SoupWriter * instead of a guint.
2212
2213        * libsoup/soup-private.h (SoupMessagePrivate): make read_tag and
2214        write_tag pointers instead of guints.
2215
[19534]22162003-06-02  Chris Toshok  <toshok@ximian.com>
2217
2218        * libsoup/soup-ssl.c: remove #include for soup-nss.h
2219
22202003-06-02  Chris Toshok  <toshok@ximian.com>
2221
2222        * libsoup/Makefile.am (INCLUDES): remove NSS_CFLAGS.
2223        (libsoup_2_0_la_LIBADD): remove NSS_LIBS.
2224        (libsoup_2_0_la_SOURCES): remove soup-nss.[ch]
2225
22262003-06-02  Chris Toshok  <toshok@ximian.com>
2227
2228        * configure.in: Bump version to 1.99.23.
2229
22302003-05-30  Chris Toshok  <toshok@ximian.com>
2231
2232        * libsoup/soup-queue.c (soup_queue_error_cb): always force a
2233        reconnect when there's an error with ssl connection.  This fixes
2234        #43387, but it runs the risk of sending requests multiple times to
2235        the exchange server, and it results in lots of shorter lived
2236        connections and more forking (in the ssl proxy case), depending on
2237        the length of the operation.
2238
22392003-05-21  Dan Winship  <danw@ximian.com>
2240
2241        * configure.in: 1.99.22 (codename: French Onion Soup)
2242
22432003-05-20  Dan Winship  <danw@ximian.com>
2244
2245        * libsoup/soup-message.c (soup_message_requeue): Clear the
2246        write_tag as well so we don't double-cancel it. #43395.
2247
2248        * libsoup/soup-queue.c (soup_queue_error_cb): The connection might
2249        be destroyed by the end of the func, so we have to call
2250        soup_connection_set_used at the beginning.
2251
2252        * libsoup/soup-openssl.c (soup_openssl_read, soup_openssl_write):
2253        Call g_set_error() so that we don't SEGV immediately after
2254        returning G_IO_STATUS_ERROR.
2255
22562003-05-08  Joe Shaw  <joe@ximian.com>
2257
2258        * configure.in: Bump version to 1.99.21
2259
2260        * libsoup/soup-queue.c (proxy_connect): If the proxy HTTPS
2261        tunnelling fails, the other message which shares our same
2262        connection will free it first, so set ours to NULL.
2263
22642003-05-08  Dan Winship  <danw@ximian.com>
2265
2266        * libsoup/soup-auth.c (ntlm_auth): If the auth status is PENDING,
2267        return an NTLM request string. Otherwise return the "response"
2268        field (which should include the NTLM authenticate message)
2269        (ntlm_init): Don't bother setting "response" to the NTLM request
2270        string. Just leave it NULL in that case.
2271
2272        * libsoup/soup-message.c (authorize_handler): Never try to reuse
2273        an NTLM auth returned from soup_auth_lookup. Only set the auth on
2274        the connection when it's SOUP_AUTH_STATUS_SUCCESSFUL. Otherwise,
2275        call soup_auth_set_context() on it just like for non-NTLM auth.
2276        The net effect of all of this is that now we record when a context
2277        needs NTLM auth just like with non-NTLM auth, so that that info
2278        gets preserved across connections.
2279        (soup_message_requeue): No longer need the hackery here to
2280        preserve the connection auth state.
2281
22822003-05-07  Dan Winship  <danw@ximian.com>
2283
2284        * libsoup/soup-context.c (soup_connection_set_in_use): New, to
2285        toggle the connection's in_use flag, and set up the death watch
2286        when it's not in use.
2287        (connection_death): This is only hooked up when the connection is
2288        not in use now, so don't need to check that. Should fix the
2289        infinite connection_death loop.
2290        (soup_connection_is_new): Keep a distinct "new" flag rather than
2291        defining "new" as "has been released at least once".
2292        (soup_connection_set_used): Mark a connection no-longer new.
2293        (soup_context_connect_cb): Mark the connection as new. Don't set
2294        up the death watch since it's in_use.
2295        (try_existing_connections): Use soup_connection_set_in_use.
2296        (soup_connection_release): Likewise
2297
2298        * libsoup/soup-message.c (requeue_read_finished): Call
2299        soup_connection_set_used so that the connection isn't still
2300        considered new when we send the message the second time.
2301
2302        * libsoup/soup-queue.c (soup_queue_error_cb): Call
2303        soup_connection_set_used (assuming we don't close the connection)
2304        (soup_queue_read_done_cb): Likewise.
2305
2306        * libsoup/soup-transfer.c (soup_transfer_read_cb): If we read
2307        nothing, call soup_transfer_read_error_cb rather than just
2308        cancelling, or else it will get cancelled again later.
2309
23102003-05-07  Dan Winship  <danw@ximian.com>
2311
2312        * soup-2.0.pc.in (Libs): Don't put @OPENSSL_LIBS@ here; the
2313        library doesn't depend on them, only the proxy does. #42473
2314
23152003-05-06  Dan Winship  <danw@ximian.com>
2316
2317        * src/libsoup/soup-message.c (global_handlers): Change the
2318        redirect handler to be a RESPONSE_ERROR_CLASS_HANDLER for
2319        SOUP_ERROR_CLASS_REDIRECT rather than a RESPONSE_HEADER_HANDLER
2320        for "Location" to get around the non-64-bit-clean union
2321        initialization pointed out by Jeremy Katz <katzj@redhat.com>.
2322        (redirect_handler): Update for that.
2323
23242003-04-28  Dan Winship  <danw@ximian.com>
2325
2326        * configure.in: 1.99.20
2327
2328        * libsoup/soup-transfer.c (soup_transfer_read_error_cb): Make sure
2329        we always call UNIGNORE_CANCEL. Might fix #41971
2330
23312003-04-25  Dan Winship  <danw@ximian.com>
2332
2333        * libsoup/soup-queue.c (soup_queue_error_cb): if an old connection
2334        suddenly gets an io error while reading or writing, assume it's a
2335        timeout or something, close the connection, and requeue the
2336        message.
2337
23382003-04-23  Dan Winship  <danw@ximian.com>
2339
2340        * libsoup/soup-message.c (soup_message_cleanup): Don't set up the
2341        soup-transfer callbacks to keep reading off the connection unless
2342        we're actually going to keep the connection around afterward.
2343        Otherwise we can just close it.
2344
2345        * libsoup/soup-transfer.c: Re-kludge the awful IGNORE_CANCEL
2346        thingy so that it's possible to cancel a read from inside a
2347        callback so that the above change actually works instead of just
2348        crashing.
2349
23502003-04-20  Rodney Dawes  <dobey@ximian.com>
2351
2352        * configure.in: Up version to 1.99.18
2353        * libsoup/Makefile.am: Line separator after GNUTLS_CFLAGS
2354       
23552003-04-11  Dan Winship  <danw@ximian.com>
2356
2357        * libsoup/soup-context.c (soup_connection_purge_idle): New
2358        function to close all idle connections. (Needed for #41117 or else
2359        there's no way to force-discard NTLM authentication.)
2360
2361        * libsoup/soup-queue.c (soup_queue_shutdown): Use it
2362
23632003-04-10  Joe Shaw  <joe@ximian.com>
2364
2365        * libsoup/soup-queue.c (proxy_https_connect):
2366        proxy_https_connect_cb() might not get called if connecting to the
2367        proxy fails, and it causes us to double-free the connection.
2368        Always set the message's connection to NULL before freeing it.
2369
23702003-04-09  Dan Winship  <danw@ximian.com>
2371
2372        * configure.in: 1.99.17
2373
23742003-04-07  Dan Winship  <danw@ximian.com>
2375
2376        * libsoup/soup-context.c (connection_death): Revert Joe's changes.
2377        We can't release the connection there because there may be
2378        SoupMessages still pointing to it. (Needs to be revisited.)
2379
23802003-04-03  JP Rosevear  <jpr@ximian.com>
2381
2382        * libsoup/soup-ssl.c (soup_ssl_hup_waitpid): guard against EINTR
2383        error during waitpid
2384
2385        * libsoup/soup-address.c: ditto
2386
23872003-04-02  Joe Shaw  <joe@ximian.com>
2388
2389        * libsoup/soup-context.c (connection_death): Only drop the
2390        connection if we get an error condition on the channel.  Fixes a
2391        double-free.
2392
23932003-04-02  Joe Shaw  <joe@ximian.com>
2394
2395        * libsoup/soup-context.c (connection_death): Just call
2396        soup_connection_release() from here and return whether the
2397        connection is in use.
2398
23992003-03-31  Ian Peters  <itp@ximian.com>
2400
2401        * libsoup/soup-gnutls.c (soup_gnutls_close): loop on gnutls_bye in
2402        case of EAGAIN or EINTR, since shutting down an SSL connection
2403        requires more than just closing a socket.
2404
24052003-03-28  Dan Winship  <danw@ximian.com>
2406
2407        * libsoup/soup-message.c (soup_message_set_context): If the new
2408        context points to a different server from the old context, call
2409        soup_message_cleanup. Otherwise it tries to reuse the old
2410        connection...
2411
24122003-03-25  Joe Shaw  <joe@ximian.com>
2413
2414        * configure.in: Bump up to 1.99.16
2415
24162003-03-24  Joe Shaw  <joe@ximian.com>
2417
2418        * soup-error.[ch]: Add SOUP_ERROR_SSL_FAILED which gives a
2419        slightly better error message on various SSL failures than the
2420        previous message.
2421
2422        * soup-queue.c (soup_queue_error_cb): Throw the
2423        SOUP_ERROR_SSL_FAILED error when we fail an SSL handshake.
2424
24252003-03-21  Joe Shaw  <joe@ximian.com>
2426
2427        * soup-server.c: Use non-deprecated g_main_loop_* calls
2428        throughout.
2429        (soup_server_unref): Don't unref the main loop if it's NULL.
2430        Fixes a glib warning.
2431
24322003-03-18  Dan Winship  <danw@ximian.com>
2433
2434        * configure.in: comment out NSS checks. The NSS code doesn't work
2435        and there are no current plans to fix it.
2436
2437        * README (Features): Mention GnuTLS, remove NSS and the rest of
2438        the "Planned Features" section.
2439
2440        * MAINTAINERS: remove Alex
2441
2442        * libsoup/soup-openssl.c (soup_openssl_get_iochannel): Bump the
2443        timeout to 10 seconds (and get rid of the 3 tries) so we don't
2444        fail to connect just because the server is slow/far away.
2445
24462003-03-17  Joe Shaw  <joe@ximian.com>
2447
2448        * configure.in: Bump up to 1.99.15.
2449
24502003-03-12  Ian Peters  <itp@ximian.com>
2451
2452        * libsoup/soup-gnutls.c: because creating client credentials is
2453        expensive, keep the same one around as long as possible, only
2454        recreating it if the ssl_ca_file changes.  Wrap
2455        gnutls_certificate_credentials in a refcounted struct to avoid
2456        freeing it while another established connection may potentially
2457        need it (say, to rehandshake).
2458
24592003-03-11  Frank Belew  <frb@ximian.com>
2460
2461        * soup-2.0.pc.in: add ssl libs to defaults, since ssl doesn't
2462        use pkgconfig
2463
24642003-03-10  Joe Shaw  <joe@ximian.com>
2465
2466        * configure.in: Bump up to 1.99.14.
2467
2468        * configure.in, libsoup/Makefile.am, libsoup/soup.gnutls.[ch],
2469        libsoup/soup-ssl.c: Add support for GnuTLS.  Patch from Ian
2470        Peters.
2471
24722003-03-07  Joe Shaw  <joe@ximian.com>
2473
2474        * configure.in: Bump up to 1.99.13.
2475
2476        * libsoup/soup-context.c (soup_context_connect_cb): Add G_IO_IN to
2477        the list of conditions to watch.  If the remote end hangs up the
2478        connection, we'll get a successful read of 0 bytes, not a HUP.
2479        The connection will have to be released by the point we check for
2480        it in connection_death().
2481
2482        * libsoup/soup-queue.c (soup_queue_error_cb): Get rid of some
2483        (apparently) errant resetting of the read and write tags.  I think
2484        this might have been causing some reentrancy and crashes.
2485
2486        * libsoup/soup-socket.c (soup_socket_get_iochannel): Set the IO
2487        channel to NULL encoding and not buffered.
2488
2489        * libsoup/soup-transfer.c (soup_transfer_read_cb): Remove some
2490        incorrect comments.
2491
24922003-02-28  Joe Shaw  <joe@ximian.com>
2493
2494        * configure.in: Bump up to 1.99.12.
2495
2496        * libsoup/soup-transfer.c (soup_transfer_read_cb): We can get a
2497        header_len of 0 and a total_read of 0 in the case of a SIGPIPE; in
2498        this case we probably don't want to call the error callback, we
2499        just want to act like our transfer was cancelled.
2500
25012003-02-27  Joe Shaw  <joe@ximian.com>
2502
2503        Try to apply some order to the iochannel refcounting...
2504
2505        * configure.in: Bump up to 1.99.11.
2506
2507        * libsoup/soup-context.c (soup_connection_get_iochannel): The
2508        connections needs to own a reference to the iochannel!  If we're
2509        using HTTPS, release the ref we get from soup_socket_get_iochannel
2510        and replace it with the ref we get from soup_ssl_get_iochannel().
2511        Then, always ref the channel that we return (ugh, but that's the
2512        soup way).
2513        (connection_free): Release the connection's ref to the iochannel.
2514
2515        * libsoup/soup-ssl.c (soup_ssl_get_iochannel_real): Ref the
2516        iochannel. The reference we pass back will be owned by the
2517        connection.
2518        (soup_ssl_hup_waitpid): Release our ref.
2519
25202003-02-27  Joe Shaw  <joe@ximian.com>
2521
2522        * configure.in: Bump up to 1.99.10.
2523
2524        * libsoup/soup-ssl.c (soup_ssl_get_iochannel_real): Ref the
2525        iochannel, return to the status quo.  Sigh.
2526
25272003-02-26  Joe Shaw  <joe@ximian.com>
2528
2529        * configure.in: Bump up to 1.99.9.
2530
2531        * libsoup/soup-ssl.c (soup_ssl_hup_waitpid): Comment out the unref,
2532        it's causing problems with HTTPS and proxies; the iochannel
2533        refcounting is waaaaaay horked.
2534
25352003-02-26  Frank Belew  <frb@ximian.com>
2536
2537        * libsoup/Makefile.am: added workaround to link ssl-proxy statically
2538
25392003-02-11  Joe Shaw  <joe@ximian.com>
2540
2541        * configure.in: Bump up to 1.99.8 for snaps.
2542
2543        * libsoup/soup-address.c (soup_gethostbyname): Fix this for Solaris.
2544        It returns the address to the resulting hostent or NULL on failure,
2545        unlike Linux which returns an error code.
2546
25472003-02-11  Joe Shaw  <joe@ximian.com>
2548
2549        * configure.in: Bump up to 1.99.7 for snaps.
2550
2551        * libsoup/soup-openssl.c (soup_openssl_get_iochannel): Print out
2552        the error string from OpenSSL if we can't establish a connection.
2553
25542003-02-04  Joe Shaw  <joe@ximian.com>
2555
2556        * configure.in: Bump up to 1.99.6 for snaps.
2557
2558        * libsoup/soup-server.c (destroy_message): We already assigned
2559        chan, so don't reassign it, and unref it in all cases.
2560        (issue_bad_request): Always unref after a call to
2561        soup_socket_get_iochannel(), because it refs it.
2562        (conn_accept): Fix some funky GIOChannel reffing here.
2563
2564        * libsoup/soup-ssl.c (soup_ssl_get_iochannel_real): Don't call
2565        g_io_channel_ref() on the socket.  This is the exact opposite of
2566        what we want to do.  Create a temporary structure containing the
2567        parent pid and the old socket and unref the socket when our
2568        callback is called.  This should fix GIOChannels being leaked on
2569        SSL connections.
2570
2571        * libsoup/soup-ssl-proxy.c: Always close the GIOChannels after the
2572        main loop quits.
2573
25742003-01-22  Joe Shaw  <joe@ximian.com>
2575
2576        * configure.in: Bump up to 1.99.5 for the snaps.
2577
2578        * libsoup/soup-address.c (soup_address_new): If we found the
2579        address in our hash, we need to return NULL or else Soup will
2580        think we're doing an async lookup and do some cancellation on
2581        us.  Besides, we were returning the wrong type anyway and it
2582        was crashing things.
2583
25842003-01-17  Joe Shaw  <joe@ximian.com>
2585
2586        * libsoup/soup-ssl-proxy.c (soup_ssl_proxy_readwrite): It's not
2587        uncommon for us to get a G_IO_ERROR_AGAIN when trying to write
2588        out, so keep trying until we succeed.
2589
25902003-01-10  Joe Shaw  <joe@ximian.com>
2591
2592        * libsoup/soup-openssl.c (verify_cb): Load some X509 and SSL error
2593        strings and print out the error when the cert can't verify.
2594
25952003-01-09  Dan Winship  <danw@ximian.com>
2596
2597        * libsoup/soup-address.c (soup_gethostbyname): Fix a memcpy
2598        overrun noticed by valgrind
2599
26002002-12-20  Joe Shaw  <joe@ximian.com>
2601
2602        * libsoup/soup-server.c (soup_server_new_with_host): Added.
2603        Starts a server only on the interface specified, instead of all
2604        network interfaces.
2605
26062002-12-16  Jeremy Katz  <katzj@redhat.com>
2607
2608        * configure.in: use $libdir instead of /usr/lib when looking for
2609        libraries
2610
26112002-12-11  Joe Shaw  <joe@ximian.com>
2612
2613        * libsoup/soup-queue.c (proxy_https_connect_cb): I am an idiot.
2614        Don't set a variable to NULL and then immediately try to
2615        dereference it.
2616
26172002-12-09  Joe Shaw  <joe@ximian.com>
2618
2619        * libsoup/soup-openssl.c (soup_openssl_get_iochannel): Put a
2620        timeout on the select()s when we get SSL_ERROR_WANT_READ/WRITE so
2621        we don't hang forever if we don't get more data.
2622
2623        * libsoup/soup-ssl-proxy.c (main): Don't set our fds to blocking
2624        or else we'll hang forever in SSL_connect() if the other side
2625        hangs up.
2626
2627        * libsoup/soup-queue.c (proxy_https_connect_cb): We never want to
2628        release the connection on message free, even if the connection was
2629        unsuccessful.
2630
26312002-12-03  Joe Shaw  <joe@ximian.com>
2632
2633        * libsoup/soup-ssl.c (soup_ssl_get_iochannel_real): Call
2634        g_io_channel_set_close_on_unref() on the second half of the socket
2635        pair so we don't leak file descriptors.
2636
26372002-12-03  Frank Belew  <frb@ximian.com>
2638
2639        * libsoup/soup-address.c: add signal.h to the list of headers to
2640        pick up SIGKILL
2641       
26422002-11-25  Joe Shaw  <joe@ximian.com>
2643
2644        * Makefile.am: Build the tests directory again
2645
26462002-11-21  Rodney Dawes  <dobey@ximian.com>
2647
2648        * configure.in: Don't require autoconf 2.5x, needs to work with 2.13
2649       
26502002-11-20  Michael Meeks  <michael@ximian.com>
2651
2652        * configure.in: require autoconf 2.52 not 2.53.
2653
26542002-11-18  Dan Winship  <danw@ximian.com>
2655
2656        * libsoup/soup-address.c (soup_address_hash): Don't use s6_addr32
2657        since it's apparently non-portable. Use s6_addr instead.
2658        (soup_gethostbyaddr): fix a sometimes-uninitialized variable.
2659
2660        * libsoup/soup-error.c: Fix spelling of
2661        SOUP_ERROR_MOVED_PERMANENTLY and its description.
2662
2663        * libsoup/soup-message.c (soup_message_get_request_header, etc):
2664        Remove long-deprecated API.
2665
2666        * libsoup/soup-socket.c (soup_socket_connect): remove unused
2667        variable.
2668
2669        * libsoup/soup-openssl.c (soup_openssl_read): Use gsize.
2670        * libsoup/soup-server.c (cgi_read): Likewise
2671        * libsoup/soup-socks.c (soup_socks_write, soup_socks_read):
2672        Likewise.
2673        * libsoup/soup-ssl-proxy.c (soup_ssl_proxy_readwrite): Likewise.
2674        * libsoup/soup-transfer.c (soup_transfer_read_cb,
2675        soup_transfer_write_cb): Likewise.
2676
2677        * tests/timeserver.c: Add "-6" to listen on the IPv6 local address
2678        instead of IPv4. (Tested on OS X.)
2679
26802002-11-15  Dan Winship  <danw@ximian.com>
2681
2682        * libsoup/*: Change old Helix Code refs to Ximian (and update
2683        copyright dates).
2684
26852002-11-15  Frank Belew  <frb@ximian.com>
2686
2687        * tests/Makefile.am: uncomment lines to make timeserver build
2688        correctly
2689       
26902002-11-14  Joe Shaw  <joe@ximian.com>
2691
2692        * libsoup/soup-address.c (soup_address_new): When we get an
2693        address from the hash, call our address lookup callback or else
2694        the connection will hang.
2695
26962002-11-13  Dan Winship  <danw@ximian.com>
2697
2698        * tests/timeserver.c: Oops, commit this.
2699
2700        * tests/Makefile.am (noinst_PROGRAMS): reenable timeserver.
2701
27022002-11-13  Joe Shaw  <joe@ximian.com>
2703
2704        * libsoup/Makefile.am: Replace the BINDIR define with LIBEXECDIR.
2705        (install-exec-hook): Install libsoup-ssl-proxy into libexecdir
2706        instead of bindir.
2707
2708        * libsoup/soup-openssl.c (soup_openssl_close): Call SSL_shutdown()
2709        to properly shut down the SSL connection before closing the
2710        socket.
2711
2712        * libsoup/soup-ssl-proxy.c (soup_ssl_proxy_readwrite): Close the
2713        iochannels before quitting the main loop.
2714
2715        * tests/Makefile.am: disable building timeserver, the source file
2716        wasn't added.
2717
27182002-11-12  Dan Winship  <danw@ximian.com>
2719
2720        * configure.in: Check for IPv6 support in networking headers.
2721
2722        * libsoup/soup-address.c: Make the internal structure of
2723        SoupAddress entirely private, and make SoupAddress be more like a
2724        hostent and less like a sockaddr. (Ie, make it not have a port
2725        associated with it.) Document undocumented functions. Add
2726        completely-untested support for IPv6.
2727        (soup_address_new_from_sockaddr): New, to parse a sockaddr into a
2728        SoupAddress and a port.
2729        (soup_address_ipv4_any, soup_address_ipv6_any): Return static
2730        addresses corresponding to the IPv6 and IPv6 "any" addresses.
2731        (soup_address_get_canonical_name): Use inet_ntop/inet_ntoa.
2732        (soup_address_make_sockaddr): Now constructs a new sockaddr, which
2733        may be a sockaddr_in or sockaddr_in6.
2734        (soup_address_gethostname, soup_address_gethostaddr): Remove
2735        these. They aren't reliable, especially on multihomed hosts.
2736        (soup_gethostbyname, soup_gethostbyaddr): support IPv6
2737        (soup_address_new): Keep pending lookups in a separate hash table
2738        from completed lookups. Fix a bug when canceling a lookup when
2739        there was more one outstanding request for it.
2740        (soup_address_lookup_in_cache): Removed.
2741
2742        * libsoup/soup-socket.c: Add a port field to SoupSocket (since
2743        it's not in SoupAddress any more).
2744        (soup_socket_connect): Simplify this. Don't use
2745        soup_address_lookup_in_cache, just call soup_address_new, since we
2746        already know the code can deal with the callback being invoked
2747        immediately.
2748        (soup_socket_new_sync, soup_socket_new): Take a port argument.
2749        (soup_socket_server_new): Take a SoupAddress to use as the local
2750        address to bind to. This lets the caller choose between the IPv4
2751        and IPv6 "any" addresses, and also lets you bind to a single
2752        interface of a multi-homed machine.
2753        (soup_socket_server_accept, soup_socket_server_try_accept): Merge
2754        the common code.
2755
2756        * libsoup/soup-server.c (soup_server_new): Pass
2757        soup_address_ipv4_any() to soup_socket_server_new().
2758
2759        * libsoup/soup-socks.c (soup_connect_socks_proxy,
2760        soup_socks_write): Fix up for the API changes, but it won't work
2761        with IPv6 yet.
2762
2763        * tests/timeserver.c: Another really simple test, for the server
2764        socket code.
2765
2766        * tests/Makefile.am: build timeserver
2767
27682002-11-11  Dan Winship  <danw@ximian.com>
2769
2770        * libsoup/soup-address.c: Move the SoupAddress code from
2771        soup-socket.c and soup-socket-unix.c to here.
2772
2773        * libsoup/soup-socket.c: Move the remaining code from
2774        soup-socket-unix.c here.
2775
2776        * libsoup/soup-socket-unix.c: Gone
2777
2778        * tests/get.c: really really trivial test program
2779
2780        * configure.in (AC_OUTPUT):
2781        * Makefile.am (SUBDIRS): add tests/
2782
27832002-11-05  Dan Winship  <danw@ximian.com>
2784
2785        * Split libsoup out of soup. ChangeLog.old contains the original
2786        soup ChangeLog.
2787
2788        * Makefile.am, etc: Fix things up to work with the new directory
2789        layout. Disable docs until we fix them.
2790
2791        * autogen.sh: Use gnome-autogen.sh
2792
2793        * configure.in: Require autoconf 2.53. Remove stuff that was only
2794        needed for httpd or wsdl code. Remove glib1 support. Bump version
2795        to 2.0.
2796
2797        * libsoup/Makefile.am: Rename library to libsoup-2.0, put includes
2798        in ${includedir}/soup-2.0
2799       
2800        * libsoup/*: Merge soup-0-7 back onto the trunk. Remove
2801        SOAP-specific stuff, Windows support, and other things that
2802        weren't being maintained.
2803
2804        * soup-config.in, soupConf.sh: Kill these. We only support
2805        pkg-config now.
Note: See TracBrowser for help on using the repository browser.