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