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