14b6fbfb982da12737581c0be0df6d5484b2f434
[platform/upstream/libsoup.git] / ChangeLog
1 2007-10-28  Dan Winship  <danw@gnome.org>
2
3         * configure.in: 2.2.103
4
5         * NEWS: update
6
7 2007-10-28  Dan Winship  <danw@gnome.org>
8
9         * libsoup/soup-server.c (start_request, request_finished): ref the
10         socket around the processing of the message, since otherwise it
11         might already be freed when request_finished runs. #459896.
12
13         * libsoup/soup-message-io.c (soup_message_io_pause)
14         (soup_message_io_unpause): Clarify the docs here; this is for
15         server-side use only. Inspired by #452280.
16
17         * docs/reference/server-howto.xml: You need to watch the
18         "finished" signal on the message if using soup_message_io_pause()
19         or chunked encoding, because the client might disconnect while
20         you're paused. Clarification inspired by #471385.
21
22         * tests/simple-proxy.c (client_msg_failed): Fix this to DTRT since
23         server-howto.xml points to it as an example of what to do.
24
25 2007-10-28  Dan Winship  <danw@gnome.org>
26
27         * libsoup/soup-session.c (finalize): free proxy-related stuff
28
29         * libsoup/soup-session-async.c (idle_run_queue): clean up the weak
30         pointer. (From the dev repo, but identical to a patch from Rob
31         Bradford in #484988.)
32
33         * tests/*.c: fix leaks
34
35 2007-10-28  Dan Winship  <danw@gnome.org>
36
37         * tests/auth-test.c:
38         * tests/date.c:
39         * tests/header-parsing.c:
40         * tests/ntlm-test.c:
41         * tests/proxy-test.c:
42         * tests/uri-parsing.c:
43         * tests/xmlrpc-test.c: Make these less verbose by default (to make
44         it easier to see what failed when a "make check" fails).
45
46 2007-10-15  Dan Winship  <danw@gnome.org>
47
48         * configure.in: 2.2.102
49
50         * NEWS: update
51
52 2007-10-08  Dan Winship  <danw@gnome.org>
53
54         * libsoup/soup-nossl.c: Update for current soup-ssl.h prototypes
55
56         * tests/proxy-test.c (run_test): wrap https tests in #if HAVE_SSL
57
58 2007-10-05  Dan Winship  <danw@gnome.org>
59
60         * configure.in: 2.2.101
61
62         * NEWS: update
63
64         * tests/httpd.conf.in: 
65         * tests/Makefile.am: 
66         * tests/ssl-test.c: srcdir != builddir fixes
67
68 2007-10-05  Dan Winship  <danw@gnome.org>
69
70         * libsoup/soup-connection-ntlm.c (ntlm_authorize_pre): Don't crash
71         if the authenticate callback returns a username and no password
72         (even though it's not supposed to do that). #480987
73
74 2007-09-24  Dan Winship  <danw@gnome.org>
75
76         * libsoup/soup-auth.h (SoupAuth): add "realm" field to the struct.
77         (SoupAuthClass) remove "get_realm" virtual method.
78
79         * libsoup/soup-auth.c (soup_auth_new_from_header_list): Parse the
80         WWW-Authenticate/Proxy-Authenticate header here, set realm, and
81         pass the params hash to the construct method.
82         (soup_auth_get_info): Return an identifier for the auth:
83         "SCHEME:REALM"
84
85         * libsoup/soup-auth-basic.c:
86         * libsoup/soup-auth-digest.c: update
87
88         * libsoup/soup-session.c (invalidate_auth, update_auth_internal):
89         use soup_auth_get_info().
90
91 2007-09-24  Dan Winship  <danw@gnome.org>
92
93         * libsoup/soup-date.c (soup_date_parse): minor rfc850-date parsing
94         improvement suggested by RFC2616 19.3.
95
96         * libsoup/soup-headers.c (soup_headers_parse_request): allow
97         erroneous trailing whitespace after HTTP version. #475169
98
99         * libsoup/soup-message-server-io.c (parse_request_headers): fix
100         the parsing of the Host header to assume it already includes the
101         port (which it should; the only reason this ever worked is because
102         SoupUri ignores the second port number when parse_request_headers
103         generates a URL like "http://localhost:9999:9999/").
104
105         * tests/header-parsing.c (reqtests): add a test for #475169
106
107 2007-09-23  Dan Winship  <danw@gnome.org>
108
109         * libsoup/soup-message.c (soup_message_class_init): remove a
110         mysterious partial sentence in the ::wrote-chunk docstring.
111         #458116
112
113         * docs/reference/libsoup-sections.txt: Remove documentation of MD5
114         methods, which are not public. #440092
115
116 2007-09-23  Dan Winship  <danw@gnome.org>
117
118         * libsoup/soup-message.c (soup_message_set_auth)
119         (soup_message_set_proxy_auth): Only remove the Authorization /
120         Proxy-Authorization header from the message if it was previously
121         set by soup_message_set_auth(). (Eg, not if it was added by
122         SoupConnectionNTLM.) #471389
123
124         * libsoup/soup-connection-ntlm.h: fix a search-and-replace-o
125
126         * tests/ntlm-test.c: Simple NTLM regression test; doesn't really
127         test the crypto/encoding bits, just that the right headers are
128         being sent at the right times.
129
130 2007-09-14  Dan Winship  <danw@gnome.org>
131
132         Make "make check" pass on Fedora 7:
133
134         * configure.in: update apache/php tests with additional filenames
135
136         * tests/httpd.conf.in: updates for configure.in changes and
137         slightly-more-recent apache
138
139         * tests/ssl-test.c (start_writing): fix uninitialized struct field
140         (main): start server after setting up client since otherwise
141         there's a race condition since soup_gnutls_init() isn't actually
142         thread-safe. (FIXME)
143
144         * tests/xmlrpc-server.php: rewrite to not use $HTTP_RAW_POST_DATA
145         (which only exists if register_globals is set)
146
147 2007-06-01  Dan Winship  <danw@novell.com>
148
149         * libsoup/soup-message-filter.h (SOUP_IS_MESSAGE_FILTER_CLASS):
150         fix. noted by "cascardo" on libsoup-list.
151
152 2007-05-16  Jonathon Jongsma  <jjongsma@gnome.org>
153
154         * libsoup/*.h: add G_BEGIN_DECLS / G_END_DECLS to all installed
155         headers so that libsoup can be used from C++ programs. #438776
156
157 2007-04-16  Dan Winship  <danw@novell.com>
158
159         * libsoup/soup-ssl.h: Make a real SoupSSLCredentials type rather
160         than just using gpointer
161
162         * libsoup/soup-server.c (SoupServerPrivate): use it
163
164         * libsoup/soup-session.c (SoupSessionPrivate): use it
165
166         * libsoup/soup-gnutls.c: Use it, and consistently use "creds"
167         rather than "cred" as the abbreviation for "credentials".
168
169         * docs/reference/libsoup-sections.txt:
170         * docs/reference/tmpl/soup-misc.sgml: 
171         * docs/reference/tmpl/soup-ssl.sgml: update
172         
173 2007-03-29  Dan Winship  <danw@novell.com>
174
175         * libsoup/soup-session-sync.c (queue_message): Implement this by
176         sending the message (synchronously) in another thread and then
177         queueing the callback back in the main thread.
178
179         * libsoup/soup-session.c (soup_session_queue_message): update docs
180         to be more explicit about what thread the callback occurs in
181
182 2007-03-17  Dan Winship  <danw@novell.com>
183
184         * libsoup/soup-message.c (soup_message_set_auth)
185         (soup_message_get_auth, soup_message_set_proxy_auth)
186         (soup_message_get_proxy_auth): get/set auth/proxy_auth info for a
187         message.
188
189         * libsoup/soup-session.c (add_auth): Use soup_message_set_auth and
190         soup_message_set_proxy_auth.
191         (update_auth_internal): Call soup_message_get_auth or
192         soup_message_get_proxy_auth to determine the message's prior auth,
193         rather than calling lookup_auth() again, since it isn't guaranteed
194         to return the same thing now as it did when the message was
195         originally sent. Fixes erroneous 401s when queuing multiple
196         messages at once to an as-yet-unauthenticated-to server. #271540
197
198         * libsoup/soup-session-async.c (queue_message): don't run the
199         queue right away, do it at idle time. Otherwise in some cases
200         (especially errors), the message callbacks could be invoked before
201         queue_message returns.
202
203         * tests/auth-test.c: add a regression test for #271540.
204
205 2007-03-17  Dan Winship  <danw@novell.com>
206
207         * configure.in: require glib 2.12. check for timegm().
208
209         * libsoup/soup-date.c (soup_mktime_utc): Use timegm if available.
210         (soup_date_iso8601_parse): use g_time_val_from_iso8601. #337010,
211         patch from Emmanuele Bassi.
212
213         * libsoup/soup-types.h: remove local copy of
214         G_GNUC_NULL_TERMINATED since we now depend on a new-enough copy of
215         glib.
216
217         * libsoup/soup-misc.c (soup_base64_encode_close)
218         (soup_base64_encode_step, soup_base64_encode)
219         (soup_base64_decode_step): Make these just be wrappers around the
220         glib base64 methods. (For now; eventually they'll just go away.)
221
222         * libsoup/soup-auth-basic.c (authenticate): 
223         * libsoup/soup-auth-digest.c (authenticate):
224         * libsoup/soup-connection-ntlm.c (soup_ntlm_parse_challenge)
225         (soup_ntlm_response): 
226         * libsoup/soup-server-auth.c (soup_server_auth_new): 
227         * libsoup/soup-soap-message.c (soup_soap_message_write_base64): 
228         * libsoup/soup-xmlrpc-message.c
229         (soup_xmlrpc_message_write_base64): 
230         * libsoup/soup-xmlrpc-response.c (soup_xmlrpc_value_get_base64):
231         Use glib base64 methods
232
233 2007-03-16  Dan Winship  <danw@novell.com>
234
235         * libsoup/soup-message.c (soup_message_get_response_encoding):
236         update the handling of CONNECT: it has no response body by
237         default, but does have a body if its headers say so.
238
239         * tests/proxy-test.c: test libsoup's behavior when talking to
240         proxies.
241
242         * tests/httpd.conf.in: Load mod_proxy and mod_ssl, and add
243         sections configuring them, for proxy-test
244
245         * configure.in: update the apache-module-dir-finding code to deal
246         with the fact that some modules (eg, mod_ssl) might only be in the
247         mpm-specific module dir, while others (eg, mod_php5) might only be
248         in the generic module dir.
249
250 2007-03-12  Dan Winship  <danw@novell.com>
251
252         * tests/Makefile.am (INCLUDES): add $(LIBGNUTLS_CFLAGS) for
253         ssl-test. #417617, patch from Elijah Newren.
254
255 2007-03-12  Dan Winship  <danw@novell.com>
256
257         * libsoup/soup-session-sync.c (wait_for_connection): if
258         soup_connection_connect_sync() returns SOUP_STATUS_TRY_AGAIN, then
259         try again. (Duh.) Fixes SSL-via-proxy-when-using-synchronous-I/O-
260         where-the-proxy-closes-the-connection-when-returning-407. (Reported
261         by Varadhan.)
262
263         * tests/get.c: Rewrite to use soup_session_send_message rather
264         than soup_session_queue_message, and add a "-s" flag to use
265         SoupSessionSync rather than SoupSessionAsync (so we can test bugs
266         in the sync code paths).
267
268 2007-03-08  Dan Winship  <danw@novell.com>
269
270         * libsoup/soup-gnutls.c (do_handshake): don't return
271         G_IO_STATUS_AGAIN if we're doing blocking I/O; just keep retrying
272         until the handshake is complete.
273         (soup_gnutls_read, soup_gnutls_write): if we get
274         GNUTLS_E_REHANDSHAKE, call do_handshake() immediately rather than
275         returning G_IO_STATUS_AGAIN; if the socket is blocking then
276         G_IO_STATUS_AGAIN is wrong, and if the socket is non-blocking, we
277         might already need to return SOUP_SSL_ERROR_HANDSHAKE_NEEDS_WRITE
278         or SOUP_SSL_ERROR_HANDSHAKE_NEEDS_READ.
279
280         #415402, based on a patch from Jacob Berkman.
281
282         * tests/ssl-test.c: basic ssl test. In particular, tests that
283         rehandshake requests are handled correctly during both synchronous
284         and asynchronous I/O. Might eventually test other stuff too...
285
286         * configure.in: 
287         * tests/Makefile.am: updates for ssl-test
288
289 2007-02-19  Dan Winship  <danw@novell.com>
290
291         * configure.in: Get gcrypt libs/cflags.
292
293         * libsoup/Makefile.am (INCLUDES, libsoup_2_2_la_LIBADD): add
294         gcrypt flags. Patch from "Cygwin Ports Maintainer", #384498
295
296 2007-02-12  Dan Winship  <danw@novell.com>
297
298         * configure.in: 2.2.100
299
300 2007-02-12  Dan Winship  <danw@novell.com>
301
302         * libsoup/soup-headers.c (soup_headers_parse_status_line): Fix
303         this to handle "\0"-terminated status lines (eg, from WebDAV
304         responses), like the docs say it does. #406997
305         (soup_headers_parse): Balance that out by rejecting internal "\0"s
306         here.
307         (soup_headers_parse_request, soup_headers_parse_response): Update
308         docs to warn that @dest may be modified even on error. (This was
309         always true, it just wasn't documented.)
310
311 2007-01-16  Dan Winship  <danw@novell.com>
312
313         * tests/header-parsing.c (do_request_tests, do_response_tests):
314         initialize "errors" to 0. duh. Pointed out by Michael Wolf.
315
316 2007-01-08  Dan Winship  <danw@novell.com>
317
318         * configure.in: 2.2.99
319
320         * NEWS: update
321
322 2007-01-06  Dan Winship  <danw@novell.com>
323
324         * libsoup/soup-headers.c (soup_headers_parse): Rewrite this to be
325         easier to understand and more correct, and make the "str" param
326         const rather than overwriting it during parsing.
327         (soup_headers_parse_request, soup_headers_parse_response):
328         Likewise, make "str" param const. Fix the doc comment to describe
329         the correct constraint on str. Make the parsing slightly more
330         lenient as per sections 4.1 and 19.3 of RFC 2616.
331
332         * tests/header-parsing.c: new regression test, for Request-Line,
333         Status-Line, and message-header parsing.
334
335         Inspired by #391970 (crash in SoupServer when certain invalid
336         requests are received).
337
338 2006-12-05  Dan Winship  <danw@novell.com>
339
340         * libsoup/soup-message.c (soup_message_set_uri): Remove the calls
341         to soup_message_io_stop() here; the corresponding calls were
342         needed back in the SoupContext days, but they are wrong now and
343         cause async-redirects-to-other-hosts to fail. #382251. Also
344         clarify docs with respect to soup_session_requeue_message().
345
346         * libsoup/soup-message-io.c (soup_message_io_stop): Clarify docs
347
348         * libsoup/soup-session.c (finalize): Free ssl_creds. Pointed out
349         by Chris Austin.
350
351 2006-11-20  Dan Winship  <danw@novell.com>
352
353         * configure.in: 2.2.98
354
355         * NEWS: update
356
357 2006-11-20  Dan Winship  <danw@novell.com>
358
359         Patch from Andrew W. Nosenko:
360
361         * libsoup/soup-message-client-io.c (parse_response_headers): Avoid
362         memory leak when parse_response_headers() is called on a message
363         that has a 'reason_phrase' already for some reason.
364
365         * libsoup/soup-gnutls.c (soup_gnutls_free): Avoid memory leak:
366         hostname was not freed.
367         (soup_ssl_wrap_iochannel): Avoid memory leak: SoupGNUTLSChannel
368         'chan' was not freed in case of initialization error. Avoid double
369         close of the "real" (plain, non-ssl) channel FD.
370         
371         * libsoup/soup-socket.c (soup_socket_start_proxy_ssl): Avoid
372         memory leak: the "real" (plain, non-ssl) GIOChannel was never
373         "finally" unreffed (one more *_ref() than *_unref()) in case of
374         ssl-wrapping.
375
376 2006-11-20  Dan Winship  <danw@novell.com>
377
378         * libsoup/soup-connection-ntlm.c (send_request): 
379         * libsoup/soup-session-sync.c (queue_message): 
380         * libsoup/soup-status.c (reason_phrases): Add some missing
381         "static"s. Patch from Matthias Clasen, #376387
382
383         * libsoup/soup-xmlrpc-response.c (soup_xmlrpc_value_get_type)
384         (soup_xmlrpc_value_get_string): <value>foo</value> should mean the
385         same thing as <value><string>foo</string></value>. Pointed out by
386         Todd Kulesza. #364490
387
388 2006-11-06  Dan Winship  <danw@novell.com>
389
390         * configure.in: Bump version to 2.2.97. Bump AGE and CURRENT for
391         addition of soup_xml_real_node.
392
393         * NEWS: update
394
395 2006-11-06  Dan Winship  <danw@novell.com>
396
397         * libsoup/soup-misc.c (soup_xml_real_node): new method to find a
398         "real" (ie, not comment or whitespace) xml node
399
400         * libsoup/soup-soap-response.c (parse_parameters) 
401         (soup_soap_response_from_string) 
402         (soup_soap_parameter_get_first_child) 
403         (soup_soap_parameter_get_next_child): Use soup_xml_real_node.
404         Based on a patch from Andrew W. Nosenko.
405
406         * libsoup/soup-xmlrpc-message.c (soup_xmlrpc_message_from_string):
407         don't call xmlKeepBlanksDefault, which changes libxml's behavior
408         globally! Instead, use soup_xml_real_node() when traversing the
409         xml tree.
410
411         * libsoup/soup-xmlrpc-response.c
412         (soup_xmlrpc_response_from_string): don't call
413         xmlKeepBlanksDefault.
414         (exactly_one_child): rewrite in terms of soup_xml_real_node()
415         (which means it handles comments now as well)
416         (soup_xmlrpc_value_get_struct)
417         (soup_xmlrpc_value_array_get_iterator)
418         (soup_xmlrpc_value_array_iterator_prev)
419         (soup_xmlrpc_value_array_iterator_next): Use soup_xml_real_node.
420
421 2006-11-05  Dan Winship  <danw@novell.com>
422
423         * libsoup/soup-headers.c (soup_headers_parse_request): document
424         this (in particular, point out that str+len must point to exactly
425         the right place). Allow req_method and req_path to be NULL.
426         (soup_headers_parse_status_line, soup_headers_parse_response):
427         document. Also, change "status_phrase" argument to "reason_phrase"
428         to match the spec. Inspired by #339889.
429
430 2006-11-03  Dan Winship  <danw@novell.com>
431
432         * libsoup/*.c: fix lots of warnings. Partially from patches from
433         Andrew W. Nosenko, and also some fixes from libsoup-pre214-branch.
434         
435 2006-11-03  Dan Winship  <danw@novell.com>
436
437         * Makefile.am (uninstall-local): uninstall the pkgconfig file.
438         Based on #356809 from Matthew Barnes.
439
440         * libsoup/soup-server.c (get_property): Fix leaks pointed out by
441         Paolo Borelli. #351500
442
443         * libsoup/soup-uri.c (soup_uri_get_protocol): Fix an off by one
444         pointed out by Andrew W. Nosenko.
445
446         * configure.in: Use pkgconfig to find gnutls. Remove old static
447         linking stuff that was only needed for rcd.
448
449         * acinclude.m4: remove gnutls stuff
450
451         * libsoup.pc.in: Use Requires rather than putting xml/ssl
452         dependencies directly into Libs/Cflags. From Mikhail Zabaluev.
453         #343340.
454
455         * libsoup/Makefile.am (libsoup_2_2_la_LDFLAGS): fix build on
456         cygwin. From "Cygwin Ports maintainer", #321827.
457
458 2006-07-24  Dan Winship  <danw@novell.com>
459
460         * configure.in: 2.2.96. bump AGE and CURRENT for new API
461
462         * NEWS: update
463
464         * libsoup/soup-xmlrpc-message.c (soup_xmlrpc_message_from_string):
465         New, from Fernando Herrera, bug 348532.
466
467 2006-07-21  Dan Winship  <danw@novell.com>
468
469         * libsoup/soup-auth.c (soup_auth_new_from_header_list): if the
470         constructed auth doesn't have a realm, it's invalid, as per RFC
471         2617. Based on a patch from Nate Nielsen on libsoup-list.
472         (soup_auth_get_realm): remove "if available" from docs; all auths
473         always have a realm.
474
475         * libsoup/soup-message-server-io.c (get_response_headers): If the
476         server handler set a Content-Length header on the message, don't
477         add a second one. (Preserves compatibility with an old hacky way
478         that people might have been handling HEAD from SoupServer.)
479
480         * README: update to mention mailing list and bugzilla
481
482         * HACKING: kill this since there's nothing here that isn't either
483         obvious, or redundant with the README
484
485 2006-07-21  Dan Winship  <danw@novell.com>
486
487         * libsoup/soup-server-message.c (soup_server_message_init):
488         initialize encoding to SOUP_TRANSFER_CONTENT_LENGTH rather than
489         SOUP_TRANSFER_UNKNOWN, since SOUP_TRANSFER_UNKNOWN has never
490         actually worked here, and so there was an undocumented requirement
491         that you manually set the encoding on every response
492         (which SoupServer itself was not doing on internal errors).
493         Problem pointed out by Dennis Jacobfeuerborn on libsoup-list.
494         (soup_server_message_set_encoding): reject the new
495         SoupTransferEncoding values, for compatibility
496
497         * libsoup/soup-message.h (SoupTransferEncoding): Clarify that
498         SOUP_TRANSFER_UNKNOWN is essentially an error value, since in the
499         public API, it always has been, due to bugs. Add some new values,
500         currently just for internal use: SOUP_TRANSFER_NONE (for cases
501         like HEAD which never have a body), SOUP_TRANSFER_EOF (to replace
502         SOUP_TRANSFER_UNKNOWN), and SOUP_TRANSFER_BYTERANGES (which isn't
503         actually implemented yet).
504
505         * libsoup/soup-message.c (soup_message_get_request_encoding,
506         soup_message_get_response_encoding): figure out the body encoding
507         being used by the request/response, including all the tricky
508         cases like HEAD/1xx/etc.
509         (soup_message_is_keepalive): if the response encoding is
510         SOUP_TRANSFER_EOF, then the message isn't keepalive.
511
512         * libsoup/soup-message-client-io.c (parse_response_headers): use
513         soup_message_get_response_encoding.
514
515         * libsoup/soup-message-server-io.c (parse_request_headers): use
516         soup_message_get_request_encoding.
517         (get_response_headers): use both soup_server_message_get_encoding
518         and soup_message_get_response_encoding, to properly distinguish
519         between the wire encoding and the alleged-by-headers encoding
520         (which differ for HEAD, etc).
521
522         * libsoup/soup-message-io.c (io_error, read_body_chunk):
523         s/SOUP_TRANSFER_UNKNOWN/SOUP_TRANSFER_EOF/.
524         (io_body_state): if encoding is SOUP_TRANSFER_NONE, jump right to
525         SOUP_MESSAGE_IO_STATE_FINISHING.
526
527         * libsoup/soup-server.c (request_finished): Check
528         soup_socket_is_connected() *before* soup_message_is_keepalive(),
529         since the message will be invalid if the client unexpectedly
530         dropped the connection.
531
532         * tests/simple-httpd.c (server_callback): handle HEAD requests.
533         Remove no-longer-necessary soup_server_message_set_encoding()
534         call.
535
536         * tests/get.c: add -d (debug) flag to print headers, and -h flag
537         to do a HEAD rather than GET
538
539 2006-07-10  Dan Winship  <danw@novell.com>
540
541         * configure.in: 2.2.95.1, and bump SOUP_AGE/SOUP_CURRENT this
542         time. Pointed out by Daniel Holbach.
543         
544 2006-07-10  Dan Winship  <danw@novell.com>
545
546         * configure.in: 2.2.95
547
548         * NEWS: update
549
550 2006-06-19  Dan Winship  <danw@novell.com>
551
552         * tests/Makefile.am (noinst_PROGRAMS): don't build xmlrpc-test
553         unless we have apache/php/xmlrpc-epi. Fixes the build. #345342
554
555         * configure.in: fix some quoting
556
557 2006-06-14  Dan Winship  <danw@novell.com>
558
559         * configure.in: add tests for apache mod_php5 and xmlrpc-epi-php
560
561         * tests/xmlrpc-test.c: XML-RPC regression test
562
563         * tests/xmlrpc-server.php: PHP server for xmlrpc-test
564
565         * tests/httpd.conf.in: add php stuff
566
567         * tests/apache-wrapper.c (apache_cleanup): Use "graceful-stop"
568         rather than "stop", so that it stops listening on the socket
569         before exiting, so that we can immediately start another apache
570         (eg, in "make check").
571
572         * libsoup/soup-date.c (soup_mktime_utc): Fix a bug in leap-year
573         counting.
574
575         * libsoup/soup-xmlrpc-message.c
576         (soup_xmlrpc_message_write_datetime): rename from
577         "..._write_time", to make it consistent with the XML-RPC type name
578         and the corresponding SoupXmlrpcResponse method. Also, fix it to
579         use the same ISO 8601 format as the spec, and use the right value
580         for the seconds field.
581         (soup_xmlrpc_message_write_base64): Change the buf arg to a
582         gconstpointer rather than a const char *.
583
584         * libsoup/soup-xmlrpc-response.c (soup_xmlrpc_value_get_base64):
585         Return a GByteArray containing the decoded data, rather than
586         the base64-encoded string.
587         (soup_xmlrpc_value_dump_internal): Update for that (and don't
588         leak it).
589         (soup_xmlrpc_value_array_get_iterator,
590         soup_xmlrpc_value_array_iterator_get_value): Make these actually
591         work.
592
593 2006-06-12  Dan Winship  <danw@novell.com>
594
595         * configure.in: 2.2.94
596
597         * NEWS: update
598
599 2006-06-12  Dan Winship  <danw@novell.com>
600
601         * docs/reference/client-howto.xml: 
602         * docs/reference/server-howto.xml: New client and server API
603         tutorials.
604
605         * docs/reference/*: reorganize, regenerate, fill in some missing
606         pieces, etc
607
608         * libsoup/soup-connection.c (soup_connection_new): document the
609         varargs param
610
611         * libsoup/soup-date.h: sync prototypes to declarations for gtk-doc.
612
613         * libsoup/soup-headers.c (soup_headers_parse_response): fix typo
614         in doc.
615
616 2006-06-12  Dan Winship  <danw@novell.com>
617
618         * libsoup/soup-xmlrpc-response.c (soup_xmlrpc_value_get_int,
619         soup_xmlrpc_value_get_double): Further fixes from Brent Smith.
620         #344458.
621         (soup_xmlrpc_value_get_boolean): Similar fix, plus actually set
622         the output parameter and make the return value match the other
623         get_* methods.
624
625 2006-06-09  Dan Winship  <danw@novell.com>
626
627         * configure.in: Add tests for apache, output tests/httpd.conf
628
629         * tests/htdigest: 
630         * tests/htpasswd: 
631         * tests/httpd.conf.in: Apache 2.2 config files for auth-test
632
633         * tests/apache-wrapper.c (apache_init, apache_cleanup): functions
634         to start/stop apache
635
636         * tests/auth-test.c: Use apache-wrapper functions to start a local
637         apache process to test authentication against, since the auth-test
638         tree at developer.ximian.com went missing a long time ago. #311825
639
640         * tests/Makefile.am (auth_test_SOURCES): use apache-wrapper.c
641         (TESTS): include auth-test if HAVE_APACHE.
642
643         * libsoup/soup-session.c (lookup_auth): Fix this in the case of a
644         URI pointing to a directory rather than a file.
645
646 2006-06-08  Dan Winship  <danw@novell.com>
647
648         * libsoup/soup-xmlrpc-response.c (soup_xmlrpc_value_get_int,
649         soup_xmlrpc_value_get_double, soup_xmlrpc_value_get_boolean):
650         Check return value of strtol/g_ascii_strtod correctly. #344222,
651         patch from Brent Smith.
652
653 2006-06-07  Dan Winship  <danw@novell.com>
654
655         * libsoup/soup-xmlrpc-response.c
656         (soup_xmlrpc_response_from_string): record whether or not the
657         response was a fault.
658         (soup_xmlrpc_response_is_fault): test that. #343973, patch from
659         Brent Smith.
660
661 2006-05-29  Dan Winship  <danw@novell.com>
662
663         * configure.in: 2.2.93
664
665         * NEWS: update
666
667 2006-05-29  Dan Winship  <danw@novell.com>
668
669         * libsoup/soup-message-io.c (SoupMessageIOState): add a new state
670         "FINISHING" which means "done I/O, but not yet done processing and
671         cleanup" before "DONE" (which now always means "completely done").
672         (soup_message_io_stop): disconnect the socket if the read state is
673         "< FINISHING", not "!= DONE".
674         (io_error): on an EOF-that-signals-end-of-data, set state to
675         FINISHING and run io_read().
676         (io_read, io_write): remove the g_return_if_fails from before.
677         s/DONE/FINISHING/ in most places. In the FINISHING handler, stop
678         listening for the readable/writable signal (eg, so we don't end up
679         reading a following pipelined request), and set the state to DONE.
680         (soup_message_io_unpause): Only reconnect the readable/writable
681         signals if the io state isn't DONE. Guard the calls to
682         io_read/io_write better so that it's safe to call this even after
683         they are both DONE, since it may be easier for us to test that
684         than for the caller to.
685
686         Fixes 334469, 342640, and another bug caused by the earlier
687         workaround to 334469. Based on patches and analysis from William
688         Jon McCann and Armin Bauer.
689
690         * tests/simple-proxy.c (main): add g_thread_init (NULL) to make
691         this work again. (Pointed out by Alex Larsson)
692
693 2006-05-26  Dan Winship  <danw@novell.com>
694
695         * libsoup/soup-socket.c: #include <sys/time.h> for struct timeval.
696         #342048
697
698         * libsoup/soup-connection.c (soup_connection_connect_sync): Start
699         SSL after CONNECTing! Doh. Part of bnc #174255.
700         (SoupConnectionMode): new enum for the three types of
701         SoupConnection (direct, proxy, tunnel).
702         (set_property): set priv->mode according to proxy_uri and
703         conn_uri.
704         (socket_connect_result, soup_connection_connect_sync): use
705         priv->mode to decide whether or not to tunnel.
706         (send_request): Only pass TRUE for is_proxy to
707         soup_message_send_request if mode is PROXY, not if it's TUNNEL.
708         (Also part of bnc #174255).
709
710 2006-05-26  Dan Winship  <danw@novell.com>
711
712         * libsoup/soup-message-io.c (soup_message_io_in_progress): tests
713         if IO is currently in progress on a message.
714
715         * libsoup/soup-session-async.c (run_queue): don't process messages
716         that are io_in_progress. #342545, fix based on analysis from Wang
717         Xin. (In the future we may want to re-fix this by adding a
718         REQUEUED message status separate from QUEUED.)
719
720 2006-05-22  Dan Winship  <danw@novell.com>
721
722         * libsoup/soup-session.c (cleanup_hosts): Don't free the hosts
723         while holding host_lock; that's not allowed and can cause
724         deadlock. #309867. Based on a patch from Veerapuram Varadhan for
725         part of bnc #174255.
726
727 2006-04-10  Dan Winship  <danw@novell.com>
728
729         * configure.in: bump version to 2.2.92
730
731         * NEWS: update
732
733 2006-04-10  Dan Winship  <danw@novell.com>
734
735         * libsoup/soup-message-io.c (io_write, io_read): g_return_if_fail
736         if these get called after the IO is done. This isn't supposed to
737         happen, but apparently does. Workaround for #334469.
738
739         * libsoup/soup-auth-digest.c (qop_types, algorithm_types):
740         NULL-terminate these so we don't crash when trying to parse an
741         invalid value. (Flip side of the previous #328615 patch.)
742
743 2006-04-02  Dan Winship  <danw@novell.com>
744
745         * libsoup/soup-server-auth.c (soup_server_auth_context_challenge):
746         Write out correct digest algorithm value. #328615.
747
748         * libsoup/soup-headers.c (soup_headers_parse_request): Rewrite
749         Request-Line-parsing code to not have a lame max length. #335040.
750
751         * Makefile.am (install-data-local): Install the .pc file mode 644,
752         not 755. #330878
753
754         * libsoup/soup-auth-digest.c:
755         * libsoup/soup-auth.c:
756         * libsoup/soup-message-client-io.c:
757         * libsoup/soup-message-server-io.c:
758         * libsoup/soup-message.c:
759         * libsoup/soup-method.c:
760         * libsoup/soup-server-auth.c:
761         * tests/get.c: replace locale-ish strcasecmps with
762         g_ascii_strcasecmp
763
764         * libsoup/*.c: fix most signed/unsigned mismatch warnings
765
766 2006-03-03  Dan Winship  <danw@novell.com>
767
768         * configure.in: bump version to 2.2.91.
769
770         * NEWS: Update
771
772 2006-03-03  Dan Winship  <danw@novell.com>
773
774         * libsoup/soup-dns.c (soup_dns_lookup_resolve_async): Take a
775         GMainContext as well, and update the resolution code to dispatch
776         each lookup result in the correct context.
777
778         * libsoup/soup-address.c (soup_address_resolve_async_full): New
779         method that takes a GMainContext to pass to
780         soup_dns_lookup_resolve_async.
781
782         * libsoup/soup-socket.c (soup_socket_connect): Use
783         soup_address_resolve_async_full. Fixes a problem reported by Armin
784         Bauer.
785
786         * configure.in: update to require glib 2.6, since apparently the
787         code does.
788
789 2006-02-25  Veerapuram Varadhan <vvaradhan@novell.com>
790
791         * libsoup/soup-connection.c:
792         * libsoup/soup-session.c:
793         * libsoup/soup-socket.c: add a "timeout" property,
794         which gets passed from server to socket, and session to connection
795         to socket, allowing blocking non-responsive sync connections to 
796         return.  Combination of "EAGAIN" && "Blocking" connection is treated
797         as error and the connection will be terminated and the control 
798         is returned to the caller immediately.
799                 
800 2006-02-02  Tor Lillqvist  <tml@novell.com>
801
802         * configure.in: Don't use getaddrinfo() etc or try to support IPv6
803         on Windows, as they are present by default on XP only. We do want
804         to support Windows 2000, too.
805
806 2005-12-21  Dan Winship  <danw@novell.com>
807
808         * libsoup/soup-date.c (soup_date_iso8601_parse): fix two bugs in
809         the YYYYMMDD case.
810
811         * tests/date.c: add three more ISO 8601 cases, to exercise all the
812         code paths.
813
814         #324671, from Emmanuele Bassi
815         
816 2005-11-25  Dan Winship  <danw@novell.com>
817
818         * README: sync to text on wiki, and point to wiki
819
820         * TODO: moved to http://live.gnome.org/LibSoup_2fToDo
821
822 2005-11-17  Dan Winship  <danw@novell.com>
823
824         * libsoup/soup-message-io.c (io_cleanup): clear priv->io_data
825         right away, to protect against this being re-entered mid-cleanup
826         (when we unref the connection). #321208, based on a patch from
827         Jedy Wang.
828
829 2005-11-16  Dan Winship  <danw@novell.com>
830
831         * libsoup/soup-xmlrpc-message.c
832         (soup_xmlrpc_message_start_member): add the "name" element to the
833         struct member. #321362, patch from Sebastian Bauer.
834
835 2005-11-10  Dan Winship  <danw@novell.com>
836
837         * configure.in: bump version to 2.2.90. This will not be
838         officially released, but once these patches have gotten some
839         testing they may be pulled up to the gnome-2-12 branch.
840
841         * libsoup/soup-connection.c:
842         * libsoup/soup-server.c: 
843         * libsoup/soup-session.c: 
844         * libsoup/soup-socket.c: add an "async-context" property,
845         which gets passed from server to socket, and session to connection
846         to socket, allowing async usage outside the main thread. Based on
847         patches from Armin Bauer and Jürg Billeter.
848
849         * libsoup/soup-misc.c (soup_add_io_watch, soup_add_idle,
850         soup_add_timeout): utility routines to add watches, idles, and
851         timeouts to non-default GMainContexts.
852
853         * libsoup/soup-message-io.c (io_write): set the read state
854         appropriately after writing a "100 Continue" response
855         (io_read): More 100-Continue stuff. I don't think this is quite
856         right so it will probably change again later.
857
858 2005-11-01  Dan Winship  <danw@novell.com>
859
860         * docs/reference/libsoup-docs.sgml: tell it to generate an index
861
862         * docs/reference/tmpl/*.sgml: regen with newer gtk-doc
863
864 2005-11-01  Dan Winship  <danw@novell.com>
865
866         * libsoup/soup-connection.c (set_current_request,
867         clear_current_request): Cast the argument to
868         g_object_add/remove_weak_pointer to the wrong type, to make gcc
869         4.1 happy, because C is stupid and "void **" means "a pointer to a
870         void *", not "a pointer to any kind of pointer".
871
872         * libsoup/soup-xmlrpc-response.c
873         (soup_xmlrpc_value_dump_internal): fix gccism. #320349, from
874         Roland Illig.
875
876 2005-10-27  Dan Winship  <danw@novell.com>
877
878         * libsoup/soup-socket.c (soup_socket_client_new_async,
879         soup_socket_client_new_sync): unref the SoupAddress passed to
880         soup_socket_connect to avoid a leak. Based on a patch from Wang
881         Xin.
882         (socket_read_watch, read_from_network, socket_write_watch,
883         soup_socket_write): request and handle G_IO_ERR and G_IO_HUP
884         events when polling, since poll() will return them whether or not
885         you asked for them, but glib will ignore them unless you did,
886         which will result in CPU suckage if such an error occurs. #319305,
887         patch from Jonathan Matthew.
888
889 2005-10-27  Dan Winship  <danw@novell.com>
890
891         bgo #316313 / bnc #116762, and probably also bgo #318252
892
893         * libsoup/soup-message-io.c (soup_message_io_stop): clear io->conn
894         after releasing it, to make sure we can't accidentally release it
895         twice.
896
897         * libsoup/soup-connection.c (clear_current_request): Call
898         soup_message_io_stop() on the cleared request.
899
900         * libsoup/soup-connection-ntlm.c (ntlm_authorize_post): do a
901         little dance here to make sure the session can't queue another
902         message on the connection while we're in the process of requeuing
903         the original one.
904
905 2005-08-30  Tor Lillqvist  <tml@novell.com>
906
907         * libsoup-zip.in: Include documentation in developer zipfile.
908
909 2005-08-22  Dan Winship  <danw@novell.com>
910
911         * libsoup/soup-soap-message.c (soup_soap_message_class_init): Call
912         g_type_class_add_private.
913
914         * configure.in: Bump to 2.2.6.1
915
916         * NEWS: update
917
918 2005-08-22  Dan Winship  <danw@novell.com>
919
920         * configure.in: Bump to 2.2.6. Bump SOUP_AGE and SOUP_CURRENT for
921         soup_server_get_socket() addition.
922
923         * NEWS: update
924
925 2005-08-22  Dan Winship  <danw@novell.com>
926
927         * libsoup/soup-connection.c (set_current_request,
928         clear_current_request): Fix g_object_add/remove_weak_pointer usage
929         to prevent a crash when canceling a request. From Tambet.
930
931 2005-08-16  Dan Winship  <danw@novell.com>
932
933         Fix a connection leak reported by Tambet.
934
935         * libsoup/soup-connection.c (send_request): rather than tracking
936         the message progress via signals, call
937         soup_message_send_request_internal() and have it call
938         soup_connection_release() when it's done.
939         (request_restarted, request_done): gone
940         (clear_current_request): handle disconnecting (if necessary) and
941         updating last_used time here.
942         (soup_connection_release): Call clear_current_request().
943         (dispose): Call clear_current_request()
944
945         * libsoup/soup-message-client-io.c
946         (soup_message_send_request_internal): New. Takes a SoupConnection
947         in addition to the other args, and passes that on to
948         soup-message-io.
949
950         * libsoup/soup-message-io.c (SoupMessageIOData): add a
951         SoupConnection field.
952         (io_cleanup): if io->conn is set, unref it.
953         (soup_message_io_stop): if io->conn is set, and we ended in a
954         clean state, call soup_connection_release() on it.
955         (soup_message_io_client): Add a SoupConnection arg, which gets
956         reffed and stored in io->conn.
957
958         * TODO: misc updates
959
960 2005-08-15  Dan Winship  <danw@novell.com>
961
962         * libsoup/soup-connection.h (soup_connection_new):
963         * libsoup/soup-server.h (soup_server_new):
964         * libsoup/soup-session-async.h (soup_session_async_new_with_options): 
965         * libsoup/soup-session-sync.h (soup_session_sync_new_with_options): 
966         * libsoup/soup-socket.h (soup_socket_new): use G_GNUC_NULL_TERMINATED.
967
968         * libsoup/soup-types.h (G_GNUC_NULL_TERMINATED): steal the
969         definition of this from glib 2.8 for use when compiling against
970         glib 2.6.
971
972 2005-08-15  Tambet Ingo  <tambet@ximian.com>
973
974         * libsoup/soup-socket.c (update_fdflags, set_property): Fix compilation
975         errors.
976
977         * libsoup/soup-server.c (soup_server_get_listener): ditto.
978
979 2005-08-12  Dan Winship  <danw@novell.com>
980
981         * libsoup/soup-server.c (soup_server_get_listener): new method to
982         get the server's listening socket.
983
984         * libsoup/soup-socket.c: add a new "cloexec" property, to set
985         FD_CLOEXEC on the socket. Update everything for that.
986
987 2005-08-05  Dan Winship  <danw@novell.com>
988
989         * libsoup/soup-socket.c (finalize): Free priv->read_buf. From
990         Tambet.
991         (soup_socket_connect): Make sure that get_iochannel() gets called
992         if the connect succeeds right away, or the socket will fail on
993         the first read or write. [#312540]
994
995 2005-08-01  Dan Winship  <danw@novell.com>
996
997         * configure.in: drop version back down to 2.2.5 and
998         SOUP_API_VERSION back to 2.2; due to various snafus, there has
999         never yet been an official release of the 2.4 API and the GNOME
1000         2.12 betas have been shipping with libsoup 2.2 tarballs (while
1001         jhbuild has been using 2.4, with evolution and related packages
1002         having configure hacks to build against either). As there never
1003         ended up being any API-incompatible changes in the 2.4 series, we
1004         can just merge it back into the 2.2 series and kill off 2.4.
1005
1006         * NEWS: Copy in the 2.2-series news from the gnome-2-10 branch,
1007         and add new NEWS
1008
1009         * libsoup-zip.in: s/2.2/@SOUP_API_VERSION@/
1010
1011         * libsoup/Makefile.am (libsoupincludedir, lib_LTLIBRARIES,
1012         libsoup_2_2_la_LDFLAGS, libsoup_2_2_la_LIBADD,
1013         libsoup_2_2_la_SOURCES): s/4/2/ in all the places automake won't
1014         let us use a variable.
1015
1016 2005-08-01  Dan Winship  <danw@novell.com>
1017
1018         * libsoup/soup-md5-utils.c (soup_md5_final_hex): Finalize a
1019         SoupMD5Context and write out the digest in hex digits.
1020
1021         * libsoup/soup-auth-digest.c (authenticate, compute_response):
1022         * libsoup/soup-server-auth.c (check_digest_passwd): Use that,
1023         rather than duplicating the code in both places here.
1024
1025         Patch from Wim Lewis.
1026         
1027 2005-07-15  Dan Winship  <danw@novell.com>
1028
1029         * libsoup/soup-session.c (redirect_handler): Allow relative URIs,
1030         since some servers are lame. Based on a patch from Jean-Yves
1031         Lefort. [#270688]
1032
1033         * tests/uri-parsing.c: add some more tests to make sure that
1034         things that should be %-escaped do get %-escaped
1035
1036 2005-07-06  Tor Lillqvist  <tml@novell.com>
1037
1038         * libsoup/soup-date.c (soup_gmtime): Mention in the doc comment
1039         that gmtime() is thread-safe on Windows.
1040         (soup_date_generate): Use soup_gmtime() instead of gmtime_r().
1041
1042 2005-06-14  Dan Winship  <danw@novell.com>
1043
1044         * configure.in: check for gmtime_r
1045
1046         * libsoup/soup-date.c: date/time-manipulation functions
1047
1048         * libsoup/soup-xmlrpc-message.c: 
1049         * libsoup/soup-xmlrpc-response.c: XMLRPC message classes, from
1050         Mariano Suarez-Alvarez, Fernando Herrera, and Jeff Bailey.
1051         [#300227]
1052
1053         * tests/date.c: soup-date test code
1054
1055         * tests/getbug.c: XMLRPC test code. (Should be switched to use
1056         bugzilla.gnome.org once bgo supports XMLRPC.)
1057
1058         * TODO: XMLRPC is implemented now (but shares the problem with
1059         SOAP that the API is not very good).
1060
1061 2005-06-14  Dan Winship  <danw@novell.com>
1062
1063         * libsoup/*.[ch]: add/fix gtk-doc comments, make functions match
1064         prototypes, etc
1065
1066         * docs/reference/*: update, fix, etc
1067
1068 2005-06-13  Tor Lillqvist  <tml@novell.com>
1069
1070         * configure.in: Check also for inet_ntop(). Pre-cache knowledge
1071         that we do have inet_pton() and inet_ntop() on Windows (because we
1072         implement them ourselves in soup-dns.c).
1073         
1074         * libsoup/soup-dns.c (inet_pton, inet_ntop): Fix the Win32
1075         implementations, they were completely bogus.
1076         (soup_dns_ntop): Make it compile if HAVE_INET_NTOP.
1077
1078 2005-06-08  Dan Winship  <danw@novell.com>
1079
1080         * libsoup/soup-connection-ntlm.c (ntlm_authorize_pre): Fix this to
1081         use just the domain name for the domain, not the whole
1082         DOMAIN\username. Based on a patch by Jeroen Hautekeete in #306877.
1083
1084 2005-05-26  Dan Winship  <danw@novell.com>
1085
1086         * libsoup/soup-session.c (cleanup_hosts): lock host_lock around
1087         this, since it can be called from set_property(). Possible fix for
1088         bnc #81641.
1089
1090 2005-05-05  Dan Winship  <danw@novell.com>
1091
1092         * docs/reference/Makefile.am (SCANGOBJ_OPTIONS): Use
1093         --type-init-func to force g_thread_init to be called. [#302674]
1094
1095 2005-04-18  Tor Lillqvist  <tml@novell.com>
1096
1097         * configure.in: Call AC_LIBTOOL_WIN32_DLL. Check for Win32, set
1098         Automake conditional OS_WIN32. Pre-cache information that we do
1099         have getaddrinfo(), getnameinfo(), and IPv6 on Win32. (The tests
1100         wouldn't notice as they don't include the necessary headers or
1101         link with -lws2_32. Easiest to just pre-cache it.)
1102
1103         * libsoup-zip.in: New file, to build zipfile-based distribution of
1104         libsoup for Win32. 
1105
1106         * Makefile.am (EXTRA_DIST)
1107         * configure.in (AC_OUTPUT): Add libsoup-zip(.in).
1108
1109         * libsoup/Makefile.am: Use -no-undefined on Win32. Link with
1110         WinSock library -lws2_32.
1111         
1112         * libsoup/soup-portability.h: New file. On Unix it includes the
1113         traditional BSD socket etc headers. On Win32 it includes
1114         winsock2.h and ws2tcpip.h.
1115
1116         * libsoup/*.c
1117         * libsoup/*.h: Correspondingly, don't include the BSD socket API
1118         headers directly.
1119
1120         * libsoup/soup-address.h
1121         * libsoup/soup-dns.h: Include soup-portability.h
1122
1123         * libsoup/soup-address.c (soup_address_class_init): This function
1124         should get called before libsoup uses the WinSock API, so this is
1125         a good place to call WSAStartup().
1126         
1127         * libsoup/soup-auth-digest.c (get_protection_space): Use
1128         g_strsplit() instead of the relatively unportable strtok_r().
1129
1130         * libsoup/soun-dns.c: Remove unused headers. Implement
1131         inet_pton() and inet_ntop() on Win32 using WSAStringToAddress()
1132         and WSAAddressToString().
1133
1134         * libsoup/soup-socket.c (SOUP_CLOSE_SOCKET, SOUP_IS_SOCKET_ERROR,
1135         SOUP_IS_INVALID_SOCKET, SOUP_IS_CONNECT_STATUS_INPROGRESS):
1136         Portability macros.
1137         (soup_socket_class_init): Call soup_address_get_type() to make
1138         sure WSAStartup() gets called (through soup_address_class_init()).
1139         (update_fdflags): Use ioctlsocket(FIONBIO) on Win32.
1140         (soup_socket_write): Conditionalize SIGPIPE use.
1141         
1142         * tests/get.c: mkdir() is different in Microsoft's C library.
1143
1144         * tests/simple-httpd.c: Rename TRY_AGAIN label to AGAIN to avoid
1145         some clash with winsock2.h (which includes windows.h). The Win32
1146         headers pollute the namespace wildly.
1147
1148 2005-04-15  Dan Winship  <danw@novell.com>
1149
1150         * libsoup/soup-dns.c (resolve_name): make this work with
1151         pre-EAI_OVERFLOW glibc [#300620]
1152
1153 2005-04-12  Dan Winship  <danw@novell.com>
1154
1155         * configure.in: Remove the various gethostbyname_r checks and just
1156         check for getnameinfo/getaddrinfo.
1157
1158         * libsoup/soup-dns.c: de-nastify. Make this use threads instead of
1159         forking. Change the API around a bunch in the process.
1160
1161         * libsoup/soup-address.c: Update for soup-dns changes
1162
1163         * tests/dns.c: take multiple hostnames on the command line and
1164         resolve them all at once (patch from tml)
1165
1166 2005-04-11  Dan Winship  <danw@novell.com>
1167
1168         * configure.in: require glib-2.0 >= 2.4.0
1169
1170         * libsoup/*.c: use G_DEFINE_TYPE and
1171         g_type_class_add_private/G_TYPE_INSTANCE_GET_PRIVATE
1172
1173         * libsoup/soup-types.h: kill SOUP_MAKE_TYPE and
1174         SOUP_MAKE_TYPE_WITH_IFACE
1175
1176         * tests/revserver.c: use GThread. (patch from tml)
1177
1178 2005-04-11  Dan Winship  <danw@novell.com>
1179
1180         * configure.in: bump version to 2.3.0. bump SOUP_API_VERSION to
1181         2.4
1182
1183         * libsoup.pc.in: rename from libsoup-2.2.pc.in
1184
1185         * Makefile.am (EXTRA_DIST, pkgconfig_DATA, install-data-local):
1186         install the .pc file by hand, renaming it to include the
1187         SOUP_API_VERSION
1188
1189         * libsoup/Makefile.am: s/2.2/2.4/
1190
1191 2005-03-09  Dan Winship  <danw@novell.com>
1192
1193         * libsoup/soup-gnutls.c (soup_gnutls_read): return G_IO_STATUS_EOF
1194         if gnutls returns 0. [#73352]
1195         (verify_certificate): put an #ifdef around
1196         GNUTLS_CERT_NOT_TRUSTED so it works with gnutls 1.2.x. [#57811]
1197
1198 2005-01-08  Not Zed  <NotZed@Ximian.com>
1199
1200         ** See ximian bug #70323.
1201
1202         * libsoup/soup-connection-ntlm.c: replace all unsigned long/long
1203         types with guint32, as the code needs 32 bit longs.
1204
1205 2004-10-20  Dan Winship  <danw@novell.com>
1206
1207         * libsoup/soup-gnutls.c: Commit the alleged changes from the 10-06
1208         commit, which somehow did not actually get committed then.
1209
1210         * libsoup/soup-connection.c (SoupConnectionPrivate): add a flag
1211         indicating whether or not the connection is connected.
1212         (tunnel_connect_finished): If successful, set connected. If the
1213         server returns a 3xx response, translate it to 407 (under the
1214         assumption that it's trying to redirect us to an HTML login page,
1215         as in bug 68531). Use soup_socket_start_proxy_ssl() rather than
1216         soup_socket_start_ssl().
1217         (socket_connect_result, soup_connection_connect_sync): If
1218         successful, set connected
1219         (soup_connection_disconnect): Don't emit "disconnected" if we
1220         aren't yet connected, or the message that was waiting for this
1221         connection may get stranded in the queue. (also part of 68531)
1222
1223         * libsoup/soup-socket.c (soup_socket_start_proxy_ssl): New, starts
1224         SSL and lets the caller pass the expected hostname. Fixes a
1225         problem where SSL certification validation would always fail if
1226         you used a proxy, because it was comparing the cert against the
1227         proxy's hostname. (68583)
1228
1229 2004-10-06  Dan Winship  <danw@novell.com>
1230
1231         * libsoup/soup-ssl.h (SoupSocketError): add
1232         SOUP_SSL_ERROR_CERTIFICATE.
1233
1234         * libsoup/soup-gnutls.c (do_handshake): Pass the GError to
1235         verify_certificate.
1236         (verify_certificate): Set the GError appropriately rather than
1237         spewing g_warnings.
1238
1239         * libsoup/soup-socket.c (read_from_network, soup_socket_write): If
1240         the GIOChannel operation returns an error, store it as GOBject
1241         data on the socket (as a hack so soup-message-io.c can access it
1242         without us needing to change SoupSocket's API).
1243
1244         * libsoup/soup-message-io.c (io_error): peek at the socket's
1245         "last_error" datum and set the message's status to SSL_FAILED
1246         (with the GError's message string) rather than IO_ERROR, if
1247         appropriate. For 64414.
1248
1249 2004-09-30  Dan Winship  <danw@novell.com>
1250
1251         * libsoup/soup-gnutls.c (soup_gnutls_init): Add this, with some
1252         extra initialization needed for libgcrypt 1.2 or higher. Fixes
1253         66342.
1254         (soup_ssl_get_client_credentials,
1255         soup_ssl_get_server_credentials): Call soup_gnutls_init().
1256
1257 2004-08-26  Dan Winship  <danw@novell.com>
1258
1259         * configure.in: Bump version to 2.2.0.
1260
1261         * AUTHORS: Update this to reflect the last 2 years.
1262
1263         * NEWS: Brief summary of 1.99.x -> 2.2 changes
1264
1265         * README, TODO: Updates
1266
1267 2004-08-26  Dan Winship  <danw@novell.com>
1268
1269         * libsoup/*: add/fix lots of gtk-doc comments
1270         
1271         * libsoup/soup-misc.c (soup_str_case_hash, soup_str_case_equal):
1272         Fix bug noticed while documenting. (We were using the
1273         locale-case-insensitive functions rather than the g_ascii_ ones.)
1274
1275         * libsoup/soup-message.h (SoupMessageFlags): remove the (never
1276         implemented) NO_PIPELINE and NO_COOKIE flags.
1277
1278         * docs/reference/tmpl/*.sgml: Regenerate, fill in some stuff.
1279         There are still problems here with gtk-doc not recognizing many of
1280         the objects in libsoup...
1281
1282 2004-08-13  JP Rosevear  <jpr@novell.com>
1283
1284         * configure.in: bump version, libtool number
1285
1286 2004-08-09  Dan Winship  <danw@novell.com>
1287
1288         * libsoup/soup-connection.c (soup_connection_connect_sync): Don't
1289         use conn after emitting the "connect_result" signal, since it
1290         might be destroyed by that. Based on a patch from hpj.
1291
1292 2004-08-02  Dan Winship  <danw@novell.com>
1293
1294         * libsoup/soup-uri.h: Add flag "broken_encoding" to SoupUri.
1295
1296         * libsoup/soup-uri.c: (soup_uri_to_string): if broken_encoding is
1297         set, don't re-encode the URL parts. Based on a patch by
1298         Alfred.Peng@Sun.COM.
1299
1300 2004-07-19  JP Rosevear  <jpr@novell.com>
1301
1302         * configure.in: bump version, libtool number
1303
1304 2004-07-15  Dan Winship  <danw@novell.com>
1305
1306         * libsoup/soup-session-sync.c (send_message): Simplify this. If
1307         the message comes back from soup_connection_send_request not
1308         FINISHED, get a new connection rather than reusing the old one.
1309         This fixes a race condition in which a connection could end up
1310         double-booked, and fixes the handling of messages that get
1311         redirected to another server.
1312
1313 2004-07-13  Dan Winship  <danw@novell.com>
1314
1315         * libsoup/soup-session.c (connect_result): If the connection
1316         attempt succeeded, reserve the connection before releasing
1317         host_lock. Otherwise, another thread might find it in the
1318         connection pool before the caller can queue a message on it.
1319         #60693
1320
1321         * libsoup/soup-session-async.c (got_connection): Call
1322         soup_connection_release(), since we don't have a specific message
1323         in mind for the connection, so we need it to be considered idle.
1324
1325         * libsoup/soup-connection.c (soup_connection_release): New
1326         function, to undo a soup_connection_reserve().
1327         (soup_connection_send_request, soup_connection_reserve,
1328         soup_connection_authenticate, soup_connection_reauthenticate):
1329         Document these
1330
1331 2004-07-12  Dan Winship  <danw@novell.com>
1332
1333         * libsoup/soup-session-sync.c (send_message): signal the
1334         "connections available" condition after the message finishes. Duh.
1335
1336         * libsoup-2.2.pc.in (Cflags, Libs): add XML_CFLAGS and XML_LIBS
1337
1338 2004-07-08  Dan Winship  <danw@novell.com>
1339
1340         * libsoup/soup-soap-response.c: Revert previous change for now; it
1341         breaks the build on distros with older libxmls.
1342
1343 2004-07-08  Dan Winship  <danw@novell.com>
1344
1345         * tests/dict.c: Basic SOAP test, using Aonaware's SOAP->DICT
1346         gateway
1347
1348 2004-07-07  Fernando Herrera  <fherrera@onirica.com>
1349
1350         * libsoup/soup-soap-response.c: (finalize), (init),
1351         (soup_soap_response_from_string): Use a parse context for the
1352         xml document, so we can safely use the option to ignore
1353         blank spaces and '\n'.
1354
1355 2004-07-06  Dan Winship  <danw@novell.com>
1356
1357         * libsoup/soup-uri.c (soup_uri_new_with_base): if the protocol is
1358         http or https, require a hostname. For #61049
1359
1360         * tests/uri-parsing.c (rel_tests, do_uri): Update for that
1361
1362 2004-06-03  JP Rosevear <jpr@novell.com>
1363
1364         * configure.in: bump version to 2.1.11, libtool number
1365
1366 2004-06-01  Dan Winship  <danw@novell.com>
1367
1368         * libsoup/soup-address.c: Redo the various IPv4/IPv6-abstracting
1369         macros to not use ?: expressions as lvalues, since that's
1370         apparently a GNU extension.
1371         (soup_address_resolve_async): Use a timeout rather than an idle
1372         handler to poll the dns result. (soup-dns really should be
1373         rewritten to not require polling, but this is easier for now.)
1374         #59240
1375
1376         * libsoup/soup-server.c (call_handler): Don't use GNU-only
1377         non-constant structure initialization
1378
1379         * tests/dns.c: Simple test of the dns code
1380
1381         * tests/Makefile.am (noinst_PROGRAMS): build it
1382
1383 2004-05-19  JP Rosevear  <jpr@novell.com>
1384
1385         * configure.in (SOUP_API_VERSION): bump version, libtool numbers
1386
1387 2004-05-18  Dan Winship  <danw@novell.com>
1388
1389         * libsoup/soup-ssl.h:
1390         * libsoup/soup-nossl.c: define some GError codes and stuff
1391
1392         * libsoup/soup-gnutls.c: add missing #include <gnutls/x509.h>
1393         (do_handshake): when returning G_IO_STATUS_AGAIN, set the GError
1394         to SOUP_SSL_ERROR_HANDSHAKE_NEEDS_READ or _NEEDS_WRITE
1395         appropriately.
1396
1397         * libsoup/soup-socket.c (soup_socket_write): Handle
1398         SOUP_SSL_ERROR_HANDSHAKE_NEEDS_READ, by setting an io watch for
1399         G_IO_IN instead of G_IO_OUT. Fixes the rcd-sucking-up-all-cpu bug
1400         (#58434)
1401         (read_from_network): Handle the reverse case (which would cause
1402         hanging rather than spinning, and might be the cause of some
1403         connector 1.5 slowness?)
1404
1405 2004-05-11  Dan Winship  <danw@novell.com>
1406
1407         * libsoup/soup-misc.c (soup_signal_connect_once): Do this less
1408         kludgefully, using the magic of GClosure, to fix x86_64 problems
1409         reported by snorp.
1410
1411 2004-05-04  Sivaiah Nallagatla <snallagatla@novell.com>
1412
1413         * libsoup/soup-soap-message.c (finalize) : free
1414         the elements of priv structure before freeing priv
1415
1416 2004-04-20  Dan Winship  <danw@ximian.com>
1417
1418         * libsoup/soup-connection-ntlm.c (ntlm_authorize_post): if
1419         re-sending the message, call soup_message_restarted()
1420         (send_request): Connect to "restarted" signal, and remove the 401
1421         handlers from there; doing it here didn't work because if the
1422         connection was closed, the message would be re-sent on a new
1423         connection, but would still have the handlers from the old
1424         connection attached to it, which would make authentication fail.
1425
1426         * libsoup/soup-message-handlers.c (soup_message_run_handlers):
1427         Copy the handler list before starting, to protect against handlers
1428         that modify the handler list.
1429
1430 2004-04-15  Dan Winship  <danw@ximian.com>
1431
1432         * libsoup/soup-connection.c (soup_connection_connect_sync):
1433         Connect to the socket's "disconnect" signal. (We were only doing
1434         this from the async version before, which meant that synchronous
1435         SoupConnections could outlive their sockets and start causing
1436         errors.) #57004
1437
1438         * libsoup/soup-connection-ntlm.c (send_request): Remove the old
1439         Authorization header before adding a new one.
1440
1441 2004-04-02  JP Rosevear  <jpr@ximian.com>
1442
1443         * configure.in: bump version, libtool number
1444
1445 2004-03-15  Dan Winship  <danw@ximian.com>
1446
1447         * libsoup/soup-soap-message.c (soup_soap_message_persist): Fix up
1448         types to kill a warning with -Wall -O2
1449
1450 2004-03-05  JP Rosevear <jpr@ximian.com>
1451
1452         * configure.in: bump version, libtool number
1453
1454 2004-03-02  Dan Winship  <danw@ximian.com>
1455
1456         * libsoup/soup-dns.c (check_hostent): Only loop on EINTR if
1457         bytes_read is -1, since the value of errno is irrelevant when
1458         bytes_read is 0. Probably #54960.
1459
1460 2004-03-01  Rodrigo Moya <rodrigo@ximian.com>
1461
1462         * libsoup/soup-soap-response.h: removed not-implemented function's
1463         prototype.
1464
1465 2004-02-27  Rodney Dawes  <dobey@ximian.com>
1466
1467         * configure.in:
1468         * libsoup/Makefile.am: Use a different variable for linking to the
1469         static version of gnutls, so we don't pull the .a files into the .pc
1470
1471         Fixes #53346
1472
1473 2004-02-20  Dan Winship  <danw@ximian.com>
1474
1475         * libsoup/soup-message-io.c (read_metadata, read_body_chunk,
1476         write_data): Pass gsize *, not guint *, to soup_socket_read/write,
1477         to make this work on 64-bit platforms. (Grr. C type checking
1478         sucks.) #54631
1479         
1480         * tests/revserver.c: Likewise
1481
1482 2004-02-18  Rodrigo Moya <rodrigo@ximian.com>
1483
1484         Fixes #54512
1485
1486         * libsoup/soup-soap-response.c (soup_soap_parameter_get_int_value):
1487         don't leak the value returned from xmlNodeGetContent().
1488         (soup_soap_parameter_get_string_value,
1489         soup_soap_parameter_get_property): return a g_strdup'ed
1490         string, not the value returned by xmlNodeGetContent, so that
1491         callers can use g_free, and not xmlFree.
1492
1493         * libsoup/soup-soap-response.h: made soup_parameter_get_property
1494         not return const.
1495
1496 2004-02-17  Dan Winship  <danw@ximian.com>
1497
1498         * libsoup/soup-soap-message.h (SOUP_IS_SOAP_MESSAGE_CLASS): Fix a
1499         typo. #54433, from Mariano Suarez-Alvarez.
1500
1501         * libsoup/soup-soap-response.h (SOUP_IS_SOAP_RESPONSE_CLASS):
1502         Likewise
1503
1504 2004-02-17  Rodney Dawes  <dobey@ximian.com>
1505
1506         * libsoup/soup-message.c (soup_message_new): HTTP connections require
1507         a hostname, and we also hash on the host for message queueing in the
1508         session, if the host is NULL we free the SoupUri and return NULL
1509
1510 2004-02-14  Dan Winship  <danw@ximian.com>
1511
1512         * configure.in: Use POSIX-compliant "test $foo = bar", rather than
1513         GNU-only "test $foo == bar". #54354, from Julio M. Merino Vidal.
1514
1515 2004-02-12  Joe Shaw  <joe@ximian.com>
1516
1517         * libsoup/soup-dns.c (check_hostent): Call read() in a do-while
1518         loop to prevent DNS errors from short reads.
1519
1520 2004-02-11  Joe Shaw  <joe@ximian.com>
1521
1522         * configure.in: Bumped version number to 2.1.7 and libtool
1523         current. 
1524
1525 2004-02-11  Dan Winship  <danw@ximian.com>
1526
1527         * libsoup/soup-connection.c (soup_connection_disconnect): Update
1528         Joe's comment here with a gory explanation of exactly what's going
1529         on. (It's not just an SSL bug either, it affects all connections.)
1530
1531 2004-02-10  Joe Shaw  <joe@ximian.com>
1532
1533         * libsoup/soup-connection.c (soup_connection_disconnect): Add a
1534         workaround for SSL connections which time-out but don't close the
1535         socket until we try sending data again later.
1536
1537         * libsoup/soup-socket.c (soup_socket_connect, soup_socket_listen):
1538         Don't free the sockaddr from soup_address_get_sockaddr(); we don't
1539         own it, the SoupAddress does.
1540
1541 2004-02-09  JP Rosevear  <jpr@ximian.com>
1542
1543         * configure.in: Bump libtool numbers
1544
1545 2004-02-05  Dan Winship  <danw@ximian.com>
1546
1547         * libsoup/soup-session.c (soup_session_add_filter): Ref the filter
1548         when adding it.
1549         (soup_session_remove_filter): And unref it here (we were already
1550         unreffing it in dispose().)
1551
1552 2004-02-05  Joe Shaw  <joe@ximian.com>
1553
1554         * libsoup/soup-dns.c (soup_dns_entry_unref): Don't try to free the
1555         hostent if it's NULL.
1556         (soup_dns_entry_check_lookup): If the entry is resolved, but the
1557         hostent is NULL, uncache it.
1558
1559 2004-02-04  Dan Winship  <danw@ximian.com>
1560
1561         * libsoup/soup-connection-ntlm.c (ntlm_authorize_pre): Always
1562         remove the WWW-Authenticate headers before returning, so the
1563         session won't fall back to Basic auth. Also, leave the connection
1564         in the "authenticating" state rather than setting it to
1565         "authenticated".
1566         (ntlm_authorize_post): Only requeue the message if it's in the
1567         "authenticating" state (and set it to "authenticated"). Fixes an
1568         "unepectedly disconnected" error if authentication fails.
1569
1570 2004-02-03  Dan Winship  <danw@ximian.com>
1571
1572         * libsoup/soup-message-io.c (io_cleanup): Call
1573         soup_message_io_stop so we don't get a callback on the io after
1574         it's been cleaned up.
1575
1576         * libsoup/soup-session.c (add_auth): Only remove the Authorization
1577         header if we have another one to add. (Otherwise it messes up
1578         SoupConnectionNTLM.)
1579
1580         * libsoup/soup-socket.c (read_from_buf): Use memmove rather than
1581         memcpy here, since the source and destination will overlap if
1582         *nread is small and read_buf->len is large. (Noticed by valgrind,
1583         #53625.)
1584
1585 2004-02-02  Joe Shaw  <joe@ximian.com>
1586
1587         * libsoup/soup-gnutls.c (soup_gnutls_close): Call gnutls_bye()
1588         with the GNUTLS_SHUT_WR flag (instead of RDWR) and check only for
1589         GNUTLS_E_INTERRUPTED.  GNUTLS_E_AGAIN will be returned by recv()
1590         when there are no messages on the wire on a non-blocking socket.
1591         This sends a SSL hangup message and then allows us to immediately
1592         close the socket.
1593
1594 2004-01-30  Rodrigo Moya <rodrigo@ximian.com>
1595
1596         * configure.in: bumped version number to 2.1.6.
1597
1598 2004-01-29  Rodrigo Moya <rodrigo@ximian.com>
1599
1600         * libsoup/soup-soap-response.[ch] (soup_soap_parameter_get_property):
1601         new function.
1602
1603 2004-01-29  Rodrigo Moya <rodrigo@ximian.com>
1604
1605         * libsoup/soup-soap-response.[ch]
1606         (soup_soap_parameter_get_string_value): removed 'const' from return
1607         type.
1608
1609 2004-01-29  Joe Shaw  <joe@ximian.com>
1610
1611         * libsoup/soup-gnutls.c (verify_certificate): Initialize the
1612         certificate before we try to use it.  Ahem.
1613
1614 2004-01-23  Joe Shaw  <joe@ximian.com>
1615
1616         * configure.in: Bump version to 2.1.5 and SOUP_RELEASE to 2
1617
1618 2004-01-21  Joe Shaw  <joe@ximian.com>
1619
1620         * configure.in: Require at least GnuTLS 1.0.0.
1621
1622         * libsoup/soup-gnutls.c: Fix the use of deprecated GnuTLS
1623         functions.
1624         (verify_certificate): Use gnutls_x509_crt_import() and
1625         gnutls_x509_crt_check_hostname() instead of
1626         gnutls_x509_check_certificates_hostname().
1627         (init_dh_params): Use gnutls_dh_params_generate2() instead of
1628         gnutls_dh_params_generate() and gnutls_dh_params_set().
1629
1630 2004-01-20  Joe Shaw  <joe@ximian.com>
1631
1632         * libsoup/soup-gnutls.c (soup_gnutls_close): gnutls_bye() doesn't
1633         close the socket itself, so we need to do it or else our
1634         connections stay in CLOSE_WAIT forever.
1635
1636 2004-01-16  Jason Leach  <leach@wam.umd.edu>
1637
1638         * libsoup/Makefile.am: builddir != srcdir fixes.
1639
1640 2004-01-14  Joe Shaw  <joe@ximian.com>
1641
1642         * libsoup/soup-gnutls.c (verify_certificate): Remove the
1643         check for GNUTLS_CERT_CORRUPTED, it's not in 1.0.x.
1644
1645 2004-01-12  JP Rosevear  <jpr@ximian.com>
1646
1647         * configure.in: bump version and libtool revision
1648
1649 2004-01-12  Dan Winship  <danw@ximian.com>
1650
1651         * tests/simple-httpd.c (main): Add a g_thread_init() so this works
1652         again.
1653
1654 2004-01-10  Larry Ewing  <lewing@ximian.com>
1655
1656         * libsoup-2.2.pc.in (Libs): use LIBGNUTLS_LIBS in the substitution
1657         string.
1658
1659 2004-01-09  Joe Shaw  <joe@ximian.com>
1660
1661         * acinclude.m4: Include the libgnutls.m4 file.
1662
1663         * configure.in: Remove manual checking for libgnutls-config and
1664         use the AM_PATH_LIBGNUTLS so we can pass in a minimum required
1665         version, which is 0.9.7 for now.
1666
1667         * libsoup/Makefile.am: Some changes for the above change.
1668
1669         * libsoup/soup-gnutls.c: Check for HAVE_SSL, not
1670         HAVE_GNUTLS_GNUTLS_H.
1671         (verify_certificate): Uncomment the SSL certificate hostname
1672         check.
1673
1674         * libsoup/soup-session.c (set_property): Be smart about flushing
1675         our SSL credentials only when the CA file is set to something
1676         different than it was before.
1677
1678 2004-01-09  Harish K <kharish@novell.com>
1679         * libsoup/soup-soap-response.c (soup_soap_response_from_string): 
1680         added code to ignore Header element, if present, while creating 
1681         response objects.  
1682         
1683 2004-01-05  Dan Winship  <danw@ximian.com>
1684
1685         * configure.in: Remove no-longer-relevant socklen_t check
1686
1687         * libsoup/soup-address.c: Reorder #includes for FreeBSD (From Joe
1688         Marcus Clarke, #52566)
1689
1690         * libsoup/soup-dns.c: Likewise
1691
1692 2003-12-29  JP Rosevear <jpr@ximian.com>
1693
1694         * configure.in: bump version and libtool numbers
1695
1696 2003-12-22  Dan Winship  <danw@ximian.com>
1697
1698         * README, TODO: Update these
1699
1700 2003-12-22  Dan Winship  <danw@ximian.com>
1701
1702         * libsoup/soup-socket.c: Lots of thread-safety stuff, primarly so
1703         you can disconnect a socket from one thread while doing I/O in
1704         another.
1705
1706         * libsoup/soup-message-io.c (soup_message_io_cancel): Split into
1707         soup_message_io_stop() and io_cleanup(), to separate out the "stop
1708         reading/writing" and "free data" phases to allow thread-safe
1709         synchronous cancellation.
1710         (soup_message_io_finished): call both soup_message_io_stop() and
1711         io_cleanup()
1712         (io_error): Only set SOUP_STATUS_IO_ERROR on the message if it
1713         doesn't already have a transport error status (eg, CANCELLED).
1714         (new_iostate): Call io_cleanup() if needed.
1715
1716         * libsoup/soup-status.h: add "SOUP_STATUS_NONE" for 0, to make it
1717         clearer that it's not a status.
1718
1719         * libsoup/soup-message.c (finalize, restarted, finished,
1720         soup_message_set_uri): s/soup_message_io_cancel/soup_message_io_stop/
1721         (soup_message_cleanup_response): s/0/SOUP_STATUS_NONE/
1722
1723         * libsoup/soup-connection.c (send_request): Remove
1724         soup_message_io_cancel call.
1725
1726         * libsoup/soup-session-sync.c (send_message): Connect to the
1727         connection's "disconnected" signal rather than using a weak ref,
1728         since that's what we really care about, and it's possible that the
1729         connection may have an extra ref on it somewhere that would keep
1730         it from being destroyed even if it was disconnected.
1731
1732 2003-12-20  Joe Shaw  <joe@ximian.com>
1733
1734         * libsoup/soup-session.c (lookup_auth): If const_path is NULL un
1735         the non-proxy case, then use the root ("/").
1736
1737 2003-12-19  Dan Winship  <danw@ximian.com>
1738
1739         * libsoup/soup-message-filter.c: New. An interface for objects
1740         that want to act on every message passing through a session.
1741         (Initially being used for authentication, but could also be used
1742         for cache handling, cookie management, etc.)
1743
1744         * libsoup/soup-connection.c (class_init, etc): Add a message
1745         filter property.
1746         (send_request): If the connection has a message filter set, run
1747         it on the message before sending it.
1748         (soup_connection_connect_async, etc): When setting up a tunnel, if
1749         we get back a 407 and the session tries to requeue the message,
1750         either re-send it, or return SOUP_STATUS_TRY_AGAIN (depending on
1751         whether or not the proxy closed the connection).
1752         (soup_connection_connect_sync): Likewise
1753         (send_request, request_done): Ref/unref the connection
1754
1755         * libsoup/soup-session.c (soup_session_get_type): Implement the
1756         SoupMessageFilter interface.
1757         (soup_session_get_connection): Use the session as the connection's
1758         message filter
1759         (soup_session_add_filter, soup_session_remove_filter): Add/remove
1760         filters from the session
1761         (setup_message): do auth handling, and call each of the session's
1762         filters' setup_message methods as well.
1763         (soup_session_send_message_via): No longer needed.
1764         (connect_result): Handle SOUP_STATUS_TRY_AGAIN.
1765
1766         * libsoup/soup-session-async.c (run_queue): Use
1767         soup_connection_send_request, since soup_session_send_message_via
1768         is gone now.
1769
1770         * libsoup/soup-session-sync.c (send_message): Likewise
1771
1772         * libsoup/soup-message.c (soup_message_is_keepalive): A successful
1773         response to a CONNECT is always keepalive, even if it's HTTP/1.0
1774         with no Connection header.
1775
1776         * libsoup/soup-status.h: add SOUP_STATUS_TRY_AGAIN
1777
1778         * libsoup/soup-types.h: Add SoupMessageFilter, and macros for
1779         gobject interface types.
1780
1781         * tests/get.c (main): Add a -p flag to specify a proxy
1782
1783         * tests/simple-proxy.c: Fix #includes
1784
1785 2003-12-18  Dan Winship  <danw@ximian.com>
1786
1787         * libsoup/soup-connection.c (soup_connection_disconnect): Actually
1788         disconnect the socket rather than just unreffing it, since the IO
1789         code may be holding an extra ref on it.
1790         (send_request): connect to the "restarted" signal too
1791         (request_restarted): Deal with "Connection: close"
1792
1793         * libsoup/soup-connection-ntlm.c (ntlm_authorize_pre): Make this
1794         not go into an infinite loop if the server only supports Basic.
1795
1796 2003-12-17  Rodrigo Moya <rodrigo@ximian.com>
1797
1798         * libsoup/Makefile.am: install soup-message-queue.h with the rest
1799         of the headers.
1800
1801 2003-12-17  Dan Winship  <danw@ximian.com>
1802
1803         * configure.in: Add gthread to glib check
1804
1805         * libsoup/soup-session.c: Make this an abstract class.
1806
1807         * libsoup/soup-session-async.c: A SoupSession class for
1808         asynchronous gmain-based operation; replaces the old SoupSession.
1809
1810         * libsoup/soup-session-sync.c: A SoupSession class for synchronous
1811         blocking operation for use with threaded apps.
1812
1813         * libsoup/soup-types.h, libsoup/soup.h: add the new session
1814         subclasses
1815
1816         * libsoup/soup-connection.c (soup_connection_connect_sync): Don't
1817         try to unref the socket if the socket creation fails.
1818         (soup_connection_reserve): New, to explicitly mark a connection as
1819         being in use without queueing a message on it.
1820
1821         * libsoup/soup-dns.c (check_hostent): Oof. Fix the logic of the
1822         "block" flag to not be reversed.
1823
1824         * libsoup/soup-message.c (finished): set status to FINISHED here.
1825         (soup_message_cancel): Gone; needs to be done at the session
1826         level.
1827
1828         * libsoup/soup-message-queue.c: Add a mutex and make all of the
1829         operations thread-safe.
1830
1831         * libsoup/soup-socket.c (disconnect_internal): Make this
1832         thread-safe.
1833         (soup_socket_connect): Make the sync case work correctly.
1834
1835         * libsoup/Makefile.am: add the SoupSession subclasses
1836
1837         * tests/Makefile.am: libsoup depends on libgthread now, so
1838         revserver doesn't need to explicitly.
1839
1840         * tests/get.c, tests/auth-test.c, tests/simple-proxy.c: Use
1841         soup_session_async_new().
1842
1843 2003-12-16  Rodrigo Moya <rodrigo@ximian.com>
1844
1845         * libsoup/soup-soap-response.[ch] (soup_soap_parameter_get_int_value):
1846         new function.
1847
1848 2003-12-16  Joe Shaw  <joe@ximian.com>
1849
1850         * libsoup/soup-connection.c (socket_connect_result,
1851         soup_connection_connect_sync): Only set up a tunnel if the
1852         destination protocol is HTTPS.
1853
1854         * libsoup/soup-message.c (class_init): Add a default handler for
1855         wrote_body.
1856         (wrote_body): Run the SOUP_HANDLER_POST_REQUEST handlers here.
1857         (soup_message_cancel): Don't set the status to
1858         SOUP_STATUS_CANCELLED and call soup_message_finished() if the
1859         status is already SOUP_MESSAGE_STATUS_FINISHED.
1860
1861         * libsoup/soup-session.c (set_property): Don't cancel the session
1862         if the proxy URI set as a property isn't different from the old
1863         one.
1864         (get_host_for_message): Refactor some code so that we can easily
1865         get the right SoupSessionHost for proxies as well as from the
1866         message.
1867         (authenticate_auth): Take a gboolean proxy parameter.  Check it to
1868         see which URI (message URI or proxy URI) to use for
1869         authentication.  Add a long comment about lack of clarity in RFC
1870         2617 with respect to proxies and protection spaces.
1871
1872 2003-12-15  Dan Winship  <danw@ximian.com>
1873
1874         * libsoup/soup-socket.h (soup_socket_read, soup_socket_read_until,
1875         soup_socket_write): s/guint/gsize/ to match the definitions in
1876         soup-socket.c. #52167.
1877
1878 2003-12-12  Rodrigo Moya <rodrigo@ximian.com>
1879
1880         * libsoup/soup-soap-message.c: removed debugging of the messages here.
1881
1882 2003-12-12  Rodrigo Moya <rodrigo@ximian.com>
1883
1884         * libsoup/soup-soap-message.c (soup_soap_message_start_envelope):
1885         added information for SOAP-ENV namespace.
1886
1887 2003-12-10  Dan Winship  <danw@ximian.com>
1888
1889         * libsoup/soup-message-client-io.c (parse_response_headers): if we
1890         receive an HTTP/1.0 response to an HTTP/1.1 request, downgrade the
1891         message's http_version so the keep-alive handling is correct.
1892         Fixes a problem noticed almost simultaneously by Rodrigo and Joe.
1893
1894         * libsoup/soup-message.c (soup_message_restarted, etc): Add a
1895         "restarted" signal as suggested by Joe.
1896
1897         * libsoup/soup-message-io.c (soup_message_io_finished): emit
1898         either "restarted" or "finished" as appropriate
1899
1900         * libsoup/soup-session.c (soup_session_queue_message): Connect to
1901         "restarted" and run the queue if a message gets restarted
1902
1903         * libsoup/soup-status.h: Remove a stray comma that gtk-doc doesn't
1904         like.
1905
1906 2003-12-10  Tambet Ingo  <tambet@ximian.com>
1907
1908         * configure.in: Use autoconfig to check for socklen_t ...
1909
1910         * libsoup/soup-address.c: ... and remove it from here ...
1911
1912         * libsoup/soup-dns.c: ... and here.
1913
1914 2003-12-09  Rodrigo Moya <rodrigo@ximian.com>
1915
1916         * libsoup/soup-soap-message.c (soup_soap_message_persist):
1917         (soup_soap_message_parse_response): print out request/response's
1918         contents, if in debug mode.
1919
1920 2003-12-07  JP Rosevear  <jpr@ximian.com>
1921
1922         * configure.in: Bump version
1923
1924 2003-11-28  Rodrigo Moya <rodrigo@ximian.com>
1925
1926         * libsoup/soup-soap-response.[ch]
1927         (soup_soap_parameter_get_first_child,
1928         soup_soap_parameter_get_first_child_by_name,
1929         soup_soap_parameter_get_next_child,
1930         soup_soap_parameter_get_next_child_by_name): new functions to
1931         manage SoupSoapParameter's children.
1932         (soup_soap_response_get_first_parameter): dont return a GList, but
1933         a SoupSoapParameter contained in the GList.
1934
1935 2003-11-26  Rodrigo Moya <rodrigo@ximian.com>
1936
1937         * libsoup/soup-soap-response.[ch]
1938         (soup_soap_parameter_get_string_value): new function.
1939
1940 2003-11-26  Rodrigo Moya <rodrigo@ximian.com>
1941
1942         * libsoup/soup-soap-response.[ch]: added SoupSoapParameter
1943         structure, to "hide" the usage of xmlNode's.
1944         (soup_soap_parameter_get_name): functions to manage SOAP
1945         response parameters.
1946         (soup_soap_response_get_first_parameter,
1947         soup_soap_response_get_first_parameter_by_name,
1948         soup_soap_response_get_next_parameter,
1949         soup_soap_response_get_next_parameter_by_name):
1950         new functions for an easy access to the response's parameters.
1951         (soup_soap_response_from_string): removed warnings.
1952
1953 2003-11-25  Rodrigo Moya <rodrigo@ximian.com>
1954
1955         * libsoup/soup-soap-response.c (soup_soap_response_set_method_name):
1956         fixed typo.
1957
1958 2003-11-25  Rodrigo Moya <rodrigo@ximian.com>
1959
1960         * libsoup/soup-soap-response.[ch] (soup_soap_response_get_method_name,
1961         soup_soap_response_set_method_name, soup_soap_message_get_parameters):
1962         new functions.
1963         (finalize): NULL out new private fields.
1964         (soup_soap_response_from_string): added validation code.
1965
1966 2003-11-23  Rodrigo Moya <rodrigo@ximian.com>
1967
1968         * libsoup/soup-soap-response.[ch]: new class for managing SOAP
1969         responses.
1970
1971         * libsoup/soup-soap-message.[ch] (soup_soap_message_parse_response):
1972         new function.
1973
1974         * libsoup/Makefile.am: added new files.
1975
1976 2003-11-18  Rodney Dawes  <dobey@ximian.com>
1977
1978         * gtk-doc.make: Add gtk-doc.make to cvs for systems without gtk-doc
1979
1980 2003-11-18  Rodney Dawes  <dobey@ximian.com>
1981
1982         * acinclude.m4: Add GTK_DOC_CHECK
1983
1984 2003-11-18  Dan Winship  <danw@ximian.com>
1985
1986         * configure.in: Replace old gtk-doc test with GTK_DOC_CHECK()
1987         (AC_OUTPUT): add docs/Makefile, docs/reference/Makefile
1988
1989         * autogen.sh (REQUIRED_AUTOMAKE_VERSION): 1.6, for gtk-doc.make
1990
1991         * Makefile.am: updates for gtk-doc
1992         (SUBDIRS): add back "docs"
1993
1994         * docs/Makefile.am (EXTRA_DIST): remove, since those old docs
1995         aren't around any more
1996
1997         * docs/reference/*: set up gtk-doc
1998
1999         * libsoup/Makefile.am (INCLUDES): Change G_LOG_DOMAIN to
2000         "libsoup". Remove unused defines.
2001
2002         * libsoup/soup-connection.c: Fix doc comments
2003         * libsoup/soup-message.c: Likewise
2004         * libsoup/soup-misc.c: Likewise
2005         * libsoup/soup-socket.c: Likewise
2006         * libsoup/soup-uri.c: Likewise
2007
2008         * libsoup/soup-address.h: Fixes to please gtk-doc
2009         * libsoup/soup-connection.h: Likewise
2010         * libsoup/soup-message.h: Likewise
2011         * libsoup/soup-message-private.h: Likewise
2012         * libsoup/soup-misc.h: Likewise
2013         * libsoup/soup-server-auth.h: Likewise
2014         * libsoup/soup-socket.h: Likewise
2015         * libsoup/soup-status.h: Likewise
2016
2017 2003-11-18  Dan Winship  <danw@ximian.com>
2018
2019         * configure.in: Fix up the SSL checks some. Remove some useless
2020         old header checks.
2021
2022         * libsoup/soup-misc.h: declare soup_ssl_supported.
2023
2024         * libsoup/soup-gnutls.c: add soup_ssl_supported declaration.
2025
2026         * libsoup/soup-nossl.c: Not an SSL implementation, built if
2027         HAVE_SSL is not defined.
2028
2029         * libsoup/Makefile.am (libsoup_2_2_la_SOURCES): add soup-nossl.c
2030
2031         * libsoup/soup-socket.c (soup_socket_start_ssl): Return success or
2032         failure.
2033         (listen_watch): Deal with soup_socket_start_ssl failing.
2034
2035         * libsoup/soup-connection.c (tunnel_connect_finished,
2036         socket_connect_result, soup_connection_connect_sync): Deal with
2037         the soup_socket_start_ssl failing.
2038
2039         * libsoup/soup-server.c (soup_server_new): Deal with
2040         soup_ssl_get_server_credentials failing
2041
2042 2003-11-18  Rodrigo Moya <rodrigo@ximian.com>
2043
2044         * libsoup/soup-soap-message.[ch] (soup_soap_message_start_fault,
2045         soup_soap_message_end_fault, soup_soap_message_start_fault_detail,
2046         soup_soap_message_end_fault_detail, soup_soap_message_start_header,
2047         soup_soap_message_end_header,
2048         soup_soap_message_start_header_element,
2049         soup_soap_message_end_header_element, soup_soap_message_write_int,
2050         soup_soap_message_write_double, soup_soap_message_write_base64,
2051         soup_soap_message_write_time, soup_soap_message_write_string,
2052         soup_soap_message_write_buffer, soup_soap_message_set_element_type,
2053         soup_soap_message_set_null, soup_soap_message_add_attribute,
2054         soup_soap_message_add_namespace,
2055         soup_soap_message_set_default_namespace,
2056         soup_soap_message_get_namespace_prefix,
2057         soup_soap_message_set_encoding_style, soup_soap_message_reset,
2058         soup_soap_message_persist): new functions from old SoupSerializer.
2059
2060 2003-11-17  Rodrigo Moya <rodrigo@ximian.com>
2061
2062         * libsoup/soup-soap-message.[ch] (soup_soap_message_new,
2063         soup_soap_message_new_from_uri): added a bunch of initialization
2064         parameters.
2065         (soup_soap_message_get_xml_doc, soup_soap_message_start_envelope,
2066         soup_soap_message_end_envelope, soup_soap_message_start_body,
2067         soup_soap_message_end_body, soup_soap_message_start_element,
2068         soup_soap_message_end_element):
2069         new functions.
2070
2071         * configure.in: depend on libxml-2.0 for the SOAP code.
2072
2073         * libsoup/Makefile.am: use XML CFLAGS and LIBS.
2074
2075 2003-11-17  Joe Shaw  <joe@ximian.com>
2076
2077         * configure.in: Add in the --enable-libgpg-error flag from the 2.0
2078         branch.
2079
2080         * acinclude.m4: Include the gpg-error macros.
2081
2082 2003-11-17  Rodrigo Moya <rodrigo@ximian.com>
2083
2084         * libsoup/soup-soap-message.[ch]: new class to make it easier to
2085         build SOAP messages.
2086
2087         * libsoup/Makefile.am: added new files.
2088
2089         * configure.in: increased version number.
2090
2091 2003-10-24  Joe Shaw  <joe@ximian.com>
2092
2093         * libsoup/soup-address.c (update_address_from_entry): Call
2094         soup_dns_entry_get_hostent() on the SoupAddress passed in, not the
2095         one in addr->priv->lookup.  Fixes a crash on synchronous DNS
2096         lookups.
2097
2098         * libsoup/soup-server.c (soup_server_new): We need to ref the
2099         address we're binding to, because soup_socket_get_local_address()
2100         doesn't ref for us.
2101
2102 2003-10-23  Dan Winship  <danw@ximian.com>
2103
2104         * libsoup/soup-socket.c (init): Initialize flags to default
2105         values.
2106
2107 2003-09-23  Dan Winship  <danw@ximian.com>
2108
2109         * libsoup/soup-gnutls.c (SoupGNUTLSCred): Remove refcounting, but
2110         note whether or not the CA file has been loaded.
2111         (SoupGNUTLSChannel): add a "hostname" field.
2112         (verify_certificate): Remove the comment about not being able to
2113         verify the hostname because of soup problems. Now it's because of
2114         GNUTLS problems instead.
2115         (soup_ssl_wrap_iochannel): Renamed from soup_ssl_get_iochannel,
2116         and takes a hostname and a creds argument now.
2117         (soup_ssl_get_client_credentials,
2118         soup_ssl_get_server_credentials): Return client/server credentials
2119         structures.
2120         (soup_ssl_free_client_credentials,
2121         soup_ssl_free_server_credentials): and free them.
2122
2123         * libsoup/soup-session.c (class_init, set_property, get_property):
2124         add ssl_ca_file property
2125         (get_host_for_message): when returning an SSL host for the first
2126         time, create a client credentials structure for the session.
2127         (run_queue): Pass the ssl creds to the new connection. Also fix an
2128         unrelated bug that caused infinite loops on "bad hostname".
2129
2130         * libsoup/soup-server.c: Use GObject properties, including
2131         ssl_cert_file and ssl_key_file properties.
2132         (soup_server_new): Remove "protocol" argument; if the cert file
2133         and key file properties were set, create a server credential
2134         structure from them and pass that to soup_socket_server_new.
2135
2136         * libsoup/soup-connection.c (SoupConnectionPrivate): Rename
2137         dest_uri to origin_uri to match RFC 2616 terminology. Add an
2138         "ssl_creds" field.
2139         (class_init, set_property, get_property): add SSL_CREDS property
2140         (soup_connection_connect_async, soup_connection_connect_sync):
2141         Pass ssl_creds to soup_socket_client_new calls.
2142
2143         * libsoup/soup-socket.c: Use GObject properties, including an
2144         ssl_creds property
2145         (soup_socket_set_flags): Gone (replaced with boolean properties)
2146         (soup_socket_new): Make this take a list of properties
2147         (listen_watch): copy ssl creds from listener to new socket
2148         (soup_socket_start_ssl): Pass remote hostname and socket creds
2149         structure to soup_ssl_wrap_iochannel.
2150         (soup_socket_client_new_async, soup_socket_client_new_sync,
2151         soup_socket_server_new): Replace the SSL boolean with an ssl_creds
2152         structure.
2153
2154         * libsoup/soup-misc.c (soup_set_ssl_ca_file,
2155         soup_set_ssl_cert_files, soup_get_ssl_ca_file,
2156         soup_get_ssl_cert_files): Gone. SSL state is now per-session or
2157         per-server.
2158
2159         * tests/get.c: add a "-c CAfile" argument, for loading a CA
2160         certificate file to validate https connections against
2161
2162         * tests/simple-httpd.c: Add "-c certfile" and "-k keyfile"
2163         arguments for loading an SSL server certificate. Only start an SSL
2164         server if those arguments were used.
2165
2166         * tests/test-cert.pem: 
2167         * tests/test-key.pem: SSL certificate for testing simple-httpd
2168
2169         * tests/revserver.c: Update for API changes
2170         * tests/simple-proxy.c: Likewise
2171
2172 2003-09-22  Dan Winship  <danw@ximian.com>
2173
2174         * libsoup/soup-message-io.c: Move RESPONSE_BLOCK_SIZE #define here
2175         from soup-private.h
2176
2177         * libsoup/soup-misc.c (soup_load_config, etc): Remove all this.
2178         (soup_set_security_policy, soup_get_security_policy): Remove,
2179         since the GNUTLS backend doesn't actually implement it.
2180         (soup_set_ssl_ca_dir, soup_get_ssl_ca_dir): Likewise
2181
2182         * libsoup/soup-misc.h: sync to soup-misc.c. Don't #include extra
2183         stuff.
2184
2185         * libsoup/soup-types.h (SOUP_MAKE_TYPE): Move this here from
2186         soup-private.h
2187
2188         * libsoup/soup-ssl.h: Merge soup_ssl_get_iochannel and
2189         soup_ssl_get_server_iochannel into a single function that takes a
2190         SoupSSLType.
2191
2192         * libsoup/soup-gnutls.c: Remove soup_get_ssl_ca_dir() reference.
2193         (soup_ssl_get_iochannel): Renamed from soup_gnutls_get_iochannel.
2194         (soup_gnutls_set_security_policy): Gone
2195
2196         * libsoup/soup-gnutls.h
2197         * libsoup/soup-ssl.c: Gone; soup-ssl.h is the #include file for
2198         soup-gnutls.c now
2199
2200         * libsoup/soup-socket.c: Move soup_sockaddr_max
2201         #define here from soup-private.h
2202         (soup_socket_start_ssl): Update for new soup_ssl_get_iochannel
2203         prototype.
2204
2205         * libsoup/soup-private.h: Gone
2206         
2207         * libsoup/soup-address.c: Fix #includes for soup-private.h and
2208         soup-misc.h changes
2209         * libsoup/soup-auth-digest.c: Likewise
2210         * libsoup/soup-auth.c: Likewise
2211         * libsoup/soup-connection-ntlm.c: Likewise
2212         * libsoup/soup-connection.c: Likewise
2213         * libsoup/soup-dns.c: Likewise
2214         * libsoup/soup-gnutls.c: Likewise
2215         * libsoup/soup-headers.c: Likewise
2216         * libsoup/soup-message-client-io.c: Likewise
2217         * libsoup/soup-message-handlers.c: Likewise
2218         * libsoup/soup-message-io.c: Likewise
2219         * libsoup/soup-message-server-io.c: Likewise
2220         * libsoup/soup-message.c: Likewise
2221         * libsoup/soup-server-message.c: Likewise
2222         * libsoup/soup-server.c: Likewise
2223         * libsoup/soup-session.c: Likewise
2224         * libsoup/soup-socket.c: Likewise
2225         * tests/auth-test.c: Likewise
2226
2227 2003-09-19  Dan Winship  <danw@ximian.com>
2228
2229         * libsoup/soup-address.c (update_address_from_entry): free the
2230         hostent.
2231
2232         * libsoup/soup-connection-ntlm.c (ntlm_authorize_pre): Don't leak
2233         the domain
2234
2235         * libsoup/soup-gnutls.c (soup_gnutls_get_iochannel): Add some more
2236         iochannel initialization. Not sure how this worked before...
2237
2238         * libsoup/soup-message.c (soup_message_cleanup_response): Renamed
2239         from soup_message_prepare (and a few things removed).
2240
2241         * libsoup/soup-message-client-io.c (soup_message_send_request):
2242         s/soup_message_prepare/soup_message_cleanup_response/
2243
2244         * libsoup/soup-message-io.c (io_read): Replace the final "\r\n"
2245         with "\0" on the headers before passing them to the parse
2246         function.
2247         (io_read): Call soup_message_cleanup_response after returning an
2248         informational response so the data doesn't leak.
2249
2250         * libsoup/soup-headers.c (soup_headers_parse): Update for
2251         soup-message-io.c:io_read change
2252
2253         * libsoup/soup-server.c (soup_server_new,
2254         soup_server_new_with_host): Don't leak the SoupAddress.
2255
2256         * libsoup/soup-session.c (class_init): Make PROP_PROXY_URI not
2257         CONSTRUCT_ONLY.
2258         (set_property): If the proxy uri changes, call
2259         soup_session_abort() and cleanup_hosts().
2260         (request_finished, final_finished): Fix a bug when requeuing
2261         messages.
2262
2263         * tests/libsoup.supp: valgrind suppression file for soup tests
2264
2265         * tests/Makefile.am (EXTRA_DIST): dist it.
2266         (noinst_PROGRAMS): move the former check_PROGRAMS to
2267         noinst_PROGRAMS instead.
2268
2269 2003-09-18  Dan Winship  <danw@ximian.com>
2270
2271         * libsoup/soup-message.c: Add wrote_informational and
2272         got_informational signals.
2273
2274         * libsoup/soup-message-client-io.c (get_request_headers): Set the
2275         EXPECT_CONTINUE flag on the message if that header is set.
2276
2277         * libsoup/soup-message-server-io.c (parse_request_headers):
2278         Likewise
2279
2280         * libsoup/soup-message-io.c (io_write): Set read_state to HEADERS
2281         when blocking on an expect-continue. Emit wrote_informational
2282         instead of wrote_headers in the 1xx case.
2283         (io_read): Set read_state to BLOCKING, not NOT_STARTED after
2284         reading a 100 Continue response. Emit got_informational instead of
2285         got_headers in the 1xx case.
2286
2287         * libsoup/soup-session.c (soup_session_send_message): Reorder
2288         things to deal with the fact that the message could finish right
2289         away if there is a connection available and the server is very
2290         close.
2291
2292         * libsoup/soup-status.h: Rename SOUP_STATUS_CLASS_TRANSPORT to
2293         SOUP_STATUS_CLASS_TRANSPORT_ERROR.
2294
2295 2003-09-17  Dan Winship  <danw@ximian.com>
2296
2297         * libsoup/soup-session.c (find_oldest_connection): Fix two bugs
2298         (one that pruned too little, one that pruned too much).
2299         (queue_message): When requeuing, don't run the queue;
2300         final_finished will take care of that later.
2301         (soup_session_abort): New, to cancel all pending requests.
2302
2303         * libsoup/soup-socket.c (soup_socket_connect, got_address): ref
2304         the socket while waiting for the address to resolve
2305
2306 2003-09-17  Dan Winship  <danw@ximian.com>
2307
2308         * libsoup/soup-connection.c (soup_connection_new): Replaces the
2309         three previous soup_connection_new* functions and uses gobject
2310         properties to set the destination and proxy uris.
2311         (class_init): set up two more signals, authenticate and
2312         reauthenticate.
2313         (soup_connection_send_request): virtualize
2314         (send_request): Default implementation
2315
2316         * libsoup/soup-connection-ntlm.c: New SoupConnection subclass that
2317         also handles NTLM authentication. Includes all of the NTLM code
2318         formerly in soup-auth-ntlm.c.
2319
2320         * libsoup/soup-auth-ntlm.[ch]: Gone.
2321
2322         * libsoup/soup-auth.c: Remove NTLM refs
2323
2324         * libsoup/soup-session.c (class_init): Add gobject properties for
2325         proxy, max_conns, use_ntlm. Change the "authenticate" and
2326         "reauthenticate" signal prototypes to not pass a SoupAuth (so they
2327         can be used for authenticating SoupConnectionNTLM as well, which
2328         doesn't use a SoupAuth).
2329         (soup_session_new): Renamed from soup_session_new_default.
2330         (soup_session_new_with_options): Replaces
2331         soup_session_new_with_proxy and soup_session_new_full. Takes
2332         gobject properties.
2333         (run_queue): Create a new connection of type SoupConnection or
2334         SoupConnectionNTLM depending on our "use_ntlm" property. Connect
2335         to its authenticate and reauthenticate signals.
2336         (connection_authenticate, connection_reauthenticate): proxy these
2337         signals.
2338
2339         * libsoup/soup-address.c (update_address_from_entry): Fix a
2340         crasher when failing to resolve the address.
2341
2342         * libsoup/soup-dns.c (check_hostent): Fix some "how was this
2343         working before" bugs.
2344
2345         * libsoup/soup-message-client-io.c (soup_message_send_request):
2346         call soup_message_prepare() to clean up the existing response
2347         state.
2348
2349         * libsoup/soup-message-io.c (io_error): Set the read_state to DONE
2350         when processing an OK EOF.
2351
2352         * libsoup/soup-status.h (SoupStatusClass): fix the numbering of
2353         these so that SOUP_STATUS_CLASS_SUCCESS is 2, etc.
2354
2355         * tests/auth-test.c (authenticate, reauthenticate): Update for new
2356         prototypes.
2357         (main): Use soup_session_new.
2358         * tests/get.c (main): Likewise.
2359         * tests/simple-proxy.c (main): Likewise.
2360
2361 2003-09-10  Dan Winship  <danw@ximian.com>
2362
2363         * libsoup/soup-session.c: Add "authenticate" and "reauthenticate"
2364         signals.
2365         (invalidate_auth): Remove the call to soup_auth_invalidate.
2366         (authenticate_auth): soup_auth_fn is gone. If the URI doesn't
2367         contain authentication, then emit "authenticate" or
2368         "reauthenticate" (depending on whether or not this is the first
2369         time we've asked for a password for this auth).
2370         (update_auth_internal): If the server rejects our
2371         username/password, don't bail out immediately. Try doing a
2372         "reauthenticate" first.
2373
2374         * libsoup/soup-misc.c (soup_set_authorize_callback): Gone
2375
2376         * libsoup/soup-auth.c (soup_auth_new_from_header_list): Remove the
2377         "pref" arg.
2378         (soup_auth_invalidate): Remove this; it doesn't actually do
2379         anything useful for us.
2380
2381         * libsoup/soup-auth-basic.c (invalidate): Remove
2382         * libsoup/soup-auth-digest.c: (invalidate): Remove
2383         * libsoup/soup-auth-ntlm.c: (invalidate): Remove
2384
2385         * libsoup/soup-uri.c: Remove all references to "authmech".
2386         (soup_uri_set_auth): Remove this too.
2387
2388         * tests/auth-test.c: Update to use the "authenticate" and
2389         "reauthenticate" signals instead of encoding usernames and
2390         passwords in the URIs. Add a few more test cases.
2391
2392 2003-09-10  Dan Winship  <danw@ximian.com>
2393
2394         * libsoup/soup-message-private.h (SoupMessagePrivate): Remove the
2395         "status" field from here, since it's mostly used by SoupSession,
2396         which shouldn't need access to SoupMessagePrivate.
2397
2398         * libsoup/soup-message.h (SoupMessage): Move it here.
2399         (SoupCallbackFn): Remove this alias for SoupMessageCallbackFn.
2400         (soup_message_set_uri): also moved from soup-message-private.h
2401
2402         * libsoup/soup-message.c: s/msg->priv->status/msg->status/.
2403
2404         * libsoup/soup-message-handlers.c:
2405         s/SoupCallbackFn/SoupMessageCallbackFn/ everywhere.
2406
2407         * libsoup/soup-message-io.c (soup_message_io_client,
2408         soup_message_io_server, soup_message_io_unpause): Don't set up an
2409         idle handler, just jump right in to reading/writing; if this is a
2410         synchronous socket, then the caller wants to block, and if it's
2411         not, then we'll quickly get an EAGAIN anyway.
2412
2413         * libsoup/soup-session.c: (queue_message): Likewise.
2414         (*) Update for SoupMessageStatus move and remove
2415         soup-message-private.h include.
2416
2417         * libsoup/soup-server-message.c: Remove soup-message-private.h
2418         include.
2419
2420         * libsoup/soup-server.c: Likewise.
2421
2422         * libsoup/soup-connection.c (soup_connection_is_connected,
2423         soup_connection_is_new): Remove these, since they weren't being
2424         used.
2425
2426         * libsoup/soup-md5-utils.c: Moved from md5-utils.c and renamed, to
2427         avoid namespace pollution.
2428
2429         * libsoup/soup-auth-digest.c: Update for that.
2430         * libsoup/soup-server-auth.c: Likewise
2431
2432         * tests/auth-test.c: Remove soup-message-private.h include
2433
2434 2003-09-09  Dan Winship  <danw@ximian.com>
2435
2436         Beginnings of improved synchronous API support
2437
2438         * libsoup/soup-dns.c: Simplify this by making it not automatically
2439         return the result: force the caller to poll. (This isn't really a
2440         performance issue: the results should come back quickly anyway.)
2441         Also, make the cache thread-safe.
2442         (soup_dns_entry_from_name): Was soup_gethostbyname
2443         (soup_dns_entry_from_addr): Was soup_gethostbyaddr
2444         (soup_dns_entry_check_lookup): Used to poll to see if DNS is done
2445         (soup_dns_entry_get_hostent): Gets the hostent from an entry (and
2446         blocks if it's not resolved yet).
2447
2448         * libsoup/soup-address.c: Update for soup-dns changes.
2449         (soup_address_new): Don't automatically start resolving the
2450         hostname now, since we don't know if the caller is going to want
2451         it resolved synchronously or asynchronously.
2452         (soup_address_resolve_async): Renamed from soup_address_resolve.
2453         (soup_address_resolve_sync): New routine to do blocking
2454         synchronous DNS.
2455
2456         * libsoup/soup-socket.c (soup_socket_connect): Now returns a
2457         status value directly when connecting synchronously.
2458         (soup_socket_client_new_async, soup_socket_client_new_sync):
2459         Separate async/sync client socket functions.
2460         (soup_socket_get_iochannel): Made static since it was not used
2461         outside soup-socket.
2462
2463         * libsoup/soup-connection.c (soup_connection_new,
2464         soup_connection_new_proxy, soup_connection_new_tunnel): Just set
2465         up the data, don't actually start connecting.
2466         (soup_connection_connect_async, soup_connection_connect_sync): New
2467         async and sync SoupConnection connecting routines.
2468         (soup_connection_get_socket): Remove this since it wasn't being
2469         used.
2470
2471         * libsoup/soup-session.c (final_finished): Run the queue since a
2472         connection is now freed up.
2473         (run_queue): Update for soup_connection_new* changes.
2474
2475         * libsoup/soup-misc.c (soup_substring_index): Remove, since it
2476         wasn't being used any more.
2477
2478         * libsoup/soup-private.h: Remove some prototypes for functions
2479         that no longer exist.
2480
2481         * libsoup/soup-uri.c (soup_uri_copy_root): New utility function
2482         (copies the protocol, host, and port of a SoupUri).
2483
2484         * tests/auth-test.c:
2485         * tests/get.c:
2486         * tests/simple-proxy.c: belatedly update for soup-session change
2487
2488         * tests/revserver.c: Handle each new connection in its own thread,
2489         using synchronous SoupSocket calls.
2490
2491 2003-09-05  Dan Winship  <danw@ximian.com>
2492
2493         * libsoup/soup-session.c: Move a bunch of logic here from
2494         soup-context. Now the session keeps track of hosts (instead of
2495         having a global soup_hosts hash) and their connections.
2496         (soup_session_new_with_proxy, soup_session_new_full): New session
2497         constructors to specify a proxy or a proxy and connection limits
2498         (send_request): Add Authorization and Proxy-Authorization headers
2499         before sending off the request.
2500         (soup_session_queue_message, et al): Improve the way this works.
2501         There's no need to use timeouts to wait for connections to become
2502         free; we *know* when they become free.
2503
2504         * libsoup/soup-private.h: Remove SoupHost and some other
2505         no-longer-used stuff.
2506
2507         * libsoup/soup-misc.c (soup_set_proxy, soup_get_proxy,
2508         soup_set_connection_limit, soup_set_connection_limit): Gone. These
2509         are all per-session now.
2510
2511         * libsoup/soup-message.c: Remove all SoupContext references
2512         (mostly replaced with SoupUri references)
2513         (cleanup_message): priv->connect_tag and priv->connection are gone
2514         now, so this was just soup_message_io_cancel(). So remove
2515         cleanup_message and replace it with that everywhere.
2516         (soup_message_disconnect): Gone.
2517         (soup_message_set_uri): Replaces soup_message_set_context.
2518         (soup_message_set_connection, soup_message_get_connection): Gone
2519
2520         * libsoup/soup-message-server-io.c (parse_request_headers):
2521         s/soup_message_set_context/soup_message_set_uri/
2522
2523         * libsoup/soup-message-private.h (SoupMessagePrivate): Remove
2524         connect_tag, context, and connection.
2525
2526         * libsoup/soup-message-client-io.c (encode_http_auth): Gone.
2527
2528         * libsoup/soup-context.c: Gone
2529
2530         * tests/auth-test.c (identify_auth): update for session/context
2531         changes
2532
2533 2003-09-03  Dan Winship  <danw@ximian.com>
2534
2535         * libsoup/soup-status.h: Renamed from soup-error.h, with types
2536         and defines renamed accordingly.
2537
2538         * libsoup/soup-message.h (SoupMessage): Rename errorcode to
2539         status_code and errorphrase to reason_phrase. Remove errorclass.
2540         (SOUP_MESSAGE_IS_ERROR): Remove this. You can't classify redirects
2541         as being either "errors" or "not errors", so its semantics are
2542         guaranteed to be wrong sometimes.
2543
2544         * libsoup/soup-message.c (soup_message_set_status,
2545         soup_message_set_status_full): Renamed
2546
2547         * libsoup/soup-message-handlers.c
2548         (soup_message_add_status_code_handler,
2549         soup_message_add_status_class_handler): Rename.
2550
2551         * libsoup/soup-session.c (soup_session_send_message): Make this
2552         return a status code rather than a status class.
2553
2554         * libsoup/soup-message-private.h (SoupMessagePrivate): Remove some
2555         unrelated unused fields (retries, callback, user_data).
2556
2557         * ...: Updates
2558
2559 2003-09-02  Dan Winship  <danw@ximian.com>
2560
2561         * libsoup/soup-session.c: First draft at the new object to
2562         maintain formerly-global state. (Not yet complete; still need to
2563         get rid of SoupContext).
2564
2565         * libsoup/soup-message-queue.c: Data structure used by SoupSession
2566
2567         * libsoup/soup-queue.c: Gone. Mostly moved into soup-session, but
2568         some bits went into soup-connection.
2569
2570         * libsoup/soup-connection.c (soup_connection_send_request): New,
2571         to send a request on a connection. The connection updates its
2572         internal state and then hands off to soup_message_send_request.
2573         (request_done): Callback set up by soup_connection_send_request.
2574         Marks the connection as no-longer-in-use, and disconnects it if
2575         the message says to.
2576         (soup_connection_set_in_use, soup_connection_mark_old): No longer
2577         needed; the connection takes care of this itself now.
2578         (soup_connection_new_proxy): New, to create a new connection that
2579         is explicitly marked as being through an HTTP proxy.
2580         (soup_connection_new_tunnel): New, to create a new HTTPS
2581         connection through a proxy. (Includes the code to send the
2582         CONNECT.)
2583
2584         * libsoup/soup-context.c (try_existing_connections): Don't need to
2585         call soup_connection_set_in_use.
2586         (try_create_connection): Use soup_connection_new,
2587         soup_connection_new_proxy, or soup_connection_new_tunnel as
2588         appropriate.
2589
2590         * libsoup/soup-message.c (soup_message_prepare): Replaces
2591         queue_message.
2592         (soup_message_queue, soup_message_requeue, soup_message_prepare):
2593         Gone. This must be done via a SoupSession now.
2594         (soup_message_set_connection): don't need to mark in_use/not
2595         in_use. Also, msg->priv->socket is gone now.
2596         (soup_message_get_socket): Gone.
2597
2598         * libsoup/soup-message-handlers.c (soup_message_run_handlers):
2599         Remove references to global handlers.
2600         (redirect_handler, authorize_handler): Moved to soup-session.c.
2601
2602         * libsoup/soup-misc.c (soup_shutdown): Gone; just unref the
2603         session to shut down now.
2604
2605         * libsoup/soup.h: add soup-session.h
2606
2607         * libsoup/Makefile.am: updates
2608
2609         * tests/auth-test.c, tests/get.c, tests/simple-proxy.c: Use
2610         SoupSession.
2611
2612 2003-08-29  Dan Winship  <danw@ximian.com>
2613
2614         * libsoup/soup-message-io.c: Major rewrite. There is now only a
2615         single IO state object (instead of one for reading and one for
2616         writing), and the IO code handles switching back and forth between
2617         reading and writing as appropriate (including handling the extra
2618         switches needed for "Expect: 100-continue").
2619         (soup_message_io_client, soup_message_io_server): The new entry
2620         points.
2621         (soup_message_io_cancel): If the caller cancels the IO when we
2622         were expecting to read more data, disconnect the socket.
2623
2624         * libsoup/soup-message.h (SoupMessageFlags): add
2625         SOUP_MESSAGE_EXPECT_CONTINUE, to indicate that the IO code should
2626         do the special expect-continue handling.
2627
2628         * libsoup/soup-message.c: Move all the signal stuff here. Remove
2629         the "done_reading" and "done_writing" signals and replace them
2630         with a single "finished" signal. (A single signal. Say that 10
2631         times fast!)
2632         (soup_message_got_headers, etc): Functions to emit signals.
2633         (got_headers, got_chunk, got_body): Default signal methods that
2634         call soup_message_run_handlers.
2635         (finished): Default signal method that replaces
2636         soup_message_issue_callback.
2637         ([various]): s/soup_message_issue_callback/soup_message_finished/
2638         (soup_message_requeue): There's no soup_message_set_read_callbacks
2639         any more, so if the caller requeues while it's still reading, just
2640         cancel the read.
2641         (soup_message_add_chunk, soup_message_add_final_chunk,
2642         soup_message_pop_chunk): Moved here from soup-server-message,
2643         although we don't actually quite support using chunked encoding
2644         for requests yet.
2645
2646         * libsoup/soup-server-message.c (soup_server_message_new): No
2647         longer takes a socket argument.
2648         (soup_server_message_add_chunk, soup_server_message_get_chunk):
2649         Moved into SoupMessage.
2650
2651         * libsoup/soup-message-handlers.c (global_handlers): Make these
2652         POST_BODY rather than PRE_BODY, so they won't mess up the IO
2653         channel when the requeue the message.
2654         (soup_message_run_handlers): Don't need to issue the message
2655         callback from here any more.
2656         (authorize_handler): Just leave the error as 401 or 407 (see
2657         soup-error.h change)
2658
2659         * libsoup/soup-message-client-io.c (soup_message_send_request):
2660         Replaces soup_message_write_request and
2661         soup_message_read_response.
2662
2663         * libsoup/soup-message-server-io.c: Parallel to
2664         soup-message-client-io.c, this defines the server-side header
2665         handling.
2666         (soup_message_read_request): Its entry point.
2667
2668         * libsoup/soup-server.c: Lots of code moved into
2669         soup-message-server-io.c. Update for other changes.
2670
2671         * libsoup/soup-queue.c: Update for changes
2672
2673         * libsoup/soup-socket.c (read_from_network, soup_socket_write):
2674         Don't call soup_socket_disconnect() on an error, just return
2675         SOUP_SOCKET_ERROR. Otherwise soup_socket_disconnect() could emit
2676         signals that will mess up the caller of the read/write function.
2677
2678         * libsoup/soup-connection.c (soup_connection_disconnect): When
2679         disconnecting the socket, disconnect from its signals first to
2680         prevent bad reentrancy.
2681
2682         * libsoup/soup-error.h: Kill off SOUP_ERROR_CANT_AUTHENTICATE and
2683         SOUP_ERROR_CANT_AUTHENTICATE_PROXY, since they don't really say
2684         anything that SOUP_ERROR_UNATHORIZED and
2685         SOUP_ERROR_PROXY_UNAUTHORIZED don't say. (And now, all of the
2686         "transport" errors actually are transport-related.)
2687
2688         * tests/auth-test.c (main): s/CANT_AUTHENTICATE/UNAUTHORIZED/
2689
2690         * tests/simple-proxy.c: Complicate this a bunch. In particular,
2691         use SOUP_MESSAGE_OVERWRITE_CHUNKS and the GOT_CHUNK signal, and
2692         pass the data back to the client in chunked format.
2693
2694 2003-08-27  Dan Winship  <danw@ximian.com>
2695
2696         * libsoup/soup-types.h: New header with typedefs, to avoid
2697         #include loops among other headers.
2698
2699         * libsoup/Makefile.am (libsoupinclude_HEADERS): add it
2700
2701         * libsoup/*.[ch], tests/*.c: Update for soup-types.h
2702         
2703 2003-08-26  Dan Winship  <danw@ximian.com>
2704
2705         * libsoup/soup-message-client-io.c (soup_message_write_request,
2706         soup_message_read_response): Higher-than-soup-message-io-level
2707         functions to do client-side IO. (Code that used to be in
2708         soup-queue.c)
2709         (get_request_header_cb): Fix a bug in the generation of the Host:
2710         header; need to include the port number if it's not the default.
2711
2712         * libsoup/soup-message-io.c (soup_message_write,
2713         soup_message_write_simple): Take separate user_datas for the get_*
2714         callbacks and the done callbacks.
2715
2716         * libsoup/soup-queue.c: Update to use soup_message_write_request
2717         and soup_message_read_response.
2718
2719         * libsoup/soup-connection.c (soup_connection_new): Change the
2720         prototype to take a SoupUri and a callback.
2721
2722         * libsoup/soup-context.c (try_create_connection,
2723         soup_context_connect_cb): Update for soup_connection_new change.
2724
2725         * libsoup/soup-server.c (read_done_cb, issue_bad_request): Update
2726         for soup_message_write changes
2727
2728         * libsoup/soup-uri.c (soup_uri_uses_default_port): new utility
2729         function
2730
2731 2003-08-26  Dan Winship  <danw@ximian.com>
2732
2733         * libsoup/soup-message-private.h: Define SoupMessage signal stuff
2734         (READ_HEADERS, READ_CHUNK, READ_BODY, READ_ERROR, WROTE_HEADERS,
2735         WROTE_CHUNK, WROTE_BODY, WRITE_ERROR).
2736
2737         * libsoup/soup-message.c (class_init): set up signals
2738         (requeue_read_finished): Update for changes.
2739
2740         * libsoup/soup-message-io.c (soup_message_read): Split out
2741         parse_headers_cb from read_headers_cb. Also add a SoupDataBuffer *
2742         arg to say where to store the message body. Set up
2743         read_headers_cb, read_chunk_cb, read_body_cb, and error_cb as
2744         signal handlers.
2745         (do_read): Call r->parse_headers_cb, then emit READ_HEADERS
2746         (read_body_chunk): emit READ_CHUNK.
2747         (issue_final_callback): Set r->body. emit READ_BODY.
2748         (failed_read): emit READ_ERROR.
2749         (soup_message_read_set_callbacks): Disconnect old signal handlers,
2750         connect new ones.
2751         (soup_message_read_cancel): Disconnect signal handlers.
2752         (soup_message_write, soup_message_write_simple): Set up
2753         wrote_body_cb and error_cb as signal handlers.
2754         (do_write): emit WROTE_HEADERS and WROTE_CHUNK, even though
2755         nothing currently ever listens for them. emit WROTE_BODY when
2756         done.
2757         (failed_write): emit WRITE_ERROR
2758
2759         * libsoup/soup-queue.c (soup_queue_parse_headers_cb,
2760         soup_queue_read_headers_cb): Split this into two unequal chunks.
2761         (read_header_cb only runs the pre-body handlers).
2762         (soup_queue_read_chunk_cb, soup_queue_read_done_cb): Update
2763         prototypes.
2764         (soup_queue_write_done_cb): Update call to soup_message_read
2765
2766         * libsoup/soup-server.c (parse_headers_cb): Renamed from
2767         read_headers_cb
2768         (read_done_cb): Update prototype
2769         (start_request): Update soup_message_read call.
2770
2771 2003-08-25  Dan Winship  <danw@ximian.com>
2772
2773         * libsoup/soup-message-io.c (soup_message_read,
2774         soup_message_write, soup_message_write_simple): Add a "user_data"
2775         arg, pass it to the callbacks.
2776
2777         * libsoup/soup-message.c (soup_message_requeue,
2778         requeue_read_finished, requeue_read_error): Update for that
2779
2780         * libsoup/soup-queue.c: Likewise
2781
2782         * libsoup/soup-server.c: Likewise
2783
2784 2003-08-25  Dan Winship  <danw@ximian.com>
2785
2786         * libsoup/soup-message.c (soup_message_new): Take a uri string
2787         instead of a context. Also, swap the args (so the method comes
2788         before the URI, just like in the protocol).
2789         (soup_message_new_from_uri): Like soup_messgae_new, but takes a
2790         SoupUri instead of a string
2791         (soup_message_set_request, soup_message_set_response): Replace
2792         soup_message_new_full.
2793         (cleanup_message): Was soup_message_cleanup, but is static now.
2794         (queue_message): Do the pre-queuing message cleanup here instead
2795         of in soup_queue_message.
2796         (soup_message_queue): Set the callback and user_data, then call
2797         queue_message.
2798         (requeue_read_error, requeue_read_finished, soup_message_requeue):
2799         Use queue_message
2800         (soup_message_get_uri): Replaces soup_message_get_context.
2801
2802         * libsoup/soup-message.h (SoupMessage): Remove msg->context. (It's
2803         part of SoupMessagePrivate now)
2804
2805         * libsoup/soup-context.c: #include soup-message-private
2806         (soup_context_from_uri): constify the uri arg.
2807
2808         * libsoup/soup-queue.c: Various context/uri fixes
2809         (proxy_https_connect): Use soup_message_new_from_uri.
2810         (soup_queue_message): Drastically simplified since most of the
2811         work is in soup-messsage.c:queue_message() now
2812
2813         * libsoup/soup-auth-digest.c (compute_response,
2814         get_authorization): Use soup_message_get_uri.
2815
2816         * libsoup/soup-server-auth.c (parse_digest): Likewise
2817
2818         * libsoup/soup-server.c (call_handler): Likewise
2819
2820         * tests/simple-httpd.c (server_callback): Likewise.
2821
2822         * tests/simple-proxy.c (server_callback): Likewise
2823
2824         * tests/get.c (got_url): Likewise.
2825         (get_url): Update soup_message_new usage.
2826
2827         * tests/auth-test.c: #include soup-message-private. Update for
2828         context changes and soup_message_new change.
2829
2830 2003-08-22  Dan Winship  <danw@ximian.com>
2831
2832         * libsoup/soup-message-private.h: New file containing
2833         SoupMessagePrivate and some other soup-message-internal
2834         types/functions. Also includes the new, expanded SoupMessageStatus
2835         enum.
2836
2837         * libsoup/soup-message-io.c: Replaces what used to be in
2838         soup-transfer, but now all the interfaces take SoupMessages
2839         instead of SoupReader/SoupWriter and deal with maintaining
2840         msg->priv->{read,write}_state themselves. Fixes up all the
2841         refcounting madness.
2842
2843         * libsoup/soup-message-handlers.c: Move the handler code here,
2844         mostly unchanged. (But rename SoupHandlerType to SoupHandlerPhase
2845         to make the distinction from SoupHandlerKind clearer.)
2846
2847         * libsoup/soup-message.c: Update for soup-message-io and new
2848         SoupMessageStatus values. Remove handler code.
2849         (soup_message_cleanup): Remove the hack to try to preserve the
2850         connection if the message gets cleaned up before it finishes
2851         reading. soup_message_requeue handles this in the requeuing case,
2852         and there's no especially compelling reason to bother doing it in
2853         any other case. (And the soup-message-io api doesn't support
2854         having a read operation that's not connected to any message.)
2855
2856         * libsoup/soup-private.h: remove SoupMessagePrivate
2857
2858         * libsoup/soup-queue.c: Update for soup-message-io and new
2859         SoupMessageStatus values.
2860
2861         * libsoup/soup-server-message.c: Likewise
2862
2863         * libsoup/soup-server.c: Likewise
2864
2865         * libsoup/soup-transfer.c: Gone (yay)
2866
2867         * libsoup/Makefile.am (libsoup_2_2_la_SOURCES): update
2868
2869 2003-08-20  Dan Winship  <danw@ximian.com>
2870
2871         * libsoup/soup-message.c: Make this a GObject. (Note that since
2872         SoupMessage was not refcounted before, it's not really refcounted
2873         now either. TBF)
2874         (soup_message_free): Gone, replaced by g_object_unref
2875         (soup_message_copy, soup_message_foreach_remove_header): Remove
2876         these, since neither was currently functional.
2877         (soup_message_is_keepalive): New utility function to look at
2878         HTTP version and request/response headers to decide if a message
2879         indicates the connection should be kept alive.
2880         (soup_message_set_connection, soup_message_get_connection): New
2881         (soup_message_get_socket): New
2882
2883         * libsoup/soup-server-message.c: Make this a subclass of
2884         SoupMessage.
2885         (soup_server_message_new): Now takes a SoupServer and SoupSocket
2886         (soup_server_message_get_server): New
2887         (soup_server_message_set_encoding,
2888         soup_server_message_get_encoding): Get/set whether the message
2889         should be sent with content-length or chunked encoding
2890         (soup_server_message_is_started, soup_server_message_is_finished):
2891         Private member accessors.
2892         (soup_server_message_add_chunk): Renamed from add_data
2893         (soup_server_message_get_chunk): Pops a chunk from the list.
2894         (soup_server_message_get_source): Gone
2895
2896         * libsoup/soup-server.c: Update for SoupServerMessage changes.
2897         (error_cb, write_done_cb): All the cleanup stuff that used to be
2898         here happens automatically by unreffing the message now.
2899         (get_response_header): Remove some erroneous leftover CGI stuff
2900         (issue_bad_request): add "Connection: close" to the response.
2901         (read_headers_cb): clean this up a bit. Reject HTTP/1.1 messages
2902         with no Host header as per RFC 2616.
2903
2904         * libsoup/soup-connection.c (soup_connection_start_ssl): Gone
2905         (soup_connection_set_in_use): Let the caller set the connection to
2906         "not in use" even after the socket has been disconnected.
2907
2908         * libsoup/soup-context.c: Use soup_message_get_connection
2909
2910         * libsoup/soup-headers.c (soup_headers_parse_request): Remove the
2911         check on request length, since it was rejecting
2912         "GET / HTTP/1.0\r\n\r\n", which is a valid complete request.
2913
2914         * libsoup/soup-queue.c: Use soup_message_get_connection and
2915         soup_message_get_socket.
2916         (soup_queue_read_done_cb): Use soup_message_is_keepalive
2917         (proxy_https_connect_cb): Use soup_socket_start_ssl rather than
2918         soup_connection_start_ssl
2919
2920         * libsoup/soup-socket.c (finalize): disconnect the GIOChannel
2921         handlers if the socket hasn't been disconnected yet.
2922
2923         * libsoup/soup-transfer.c (soup_reader_read_body_chunk,
2924         reader_read): Fix these so that reader_read will exit properly if
2925         the read is cancelled.
2926
2927         * tests/auth-test.c (main): s/soup_message_free/g_object_unref/
2928
2929         * tests/simple-httpd.c (server_callback): set the message to
2930         content-length encoding.
2931         * tests/simple-proxy.c (server_callback): Likewise
2932
2933 2003-08-19  Dan Winship  <danw@ximian.com>
2934
2935         * libsoup/soup-socket.c (soup_socket_read,
2936         soup_socket_read_until, soup_socket_write): New API for doing
2937         socket IO. Works both synchronously and asynchronously, and
2938         buffers data to prevent the "100 Continue" problem.
2939         (soup_socket_set_flag): Replaces formerly-private
2940         soup_set_sockopts. (primarily to let the caller turn off
2941         SOUP_SOCKET_FLAG_NONBLOCKING).
2942
2943         * libsoup/soup-transfer.c (soup_transfer_read,
2944         soup_transfer_write, soup_transfer_write_simple): Take a
2945         SoupSocket instead of a GIOChannel. Use the new socket IO api.
2946         Changed the prototypes of some of the callbacks to be less
2947         hackish.
2948
2949         * libsoup/soup-connection.c (soup_connection_get_socket): Replaces
2950         soup_connection_get_iochannel.
2951
2952         * libsoup/soup-message.c: Fix up for soup-transfer changes
2953
2954         * libsoup/soup-queue.c: Likewise
2955
2956         * libsoup/soup-server.c: Likewise
2957
2958         * tests/revserver.c: A slightly more complicated replacement for
2959         timeserver. (Does both reads and writes)
2960
2961 2003-08-19  Dan Winship  <danw@ximian.com>
2962
2963         * libsoup/soup-socks.[ch]: Remove this. RC doesn't let you
2964         configure it, and no one has complained, and it looks like the
2965         SOCKS5 auth code doesn't actually work anyway...
2966
2967         * libsoup/soup-queue.c (proxy_connect): Remove SOCKS code.
2968
2969         * libsoup/soup-uri.h: Remove SOUP_PROTOCOL_SOCKS4 and
2970         SOUP_PROTOCOL_SOCKS5
2971
2972         * libsoup/soup-misc.c: Remove a references to SOCKS in a comment
2973
2974         * libsoup/Makefile.am (libsoup_2_2_la_SOURCES): remove
2975         soup-socks.[ch]
2976
2977 2003-08-19  Dan Winship  <danw@ximian.com>
2978
2979         * libsoup/soup-server.c: Make this a GObject. Remove
2980         SoupServerMessage code (to soup-server-message.c). Remove CGI
2981         server code (for now?)
2982         (soup_server_add_handler, soup_server_remove_handler): Rename
2983         (from register/unregister) to make it clearer what they do.
2984
2985         * libsoup/soup-server-message.c: Moved out of soup-server.c
2986
2987         * libsoup/soup-private.h: Remove SoupServer def
2988
2989         * libsoup/Makefile.am (libsoupinclude_HEADERS,
2990         libsoup_2_2_la_SOURCES): add soup-server-message.[ch]
2991
2992         * tests/simple-httpd.c: 
2993         * tests/simple-proxy.c: Update for SoupServer changes
2994
2995 2003-08-18  Dan Winship  <danw@ximian.com>
2996
2997         * libsoup/soup-address.c (SoupAddressPrivate): Make this more like
2998         a struct sockaddr again (like it used to be). In particular, add
2999         back the "port" field. Add a bunch of macros to try (and fail) to
3000         simplify some of the code.
3001         (soup_address_new): Now returns a SoupAddress directly rather than
3002         a random handle, and the caller can just use g_object_unref to
3003         cancel the lookup. Also, the callback now uses a
3004         SoupKnownErrorCode rather than a special-purpose address-lookup
3005         error code.
3006         (soup_address_new_cancel): No longer needed.
3007         (soup_address_new_sync): Removed
3008         (soup_address_new_any): Replaces soup_address_ipv4_any and
3009         soup_address_ipv6_any.
3010         (soup_address_get_name, etc): Gone. Use soup_address_resolve()
3011         now.
3012         (soup_address_get_physical): Renamed from
3013         soup_address_get_canonical_name.
3014         (soup_address_get_sockaddr): Replaces soup_address_make_sockaddr()
3015
3016         * libsoup/soup-socket.c: Update for SoupAddress changes and make
3017         similar changes here.
3018         (soup_socket_new): Just creates a generic SoupSocket now.
3019         (soup_socket_connect): Client setup
3020         (soup_socket_listen): Server setup. Now also sets up an iochannel
3021         listening for connects and emits a "new_connection" signal as they
3022         come in.
3023         (soup_socket_start_ssl): Turns on SSL.
3024         (soup_socket_client_new, soup_socket_server_new): Utility
3025         functions that wrap the above.
3026         (soup_socket_new_cancel, soup_socket_new_sync): Gone
3027         (soup_socket_server_accept, soup_socket_server_try_accept): No
3028         longer needed.
3029         (soup_socket_get_iochannel): No longer adds a ref when returning
3030         the iochannel. Also, we set it to "close_on_unref" so that if a
3031         caller adds a ref to it, the connection will actually remain open
3032         even after the SoupSocket is destroyed.
3033         (soup_socket_get_local_address, soup_socket_get_remote_address):
3034         Let the caller get both of these.
3035
3036         * libsoup/soup-connection.c: Don't keep a private copy of the
3037         socket's iochannel.
3038         (soup_connection_new): Don't need to set socket options here.
3039         SoupSocket does it.
3040         (soup_connection_start_ssl): Just call soup_socket_start_ssl.
3041         (soup_connection_get_iochannel): Just return the socket's
3042         iochannel (and don't ref it)
3043
3044         * libsoup/soup-error.c: add SOUP_ERROR_CANT_RESOLVE and
3045         SOUP_ERROR_CANT_RESOLVE_PROXY
3046
3047         * libsoup/soup-dns.c (soup_ntop): Make the address arg const.
3048         Remove the "FIXME add a CANT_RESOLVE error" and return
3049         SOUP_ERROR_CANT_RESOLVE instead.
3050
3051         * libsoup/soup-server.c: Update for socket/address changes. Don't
3052         poke into SoupSocket's private fields.
3053         (soup_server_run_async): Just connect to the socket's
3054         "new_connection" signal.
3055
3056         * libsoup/soup-context.c (try_create_connection,
3057         soup_context_connect_cb): Update for socket changes. Replace
3058         SOUP_CONNECT_ERROR codes with plain SOUP_ERROR codes.
3059
3060         * libsoup/soup-misc.c (soup_signal_connect_once): Utility function
3061         to connect to a signal handler and connect another function to
3062         clean up the first signal handler after its first invocation.
3063         (Lets us use signals to replace one-off callbacks.)
3064
3065         * libsoup/soup-private.h: Remove SoupSocketPrivate since it is
3066         actually private now.
3067         (struct _SoupServer): Remove accept_tag.
3068
3069         * libsoup/soup-queue.c (soup_queue_read_done_cb, start_request):
3070         Don't unref the iochannel.
3071         (soup_queue_connect_cb): Takes a SoupKnownErrorCode now.
3072
3073         * libsoup/soup-socks.c: Update for socket/address changes
3074
3075         * tests/simple-httpd.c (main):
3076         s/SOUP_SERVER_ANY_PORT/SOUP_ADDRESS_ANY_PORT/
3077         * tests/simple-proxy.c (main): Likewise
3078
3079         * tests/timeserver.c: Update for SoupSocket's "new_connection"
3080         signal, and for SoupAddress changes.
3081
3082 2003-08-14  Dan Winship  <danw@ximian.com>
3083
3084         * libsoup/soup-connection.c: New, split out from soup-context and
3085         made into a GObject.
3086         (soup_connection_disconnect): Disconnects the connection and emits
3087         a signal. (Replaces the old "keep_alive" flag.)
3088         (soup_connection_is_connected): Checks if the connection is still
3089         connected
3090         (connection_died): Just disconnect, rather than freeing the
3091         connection. This way if anyone else is still referencing it they
3092         won't end up with an invalid pointer.
3093
3094         * libsoup/soup-context.c: Make this a GObject, remove all the
3095         SoupConnection code. Add an "ntlm_auths" field to SoupHost so that
3096         SoupContext can keep track of connection auth stuff there without
3097         SoupConnection needing to care. Various other updates.
3098
3099         * libsoup/soup-private.h: Remove SoupContext and SoupConnection
3100         definitions.
3101
3102         * libsoup/*.c, tests/get.c: Update for context/connection changes
3103
3104         * libsoup/soup-socks.c (soup_connect_socks_proxy): Change the
3105         definition to deal with the fact that there's no
3106         soup_connection_get_context any more.
3107
3108         * libsoup/soup-queue.c (soup_queue_read_headers_cb): Don't deal
3109         with connection persistence here.
3110         (soup_queue_read_done_cb): Do it here instead. Disconnect the
3111         connection when appropriate.
3112         (proxy_connect, proxy_https_connect, proxy_https_connect_cb):
3113         Reference-count the connection properly. (I think.)
3114
3115         * libsoup/soup-marshal.list: New, for SoupConnection's
3116         "disconnected" signal.
3117
3118         * libsoup/Makefile.am: add rules to build soup-marshal.[ch]
3119
3120         * configure.in: Use AM_PATH_GLIB_2 rather than pkg-config, so that
3121         GLIB_GENMARSHAL gets set too.
3122
3123 2003-08-14  Dan Winship  <danw@ximian.com>
3124
3125         * libsoup/soup-error.c: Fix a spelling mistake.
3126
3127         * libsoup/*.c: Fix use of @/%/#/() in gtk-doc comments
3128
3129 2003-08-12  Dan Winship  <danw@ximian.com>
3130
3131         * libsoup/soup-auth.c: Make this an abstract GObject. Tweak some
3132         of the interfaces around a little bit.
3133
3134         * libsoup/soup-auth-basic.c: subclass for Basic auth
3135
3136         * libsoup/soup-auth-digest.c: subclass for Digest auth
3137
3138         * libsoup/soup-auth-ntlm.c: subclass for NTLM auth. Move all of
3139         the code from soup-ntlm.c here, and make it private.
3140
3141         * libsoup/soup-ntlm.c: gone
3142
3143         * libsoup/soup-misc.h: Remove the definition of SoupAuthType from
3144         here, and change the signature of SoupAuthorizeFn.
3145
3146         * libsoup/soup-context.c: Use g_object_unref to free auths, use
3147         methods instead of directly access private fields.
3148
3149         * libsoup/soup-queue.c: Likewise
3150
3151         * libsoup/soup-server-auth.c (soup_server_auth_free): Remove all
3152         NTLM references. We have no plans to implement server-side NTLM
3153         auth.
3154
3155         * tests/auth-test.c (identify_auth): Update for auth api changes
3156
3157 2003-08-12  Dan Winship  <danw@ximian.com>
3158
3159         * configure.in (GLIB): add gobject-2.0 to the PKG_CHECK_MODULES
3160         call
3161
3162         * libsoup/soup-address.c: Make this a GObject.
3163         (soup_address_ref, soup_address_unref): Gone.
3164         (soup_address_copy): Gone. Wasn't being used anyway.
3165
3166         * libsoup/soup-dns.c: Move all of the DNS code and caching stuff
3167         here from soup-address.c, so that soup-address doesn't need to
3168         worry about trying to cache zero-ref addresses.
3169
3170         * libsoup/soup-socket.c: Make this a GObject. Use "guint"
3171         consistently for port numbers.
3172         (soup_socket_ref, soup_socket_unref): Gone.
3173
3174         * libsoup/soup-private.h: Change the SoupSocket definition to be
3175         SoupSocketPrivate. (Still need to keep this here since soup-server
3176         pokes around in its internals.)
3177         (SOUP_MAKE_TYPE): Copied from gal's E_MAKE_TYPE.
3178
3179         * libsoup/soup-server.c (read_done_cb, write_done_cb): Unref the
3180         reader/writer rather than leaking them.
3181
3182         * libsoup/*: Use GObject methods for socket/address refcounting
3183         
3184         * tests/auth-test.c (main)
3185         * tests/timeserver.c (main): Call g_type_init.
3186
3187         * tests/get.c (main): Call g_type_init.
3188         (get_url, got_url): Fix some bugs that could make -r mode get into
3189         infinite loops downloading the same files over and over. Plug some
3190         memory leaks to make this more useful for valgrinding libsoup.
3191
3192         * tests/simple-httpd.c (main): Call g_type_init. Set up a signal
3193         handler for SIGINT so we can exit cleanly, since valgrind won't
3194         give a leak report if you don't. Plug a few memory leaks.
3195
3196         * tests/simple-proxy.c (main): Likewise 
3197
3198 2003-08-12  Dan Winship  <danw@ximian.com>
3199
3200         Pull over some new test programs from the soup-refactoring branch,
3201         along with the SoupUri changes they depend on.
3202
3203         * tests/simple-httpd.c: A really simple HTTP server, to test the
3204         server code.
3205
3206         * tests/simple-proxy.c: An even simpler HTTP proxy
3207
3208         * tests/get.c: Add "-r" flag to recursively get files (thereby
3209         testing multiple-connections-at-once code). Also good for setting
3210         up a tree to use with simple-httpd.
3211
3212         * tests/timeserver.c (main): Fix a bug. (s/ipv6/ipv4/ in the
3213         normal case)
3214
3215         * tests/uri-parsing.c: Regression test for the new soup-uri.c
3216
3217         * libsoup/soup-uri.c: Rewrite/update to conform to RFC 2396, and
3218         pull in some optimizations from camel-url. Also, make SoupProtocol
3219         a GQuark so we can still compare them with ==, but we can also
3220         recognize any protocol.
3221         (soup_uri_new_with_base): New, to merge base and relative URIs
3222         (soup_uri_to_string): Update this. Change the "show_password" flag
3223         (which we always passed FALSE for) to "just_path", for places that
3224         want the path+query without the protocol, host, etc.
3225
3226         * libsoup/soup-queue.c (soup_get_request_header): Just use
3227         soup_uri_to_string to generate the request URI.
3228
3229         * libsoup/soup-auth.c (compute_response, digest_auth_func): Use
3230         "soup_uri_to_path (uri, TRUE)" rather than trying to reassemble
3231         the URI by hand badly.
3232         * libsoup/soup-server-auth.c (parse_digest): Likewise
3233
3234         * libsoup/soup-socks.c (soup_connect_socks_proxy): Change a
3235         switch() to an series of if()s since SOUP_PROTOCOL_* aren't
3236         constants any more.
3237
3238         * libsoup/soup-context.c (soup_context_uri_hash,
3239         soup_context_uri_equal): s/querystring/query/
3240
3241 2003-08-12  Dan Winship  <danw@ximian.com>
3242
3243         * configure.in: Bump API version to 2.2 and package version to
3244         2.1.0. Remove NSS and OpenSSL checks and proxy-related config. Use
3245         libgnutls-config to find GNUTLS.
3246
3247         * libsoup-2.2.pc.in: Update, and rename from soup-2.0.pc
3248
3249         * Makefile.am: Update for pc file rename
3250
3251         * libsoup/Makefile.am: s/2.0/2.2/ everywhere. Remove NSS, OpenSSL,
3252         and libsoup-ssl-proxy stuff.
3253
3254         * libsoup/soup-ssl-proxy.c
3255         * libsoup/soup-nss.[ch]
3256         * libsoup/soup-openssl.[ch]: gone
3257
3258         * libsoup/soup-ssl.c: remove NSS and OpenSSL bits
3259
3260         * tests/Makefile.am (get_LDADD, timeserver_LDADD,
3261         auth_test_LDADD): Update libsoup version
3262
3263 2003-08-07  Dan Winship  <danw@ximian.com>
3264
3265         * libsoup/soup-auth.c (soup_auth_lookup, soup_auth_set_context,
3266         soup_auth_invalidate): These are all really SoupContext functions,
3267         so move them to soup-context.c (and rename them appropriately).
3268         (soup_auth_get_protection_space): New method to get the
3269         "protection space" of an auth (paths where it is valid).
3270         (soup_auth_invalidate): New method to try to un-authenticate an
3271         auth (so we can keep the domain info cached even if the auth info
3272         is wrong).
3273         (basic_pspace_func): Basic protection space is all directories
3274         below the current one.
3275         (basic_invalidate_func): Clear the encoded username/password
3276         (digest_pspace_func): Digest protection space is either the whole
3277         server, or "what the domain parameter says" (though we don't deal
3278         with cross-host domains).
3279         (digest_invalidate_func): Return FALSE; bad digest auth info isn't
3280         cacheable.
3281         (digest_parse_func, digest_free): Set/free domain parameter
3282         (ntlm_pspace): NTLM protection space is always the whole server.
3283         (ntlm_invalidate): Clear the auth state.
3284         (soup_auth_new_ntlm): Make this non-static
3285         (SoupAuth): Replace the quad-state "status" field with an
3286         "authenticated" boolean.
3287         
3288         * libsoup/soup-private.h (SoupHost): Replace the "valid_auths"
3289         hash with separate "auth_realms" (path->realm) and "auths"
3290         (realm->auth) hashes. Also add a "use_ntlm" flag.
3291
3292         * libsoup/soup-context.c (soup_context_unref): Update SoupHost
3293         freeing code.
3294         (connection_free): Don't the connection's auth, just free it.
3295         (soup_context_lookup_auth): Formerly soup_auth_lookup, but now
3296         does two-stage lookup (path->realm then realm->auth) and also
3297         deals with NTLM hacks.
3298         (soup_context_update_auth): Mostly formerly soup_auth_set_context,
3299         but also large parts of authorize_handler. Updates the auth hashes
3300         based on information from a 401 or 407 response. Does a better job
3301         than authorize_handler did of not throwing away good information.
3302         (soup_context_preauthenticate): New; fakes up auth info so that
3303         requests will end up using authentication without the server
3304         needing to return an error first.
3305         (soup_context_authenticate_auth): Moved out of authorize_handler
3306         so it can be used at request-sending time too, if we know that we
3307         need it. (That way we can avoid requeuing the request if it isn't
3308         going to be able to be authenticated.)
3309         (soup_context_invalidate_auth): Sort of like the old
3310         soup_auth_invalidate, but only destroys the auth data, while still
3311         remembering the path->realm mapping.
3312
3313         * libsoup/soup-message.c (authorize_handler): Mostly moved into
3314         soup_context_update_auth.
3315         (maybe_validate_auth): Remove this; it was only useful because of
3316         bugs elsewhere in the auth handling.
3317         
3318         * libsoup/soup-queue.c (soup_encode_http_auth): Update for
3319         soup_context_lookup_auth. If the returned auth isn't
3320         authenticated, call soup_context_authenticate_auth() on it.
3321
3322         * tests/auth-test.c: New (from soup-refactoring branch). Tests
3323         that the Basic/Digest auth code does the right thing. (TODO: find
3324         a good way to add NTLM tests too.)
3325
3326         * tests/Makefile.am (check_PROGRAMS): add auth-test
3327
3328 2003-07-29  Dan Winship  <danw@ximian.com>
3329
3330         * configure.in: 1.99.25 ("Potato and Leek Soup")
3331
3332         * libsoup/soup-message.c (requeue_read_finished,
3333         release_connection): Free the passed-in body data. Otherwise the
3334         response body ends up getting leaked on most 3xx and 4xx
3335         responses.
3336         (soup_message_cleanup): Remove a piece of code that didn't
3337         actually do anything and its associated confused comment.
3338
3339         * libsoup/soup-auth.c (ntlm_free): plug an occasional NTLM auth leak
3340
3341         * libsoup/soup-context.c (connection_free): plug a non-occasional
3342         NTLM auth leak.
3343
3344 2003-06-26  Joe Shaw  <joe@ximian.com>
3345
3346         * configure.in: Version 1.99.24
3347
3348 2003-06-24  Dan Winship  <danw@ximian.com>
3349
3350         * configure.in: Check pkgconfig for openssl, since 0.9.7 (a) uses
3351         it, and (b) depends on lots of new things sometimes (like on RH9).
3352
3353         * libsoup/soup-openssl.c: 
3354         * libsoup/soup-ssl-proxy.c: Change #ifdef HAVE_OPENSSL_SSL_H to
3355         just #ifdef HAVE_OPENSSL since the header check doesn't get run in
3356         the pkgconfig case
3357
3358 2003-06-19  Dan Winship  <danw@ximian.com>
3359
3360         * libsoup/soup-queue.c (soup_queue_read_done_cb): unref the
3361         old read_tag before changing/clearing it.
3362         (soup_queue_write_done_cb): Likewise with the write_tag.
3363
3364         * libsoup/soup-transfer.c (issue_final_callback): ref the reader
3365         around the stop+callback.
3366         (soup_transfer_write_cb): Likewise.
3367
3368 2003-06-12  Dan Winship  <danw@ximian.com>
3369
3370         * libsoup/soup-transfer.c (SoupReader, SoupWriter): add a
3371         ref_count field.
3372         (soup_transfer_read, create_writer): Set initial ref_count to 2
3373         (one for soup-transfer, one for the caller).
3374         (soup_transfer_read_ref, soup_transfer_read_unref): ref/unref a
3375         reader
3376         (soup_transfer_read_stop): Clears the GIOChannel callbacks and
3377         drops soup-transfer's ref.
3378         (soup_transfer_read_cancel): Now just a stop+unref
3379         (soup_transfer_write_ref, soup_transfer_write_unref,
3380         soup_transfer_write_stop, soup_transfer_write_cancel): Similarly.
3381
3382         * libsoup/soup-message.c (soup_message_cleanup): when setting up
3383         the "finish reading" callbacks, unref the reader so it will be
3384         destroyed once it's done reading.
3385         (soup_message_requeue): Likewise.
3386
3387         * libsoup/soup-queue.c (soup_queue_read_headers_cb): Update for
3388         prototype change (no longer returns a SoupTransferDone).
3389         (soup_queue_read_chunk_cb): Likewise.
3390
3391         * libsoup/soup-server.c (read_headers_cb): Likewise
3392
3393 2003-06-11  Dan Winship  <danw@ximian.com>
3394
3395         * libsoup/soup-transfer.c: Change all functions to take a
3396         SoupReader * or SoupWriter * instead of a guint.
3397
3398         * libsoup/soup-private.h (SoupMessagePrivate): make read_tag and
3399         write_tag pointers instead of guints.
3400
3401 2003-06-02  Chris Toshok  <toshok@ximian.com>
3402
3403         * libsoup/soup-ssl.c: remove #include for soup-nss.h
3404
3405 2003-06-02  Chris Toshok  <toshok@ximian.com>
3406
3407         * libsoup/Makefile.am (INCLUDES): remove NSS_CFLAGS.
3408         (libsoup_2_0_la_LIBADD): remove NSS_LIBS.
3409         (libsoup_2_0_la_SOURCES): remove soup-nss.[ch]
3410
3411 2003-06-02  Chris Toshok  <toshok@ximian.com>
3412
3413         * configure.in: Bump version to 1.99.23.
3414
3415 2003-05-30  Chris Toshok  <toshok@ximian.com>
3416
3417         * libsoup/soup-queue.c (soup_queue_error_cb): always force a
3418         reconnect when there's an error with ssl connection.  This fixes
3419         #43387, but it runs the risk of sending requests multiple times to
3420         the exchange server, and it results in lots of shorter lived
3421         connections and more forking (in the ssl proxy case), depending on
3422         the length of the operation.
3423
3424 2003-05-21  Dan Winship  <danw@ximian.com>
3425
3426         * configure.in: 1.99.22 (codename: French Onion Soup)
3427
3428 2003-05-20  Dan Winship  <danw@ximian.com>
3429
3430         * libsoup/soup-message.c (soup_message_requeue): Clear the
3431         write_tag as well so we don't double-cancel it. #43395.
3432
3433         * libsoup/soup-queue.c (soup_queue_error_cb): The connection might
3434         be destroyed by the end of the func, so we have to call
3435         soup_connection_set_used at the beginning.
3436
3437         * libsoup/soup-openssl.c (soup_openssl_read, soup_openssl_write):
3438         Call g_set_error() so that we don't SEGV immediately after
3439         returning G_IO_STATUS_ERROR.
3440
3441 2003-05-08  Joe Shaw  <joe@ximian.com>
3442
3443         * configure.in: Bump version to 1.99.21
3444
3445         * libsoup/soup-queue.c (proxy_connect): If the proxy HTTPS
3446         tunnelling fails, the other message which shares our same
3447         connection will free it first, so set ours to NULL.
3448
3449 2003-05-08  Dan Winship  <danw@ximian.com>
3450
3451         * libsoup/soup-auth.c (ntlm_auth): If the auth status is PENDING,
3452         return an NTLM request string. Otherwise return the "response"
3453         field (which should include the NTLM authenticate message)
3454         (ntlm_init): Don't bother setting "response" to the NTLM request
3455         string. Just leave it NULL in that case.
3456
3457         * libsoup/soup-message.c (authorize_handler): Never try to reuse
3458         an NTLM auth returned from soup_auth_lookup. Only set the auth on
3459         the connection when it's SOUP_AUTH_STATUS_SUCCESSFUL. Otherwise,
3460         call soup_auth_set_context() on it just like for non-NTLM auth.
3461         The net effect of all of this is that now we record when a context
3462         needs NTLM auth just like with non-NTLM auth, so that that info
3463         gets preserved across connections.
3464         (soup_message_requeue): No longer need the hackery here to
3465         preserve the connection auth state.
3466
3467 2003-05-07  Dan Winship  <danw@ximian.com>
3468
3469         * libsoup/soup-context.c (soup_connection_set_in_use): New, to
3470         toggle the connection's in_use flag, and set up the death watch
3471         when it's not in use.
3472         (connection_death): This is only hooked up when the connection is
3473         not in use now, so don't need to check that. Should fix the
3474         infinite connection_death loop.
3475         (soup_connection_is_new): Keep a distinct "new" flag rather than
3476         defining "new" as "has been released at least once".
3477         (soup_connection_set_used): Mark a connection no-longer new.
3478         (soup_context_connect_cb): Mark the connection as new. Don't set
3479         up the death watch since it's in_use.
3480         (try_existing_connections): Use soup_connection_set_in_use.
3481         (soup_connection_release): Likewise
3482
3483         * libsoup/soup-message.c (requeue_read_finished): Call
3484         soup_connection_set_used so that the connection isn't still
3485         considered new when we send the message the second time.
3486
3487         * libsoup/soup-queue.c (soup_queue_error_cb): Call
3488         soup_connection_set_used (assuming we don't close the connection)
3489         (soup_queue_read_done_cb): Likewise.
3490
3491         * libsoup/soup-transfer.c (soup_transfer_read_cb): If we read
3492         nothing, call soup_transfer_read_error_cb rather than just
3493         cancelling, or else it will get cancelled again later.
3494
3495 2003-05-07  Dan Winship  <danw@ximian.com>
3496
3497         * soup-2.0.pc.in (Libs): Don't put @OPENSSL_LIBS@ here; the
3498         library doesn't depend on them, only the proxy does. #42473
3499
3500 2003-05-06  Dan Winship  <danw@ximian.com>
3501
3502         * src/libsoup/soup-message.c (global_handlers): Change the
3503         redirect handler to be a RESPONSE_ERROR_CLASS_HANDLER for
3504         SOUP_ERROR_CLASS_REDIRECT rather than a RESPONSE_HEADER_HANDLER
3505         for "Location" to get around the non-64-bit-clean union
3506         initialization pointed out by Jeremy Katz <katzj@redhat.com>.
3507         (redirect_handler): Update for that.
3508
3509 2003-04-28  Dan Winship  <danw@ximian.com>
3510
3511         * configure.in: 1.99.20
3512
3513         * libsoup/soup-transfer.c (soup_transfer_read_error_cb): Make sure
3514         we always call UNIGNORE_CANCEL. Might fix #41971
3515
3516 2003-04-25  Dan Winship  <danw@ximian.com>
3517
3518         * libsoup/soup-queue.c (soup_queue_error_cb): if an old connection
3519         suddenly gets an io error while reading or writing, assume it's a
3520         timeout or something, close the connection, and requeue the
3521         message.
3522
3523 2003-04-23  Dan Winship  <danw@ximian.com>
3524
3525         * libsoup/soup-message.c (soup_message_cleanup): Don't set up the
3526         soup-transfer callbacks to keep reading off the connection unless
3527         we're actually going to keep the connection around afterward.
3528         Otherwise we can just close it.
3529
3530         * libsoup/soup-transfer.c: Re-kludge the awful IGNORE_CANCEL
3531         thingy so that it's possible to cancel a read from inside a
3532         callback so that the above change actually works instead of just
3533         crashing.
3534
3535 2003-04-20  Rodney Dawes  <dobey@ximian.com>
3536
3537         * configure.in: Up version to 1.99.18
3538         * libsoup/Makefile.am: Line separator after GNUTLS_CFLAGS
3539         
3540 2003-04-11  Dan Winship  <danw@ximian.com>
3541
3542         * libsoup/soup-context.c (soup_connection_purge_idle): New
3543         function to close all idle connections. (Needed for #41117 or else
3544         there's no way to force-discard NTLM authentication.)
3545
3546         * libsoup/soup-queue.c (soup_queue_shutdown): Use it
3547
3548 2003-04-10  Joe Shaw  <joe@ximian.com>
3549
3550         * libsoup/soup-queue.c (proxy_https_connect):
3551         proxy_https_connect_cb() might not get called if connecting to the
3552         proxy fails, and it causes us to double-free the connection.
3553         Always set the message's connection to NULL before freeing it.
3554
3555 2003-04-09  Dan Winship  <danw@ximian.com>
3556
3557         * configure.in: 1.99.17
3558
3559 2003-04-07  Dan Winship  <danw@ximian.com>
3560
3561         * libsoup/soup-context.c (connection_death): Revert Joe's changes.
3562         We can't release the connection there because there may be
3563         SoupMessages still pointing to it. (Needs to be revisited.)
3564
3565 2003-04-03  JP Rosevear  <jpr@ximian.com>
3566
3567         * libsoup/soup-ssl.c (soup_ssl_hup_waitpid): guard against EINTR
3568         error during waitpid
3569
3570         * libsoup/soup-address.c: ditto
3571
3572 2003-04-02  Joe Shaw  <joe@ximian.com>
3573
3574         * libsoup/soup-context.c (connection_death): Only drop the
3575         connection if we get an error condition on the channel.  Fixes a
3576         double-free.
3577
3578 2003-04-02  Joe Shaw  <joe@ximian.com>
3579
3580         * libsoup/soup-context.c (connection_death): Just call
3581         soup_connection_release() from here and return whether the
3582         connection is in use.
3583
3584 2003-03-31  Ian Peters  <itp@ximian.com>
3585
3586         * libsoup/soup-gnutls.c (soup_gnutls_close): loop on gnutls_bye in
3587         case of EAGAIN or EINTR, since shutting down an SSL connection
3588         requires more than just closing a socket.
3589
3590 2003-03-28  Dan Winship  <danw@ximian.com>
3591
3592         * libsoup/soup-message.c (soup_message_set_context): If the new
3593         context points to a different server from the old context, call
3594         soup_message_cleanup. Otherwise it tries to reuse the old
3595         connection...
3596
3597 2003-03-25  Joe Shaw  <joe@ximian.com>
3598
3599         * configure.in: Bump up to 1.99.16
3600
3601 2003-03-24  Joe Shaw  <joe@ximian.com>
3602
3603         * soup-error.[ch]: Add SOUP_ERROR_SSL_FAILED which gives a
3604         slightly better error message on various SSL failures than the
3605         previous message.
3606
3607         * soup-queue.c (soup_queue_error_cb): Throw the
3608         SOUP_ERROR_SSL_FAILED error when we fail an SSL handshake.
3609
3610 2003-03-21  Joe Shaw  <joe@ximian.com>
3611
3612         * soup-server.c: Use non-deprecated g_main_loop_* calls
3613         throughout.
3614         (soup_server_unref): Don't unref the main loop if it's NULL.
3615         Fixes a glib warning.
3616
3617 2003-03-18  Dan Winship  <danw@ximian.com>
3618
3619         * configure.in: comment out NSS checks. The NSS code doesn't work
3620         and there are no current plans to fix it.
3621
3622         * README (Features): Mention GnuTLS, remove NSS and the rest of
3623         the "Planned Features" section.
3624
3625         * MAINTAINERS: remove Alex
3626
3627         * libsoup/soup-openssl.c (soup_openssl_get_iochannel): Bump the
3628         timeout to 10 seconds (and get rid of the 3 tries) so we don't
3629         fail to connect just because the server is slow/far away.
3630
3631 2003-03-17  Joe Shaw  <joe@ximian.com>
3632
3633         * configure.in: Bump up to 1.99.15.
3634
3635 2003-03-12  Ian Peters  <itp@ximian.com>
3636
3637         * libsoup/soup-gnutls.c: because creating client credentials is
3638         expensive, keep the same one around as long as possible, only
3639         recreating it if the ssl_ca_file changes.  Wrap
3640         gnutls_certificate_credentials in a refcounted struct to avoid
3641         freeing it while another established connection may potentially
3642         need it (say, to rehandshake).
3643
3644 2003-03-11  Frank Belew  <frb@ximian.com>
3645
3646         * soup-2.0.pc.in: add ssl libs to defaults, since ssl doesn't 
3647         use pkgconfig
3648
3649 2003-03-10  Joe Shaw  <joe@ximian.com>
3650
3651         * configure.in: Bump up to 1.99.14.
3652
3653         * configure.in, libsoup/Makefile.am, libsoup/soup.gnutls.[ch],
3654         libsoup/soup-ssl.c: Add support for GnuTLS.  Patch from Ian
3655         Peters.
3656
3657 2003-03-07  Joe Shaw  <joe@ximian.com>
3658
3659         * configure.in: Bump up to 1.99.13.
3660
3661         * libsoup/soup-context.c (soup_context_connect_cb): Add G_IO_IN to
3662         the list of conditions to watch.  If the remote end hangs up the
3663         connection, we'll get a successful read of 0 bytes, not a HUP.
3664         The connection will have to be released by the point we check for
3665         it in connection_death().
3666
3667         * libsoup/soup-queue.c (soup_queue_error_cb): Get rid of some
3668         (apparently) errant resetting of the read and write tags.  I think
3669         this might have been causing some reentrancy and crashes.
3670
3671         * libsoup/soup-socket.c (soup_socket_get_iochannel): Set the IO
3672         channel to NULL encoding and not buffered.
3673
3674         * libsoup/soup-transfer.c (soup_transfer_read_cb): Remove some
3675         incorrect comments.
3676
3677 2003-02-28  Joe Shaw  <joe@ximian.com>
3678
3679         * configure.in: Bump up to 1.99.12.
3680
3681         * libsoup/soup-transfer.c (soup_transfer_read_cb): We can get a
3682         header_len of 0 and a total_read of 0 in the case of a SIGPIPE; in
3683         this case we probably don't want to call the error callback, we
3684         just want to act like our transfer was cancelled.
3685
3686 2003-02-27  Joe Shaw  <joe@ximian.com>
3687
3688         Try to apply some order to the iochannel refcounting...
3689
3690         * configure.in: Bump up to 1.99.11.
3691
3692         * libsoup/soup-context.c (soup_connection_get_iochannel): The
3693         connections needs to own a reference to the iochannel!  If we're
3694         using HTTPS, release the ref we get from soup_socket_get_iochannel
3695         and replace it with the ref we get from soup_ssl_get_iochannel().
3696         Then, always ref the channel that we return (ugh, but that's the
3697         soup way).
3698         (connection_free): Release the connection's ref to the iochannel.
3699
3700         * libsoup/soup-ssl.c (soup_ssl_get_iochannel_real): Ref the
3701         iochannel. The reference we pass back will be owned by the
3702         connection.
3703         (soup_ssl_hup_waitpid): Release our ref.
3704
3705 2003-02-27  Joe Shaw  <joe@ximian.com>
3706
3707         * configure.in: Bump up to 1.99.10.
3708
3709         * libsoup/soup-ssl.c (soup_ssl_get_iochannel_real): Ref the
3710         iochannel, return to the status quo.  Sigh.
3711
3712 2003-02-26  Joe Shaw  <joe@ximian.com>
3713
3714         * configure.in: Bump up to 1.99.9.
3715
3716         * libsoup/soup-ssl.c (soup_ssl_hup_waitpid): Comment out the unref,
3717         it's causing problems with HTTPS and proxies; the iochannel
3718         refcounting is waaaaaay horked.
3719
3720 2003-02-26  Frank Belew  <frb@ximian.com>
3721
3722         * libsoup/Makefile.am: added workaround to link ssl-proxy statically
3723
3724 2003-02-11  Joe Shaw  <joe@ximian.com>
3725
3726         * configure.in: Bump up to 1.99.8 for snaps.
3727
3728         * libsoup/soup-address.c (soup_gethostbyname): Fix this for Solaris.
3729         It returns the address to the resulting hostent or NULL on failure,
3730         unlike Linux which returns an error code.
3731
3732 2003-02-11  Joe Shaw  <joe@ximian.com>
3733
3734         * configure.in: Bump up to 1.99.7 for snaps.
3735
3736         * libsoup/soup-openssl.c (soup_openssl_get_iochannel): Print out
3737         the error string from OpenSSL if we can't establish a connection.
3738
3739 2003-02-04  Joe Shaw  <joe@ximian.com>
3740
3741         * configure.in: Bump up to 1.99.6 for snaps.
3742
3743         * libsoup/soup-server.c (destroy_message): We already assigned
3744         chan, so don't reassign it, and unref it in all cases.
3745         (issue_bad_request): Always unref after a call to
3746         soup_socket_get_iochannel(), because it refs it.
3747         (conn_accept): Fix some funky GIOChannel reffing here.
3748
3749         * libsoup/soup-ssl.c (soup_ssl_get_iochannel_real): Don't call
3750         g_io_channel_ref() on the socket.  This is the exact opposite of
3751         what we want to do.  Create a temporary structure containing the
3752         parent pid and the old socket and unref the socket when our
3753         callback is called.  This should fix GIOChannels being leaked on
3754         SSL connections.
3755
3756         * libsoup/soup-ssl-proxy.c: Always close the GIOChannels after the
3757         main loop quits.
3758
3759 2003-01-22  Joe Shaw  <joe@ximian.com>
3760
3761         * configure.in: Bump up to 1.99.5 for the snaps.
3762
3763         * libsoup/soup-address.c (soup_address_new): If we found the
3764         address in our hash, we need to return NULL or else Soup will
3765         think we're doing an async lookup and do some cancellation on
3766         us.  Besides, we were returning the wrong type anyway and it
3767         was crashing things.
3768
3769 2003-01-17  Joe Shaw  <joe@ximian.com>
3770
3771         * libsoup/soup-ssl-proxy.c (soup_ssl_proxy_readwrite): It's not
3772         uncommon for us to get a G_IO_ERROR_AGAIN when trying to write
3773         out, so keep trying until we succeed.
3774
3775 2003-01-10  Joe Shaw  <joe@ximian.com>
3776
3777         * libsoup/soup-openssl.c (verify_cb): Load some X509 and SSL error
3778         strings and print out the error when the cert can't verify.
3779
3780 2003-01-09  Dan Winship  <danw@ximian.com>
3781
3782         * libsoup/soup-address.c (soup_gethostbyname): Fix a memcpy
3783         overrun noticed by valgrind
3784
3785 2002-12-20  Joe Shaw  <joe@ximian.com>
3786
3787         * libsoup/soup-server.c (soup_server_new_with_host): Added.
3788         Starts a server only on the interface specified, instead of all
3789         network interfaces.
3790
3791 2002-12-16  Jeremy Katz  <katzj@redhat.com>
3792
3793         * configure.in: use $libdir instead of /usr/lib when looking for
3794         libraries
3795
3796 2002-12-11  Joe Shaw  <joe@ximian.com>
3797
3798         * libsoup/soup-queue.c (proxy_https_connect_cb): I am an idiot.
3799         Don't set a variable to NULL and then immediately try to
3800         dereference it.
3801
3802 2002-12-09  Joe Shaw  <joe@ximian.com>
3803
3804         * libsoup/soup-openssl.c (soup_openssl_get_iochannel): Put a
3805         timeout on the select()s when we get SSL_ERROR_WANT_READ/WRITE so
3806         we don't hang forever if we don't get more data.
3807
3808         * libsoup/soup-ssl-proxy.c (main): Don't set our fds to blocking
3809         or else we'll hang forever in SSL_connect() if the other side
3810         hangs up.
3811
3812         * libsoup/soup-queue.c (proxy_https_connect_cb): We never want to
3813         release the connection on message free, even if the connection was
3814         unsuccessful.
3815
3816 2002-12-03  Joe Shaw  <joe@ximian.com>
3817
3818         * libsoup/soup-ssl.c (soup_ssl_get_iochannel_real): Call
3819         g_io_channel_set_close_on_unref() on the second half of the socket
3820         pair so we don't leak file descriptors.
3821
3822 2002-12-03  Frank Belew  <frb@ximian.com>
3823
3824         * libsoup/soup-address.c: add signal.h to the list of headers to 
3825         pick up SIGKILL
3826         
3827 2002-11-25  Joe Shaw  <joe@ximian.com>
3828
3829         * Makefile.am: Build the tests directory again
3830
3831 2002-11-21  Rodney Dawes  <dobey@ximian.com>
3832
3833         * configure.in: Don't require autoconf 2.5x, needs to work with 2.13
3834         
3835 2002-11-20  Michael Meeks  <michael@ximian.com>
3836
3837         * configure.in: require autoconf 2.52 not 2.53.
3838
3839 2002-11-18  Dan Winship  <danw@ximian.com>
3840
3841         * libsoup/soup-address.c (soup_address_hash): Don't use s6_addr32
3842         since it's apparently non-portable. Use s6_addr instead.
3843         (soup_gethostbyaddr): fix a sometimes-uninitialized variable.
3844
3845         * libsoup/soup-error.c: Fix spelling of
3846         SOUP_ERROR_MOVED_PERMANENTLY and its description.
3847
3848         * libsoup/soup-message.c (soup_message_get_request_header, etc):
3849         Remove long-deprecated API.
3850
3851         * libsoup/soup-socket.c (soup_socket_connect): remove unused
3852         variable.
3853
3854         * libsoup/soup-openssl.c (soup_openssl_read): Use gsize.
3855         * libsoup/soup-server.c (cgi_read): Likewise
3856         * libsoup/soup-socks.c (soup_socks_write, soup_socks_read):
3857         Likewise.
3858         * libsoup/soup-ssl-proxy.c (soup_ssl_proxy_readwrite): Likewise.
3859         * libsoup/soup-transfer.c (soup_transfer_read_cb,
3860         soup_transfer_write_cb): Likewise.
3861
3862         * tests/timeserver.c: Add "-6" to listen on the IPv6 local address
3863         instead of IPv4. (Tested on OS X.)
3864
3865 2002-11-15  Dan Winship  <danw@ximian.com>
3866
3867         * libsoup/*: Change old Helix Code refs to Ximian (and update
3868         copyright dates).
3869
3870 2002-11-15  Frank Belew  <frb@ximian.com>
3871
3872         * tests/Makefile.am: uncomment lines to make timeserver build 
3873         correctly
3874         
3875 2002-11-14  Joe Shaw  <joe@ximian.com>
3876
3877         * libsoup/soup-address.c (soup_address_new): When we get an
3878         address from the hash, call our address lookup callback or else
3879         the connection will hang.
3880
3881 2002-11-13  Dan Winship  <danw@ximian.com>
3882
3883         * tests/timeserver.c: Oops, commit this.
3884
3885         * tests/Makefile.am (noinst_PROGRAMS): reenable timeserver.
3886
3887 2002-11-13  Joe Shaw  <joe@ximian.com>
3888
3889         * libsoup/Makefile.am: Replace the BINDIR define with LIBEXECDIR.
3890         (install-exec-hook): Install libsoup-ssl-proxy into libexecdir
3891         instead of bindir.
3892
3893         * libsoup/soup-openssl.c (soup_openssl_close): Call SSL_shutdown()
3894         to properly shut down the SSL connection before closing the
3895         socket.
3896
3897         * libsoup/soup-ssl-proxy.c (soup_ssl_proxy_readwrite): Close the
3898         iochannels before quitting the main loop.
3899
3900         * tests/Makefile.am: disable building timeserver, the source file
3901         wasn't added.
3902
3903 2002-11-12  Dan Winship  <danw@ximian.com>
3904
3905         * configure.in: Check for IPv6 support in networking headers.
3906
3907         * libsoup/soup-address.c: Make the internal structure of
3908         SoupAddress entirely private, and make SoupAddress be more like a
3909         hostent and less like a sockaddr. (Ie, make it not have a port
3910         associated with it.) Document undocumented functions. Add
3911         completely-untested support for IPv6.
3912         (soup_address_new_from_sockaddr): New, to parse a sockaddr into a
3913         SoupAddress and a port.
3914         (soup_address_ipv4_any, soup_address_ipv6_any): Return static
3915         addresses corresponding to the IPv6 and IPv6 "any" addresses.
3916         (soup_address_get_canonical_name): Use inet_ntop/inet_ntoa.
3917         (soup_address_make_sockaddr): Now constructs a new sockaddr, which
3918         may be a sockaddr_in or sockaddr_in6.
3919         (soup_address_gethostname, soup_address_gethostaddr): Remove
3920         these. They aren't reliable, especially on multihomed hosts.
3921         (soup_gethostbyname, soup_gethostbyaddr): support IPv6
3922         (soup_address_new): Keep pending lookups in a separate hash table
3923         from completed lookups. Fix a bug when canceling a lookup when
3924         there was more one outstanding request for it.
3925         (soup_address_lookup_in_cache): Removed.
3926
3927         * libsoup/soup-socket.c: Add a port field to SoupSocket (since
3928         it's not in SoupAddress any more).
3929         (soup_socket_connect): Simplify this. Don't use
3930         soup_address_lookup_in_cache, just call soup_address_new, since we
3931         already know the code can deal with the callback being invoked
3932         immediately.
3933         (soup_socket_new_sync, soup_socket_new): Take a port argument.
3934         (soup_socket_server_new): Take a SoupAddress to use as the local
3935         address to bind to. This lets the caller choose between the IPv4
3936         and IPv6 "any" addresses, and also lets you bind to a single
3937         interface of a multi-homed machine.
3938         (soup_socket_server_accept, soup_socket_server_try_accept): Merge
3939         the common code.
3940
3941         * libsoup/soup-server.c (soup_server_new): Pass
3942         soup_address_ipv4_any() to soup_socket_server_new().
3943
3944         * libsoup/soup-socks.c (soup_connect_socks_proxy,
3945         soup_socks_write): Fix up for the API changes, but it won't work
3946         with IPv6 yet.
3947
3948         * tests/timeserver.c: Another really simple test, for the server
3949         socket code.
3950
3951         * tests/Makefile.am: build timeserver
3952
3953 2002-11-11  Dan Winship  <danw@ximian.com>
3954
3955         * libsoup/soup-address.c: Move the SoupAddress code from
3956         soup-socket.c and soup-socket-unix.c to here.
3957
3958         * libsoup/soup-socket.c: Move the remaining code from
3959         soup-socket-unix.c here.
3960
3961         * libsoup/soup-socket-unix.c: Gone
3962
3963         * tests/get.c: really really trivial test program
3964
3965         * configure.in (AC_OUTPUT):
3966         * Makefile.am (SUBDIRS): add tests/
3967
3968 2002-11-05  Dan Winship  <danw@ximian.com>
3969
3970         * Split libsoup out of soup. ChangeLog.old contains the original
3971         soup ChangeLog.
3972
3973         * Makefile.am, etc: Fix things up to work with the new directory
3974         layout. Disable docs until we fix them.
3975
3976         * autogen.sh: Use gnome-autogen.sh
3977
3978         * configure.in: Require autoconf 2.53. Remove stuff that was only
3979         needed for httpd or wsdl code. Remove glib1 support. Bump version
3980         to 2.0.
3981
3982         * libsoup/Makefile.am: Rename library to libsoup-2.0, put includes
3983         in ${includedir}/soup-2.0
3984         
3985         * libsoup/*: Merge soup-0-7 back onto the trunk. Remove
3986         SOAP-specific stuff, Windows support, and other things that
3987         weren't being maintained.
3988
3989         * soup-config.in, soupConf.sh: Kill these. We only support
3990         pkg-config now.