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