12009-04-13 Dan Winship <danw@gnome.org> 2 3 * configure.in: 2.26.1 4 5 * NEWS: update 6 72009-04-13 Dan Winship <danw@gnome.org> 8 9 * libsoup/soup-proxy-resolver-gnome.c (get_proxy_async): fix 10 use of async context here 11 122009-04-13 Dan Winship <danw@gnome.org> 13 14 Bug 578809 – warnings in soup_address_equal_by_ip 15 16 * libsoup/soup-session.c (get_host_for_message): don't try to look 17 up unresolved addresses in the hosts hash; just return NULL. The 18 "cancel other messages for the bad host" code in connect_result() 19 will loop over the whole queue, including messages with unresolved 20 addresses. 21 222009-04-13 Dan Winship <danw@gnome.org> 23 24 Bug 578746 – http_proxy env var set to "http://:80" in session 25 despite proxy mode "none" 26 27 * libsoup/soup-proxy-resolver-gnome.c (update_proxy_settings): 28 Don't set anything if proxy_mode is NONE, and properly ignore the 29 proxy host if it's empty. 30 312009-04-11 Dan Winship <danw@gnome.org> 32 33 Bug 578645 – crash in Rhythmbox Music Player 34 35 * libsoup/soup-proxy-resolver-gnome.c 36 (soup_proxy_resolver_gnome_init): unlock id.lock before freeing 37 it. (Fixes the case where SoupProxyResolverGNOME is first 38 initialized from a thread other than the main thread, while the 39 default main loop is running.) 40 412009-04-08 Dan Winship <danw@gnome.org> 42 43 * configure.in: 2.26.0.9, aka "I can't believe it's not 2.26.1!", 44 a pre-release to give the proxy resolver fix a bit of extra 45 testing before next week. 46 47 * NEWS: Update 48 492009-04-08 Dan Winship <danw@gnome.org> 50 51 Re-fix GNOME proxy resolution (qv bug 571527) 52 53 * libsoup/soup-proxy-resolver-gnome.c: New and improved GNOME 54 proxy resolver; gets information out of GConf in a thread-safe 55 manner, and then passes it on to libproxy via environment 56 variables, so that libproxy won't try to access GConf itself, but 57 we still can use it for PAC, WPAD, and ignore_hosts. 58 59 * libsoup/soup-proxy-resolver-gconf.c: 60 * libsoup/soup-proxy-resolver-libproxy.c: gone now 61 62 * libsoup/soup-gnome-features.c: update for the fact that 63 SoupProxyResolverGNOME is actually a real type now, not 64 compile-time-defined alias 65 662009-04-08 Dan Winship <danw@gnome.org> 67 68 Fix ISO 8601 parsing to accept either "." or "," 69 70 * libsoup/soup-date.c (parse_iso8601_date): accept either "." or 71 "," as decimal separator, per the spec. qv glib bug 578369. 72 732009-04-05 Dan Winship <danw@gnome.org> 74 75 Don't allow CR/LF in header names or values 76 77 * libsoup/soup-message-headers.c (soup_message_headers_append): 78 Don't let the caller create a header with whitespace or ":" in its 79 name, or with CR or LF in its value, since that would result in us 80 generating syntactically invalid headers. 81 822009-04-03 Dan Winship <danw@gnome.org> 83 84 Bug 577386 – Fails to handle HTTPS redirect from a certain site. 85 86 * libsoup/soup-gnutls.c (soup_gnutls_read): Treat abnormal 87 EOFs as though they were normal, rather than as errors. Shrug. 88 89 Reported by Diego Escalante Urrelo. 90 912009-04-03 Dan Winship <danw@gnome.org> 92 93 Bug 577360 – handle cookies with same name but different path 94 95 * libsoup/soup-cookie-jar.c (soup_cookie_jar_add_cookie): check 96 both name and path when matching cookies; "foo=one; path=/bar" 97 should not replace "foo=two; path=/". They are separate cookies. 98 99 Reported by Alexander V. Butenko. 100 1012009-04-02 Dan Winship <danw@gnome.org> 102 103 Bug 577630 – libsoup should ignore broken Content-Type headers 104 105 * libsoup/soup-message-headers.c (content_type_setter): Ignore 106 Content-Type if it's not at least minimally syntactically correct. 107 (soup_message_headers_get_content_type): Document that. 108 109 * tests/header-parsing.c (do_content_type_tests): test it. 110 1112009-04-02 Dan Winship <danw@gnome.org> 112 113 Bug 577728 – soup_header_g_string_append_param should handle NULL values 114 115 * libsoup/soup-headers.c (soup_header_g_string_append_param): 116 allow @value to be %NULL. 117 118 * tests/header-parsing.c (do_append_param_tests): test 119 soup_header_g_string_append_param() 120 1212009-04-02 Dan Winship <danw@gnome.org> 122 123 Bug 576760 – soup_message_headers_get_content_type returns bad headers 124 125 * libsoup/soup-message-headers.c (soup_message_headers_get_one) 126 (soup_message_headers_get_list): New replacements for 127 soup_message_headers_get(), indicating explicitly whether the 128 caller expects the header to be a list or not; for non-list-type 129 headers, if there's more than one, the second one should be 130 ignored rather than concatenated to the first. 131 (soup_message_headers_get): deprecate this. 132 133 * libsoup/*.c: 134 * tests/*.c: Update to use soup_message_headers_get_one() or 135 _get_list() as appropriate. 136 137 * tests/header-parsing.c (do_content_type_tests): Add some tests 138 of Content-Type parsing/setting, including making sure that 139 duplicate Content-Type headers are ignored. 140 141 * docs/reference/libsoup-2.4-sections.txt: update 142 1432009-03-27 Dan Winship <danw@gnome.org> 144 145 Bug 576583 – Tests fail if "localhost" resolves to ::1 146 147 * tests/*.c: Use "127.0.0.1" in URIs rather than "localhost", 148 since the default SoupServer config only listen on IPv4 (qv bug 149 522519), and tests/httpd.conf.in only configures apache to listen 150 on IPv4, and we don't handle multiple IP addresses (qv bug 526321) 151 but the machine might be configured to return "::1" rather than 152 "127.0.0.1" first for "localhost". Patch from Andreas Rottmann. 153 1542009-03-27 Dan Winship <danw@gnome.org> 155 156 * libsoup/soup-cookie.c (soup_cookie_new): Fix docs to not claim 157 that the cookie domain can be %NULL. Add some g_return_if_fail()s. 158 1592009-03-27 Dan Winship <danw@gnome.org> 160 161 * docs/reference/client-howto.xml: clarify that SoupSessionAsync 162 is not thread-safe, and that setting a non-default GMainContext on 163 a non-threadsafe object means you can only use that object from 164 that GMainContext's thread. 165 1662009-03-26 Milan Crha <mcrha@redhat.com> 167 168 Bug 574957 - soup-session-sync doesn't unlock mutex on proxy error 169 170 * libsoup/soup-session-sync.c: (wait_for_connection): 171 Unlock private lock also on proxy error. 172 1732009-03-24 Dan Winship <danw@gnome.org> 174 175 Bug 571283 - Allow LF LF instead of CRLF CRLF as header/body separator 176 177 * libsoup/soup-message-io.c (read_metadata): Change how this 178 works; instead of taking a boundary string, just always pass "\n" 179 as the boundary to soup_socket_read_until(), but call it multiple 180 times if the caller wants us to read until a blank line. 181 (io_read): update to deal with the fact that the headers might be 182 terminated by LF LF rather than CRLF CRLF. 183 1842009-03-23 Dan Winship <danw@gnome.org> 185 186 Bug 566530 - Handle (illegal) unencoded spaces in URIs 187 188 * libsoup/soup-uri.c (uri_normalized_copy): optionally fix up 189 parts with unencoded spaces in them. 190 (soup_uri_new_with_base): tell uri_normalized_copy() to fix up 191 spaces in the path and query components 192 193 * tests/uri-parsing.c (abs_tests): test parsing and unparsing a 194 URI with an unencoded space in it. 195 196 * tests/redirect-test.c (tests, server_callback): add a test of 197 redirecting to a URI with an unencoded space in it. 198 1992009-03-15 Dan Winship <danw@gnome.org> 200 201 * configure.in: 2.26.0 202 203 * NEWS: Update 204 2052009-03-14 Xan Lopez <xan@gnome.org> 206 207 Add G_{BEGIN,END}_DECLS guards to public headers. 208 209 * libsoup/soup-auth.h: 210 * libsoup/soup-cookie-jar-sqlite.h: 211 * libsoup/soup-cookie-jar-text.h: 212 * libsoup/soup-proxy-resolver.h: 213 2142009-03-11 Dan Winship <danw@gnome.org> 215 216 * libsoup/soup-session.c (soup_session_cancel_message): add more 217 detail to the doc comment 218 219 * libsoup/soup-message.c (SoupMessage): Note in the doc comment 220 that reason phrases are not very useful, and should not be 221 presented to the user. 222 223 * libsoup/soup-status.c: add a comment explaining why reason 224 phrases aren't localized. Also some misc doc fixes. 225 (soup_status_get_phrase): Note in the doc comment that you 226 shouldn't present reason phrases to the user. 227 2282009-03-09 Dan Winship <danw@gnome.org> 229 230 Bug 571527 – gvfsd-http crashed with SIGSEGV in 231 g_hash_table_lookup(). 232 233 As currently written, libproxy's gnome plugin causes intermittent 234 gvfsd-http crashes, and I didn't have time to come up with either 235 a fix or a workaround. So for 2.26.0 we will fall back to using 236 the GConf-based proxy resolver. Hopefully to be fixed for 2.26.1. 237 238 * configure.in: require both gconf and libproxy if building 239 --with-gnome 240 241 * libsoup/soup-proxy-resolver-gconf.c: bring this back. 242 243 * libsoup/soup-gnome-features.c 244 (soup_proxy_resolver_gnome_get_type): use gconf instead of 245 libproxy 246 247 * libsoup/Makefile.am: updates 248 2492009-03-08 Dan Winship <danw@gnome.org> 250 251 * libsoup/*.c: gtk-doc updates. In particular, document a bunch of 252 convenience #defines, and add "Since" tags where appropriate. 253 2542009-03-06 Dan Winship <danw@gnome.org> 255 256 * libsoup/soup-session-async.c (run_queue): Process messages in 257 the CONNECTING iostate before messages in the QUEUED iostate. 258 Otherwise, if a bunch of messages are queued all at once, and the 259 server doesn't support persistent connections, some messages can 260 get stranded in the queue. Fixes #574365 (reported by Xan Lopez) 261 and removes a five-year-old FIXME... 262 2632009-02-20 Gustavo Noronha Silva <gns@gnome.org> 264 265 * libsoup/soup-message-headers.c 266 (soup_message_headers_get_content_type): now returns NULL if there 267 is no Content-Type header; fix documentation to account for this 268 change and to actually be correct about how the Content-Type is 269 returned. 270 2712009-02-19 Dan Winship <danw@gnome.org> 272 273 Bug 572153 – SoupServer doesn't support SOUP_ENCODING_EOF 274 275 * libsoup/soup-message-io.c (io_write): Various fixes to make 276 SOUP_ENCODING_EOF work correctly when sending response 277 bodies. (Previously, the code assumed that SoupServer responses 278 would always be chunked or Content-Length-encoded.) 279 280 * libsoup/soup-message-client-io.c (get_request_headers): when 281 changing a request body from SOUP_ENCODING_NONE to 282 SOUP_ENCODING_CONTENT_LENGTH, return the new encoding value to 283 soup-message-io, not the old one. 284 285 * libsoup/soup-message.c (set_property): when setting 286 priv->server_side to TRUE, set the default encoding on the 287 response headers to CONTENT_LENGTH. (Moved from SoupServer.) 288 (soup_message_cleanup_response): If priv->server_side is TRUE, 289 re-fix the response header encoding after clearing the headers. 290 Otherwise the response headers revert to SOUP_ENCODING_EOF after 291 sending a "100 Continue". 292 (soup_message_is_keepalive): reorganize a little, fix a bug in the 293 HTTP/1.0 case. 294 295 * libsoup/soup-server.c (start_request): remove request encoding 296 override from here. 297 298 * tests/streaming-test.c: new test of SoupServer response 299 streaming, testing chunked, content-length, and eof-terminated 300 responses 301 3022009-02-19 Dan Winship <danw@gnome.org> 303 304 * libsoup/soup-socket.c (soup_socket_read_until): explain why @len 305 normally needs to be at least @boundary_len+1. Suggested by 306 Benjamin Otte. 307 (soup_socket_class_init): add longer gtk-docs to the non-blocking 308 property, to explain the way non-blocking I/O works in SoupSocket. 309 3102009-02-19 Xan Lopez <xan@gnome.org> 311 312 * libsoup/soup-cookie-jar-sqlite.c: 313 (callback): 314 (try_create_table): 315 (exec_query_with_try_create_table): 316 (load): 317 (changed): 318 319 Fix a series of issues that prevented SoupCookieJarSQLite from working: 320 321 - Try to create cookies table on errors. The table was never created before. 322 - Store max_age in a gulong, not int. 323 - Parse correctly boolean values from query. It's 0/1, not FALSE/TRUE. 324 - The host is stored as host in the table, not as domain. 325 326 #572409 327 3282009-02-16 Dan Winship <danw@gnome.org> 329 330 * configure.in: 2.25.91 331 332 * NEWS: update 333 3342009-02-15 Dan Winship <danw@gnome.org> 335 336 * docs/reference/client-howto.xml: Updates: Mention 337 SoupSessionFeature (and link to SoupLogger, SoupCookieJar, and 338 SoupProxyResolverGNOME specifically). Mention forms and XML-RPC 339 support. Mention header-parsing methods. Give a concrete example 340 of connecting to SoupMessage signals. Document the (minimal) 341 thread-safety guarantees 342 343 * docs/reference/build-howto.xml: basic notes on pkg-config and 344 #include usage. 345 3462009-02-06 Dan Winship <danw@gnome.org> 347 348 * libsoup/soup-auth-manager.c (authenticate_auth): Fix crash when 349 getting a 407 when using SoupProxyResolverGNOME (or when not using 350 any proxy). Launchpad bug #326099. (Note that this doesn't 351 actually make proxy-auth-with-SoupProxyResolverGNOME *work*, it 352 just makes it not crash.) 353 3542009-02-02 Dan Winship <danw@gnome.org> 355 356 * configure.in: 2.25.5 357 358 * NEWS: update 359 3602009-02-02 Dan Winship <danw@gnome.org> 361 362 * libsoup/soup-proxy-resolver-gconf.h: 363 * libsoup/soup-proxy-resolver-gconf.c: Remove this, as it was 364 incomplete, and libproxy is now officially a dependency of GNOME. 365 366 * libsoup/Makefile.am: 367 * libsoup/soup-gnome-features.c: remove gconf-vs-libproxy ifdefs 368 369 * configure.in: Remove GConf checks, require libproxy if building 370 libsoup-gnome. 371 3722009-01-29 Dan Winship <danw@gnome.org> 373 374 * libsoup/soup-message-body.c (soup_message_body_wrote_chunk): Fix 375 this; previously it would discard the entire message body after 376 writing a SOUP_MEMORY_TEMPORARY chunk. Part of WebKit bug 18343. 377 378 * libsoup/soup-message-io.c (io_write): use 379 io->write_chunk->length *before* freeing io->write_chunk. 380 381 * tests/chunk-test.c (do_temporary_test): new test to make sure 382 that TEMPORARY buffers are handled properly. 383 3842009-01-21 Dan Winship <danw@gnome.org> 385 386 * libsoup/soup-session-feature.h: remove the dummy typedef for 387 struct SoupSessionFeature that was needed because we weren't 388 scanning soup-types.h. Fixes the build with non-GNU compilers. 389 390 * libsoup/soup-session-feature.c: document 391 SoupSessionFeatureInterface 392 393 * docs/reference/Makefile.am (IGNORE_HFILES): oops, don't ignore 394 soup-types.h 395 396 * docs/reference/libsoup-2.4-docs.sgml: 397 * docs/reference/libsoup-2.4-sections.txt: Split 398 SoupSessionFeature into its own file. 399 4002009-01-12 Dan Winship <danw@gnome.org> 401 402 * libsoup/soup-cookie-jar.c (request_started): Don't pass NULL to 403 soup_message_headers_replace(), call soup_message_headers_remove() 404 if there are no cookies. Likely fix for webkit bug #23240. 405 406 * libsoup/soup-message-headers.c (soup_message_headers_append): 407 g_return_if_fail (value != NULL) 408 4092009-01-05 Dan Winship <danw@gnome.org> 410 411 2.25.4 412 413 * NEWS: update 414 4152008-12-23 Dan Winship <danw@gnome.org> 416 417 * configure.in: belated post-release bump to 2.25.4 418 419 * libsoup/soup-session.c (soup_session_get_features) 420 (soup_session_get_feature): add these to query session features. 421 #565392. 422 4232008-12-23 Dan Winship <danw@gnome.org> 424 425 * configure.in: add some more warning CFLAGS, inspired by Benjamin 426 Otte's blog post, although none of them picked out any actual 427 bugs. Annoyingly, the most interesting warnings came from 428 -Wwrite-strings and -Wshadow, both of which I decided against 429 keeping, because they had too many false positives. 430 431 * libsoup/soup-cookie-jar.c (soup_cookie_jar_get_cookies): rename 432 a variable to avoid shadowing. 433 434 * libsoup/soup-message-headers.c 435 (soup_message_headers_get_ranges): move a variable declaration to 436 avoid a possibly-confusing shadowing. 437 438 * tests/forms-test.c: 439 * tests/header-parsing.c: 440 * tests/range-test.c: 441 * tests/test-utils.c: constify some "char *"s that should have 442 already been const. 443 444 * tests/get.c (find_hrefs): rename an arg whose name shadowed a 445 global, to avoid possible future confusion 446 (get_url): Likewise with a functional-internal shadowing. 447 4482008-12-15 Dan Winship <danw@gnome.org> 449 450 * configure.in: 2.25.3 451 452 * NEWS: update 453 4542008-12-09 Dan Winship <danw@gnome.org> 455 456 * libsoup/soup-uri.c (soup_uri_new): Explicitly document the fact 457 that you have to call soup_uri_set_path() when using 458 soup_uri_new(NULL), since path is required to be non-%NULL. 459 460 * libsoup/soup-connection.c (connect_message): initialize 461 uri->path 462 463 * libsoup/soup-cookie.c (soup_cookie_applies_to_uri): 464 g_return_val_if_fail() rather than crashing if uri->path is %NULL. 465 Also, fix the cookie/uri path comparison to not potentially read 466 off the end of uri->path. #562191, Mark Lee. 467 4682008-12-04 Dan Winship <danw@gnome.org> 469 470 * libsoup/soup-form.c (soup_form_decode): Correctly handle forms 471 that have URI-encoded parameter names. #563302, Evan Nemerson. 472 473 * tests/forms-test.c: test that 474 4752008-12-03 Dan Winship <danw@gnome.org> 476 477 * libsoup/soup-proxy-resolver-gconf.c (finalize): disconnect from 478 gconf notifications. Fixes a crash, #563145. 479 4802008-12-01 Dan Winship <danw@gnome.org> 481 482 * configure.in: 2.25.2 483 484 * NEWS: update 485 4862008-11-28 Dan Winship <danw@gnome.org> 487 488 * libsoup/soup-auth-manager.c (auth_type_compare_func): Fix this 489 so we choose the *strongest* auth type first, rather than the 490 weakest. Doh. #562339, Pontus Oldberg. 491 492 * libsoup/soup-server.c (soup_server_add_auth_domain): use 493 g_slist_append() rather than prepend(), so auth headers get added 494 in the same order as the SoupAuthDomains were. 495 496 * tests/auth-test.c (do_select_auth_test): add a test of selecting 497 between Basic and Digest auth 498 4992008-11-28 Dan Winship <danw@gnome.org> 500 501 * libsoup/Makefile.am (libsoupgnomeincludedir): make this 502 $(includedir)/libsoup-gnome-2.4/libsoup rather than being the same 503 as $(libsoupincludedir). Makes it easier to split into two 504 packages. 505 5062008-11-28 Dan Winship <danw@gnome.org> 507 508 * docs/reference/client-howto.xml: fix method name in example. 509 #562411, Andreas Bruse. 510 5112008-11-24 Dan Winship <danw@gnome.org> 512 513 * libsoup/soup-logger.c: clarify exactly when stuff gets logged 514 (and in particular, that SoupSession::authenticate gets emitted 515 before the response it is authenticating gets logged). 516 5172008-11-06 Dan Winship <danw@gnome.org> 518 519 * libsoup/Makefile.am (libsoup_gnome_2_4_la_LIBADD): fix linking 520 with --as-needed. #559342, pointed out by Götz Waschk 521 5222008-11-04 Dan Winship <danw@gnome.org> 523 524 * configure.in: 2.25.1 525 526 * NEWS: update 527 5282008-11-04 Dan Winship <danw@gnome.org> 529 530 * libsoup/soup-address.c (soup_address_is_resolved): 531 * libsoup/soup-cookie.c (soup_cookie_copy): 532 * libsoup/soup-cookie-jar.c (soup_cookie_jar_class_init): 533 * libsoup/soup-message-headers.c (SoupMessageHeadersType): 534 * libsoup/soup-proxy-resolver.c 535 (soup_proxy_resolver_get_proxy_async) 536 (soup_proxy_resolver_get_proxy_sync): 537 * libsoup/soup-status.c (soup_status_proxyify): misc doc fixes 538 539 * libsoup/soup-cookie-jar-text.h: remove a "deprecated" API that 540 was never actually released 541 542 * libsoup/soup.h: include soup-proxy-resolver.h 543 544 * docs/reference/Makefile.am (SCAN_OPTIONS): set 545 --deprecated-guards correctly 546 (IGNORE_HFILES): ignore some more internal files 547 (GTKDOC_LIBS): link against libsoup-gnome, not libsoup 548 549 * docs/reference/libsoup-2.4-docs.sgml: 550 * docs/reference/libsoup-2.4.types: 551 * docs/reference/libsoup-2.4-sections.txt: add new stuff 552 5532008-11-04 Dan Winship <danw@gnome.org> 554 555 * libsoup/soup-cookie-jar-text.c: implementation of SoupCookieJar 556 that persists to a text file in the old Mozilla cookies.txt 557 format. Written by Xan Lopez and myself. 558 559 * libsoup/soup-cookie-jar-sqlite.c: implementation of 560 SoupCookieJar that persists to an sqlite database in the new 561 Mozilla cookies.sqlite format. (Part of libsoup-gnome.) Written by 562 Diego Escalante Urrelo, based on soup-cookie-jar-text.c. 563 564 * libsoup/soup-cookie-jar.c: add various functionality needed by 565 the two new subclasses. (Mostly written by Xan.) Does not break 566 API/ABI compat with 2.24. 567 568 * libsoup/soup-cookie.c (soup_cookie_get_type): register 569 SoupCookie as a boxed type. 570 (domain_matches): fix a bug here that meant "foo.com" couldn't set 571 a cookie for domain=.foo.com 572 (soup_cookie_applies_to_uri): fix path checking 573 574 * configure.in: if building --with-gnome, require sqlite3 575 5762008-11-03 Dan Winship <danw@gnome.org> 577 578 * libsoup/soup-session-sync.c (process_queue_item): don't remove 579 the item from the queue here; it should already have happened in 580 all circumstances. Possible fix for #559052. 581 582 * libsoup/soup-session.c (cancel_message): don't remove the item 583 from the queue here; the call to soup_message_finished() will do 584 that. 585 586 * libsoup/soup-message-queue.c (soup_message_queue_remove): This 587 should only be called once, so g_return_if_fail (!item->removed) 588 589 * tests/test-utils.c (test_init): install a new default g_log 590 handler that increments the error count when it's called so that a 591 test won't pass if it triggers a g_warning() or 592 g_return_if_fail(). 593 5942008-11-03 Dan Winship <danw@gnome.org> 595 596 * tests/Makefile.am (get_LDADD): fix srcdir/builddir mixup. 597 5982008-11-03 Dan Winship <danw@gnome.org> 599 600 * libsoup/soup-message-headers.c (set_content_foo): don't leak the 601 header string 602 603 * libsoup/soup-multipart.c (generate_boundary): avoid a (harmless) 604 valgrind warning 605 606 * libsoup/soup-proxy-resolver-static.c (get_proxy_sync): don't 607 leak the address on error 608 609 * libsoup/soup-session-sync.c (wait_for_connection): don't leak 610 proxy_addr 611 612 * tests/misc-test.c: don't leak the SoupMessage signal ids 613 614 * tests/range-test.c (main): don't leak base_uri 615 616 * tests/libsoup.supp: update this using lots and lots of wildcards 617 6182008-11-03 Dan Winship <danw@gnome.org> 619 620 * libsoup/soup-session.c (message_finished): Fix the signal 621 handler disconnection here: for "finished" we were passing the 622 wrong user_data to g_signal_handlers_disconnect_by_func(), and for 623 "got_body" it turns out you can't use _disconnect_by_func() when 624 there's a metamarshal, making it incompatible 625 withsoup_message_add_header_handler(). Fixes a crash in 626 evolution-exchange, #559054. 627 628 * tests/misc-test.c (do_msg_reuse_test): Ensure that SoupSession 629 and its features disconnect all of their signals from a message 630 when they're done with it. 631 6322008-10-31 Dan Winship <danw@gnome.org> 633 634 Add libsoup-gnome, for new features that depend on GNOME 635 libraries. 636 637 * configure.in: Check for libproxy and/or gconf, accept 638 --without-gnome option, output libsoup-gnome-2.4.pc 639 640 * libsoup-gnome-2.4.pc: pc file for libsoup with GNOME support 641 642 * libsoup/Makefile.am: build libsoup-gnome.la if so configured 643 644 * libsoup/soup-gnome.h: base header for libsoup-gnome 645 646 * libsoup/soup-proxy-resolver-libproxy.c: An implementation of 647 SoupProxyResolver that uses libproxy. 648 649 * libsoup/soup-proxy-resolver-gconf.c: An implementation of 650 SoupProxyResolver that uses the proxy keys in GConf. Does not 651 completely handle ignore_hosts; this is currently just used as a 652 fallback if libproxy is not available. 653 654 * libsoup/soup-gnome-features.c: provides 655 SOUP_TYPE_PROXY_RESOLVER_GNOME (abstracting over 656 SoupProxyResolverGConf and SoupProxyResolverLibproxy) and 657 SOUP_TYPE_GNOME_FEATURES_2_26, which adds "all GNOME-specific 658 features in libsoup 2.26", which is currently just the proxy 659 resolver. 660 661 * libsoup/soup-session-async.c (resolved_proxy_addr): set 662 item->resolved_proxy_addr 663 (run_queue): resolve the proxy if !item->resolved_proxy_addr, not 664 if !item->proxy_addr, since the proxy addr might resolve to NULL. 665 666 * tests/Makefile.am (get_LDADD): 667 * tests/get.c: If we built libsoup-gnome, use it in "get" for 668 automatic proxy support 669 6702008-10-31 Dan Winship <danw@gnome.org> 671 672 * libsoup-2.4.pc.in: rename from libsoup.pc.in; the attempt to 673 keep the source tree API-version-generic wasn't really working, 674 and we're probably not ever going to change the API version again 675 anyway. 676 677 * Makefile.am (pkgconfig_DATA): install the .pc file the normal 678 way rather than using an install-data-local rule to rename the .pc 679 file as we install it 680 681 * libsoup/Makefile.am (libsoupincludedir): 682 * tests/Makefile.am (LIBS): 683 * docs/reference/Makefile.am (GTKDOC_LIBS): Say "2.4" everywhere, 684 instead of 2.4 in some places and $(SOUP_API_VERSION) in others. 685 686 * configure.in: updates for .pc renaming. Also, use 687 AS_HELP_STRING() in AC_ARG_ENABLE() and AC_ARG_WITH() rules 688 6892008-10-31 Dan Winship <danw@gnome.org> 690 691 * libsoup/soup-proxy-resolver.c: new abstract base class for a 692 SoupSessionFeature that determines what proxy to use for a given 693 URI. 694 695 * libsoup/soup-proxy-resolver-static.c: a SoupProxyResolver that 696 always returns the same value. 697 698 * libsoup/soup-session.c (set_property, get_property): implement 699 the SOUP_SESSION_PROXY_URI property by creating/destroying a 700 SoupProxyResolverStatic as needed. 701 (soup_session_get_connection): Use the proxy address passed by the 702 caller rather than priv->proxy_uri. 703 704 * libsoup/soup-session-async.c (run_queue): if the session has a 705 proxy resolver, use it, and pass the resolved proxy to 706 soup_session_get_connection(). 707 (request_restarted): clear the previously-resolved proxy address 708 when restarting the message 709 710 * libsoup/soup-session-sync.c (wait_for_connection): if the 711 session has a proxy resolver, use it, and pass the resolved proxy 712 to soup_session_get_connection(). 713 714 * libsoup/soup-message-queue.h (SoupMessageQueueItem): add 715 proxy-address-resolving fields 716 717 * libsoup/soup-status.c (soup_status_proxify): moved from 718 soup-connection; turn SOUP_STATUS_CANT_RESOLVE into 719 SOUP_STATUS_CANT_RESOLVE_PROXY, and SOUP_STATUS_CANT_CONNECT into 720 SOUP_STATUS_CANT_CONNECT_PROXY (and pass all other statuses 721 through unchanged) 722 7232008-10-30 Dan Winship <danw@gnome.org> 724 725 * tests/simple-httpd.c: do directory listings. (wrote this a long 726 time ago, it just never made it into svn) 727 7282008-10-27 Dan Winship <danw@gnome.org> 729 730 * libsoup/soup-cookie.c (soup_cookie_free): free the expires date, 731 if set 732 733 * libsoup/soup-auth-domain-basic.h: 734 * libsoup/soup-auth-domain-digest.h: 735 * libsoup/soup-auth-domain.h: 736 * libsoup/soup-cookie-jar.h: 737 * libsoup/soup-logger.h: 738 * libsoup/soup-multipart.h: add G_BEGIN/END_DECLS 739 740 * libsoup/soup-date.c: add some g_return_if_fails 741 742 Patches from and inspired by Xan Lopez, #522125 743 7442008-10-22 Dan Winship <danw@gnome.org> 745 746 * configure.in: 747 * tests/Makefile.am: fix up some of the regression test 748 configuration stuff, and print warnings when some tests aren't run 749 do to missing dependencies 750 7512008-10-20 Dan Winship <danw@gnome.org> 752 753 * tests/Makefile.am (INCLUDES): add SOUP_MAINTAINER_FLAGS here 754 too. 755 756 * tests/dns.c (main): 757 * tests/getbug.c (main): 758 * tests/server-auth-test.c (do_test): replace deprecated glib 759 functions 760 7612008-10-20 Cosimo Cecchi <cosimoc@gnome.org> 762 763 * configure.in: 764 * libsoup/Makefile.am: 765 * libsoup/soup-status.h: 766 * libsoup/soup-types.h: 767 * libsoup/soup-uri.c: (soup_uri_to_string): 768 Build with G_DISABLE_DEPRECATED and G_DISABLE_SINGLE_INCLUDES; enforce 769 the first switch under maintainer mode and the second one 770 unconditionally (#557072). 771 7722008-10-19 Dan Winship <danw@gnome.org> 773 774 * libsoup/soup-auth.c (soup_auth_update): compare scheme name 775 case-insensitively, to prevent an infinite loop when it's not in 776 standard form. #536285 777 7782008-10-10 Dan Winship <danw@gnome.org> 779 780 * libsoup/soup-message-headers.c 781 (soup_message_headers_get_ranges): if the caller passed the 782 total_length of the message body, then sort sort the ranges and 783 merge overlapping ones to generate a minimal set. 784 785 * tests/range-test.c: test it 786 7872008-10-09 Andrew W. Nosenko <andrew.w.nosenko@gmail.com> 788 789 * libsoup/soup-uri.c (soup_uri_to_string): Verify whether uri is 790 non-NULL and avoid crash on NULL pointer dereference therefore. 791 7922008-10-03 Dan Winship <danw@gnome.org> 793 794 * libsoup/soup-connection.c: Change the SoupURI properties to 795 SoupAddress properties. 796 797 * libsoup/soup-address.c (soup_address_resolve_async) 798 (soup_address_resolve_sync): Redo slightly so that multiple 799 simultaneous attempts to resolve the same address won't cause 800 problems. 801 (soup_address_hash_by_name, soup_address_equal_by_name): 802 (soup_address_hash_by_ip, soup_address_equal_by_ip): methods to 803 hash addresses by name or IP address 804 805 * libsoup/soup-message.c (soup_message_get_address): gets a 806 SoupAddress corresponding to the message's URI 807 808 * libsoup/soup-auth-manager.c (SoupAuthHost): hash hosts by 809 soup_address_hash_by_name() rather than by URI. 810 811 * libsoup/soup-session.c (soup_session_get_connection): pass 812 addresses to soup_connection_new(), not URIs. 813 (SoupSessionHost): hash hosts by soup_address_hash_by_ip() rather 814 than by URI. This requires that the addresses will have already 815 been resolved by the SoupSession subclasses before calling 816 soup_session_get_connection(), but also means that now requests 817 made to different virtual hosts on the same IP address can share a 818 connection. 819 820 * libsoup/soup-message-queue.c (SoupMessageQueueItem): add 821 address-resolving state 822 823 * libsoup/soup-session-sync.c (process_queue_item): resolve the 824 message's address before getting a connection 825 826 * libsoup/soup-session-async.c (run_queue, resolve_msg_addr) 827 (resolved_msg_addr): resolve the message's address before getting 828 a connection 829 (request_restarted): if the message gets requeued to a different 830 host, we'll need to re-resolve the address. 831 832 * libsoup/soup-uri.c (soup_uri_copy_root, soup_uri_host_hash) 833 (soup_uri_host_equal): No longer needed 834 835 * libsoup/soup-dns.c (do_async_callback): disconnect from the 836 cancellable before invoking the callback 837 838 * tests/proxy-test.c (tests): fix the 403 example; hostnames are 839 resolved by the session now, even when sending to a proxy, so we 840 need to use a hostname that actually exists 841 8422008-10-03 Dan Winship <danw@gnome.org> 843 844 * libsoup/soup-message-queue.c: Make this more complicated, with a 845 SoupMessageQueueItem to keep track of the session's per-message 846 state. (Part of the process of moving session-related state out of 847 SoupMessagePrivate.) 848 849 * libsoup/soup-session.c: Update to work in terms of 850 SoupMessageQueueItem 851 852 * libsoup/soup-session-async.c: 853 * libsoup/soup-session-sync.c: use SoupMessageQueueItem (and get 854 rid of SoupSessionAsyncQueueData and SoupSessionSyncAsyncData). 855 8562008-10-01 Dan Winship <danw@gnome.org> 857 858 * libsoup/soup-multipart.c: New type and methods for working with 859 multipart HTTP bodies (eg, multipart/form-data and 860 multipart/byte-ranges) 861 862 * libsoup/soup-message-headers.c (soup_message_headers_get_ranges) 863 (soup_message_headers_set_ranges) 864 (soup_message_headers_set_range) 865 (soup_message_headers_get_content_range) 866 (soup_message_headers_set_content_range): New methods for dealing 867 with the Range and Content-Range headers. 868 869 * libsoup/soup-form.h (SOUP_FORM_MIME_TYPE_URLENCODED) 870 (SOUP_FORM_MIME_TYPE_MULTIPART): #define these MIME types here 871 872 * libsoup/soup-form.c (soup_form_decode_multipart): new utility 873 for parsing multipart/form-data forms. 874 (soup_form_request_new_from_multipart): new utility for 875 constructing multipart/form-data forms 876 877 * libsoup/soup-headers.c (soup_headers_parse): this is now 878 non-static, for use by soup-multipart 879 880 * libsoup/soup-message-server-io.c (get_response_headers) 881 (handle_partial_get): if the client requested a partial GET, and 882 the SoupServer is returning the full body, rebuild the response to 883 include only the requested range instead 884 885 * tests/forms-test.c: renamed from query-test and updated to do 886 both application/x-www-form-urlencoded and multipart/form-data 887 tests 888 889 * tests/range-test.c: test of Range/Content-Range functionality 890 8912008-10-01 Dan Winship <danw@gnome.org> 892 893 * libsoup/soup-headers.c (soup_header_parse_param_list) 894 (soup_header_parse_semi_param_list): Update these to deal with 895 RFC2231-encoded UTF-8 header params 896 (soup_header_g_string_append_param): new utility method to do 897 parameters with quoted-strings (handling escaping) and RFC2231. 898 899 * libsoup/soup-auth-digest.c (get_authorization): 900 * libsoup/soup-auth-domain-basic.c (challenge): 901 * libsoup/soup-auth-domain-digest.c (challenge): use 902 soup_header_g_string_append_param so we handle escaping correctly 903 904 * libsoup/soup-message-headers.c 905 (soup_message_headers_get_content_type) 906 (soup_message_headers_set_content_type) 907 (soup_message_headers_get_content_disposition) 908 (soup_message_headers_set_content_disposition): New convenience 909 methods. 910 911 * tests/header-parsing.c (do_rfc2231_tests): new test of RFC2231 912 encoded header parsing in Content-Disposition. 913 914 * tests/get.c (get_url): use 915 soup_message_headers_get_content_type() 916 917 * docs/reference/libsoup-2.4-sections.txt: update 918 9192008-10-01 Dan Winship <danw@gnome.org> 920 921 * tests/xmlrpc-test.c (main): add a new -s flag to indicate that 922 it's being run from inside xmlrpc-server-test. 923 (test_echo): if we aren't running inside xmlrpc-server-test, and 924 the response strings don't match the request strings, then compare 925 them to echo_strings_broken instead; a bug in php-xmlrpc manifests 926 when using libxml2 >= 2.7.1, resulting in incorrect responses. :-/ 927 928 * tests/xmlrpc-server-test.c (do_xmlrpc_tests): Pass -s to 929 xmlrpc-test 930 9312008-10-01 Dan Winship <danw@gnome.org> 932 933 * configure.in: bump version to 2.25.0 934 9352008-10-01 Dan Winship <danw@gnome.org> 936 937 * libsoup/soup-cookie-jar.c: 938 * libsoup/soup-cookie.c: 939 * libsoup/soup-cookie.h: 940 * libsoup/soup-headers.c: 941 * libsoup/soup-logger.c: 942 * libsoup/soup-session-feature.c: 943 * libsoup/soup-session-feature.h: 944 * libsoup/soup-session.c: doc fixups 945 946 * docs/reference/libsoup-2.4-docs.sgml: 947 * docs/reference/libsoup-2.4-sections.txt: 948 * docs/reference/libsoup-2.4.types: Add missing bits 949 9502008-09-30 Dan Winship <danw@gnome.org> 951 952 * libsoup/soup-xmlrpc.c (parse_value): 953 soup_value_hash_insert_value() copies the value, so we have to 954 g_value_unset() our copy. 955 956 * tests/chunk-test.c: 957 * tests/misc-test.c: 958 * tests/ntlm-test.c: fix leaks 959 960 * tests/libsoup.supp: update 961 9622008-09-30 Dan Winship <danw@gnome.org> 963 964 * libsoup/soup-session-async.c (do_idle_run_queue): store the 965 GSource in priv, don't ref the session. Otherwise the session 966 won't get destroyed if you abort it and then don't return to its 967 main loop. (addendum to #498509, Arnout Vandecappelle) 968 (finalize): Destroy the idle_run_queue source when finalizing. 969 (run_queue, got_connection): Ref the session when calling 970 soup_connection_connect_async(), and do a 971 do_idle_run_queue()+unref in got_connection, to ensure correct 972 handling regardless of what the application does with its own ref 973 on the session. 974 (final_finished): Likewise, ref/do_idle_run_queue/unref rather 975 than calling run_queue directly and playing with weak pointers. 976 977 * libsoup/soup-session.c (connect_result): ref the session around 978 the cancel-if-error loop 979 980 Fixes #533473, crash in seahorse when connecting to a 981 non-responsive key server. 982 983 * tests/misc-test.c (do_callback_unref_test): Add a test for the 984 bug in #533473. 985 986 * tests/test-utils.c (soup_test_session_abort_unref): abort and 987 unref a SoupSession, and consider it an error if the session still 988 exists afterward. Suggested by Arnout Vandecappelle. 989 (test_server_shutdown): Likewise, consider it an error if the 990 server is leaked. 991 992 * tests/*.c: Use soup_test_session_abort_unref(). 993 9942008-09-26 Dan Winship <danw@gnome.org> 995 996 * libsoup/soup-auth-manager-ntlm.c 997 * libsoup/soup-auth-manager.c 998 * libsoup/soup-cookie-jar.c 999 * libsoup/soup-dns.c 1000 * libsoup/soup-logger.c: 1001 * libsoup/soup-message-body.h: 1002 * libsoup/soup-message.h 1003 * libsoup/soup-misc.h: 1004 * libsoup/soup-xmlrpc.h: 1005 1006 * tests/continue-test.c: 1007 * tests/ntlm-test.c: Fix warnings pointed out by gcc -pedantic. 1008 #553976, Sander Dijkhuis. 1009 10102008-09-23 Dan Winship <danw@gnome.org> 1011 1012 * configure.in: 2.24.0.1 1013 1014 * NEWS: Update 1015 1016 * libsoup/soup-session.c (redirect_handler): 1017 * libsoup/soup-message.c (soup_message_new): 1018 (soup_message_new_from_uri, soup_message_set_uri): Revert the 1019 2008-08-25 change; it breaks the rhythmbox DAAP plugin. #553466. 1020 To be revisited. 1021 10222008-09-22 Dan Winship <danw@gnome.org> 1023 1024 * configure.in: 2.24.0 1025 10262008-09-08 Dan Winship <danw@gnome.org> 1027 1028 * configure.in: 2.23.92 1029 1030 * NEWS: update 1031 10322008-09-07 Dan Winship <danw@gnome.org> 1033 1034 * libsoup/soup-session.c (redirect_handler): a 302 response to 1035 HEAD (or any other safe method) should be treated like a 307, not 1036 a 303. #551190, Jonathan Matthew. 1037 1038 * tests/redirect-test.c: test that 1039 10402008-09-01 Dan Winship <danw@gnome.org> 1041 1042 * configure.in: 2.23.91 1043 1044 * NEWS: update 1045 10462008-08-25 Dan Winship <danw@gnome.org> 1047 1048 * libsoup/soup-uri.h (SOUP_URI_VALID_FOR_HTTP): new macro to check 1049 if a URI is a valid http or https URI. 1050 1051 * libsoup/soup-uri.c (soup_uri_new_with_base): Update http/https 1052 check to use SOUP_URI_VALID_FOR_HTTP(). 1053 1054 * libsoup/soup-session.c (redirect_handler): Check 1055 SOUP_URI_VALID_FOR_HTTP() and call it an error if the check fails. 1056 1057 * libsoup/soup-message.c (soup_message_new): Remove the uri->host 1058 check from here. Update docs to clarify that @uri must be an 1059 http/https URI. 1060 (soup_message_new_from_uri): Check SOUP_URI_VALID_FOR_HTTP(). 1061 Update docs. 1062 (soup_message_set_uri): Check SOUP_URI_VALID_FOR_HTTP(). Update 1063 docs. 1064 1065 Should prevent the crash in #528882, but there's still something 1066 going wrong there at a higher level. 1067 10682008-08-22 Bastien Nocera <hadess@hadess.net> 1069 1070 * libsoup/soup-date.c (soup_date_to_time_t), 1071 (soup_date_to_timeval): 1072 * libsoup/soup-date.h: Add a SoupDate to GTimeVal conversion 1073 function, for use in gvfs. #549006, with help from Dan Winship 1074 <danw@gnome.org> 1075 10762008-08-18 Dan Winship <danw@gnome.org> 1077 1078 * libsoup.pc.in (Requires): Revert previous commit; that would 1079 still fail in the case of an application linking against a library 1080 that privately links against libsoup. The only correct solution in 1081 the face of --as-needed (or on OSes where the linker always works 1082 that way) is for the module that actually calls g_thread_init() to 1083 explicitly link against libgthread. 1084 10852008-08-14 Dan Winship <danw@gnome.org> 1086 1087 * libsoup.pc.in (Requires): Add gthread-2.0; the app must call 1088 g_thread_init(), but libsoup won't pull it in itself if built with 1089 --as-needed, so make sure it gets pulled in from here. Noted by 1090 Zeeshan Ali. 1091 1092 * libsoup/soup-auth.c (soup_auth_authenticate): g_return_if_fail 1093 if either username or password is NULL. Noted on the mailing list. 1094 1095 * libsoup/soup-auth-basic.c (authenticate): remove redundant check 1096 10972008-08-04 Dan Winship <danw@gnome.org> 1098 1099 * configure.in: 2.23.6 1100 1101 * NEWS: update 1102 11032008-07-26 Dan Winship <danw@gnome.org> 1104 1105 * libsoup/soup-misc.c (soup_add_completion): Add this to schedule 1106 a callback in a GMainContext "right away", as opposed to 1107 soup_add_idle(), which uses a lower priority and therefore may not 1108 end up calling the callback for a long time if the application is 1109 busy with I/O. #536676, Benjamin Otte. 1110 1111 * libsoup/soup-dns.c (resolver_thread, async_cancel) 1112 (soup_dns_lookup_resolve_async): 1113 * libsoup/soup-message-io.c (soup_message_io_unpause): 1114 * libsoup/soup-session-sync.c (queue_message_thread): 1115 * libsoup/soup-session-async.c (do_idle_run_queue): 1116 * libsoup/soup-socket.c (async_cancel) 1117 (soup_socket_connect_async): 1118 * tests/test-utils.c (test_server_shutdown): Use 1119 soup_add_completion() rather than soup_add_idle(). 1120 1121 * docs/reference/libsoup-2.4-sections.txt: add soup_add_completion 1122 11232008-07-26 Dan Winship <danw@gnome.org> 1124 1125 * libsoup/soup-message-client-io.c (get_request_headers): don't 1126 add a Host header to the message if the caller already added one. 1127 #539803, Marc Maurer. 1128 1129 * libsoup/soup-logger.c (print_request): likewise 1130 1131 * tests/misc-test.c: new test file for small miscellaneous test 1132 cases. 1133 (do_host_test): test Host-header overriding 1134 11352008-07-26 Dan Winship <danw@gnome.org> 1136 1137 * tests/Makefile.am (LIBS): add $(GLIB_LIBS) so this still works 1138 when building with weird LDFLAGS. #541506, Götz Waschk. 1139 1140 * docs/reference/Makefile.am (GTKDOC_LIBS): likewise 1141 1142 * libsoup/soup-auth-digest.c (soup_auth_digest_parse_algorithm): 1143 if the server response doesn't include an algorithm, it is 1144 supposed to default to MD5. #544681, Mads Chr. Olesen. 1145 1146 * libsoup/soup-message-io.c (SoupMessageIOData): change 1147 read_length, write_length, and written to goffset so we can 1148 properly handle message bodies > 4G. #539861, Peter Christensen. 1149 1150 * libsoup/soup-gnutls.c: Fix horrible bizarre brokenness in 1151 GIOChannel subclassing. #536417, Tor Lillqvist. 1152 11532008-06-04 Tor Lillqvist <tml@novell.com> 1154 1155 * libsoup/soup-socket.c (set_fdflags): The SO_RCVTIMEO and 1156 SO_SNDTIMEO options to setsockopt() take int values, in 1157 milliseconds, on Windows. Not struct timeval. Eek. So passing a 1158 struct timeval meant that the tv_sec value (which is first in the 1159 struct) is interpreted as milliseconds. setsockopt apparently 1160 doesn't even get upset by the fact that the option size doesn't 1161 match the sizeof(int) it should expect. 1162 11632008-05-02 Dan Winship <danw@gnome.org> 1164 1165 * libsoup/soup-cookie.c (soup_cookie_applies_to_uri): fix the path 1166 checking 1167 11682008-04-29 Tor Lillqvist <tml@novell.com> 1169 1170 * libsoup/soup-dns.c (soup_dns_is_ip_address): Fix compilation 1171 error in the !HAVE_IPV6 && !HAVE_INET_PTON && !HAVE_INET_ATON 1172 case. 1173 11742008-04-21 Dan Winship <danw@gnome.org> 1175 1176 * configure.in: 2.23.1, bump AGE and CURRENT 1177 1178 * NEWS: update 1179 11802008-04-20 Dan Winship <danw@gnome.org> 1181 1182 Fixes for GnuTLS support on Win32. #528752, patch from Marc Maurer 1183 1184 * libsoup/soup-gnutls.c (soup_ssl_wrap_iochannel): add an argument 1185 saying whether or not the socket is non-blocking, since there's no 1186 way to determine this from the fd in WinSock. 1187 (do_handshake, soup_gnutls_read, soup_gnutls_write): Update for 1188 that. 1189 1190 * libsoup/soup-socket.c (soup_socket_start_proxy_ssl): Update for 1191 that 1192 1193 * libsoup/soup-nossl.c (soup_ssl_wrap_iochannel): update the 1194 declaration here too 1195 1196 * tests/ssl-test.c: Some updates to get this closer to working on 1197 Windows... 1198 11992008-04-14 Chris Lord <chrislord.net@gmail.com> 1200 1201 reviewed by: Dan Winship <danw@gnome.org> 1202 1203 * libsoup/soup-cookie-jar.c (soup_cookie_jar_set_cookie): 1204 Check that the cookie was parsed successfully before setting it 1205 12062008-04-08 Dan Winship <danw@gnome.org> 1207 1208 Initial HTTP cookie support imported from development git repo, 1209 including patches from Xan Lopez. 1210 1211 TODO: make sure the logic in soup_cookie_jar_get_cookies() is 1212 right. Add a test program to tests/. 1213 1214 * libsoup/soup-cookie.c: Code for parsing and generating HTTP 1215 cookies. 1216 1217 * libsoup/soup-cookie-jar.c: Code for managing SoupCookies and 1218 integrating cookie management with a SoupSession. 1219 1220 * libsoup/soup-date.c (soup_date_is_past): New, checks if a 1221 SoupDate refers to a time in the past 1222 1223 * libsoup/soup-dns.c (soup_dns_is_ip_address): New, checks if a 1224 string is a valid IP address 1225 1226 * libsoup/soup-headers.c (soup_header_parse_semi_param_list): New, 1227 like soup_header_parse_param_list, but for semicolon-delimited 1228 data. 1229 12302008-04-08 Dan Winship <danw@gnome.org> 1231 1232 * libsoup/soup-auth-manager.c: Make this a GObject and 1233 specifically a SoupSessionFeature. Add an "authenticate" signal, 1234 and emit that rather than explicitly calling into the SoupSession 1235 and telling it when to emit its own authenticate signal. 1236 1237 * libsoup/soup-auth-manager-ntlm.c: Make this a subclass of 1238 SoupAuthManager, with NTLM support controllable via a property. 1239 1240 * libsoup/soup-session.c (soup_session_init): create an 1241 auth_manager of type SOUP_TYPE_AUTH_MANAGER_NTLM, but defaulting 1242 to USE_NTLM=FALSE. Connect to its "authenticate" signal, and call 1243 soup_session_add_feature() on it. 1244 (set_property, get_property): proxy the USE_NTLM property to the 1245 auth manager. 1246 (auth_manager_authenticate): signal handler for SoupAuthManager 1247 "authenticate" signal. (Replaces soup_session_emit_authenticate(), 1248 which is no longer needed) 1249 12502008-04-08 Dan Winship <danw@gnome.org> 1251 1252 * libsoup/soup-session-feature.c: New interface type representing 1253 a feature that can be added to a SoupSession. 1254 1255 * libsoup/soup-session.c (soup_session_add_feature): Add a feature 1256 to the session by prepending it to priv->features and calling 1257 soup_session_feature_attach() on it. 1258 (soup_session_add_feature_by_type): Add a feature to the session 1259 by creating an object of the indicated type and passing it to 1260 soup_session_add_feature. 1261 (soup_session_remove_feature) 1262 (soup_session_remove_feature_by_type): Likewise, remove features 1263 (soup_session_class_init, set_property): register/handle 1264 construct-time feature adding/removing properties 1265 (dispose): cleanup features 1266 1267 * libsoup/soup-logger.c: port to SoupSessionFeature 1268 1269 * tests/test-utils.c (soup_test_session_new): Use 1270 soup_session_add_feature rather than soup_logger_attach. 1271 12722008-04-08 Dan Winship <danw@gnome.org> 1273 1274 * configure.in: Having branched for gnome-2-22, bump version to 1275 2.23.0 for the GNOME 2.23 series. SOUP_API_VERSION will stay at 1276 2.4, which is confusing but seemed like the best solution at this 1277 point. 1278 12792008-04-07 Dan Winship <danw@gnome.org> 1280 1281 * configure.in: 2.4.1. Bump AGE and CURRENT. 1282 1283 * NEWS: update 1284 1285 * docs/reference/libsoup-2.4-sections.txt: add new symbols 1286 12872008-04-07 Dan Winship <danw@gnome.org> 1288 1289 * libsoup/soup-message-io.c (soup_message_io_pause): If pausing a 1290 message that was waiting to unpause, cancel the unpause. 1291 12922008-04-05 Dan Winship <danw@gnome.org> 1293 1294 * libsoup/soup-dns.c (resolve_address, resolve_name): Don't 1295 cache negative results, even if the DNS server explicitly states 1296 that the host does not exist; some servers give different answers 1297 to clients inside and outside their firewall. #523269, Jörgen 1298 Scheibengruber. 1299 13002008-04-05 Dan Winship <danw@gnome.org> 1301 1302 * libsoup/soup-message-body.c (soup_message_body_set_accumulate) 1303 (soup_message_body_get_accumulate): New, replaces 1304 SOUP_MESSAGE_OVERWRITE_CHUNKS, but can be set on either the 1305 incoming or outgoing message body. 1306 (soup_message_body_get_chunk): update to still dtrt if !accumulate 1307 (soup_message_body_got_chunk, soup_message_body_wrote_chunk): New 1308 methods to handle accumulating/discarding chunks. 1309 1310 * libsoup/soup-message-io.c (read_body_chunk): Use 1311 soup_message_body_got_chunk. 1312 (io_write): Use soup_message_body_wrote_chunk, to discard unneeded 1313 chunks after writing them. Fixes most of #522146. 1314 1315 * libsoup/soup-message.c (soup_message_class_init): add a new 1316 flag, "server-side", to indicate whether the message is 1317 client-side or server-side, and update several methods to use it. 1318 (got_body): Update for accumulate 1319 (soup_message_set_flags): If the caller changes OVERWRITE_CHUNKS, 1320 update the corresponding accumulate flag. 1321 1322 * libsoup/soup-message.h (SOUP_MESSAGE_OVERWRITE_CHUNKS): 1323 deprecated now 1324 1325 * tests/chunk-test.c (do_request_test): Use 1326 soup_message_body_set_accumulate() now, and verify that the chunks 1327 are being discarded appropriately. 1328 (do_response_test): Use 1329 soup_message_body_set_accumulate() instead of OVERWRITE_CHUNKS. 1330 1331 * tests/pull-api.c (do_fully_async_test) 1332 (do_synchronously_async_test): Use 1333 soup_message_body_set_accumulate(). 1334 13352008-04-05 Dan Winship <danw@gnome.org> 1336 1337 * libsoup/soup-dns.c (resolve_address): fix test for 1338 AI_ADDRCONFIG. Noticed while looking at #526321. 1339 13402008-04-05 Dan Winship <danw@gnome.org> 1341 1342 * libsoup/soup-socket.c (soup_socket_class_init) 1343 (soup_socket_write): globally ignore SIGPIPE rather than only 1344 doing it around socket write calls, since with SSL even socket 1345 read calls may need to write, and also because SIGPIPE is 1346 completely moronic and no one should be using it, and the previous 1347 "solution" wasn't thread-safe anyway. Fixes #524397, reported by 1348 Curtis Magyar. 1349 13502008-04-05 Dan Winship <danw@gnome.org> 1351 1352 Misc fixes noticed by "sparse" or by running gcc with additional 1353 -W flags 1354 1355 * libsoup/soup-auth-manager-ntlm.c (ntlm_authorize_post): fix a 1356 potentially uninitialized variable. (Grumble. gcc needs 1357 -Wdo-optimization-so-you-can-generate-code-flow-related-warnings- 1358 but-then-emit-unoptimized-code-for-ease-of-debugging) 1359 1360 * libsoup/soup-gnutls.c (soup_gnutls_channel_funcs): make this 1361 static 1362 1363 * libsoup/soup-uri.c (uri_decoded_copy, uri_normalized_copy): add 1364 "static". (This doesn't change the generated code; the prototype 1365 was already declared static and so gcc was treating the function 1366 as static even though the main declaration *wasn't* declared 1367 static. I'm not sure if this is a bug in gcc or an oddity of the 1368 spec, but it's confusing, so...) 1369 1370 * libsoup/soup-xmlrpc.c (soup_xmlrpc_build_method_response): 1371 s/FALSE/NULL/ 1372 1373 * libsoup/soup-xmlrpc.h: add G_GNUC_PRINTF to 1374 soup_xmlrpc_build_format 1375 1376 * tests/*.c: misc minor fixes, mostly involving missing "const"s 1377 and "static"s to get better warnings, and then remove some unused 1378 variables. 1379 1380 * tests/continue-test.c (do_message): fix a crash when the test 1381 fails 1382 1383 * tests/test-utils.h (debug_printf): add G_GNUC_PRINTF to 1384 prototype 1385 13862008-04-05 Dan Winship <danw@gnome.org> 1387 1388 * libsoup/soup-method.c: Explicitly assign each of the variables 1389 to NULL, because that apparently causes the OS X linker to treat 1390 them differently than if they are left implicitly NULL. #522957. 1391 13922008-04-04 Dan Winship <danw@gnome.org> 1393 1394 * libsoup/soup-message.c: add a new signal "wrote-body-data" to 1395 address the problem that "wrote-chunk" is not usable for progress 1396 info (especially with non-chunked encoding). #525101, suggested by 1397 Christian Kellner. 1398 1399 * libsoup/soup-message-io.c (write_data): emit wrote-body-data as 1400 appropriate. 1401 (io_write): update so that (a) Content-Length writes can be done 1402 in multiple chunks (as long as the caller explicitly sets the 1403 Content-Length header beforehand), and (b) the body data doesn't 1404 get copied an extra time. Based on a patch from Christian. 1405 1406 * libsoup/soup-message-client-io.c (get_request_headers): Don't 1407 update the Content-Length header if it's already set, even if it 1408 doesn't match the (current) body length. 1409 1410 * tests/chunk-test.c: test some chunk-encoding-related behavior 1411 14122008-04-03 Dan Winship <danw@gnome.org> 1413 1414 Be more aggressive about closing unused persistent connections 1415 when needed, to avoid slow load times in WebKit. 1416 1417 * libsoup/soup-session-async.c (run_queue): Remove the 1418 "try_pruning" flag from here and from all the callers, and 1419 *always* try pruning idle connections if it would help. 1420 1421 * libsoup/soup-session.c (soup_session_try_prune_connection): 1422 Rather than only closing a single connection, close all idle 1423 connections. 1424 14252008-03-29 Dan Winship <danw@gnome.org> 1426 1427 * libsoup/soup-message.h (SoupMessage): de-constify 1428 msg->reason_phrase; it's no more const than any other struct 1429 field. 1430 1431 * libsoup/soup-message.c (finalize) 1432 (soup_message_cleanup_response, soup_message_set_status) 1433 (soup_message_set_status_full): don't need to cast reason_phase to 1434 non-const when freeing it now 1435 1436 * libsoup/soup-message-client-io.c (parse_response_headers): 1437 Likewise, remove reason-phrase non-const casts 1438 14392008-03-29 Dan Winship <danw@gnome.org> 1440 1441 * libsoup/soup-date.c (parse_day): fix the test for no-day-parsed 1442 (parse_year): likewise fix the test for no-year-parsed 1443 (parse_time): don't accept empty components here 1444 (parse_textual_date): don't accept a comma if it wasn't preceded 1445 by a weekday 1446 (soup_date_weekday): Fix leap year handling here; the code this 1447 was originally based on only had to work between 1970 and 2038, so 1448 it didn't worry about the mod 100 and mod 400 rules... 1449 1450 * tests/date.c: Add date/string conversion tests (in particular, 1451 to make sure soup_date_weekday is working). Also add test cases 1452 with missing components and make sure they *don't* parse. 1453 14542008-03-25 Dan Winship <danw@gnome.org> 1455 1456 * libsoup/soup-auth-domain-digest.c (accepts): don't crash if the 1457 auth_callback returns NULL (meaning "unrecognized user"). 1458 1459 * tests/server-auth-test.c (do_test, do_auth_tests): Test bad 1460 usernames as well as bad passwords. 1461 (main): Remove erroneous local run_tests variable. 1462 1463 Pointed out by Curtis Magyar. 1464 14652008-03-19 Dan Winship <danw@gnome.org> 1466 1467 * libsoup/soup-auth.c (soup_auth_new): compare WWW-Authenticate 1468 auth schemes case-insensitively. 1469 1470 * libsoup/soup-auth-digest.c (update): allow Digest 1471 WWW-Authenticate header with no "qop" option. (The original RFC 1472 2069 style of Digest auth.) 1473 (soup_auth_digest_parse_qop): this returns a bitfield, so don't 1474 return -1 if there are no recognized values. 1475 1476 * tests/httpd.conf.in: use "AuthDigestQop none" in /Digest/realm3 1477 so we test that 1478 1479 Fixes #498484 (Digest auth against Apple's Calendar Server). 1480 14812008-03-18 Dan Winship <danw@gnome.org> 1482 1483 * libsoup/soup-session.c (soup_session_class_init): Add a new 1484 property, SOUP_SESSION_IDLE_TIMEOUT, to specify a timeout after 1485 which idle connections should be closed. 1486 (soup_session_get_connection): pass the idle_timeout value on to 1487 the connection. 1488 1489 * libsoup/soup-connection.c (soup_connection_class_init): Add 1490 SOUP_CONNECTION_IDLE_TIMEOUT. 1491 (start_idle_timer, stop_idle_timer): add/remove a timeout to call 1492 soup_connection_disconnect(). 1493 (socket_connect_result, soup_connection_connect_sync): start the 1494 idle timer after connection is complete 1495 (set_current_request): call stop_idle_timer() when starting a new 1496 request 1497 (clear_current_request): call start_idle_timer() when finishing a 1498 request 1499 (dispose): call stop_idle_timer() when destroying the connection 1500 1501 #518214, based on a patch from Jorn Baayen. 1502 15032008-03-18 Dan Winship <danw@gnome.org> 1504 1505 * libsoup/soup-message-io.c (soup_message_io_unpause): if delaying 1506 the unpause to idle time, we need to keep track of the idle source 1507 (soup_message_io_stop): if the message is waiting to unpause 1508 itself, cancel that 1509 1510 * libsoup/soup-server.c (soup_server_pause_message): call 1511 soup_message_io_pause(), not soup_message_io_unpause(). Duh. 1512 15132008-03-15 Dan Winship <danw@gnome.org> 1514 1515 * libsoup/soup-session.c: Define two new signals, request_queued 1516 and request_unqueued, to provided a clearer (and 1517 clearly-documented) lifecycle for messages, helping us (and other 1518 people) avoid bugs like #522601, SoupSession::authenticate signal 1519 emitted multiple times per message (reported and analyzed by Tommi 1520 Komulainen). 1521 1522 * libsoup/soup-logger.c: 1523 * libsoup/soup-auth-manager.c: 1524 * libsoup/soup-auth-manager-ntlm.c: Use request_queued/unqueued 1525 1526 * tests/auth-test.c (do_async_auth_test): add a regression test 1527 15282008-03-14 Dan Winship <danw@gnome.org> 1529 1530 * libsoup/soup-message-client-io.c (get_request_headers): Fix Host 1531 header syntax when the host is an IPv6 address literal. Noticed 1532 while poking at #522519. 1533 15342008-03-14 Dan Winship <danw@gnome.org> 1535 1536 * libsoup/soup-message-private.h (SoupMessagePrivate): add 1537 an orig_http_version field. 1538 1539 * libsoup/soup-message.c (soup_message_init): initialize 1540 orig_http_version. 1541 (soup_message_set_http_version): If called before the status code 1542 is received, set orig_http_version too. 1543 (soup_message_cleanup_response): Restore orig_http_version, so 1544 that we don't send an HTTP/1.0 request in response to an HTTP/1.0 1545 redirect. #521848, Tommi Komulainen. 1546 1547 * libsoup/soup-message-server-io.c (get_response_headers): 1548 actually output "HTTP/1.0", not "HTTP/1.1", if the message's http 1549 version is 1.0. 1550 1551 * tests/redirect-test.c (server_callback): Add a regression test; 1552 set http_version to 1.0 when returning a redirect, but require it 1553 to be 1.1 when processing the following request 1554 15552008-03-13 Xan Lopez <xan@gnome.org> 1556 1557 * libsoup/soup-address.c: 1558 * libsoup/soup-auth-domain-basic.c: 1559 * libsoup/soup-auth-domain-digest.c: 1560 * libsoup/soup-auth-domain.c: 1561 * libsoup/soup-auth.c: 1562 * libsoup/soup-connection.c: 1563 * libsoup/soup-message.c: 1564 * libsoup/soup-server.c: 1565 * libsoup/soup-session.c: 1566 * libsoup/soup-socket.c: 1567 1568 Use G_OBJECT_WARN_INVALID_PROPERTY_ID in all get/set_property functions. 1569 1570 Bug #522115 1571 15722008-03-13 Xan Lopez <xan@gnome.org> 1573 1574 * tests/dns.c: (main): 1575 * tests/get.c: (main): 1576 * tests/getbug.c: (main): 1577 * tests/simple-httpd.c: (main): 1578 * tests/simple-proxy.c: (main): 1579 * tests/ssl-test.c: (main): 1580 * tests/test-utils.c: (test_init): 1581 1582 g_thread_init should be called before any other glib function. (#522117) 1583 15842008-03-10 Dan Winship <danw@gnome.org> 1585 1586 * configure.in: 2.4.0! 1587 1588 * NEWS: update 1589 15902008-02-28 Dan Winship <danw@gnome.org> 1591 1592 * libsoup/soup-session.c (finalize): free priv->user_agent. 1593 #518798, Wouter Cloetens. 1594 (redirect_handler): PROPFIND is defined to be "safe and 1595 idempotent", so allow automatic redirects of it. (Pointed out by 1596 Christian Kellner. FIXME: need a way for apps to declare 1597 additional safe methods). Also, treat 302 like 307, not like 303, 1598 because that behavior is universal in the real world, despite the 1599 spec's protests. 1600 1601 * tests/redirect-test.c (tests): update POST 302 behavior check 1602 1603 * tests/Makefile.am (TESTS): oops, add redirect-test so it gets 1604 run by "make check"/"make distcheck" 1605 1606 * tests/ssl-test.c: Re-revert the change from 2008-02-09; the 1607 problem with ssl-test.c was not that soup_gnutls_init() wasn't 1608 thread-safe, it's that the server thread doesn't do anything that 1609 would ever cause soup_gnutls_init() to be called, and so if the 1610 client thread doesn't start first, the server thread will run 1611 without initializing GNUTLS. 1612 16132008-02-27 Benjamin Otte <otte@gnome.org> 1614 1615 * libsoup/soup-socket.c: (read_from_network), (soup_socket_read), 1616 (soup_socket_read_until), (soup_socket_write): 1617 ensure that nread/nwrote parameters aren't NULL. They are also 1618 properly set on error paths now. 1619 16202008-02-25 Dan Winship <danw@gnome.org> 1621 1622 * configure.in: 2.3.4 1623 1624 * NEWS: Update 1625 16262008-02-25 Dan Winship <danw@gnome.org> 1627 1628 * docs/reference/Makefile.am (DOC_MODULE): rename from libsoup to 1629 libsoup-2.4 1630 (TARGET_DIR): don't need to override this now 1631 1632 * docs/reference/libsoup-2.4.types: 1633 * docs/reference/libsoup-2.4-docs.txt: 1634 * docs/reference/libsoup-2.4-overrides.txt: 1635 * docs/reference/libsoup-2.4-sections.txt: Rename these from 1636 unversioned, to match DOC_MODULE 1637 1638 Fixes doc installation to work with devhelp again. #518384, Mart 1639 Raudsepp. 1640 16412008-02-25 Benjamin Otte <otte@gnome.org> 1642 1643 * libsoup/soup-address.h: 1644 * libsoup/soup-auth-domain.h: 1645 * libsoup/soup-auth.h: 1646 * libsoup/soup-message.h: 1647 * libsoup/soup-server.h: 1648 * libsoup/soup-session-async.h: 1649 * libsoup/soup-session-sync.h: 1650 * libsoup/soup-session.h: 1651 * libsoup/soup-socket.h: 1652 * libsoup/soup-types.h: 1653 * libsoup/soup-uri.h: 1654 use an underscore for struct definitions. Fixes bug #518317. 1655 16562008-02-20 Sebastian Dröge <slomo@circular-chaos.org> 1657 1658 * libsoup.pc.in: Add gobject-2.0 and gio-2.0 to Requires. 1659 Move libxml-2.0 and the SSL dependency to Requires.private 1660 as no header is including them. Fixes bug #517631. 1661 16622008-02-11 Dan Winship <danw@gnome.org> 1663 1664 * configure.in: post-release bump to 2.3.3 1665 16662008-02-11 Dan Winship <danw@gnome.org> 1667 1668 * configure.in: 2.3.2 1669 (SOUP_CURRENT): bump for API changes 1670 1671 * NEWS: update 1672 16732008-02-09 Dan Winship <danw@gnome.org> 1674 1675 * Misc gtk-doc fix-ups 1676 16772008-02-09 Dan Winship <danw@gnome.org> 1678 1679 * libsoup/soup-misc.h: remove prototype for 1680 soup_signal_connect_once, which is only used by soup-connection 1681 now, and will go away once that code is rewritten. 1682 1683 * libsoup/soup-connection.c: prototype it here now (the definition 1684 is still in soup-misc.c) 1685 16862008-02-09 Dan Winship <danw@gnome.org> 1687 1688 * libsoup/soup-auth-manager-ntlm.c: mark the DES magic number 1689 arrays const 1690 1691 * libsoup/soup-date.c (months, days): add an extra "const" to each 1692 of these declarations, as one "const" is apparently not enough. 1693 (soup_date_to_time_t): remove redundant copy of days_before array. 1694 1695 * libsoup/soup-dns.c (soup_dns_init): use g_once_init_enter/leave 1696 1697 * libsoup/soup-gnutls.c (soup_ssl_supported) 1698 (soup_gnutls_channel_funcs): Mark these const 1699 (soup_gnutls_init, init_dh_params): Use g_once_init_enter/leave 1700 1701 * libsoup/soup-status.c (reason_phrases): mark this const 1702 1703 * tests/ssl-test.c: Remove the workaround for soup_gnutls_init() 1704 not being thread-safe, since it is now. 1705 17062008-02-08 Dan Winship <danw@gnome.org> 1707 1708 * libsoup/soup-message-headers.c (SoupMessageHeadersIter) 1709 (soup_message_headers_iter_init, soup_message_headers_iter_next): 1710 Add an iterator type for SoupMessageHeaders. 1711 1712 * libsoup/soup-message-client-io.c (get_request_headers): 1713 * libsoup/soup-message-server-io.c (get_response_headers): Use 1714 SoupMessageHeadersIter. 1715 1716 * libsoup/soup-logger.c (print_request, print_response): Use 1717 SoupMessageHeadersIter. And take advantage of the simplification 1718 to fix the kludge where 'direction' was stored as a field in 1719 SoupLoggerPrivate rather than being an argument to 1720 soup_logger_print. 1721 1722 * tests/get.c (get_url): 1723 * tests/header-parsing.c (check_headers): 1724 * tests/simple-httpd.c (server_callback): Use 1725 SoupMessageHeadersIter 1726 17272008-02-06 Dan Winship <danw@gnome.org> 1728 1729 * libsoup/soup-server.c (soup_server_add_auth_domain): Ref the 1730 auth domain when adding it. 1731 1732 * tests/continue-test.c (setup_server): 1733 * tests/server-auth-test.c (main): Add unrefs here to avoid 1734 leaking now 1735 17362008-02-06 Dan Winship <danw@gnome.org> 1737 1738 * libsoup/soup-message.c (soup_message_set_chunk_allocator): New 1739 method that lets the application set a callback function to use to 1740 allocate SoupBuffers for reading into, so as to avoid needing 1741 extra copies. 1742 1743 * libsoup/soup-message-body.c (soup_buffer_new_with_owner): new, 1744 to create a SoupBuffer pointing to memory owned by another object, 1745 with a GDestroyNotify to unref/free that object when the 1746 SoupBuffer is freed. 1747 (soup_buffer_get_owner): Returns the owner of a buffer created 1748 with soup_buffer_new_with_owner. 1749 (soup_buffer_free, etc): update SoupBuffer code for owned buffers. 1750 1751 Suggested by Wouter Cloetens, #513810. 1752 1753 * tests/simple-httpd.c (do_get): Use mmap() and 1754 soup_buffer_new_with_owner(), as a demo/test. 1755 17562008-02-06 Dan Winship <danw@gnome.org> 1757 1758 * libsoup/soup-date.c (soup_date_to_time_t): clamp the result to 1759 the time_t range, and document that. Remove the #ifdef HAVE_TIMEGM 1760 branch. 1761 1762 * configure.in: remove check for timegm 1763 17642008-02-04 Dan Winship <danw@gnome.org> 1765 1766 * libsoup/Makefile.am: Fix the handling of soup-enum-types.h to 1767 ensure that it gets built before the things that depend on it. 1768 17692008-02-03 Benjamin Otte <otte@gnome.org> 1770 1771 * libsoup/soup-socket.c: update documentation to new API 1772 17732008-02-02 Dan Winship <danw@gnome.org> 1774 1775 * libsoup/soup-session.c: fix default connections-per-host again; 1776 it was defined in two places. Add SOUP_SESSION_USER_AGENT property 1777 (setup_message): set the User-Agent request header on the request 1778 1779 * libsoup/soup-server.c: add SOUP_SERVER_SERVER_HEADER property 1780 (start_request): set the Server response header on the request. 1781 1782 * tests/get.c: 1783 * tests/simple-httpd.c: set the User-Agent/Server headers 1784 17852008-02-02 Dan Winship <danw@gnome.org> 1786 1787 * libsoup/soup-headers.c (soup_headers_parse_request): if the 1788 request headers contain an unrecognized Expect: header, return 1789 SOUP_STATUS_EXPECTATION_FAILED. Also, process Connection headers 1790 in HTTP/1.0 messages as required by 2616 14.10. 1791 (soup_headers_parse_response): Likewise handle Connection headers 1792 in HTTP/1.0 messages 1793 1794 * tests/header-parsing.c: test those things 1795 17962008-02-02 Dan Winship <danw@gnome.org> 1797 1798 * libsoup/soup-session.c (redirect_handler): Misc fixes: don't 1799 redirect on "300 Multiple Choices", "304 Not Modified", "305 Use 1800 Proxy", or any unrecognized status code. Don't redirect unsafe 1801 methods on 301, 302, or 307. Redirect POST to GET on 303. 1802 1803 * tests/redirect-test.c: test of redirection handling behavior. 1804 18052008-02-02 Dan Winship <danw@gnome.org> 1806 1807 * libsoup/soup-method.h (SOUP_METHOD_GET, etc): Fix these so that 1808 direct comparisons against them actually *are* faster than doing 1809 strcmp, as the docs claim. 1810 1811 * libsoup/soup-uri.h (SOUP_URI_SCHEME_HTTP, 1812 SOUP_URI_SCHEME_HTTPS): likewise 1813 18142008-02-01 Dan Winship <danw@gnome.org> 1815 1816 * libsoup/soup-address.c: Use GObject properties. 1817 (soup_address_new, soup_address_new_from_sockaddr) 1818 (soup_address_new_any): Make these just wrappers around 1819 g_object_new. 1820 1821 * libsoup/soup-message-body.c (soup_message_body_get_type): 1822 * libsoup/soup-message-headers.c (soup_message_headers_get_type): 1823 * libsoup/soup-server.c (soup_client_context_get_type): 1824 Register these as boxed types, for language bindings. 1825 1826 * libsoup/soup-date.c (soup_date_get_type): 1827 * libsoup/soup-message-body.c (soup_buffer_get_type): 1828 * libsoup/soup-value-utils.c (soup_byte_array_get_type): 1829 * libsoup/soup-uri.c (soup_uri_get_type): Upgrade to the latest 1830 yummiest type-registering idiom. 1831 18322008-02-01 Dan Winship <danw@gnome.org> 1833 1834 * libsoup/soup-connection.c (soup_connection_disconnect): 1835 Reorganize this; emitting DISCONNECTED may cause the session to 1836 unref the connection, causing it to be destroyed, so do everything 1837 else before that. #437835 and dups. Also, call 1838 soup_message_cleanup_response() when requeuing an IO_ERROR-ed 1839 message, so soup_session_send_message() will requeue it rather 1840 than treating it as failed. 1841 1842 * docs/reference/Makefile.am (TARGET_DIR): override this to 1843 include the API version, to fix the last remaining parallel 1844 install issue between libsoup 2.2 and 2.4. #512810, Daniel 1845 Gryniewicz. 1846 1847 * tests/query-test.c (do_test): don't use "stdout" as a variable 1848 name; it's allowed to be a macro (and it is one on Solaris). 1849 #513602, patch from Jeff Cai. 1850 18512008-01-31 Dan Winship <danw@gnome.org> 1852 1853 * libsoup/soup-date.c (soup_date_to_time_t): new 1854 1855 * libsoup/soup-form.c (soup_form_decode): Remove "_urlencoded" 1856 from name. (And add back-compat #define.) 1857 (soup_form_encode): New, takes varargs parameters for each form 1858 construction. 1859 (soup_form_encode_hash, soup_form_encode_datalist): renamed, with 1860 back-compat #defines 1861 (soup_form_request_new, soup_form_request_new_from_hash) 1862 (soup_form_request_new_from_datalist): New methods to construct a 1863 GET or POST message with form data. 1864 1865 * libsoup/soup-uri.c (soup_uri_set_query_from_fields): New, takes 1866 varargs like soup_form_encode(). 1867 1868 * libsoup/soup-value-utils.c (soup_value_hash_new_with_vals) 1869 (soup_value_hash_insert_vals, soup_value_hash_lookup_vals): New 1870 routines to work with multiple value hash values at once. 1871 (soup_value_array_new): tiny wrapper, for naming consistency 1872 (soup_value_array_new_with_vals, soup_value_array_append_vals): 1873 New routines to work with multiple value array values at once. 1874 18752008-01-28 Dan Winship <danw@gnome.org> 1876 1877 * configure.in: post-release bump to 2.3.1 1878 18792008-01-28 Dan Winship <danw@gnome.org> 1880 1881 * configure.in: Bump version to 2.3.0.1 1882 1883 * NEWS: Update 1884 1885 * docs/reference/Makefile.am (content_files): include 1886 porting-2.2-2.4.xml 1887 18882008-01-28 Dan Winship <danw@gnome.org> 1889 1890 * libsoup/soup-message.c (soup_message_set_auth) 1891 (soup_message_set_proxy_auth): Use soup_message_headers_replace(), 1892 not soup_message_headers_append(), since only a single 1893 Authorization/Proxy-Authorization header is allowed. #512517. 1894 1895 * libsoup/soup-auth-manager-ntlm.c (ntlm_request_started): Don't 1896 set an NTLM Authorization header if the message already has a 1897 Basic or Digest one. 1898 1899 * tests/ntlm-test.c: Add some Basic auth and mixed NTLM/Basic auth 1900 tests 1901 19022008-01-28 Wouter Bolsterlee <wbolster@svn.gnome.org> 1903 1904 * docs/reference/libsoup-docs.sgml: 1905 1906 Changed section titles so that they actually show 1907 something useful in DevHelp. 1908 19092008-01-27 Dan Winship <danw@gnome.org> 1910 1911 * libsoup/soup-dns.c (resolver_thread): fix mutex use to avoid a 1912 race condition 1913 1914 * libsoup/soup-xmlrpc.c (soup_xmlrpc_build_faultv): 1915 (soup_xmlrpc_set_response, soup_xmlrpc_set_fault): 1916 (soup_xmlrpc_parse_method_call): Fix misc server-side stuff 1917 (soup_xmlrpc_parse_method_response): Fix fault parsing 1918 1919 * libsoup/soup-xmlrpc.h (SoupXMLRPCFault): add semi-standard fault 1920 codes from 1921 http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php 1922 1923 * tests/xmlrpc-server.php (sum): return a <fault> if the arguments 1924 are wrong (so that xmlrpc-test can test that case). 1925 (dateChange): change to take two parameters, a date and a struct, 1926 instead of putting the date in the struct, since we weren't 1927 previously testing multiple parameter handling. 1928 1929 * tests/xmlrpc-test.c (main): Add a -u flag to specify an 1930 alternate URL. 1931 (do_xmlrpc): Remove level 3 debug output, which is now redundant 1932 with the SoupLogger stuff. 1933 (test_dateChange): update for dateChange prototype change 1934 (test_fault_malformed, test_fault_method, test_fault_args): test 1935 handling of faults 1936 1937 * tests/xmlrpc-server-test.c: Test the server-side XML-RPC API (by 1938 implementing the same methods as xmlrpc-server.php and then 1939 using xmlrpc-test) 1940 19412008-01-27 Dan Winship <danw@gnome.org> 1942 1943 * libsoup/soup-headers.c (soup_header_parse_quality_list): fix to 1944 not sometimes read beyond the end of the string. 1945 1946 * libsoup/soup-message-body.c (soup_message_body_append): When 1947 appending a 0-length SOUP_MEMORY_TAKE buffer, we need to free the 1948 passed-in buffer rather than just ignoring it. 1949 1950 * libsoup/soup-message-headers.c (soup_message_headers_free): Fix 1951 leak introduced by patch for 511980. 1952 1953 * libsoup/soup-server.c (got_headers): fix leak when decoding path 1954 1955 * libsoup/soup-session.c (finalize): free ntlm_manager 1956 1957 * tests/libsoup.supp: update for libsoup 2.4, glib 2.14, etc 1958 1959 * tests/header-parsing.c (do_qvalue_tests): 1960 * tests/uri-parsing.c (main): more cleanup 1961 19622008-01-27 Dan Winship <danw@gnome.org> 1963 1964 * libsoup/soup-logger.c (soup_logger_attach): Fix session ids by 1965 using weak refs for the logger cleanup rather than trying to use 1966 the same qdata for two different things. 1967 (print_request, print_response): use full type names in the 1968 Soup-Debug line, since SoupSessionSync and SoupSessionAsync get 1969 numbered separately. 1970 19712008-01-27 Dan Winship <danw@gnome.org> 1972 1973 * libsoup/soup-session-async.c (final_finished): Don't run the 1974 queue again if the callback destroyed the session. #511868, Stef 1975 Walter. 1976 19772008-01-25 Srinivasa Ragavan <sragavan@novell.com> 1978 1979 ** Fix for bug #511980 1980 1981 * libsoup/soup-message-headers.c: (soup_message_headers_clear): 1982 Instead of destroying the hashtable, just remove the contents of the 1983 table. 1984 19852008-01-23 Tor Lillqvist <tml@novell.com> 1986 1987 * configure.in: Allow autogening even without AM_PATH_LIBGCRYPT 1988 available 1989 1990 * libsoup/soup-date.c (soup_date_new_from_time_t): Correct use of 1991 gmtime(). 1992 1993 * libsoup/soup-headers.c (soup_headers_parse_status_line): Return 1994 FALSE if neither HTTP nor ICY. Avoids crash in 1995 tests/header-parsing. 1996 1997 * libsoup/soup-socket.c: On Windows SHUT_RDWR is called SD_BOTH. 1998 (set_nonblocking): Fix typo. 1999 2000 * tests/continue-test.c: Seems to build fine without <pthread.h>, 2001 so drop that. 2002 20032008-01-18 Dan Winship <danw@gnome.org> 2004 2005 * tests/server-auth-test.c: test SOUP_AUTH_DOMAIN_REMOVE_PATH 2006 20072008-01-18 Dan Winship <danw@gnome.org> 2008 2009 * configure.in: require glib 2.15.3, not 2.15.0, since 2010 AM_PATH_GLIB_2_0 didn't know about gio until post-2.15.2. Pointed 2011 out by Matthew Barnes, #510216. 2012 20132008-01-18 Dan Winship <danw@gnome.org> 2014 2015 * libsoup/soup-auth-domain.c 2016 (soup_auth_domain_set_generic_auth_callback): 2017 (soup_auth_domain_check_password): add a new generic auth callback 2018 that can be used with any subclass to do cleartext password 2019 checking against messages. Suggested by Mathias Hasselmann. 2020 2021 * libsoup/soup-auth-domain-basic.c: Implement generic auth 2022 2023 * libsoup/soup-auth-domain-digest.c: Implement generic auth. 2024 (soup_auth_domain_digest_evil_check_password): Gone, use the 2025 generic version now. 2026 20272008-01-17 Dan Winship <danw@gnome.org> 2028 2029 * libsoup/soup-auth-digest.c (soup_auth_digest_compute_hex_urp) 2030 (soup_auth_digest_compute_hex_a1) 2031 (soup_auth_digest_compute_response): cast the second arg to 2032 g_checksum_update to (guchar *) to avoid warnings 2033 20342008-01-16 Dan Winship <danw@gnome.org> 2035 2036 * libsoup/soup-headers.c (soup_headers_parse_status_line): Deal 2037 with Shoutcast servers, which return "ICY 200 OK", but are 2038 otherwise straight HTTP/1.0. #502325, Wouter Cloetens. 2039 2040 * tests/header-parsing.c (resptests): add a test for it 2041 20422008-01-16 Dan Winship <danw@gnome.org> 2043 2044 * libsoup/soup-auth-manager.c (authorize_handler, etc): Allow the 2045 session authenticate signal to be handled asynchronously, by 2046 pausing the message and then authenticating the auth later. 2047 (auth_type_compare_func): make this work. oops. 2048 (extract_challenge): plug leak 2049 2050 * libsoup/soup-auth-manager-ntlm.c: Make this work async too. 2051 2052 * libsoup/soup-headers.c (soup_header_parse_list): 2053 (soup_header_parse_param_list): plug leaks 2054 2055 * tests/auth-test.c (do_async_auth_test): test async auth 2056 2057 * docs/reference/client-howto.xml (Handling Authentication): 2058 mention async auth 2059 20602008-01-16 Dan Winship <danw@gnome.org> 2061 2062 * configure.in: Bomb out if glib 2.15.0 isn't found. 2063 (AM_PATH_GLIB_2_0 doesn't do this itself.) 2064 20652008-01-15 Dan Winship <danw@gnome.org> 2066 2067 * libsoup/soup-auth-manager-ntlm.c: Replaces SoupConnectionNTLM; 2068 now works as a SoupSession::request_started watcher. 2069 2070 * libsoup/soup-connection.c: remove the no-longer-needed 2071 "authenticate" signal 2072 2073 * libsoup/soup-session.c: Use a SoupAuthManagerNTLM if USE_NTLM is 2074 set. Remove connection-authenticate-signal references. 2075 20762008-01-15 Dan Winship <danw@gnome.org> 2077 2078 * Merge libsoup-2.4 branch to trunk 2079 20802008-01-15 Dan Winship <danw@gnome.org> 2081 2082 * libsoup/soup-dns.c (resolve_status): Fix the logic here 2083 20842008-01-15 Dan Winship <danw@gnome.org> 2085 2086 * docs/reference/porting-2.2-2.4.xml: add a few more updates 2087 20882008-01-15 Dan Winship <danw@gnome.org> 2089 2090 * libsoup/soup-auth-digest.c: Use GChecksum for MD5 2091 2092 * libsoup/soup-md5-utils.[ch]: gone 2093 20942008-01-15 Dan Winship <danw@gnome.org> 2095 2096 * libsoup/soup-server.c (soup_server_run_async): 2097 (soup_server_quit): Don't ref/unref the server here. It doesn't 2098 match the way other things work. #494128, Mathias Hasselmann. 2099 21002008-01-14 Dan Winship <danw@gnome.org> 2101 2102 * libsoup/soup-address.h: 2103 * libsoup/soup-auth-domain-basic.h: 2104 * libsoup/soup-auth-domain-digest.h: 2105 * libsoup/soup-auth-domain.h: 2106 * libsoup/soup-auth.h: 2107 * libsoup/soup-logger.h: 2108 * libsoup/soup-message.h: 2109 * libsoup/soup-server.h: 2110 * libsoup/soup-session-async.h: 2111 * libsoup/soup-session-sync.h: 2112 * libsoup/soup-session.h: 2113 * libsoup/soup-socket.h: Add padding for future expansion to class 2114 structs 2115 21162008-01-14 Dan Winship <danw@gnome.org> 2117 2118 * libsoup/soup-uri.c: Add more documentation. 2119 (soup_uri_is_https): gone, replaced by SOUP_URI_SCHEME_HTTP / 2120 SOUP_URI_SCHEME_HTTPS 2121 (soup_uri_new): allow passing NULL to get back an "empty" SoupURI. 2122 (soup_uri_to_string): rename just_path to just_path_and_query, to 2123 avoid fooling people. 2124 (soup_uri_decode, soup_uri_normalize): Change these to return the 2125 decoded/normalized string rather than modifying it in place. 2126 (soup_uri_set_scheme, etc): provide setters for SoupURI parts. 2127 (soup_uri_set_query_from_form): set uri->query via 2128 soup_form_encode_urlencoded(). 2129 21302008-01-14 Dan Winship <danw@gnome.org> 2131 2132 * configure.in: require glib 2.15.0, and gio 2133 2134 * libsoup/soup-dns.c (soup_dns_lookup_resolve) 2135 (soup_dns_lookup_resolve_async): Add GCancellables, and support 2136 cancellation of DNS lookups. 2137 (resolve_address, resolve_name): If we get a DNS failure (eg, 2138 because we're disconnected from the network), don't cache that 2139 result, just try again next time someone asks. [#508593] 2140 2141 * libsoup/soup-address.c (soup_address_resolve_async) 2142 (soup_address_resolve_sync): Add GCancellables, pass them to 2143 soup-dns. 2144 2145 * libsoup/soup-socket.c (soup_socket_connect_async) 2146 (soup_socket_connect_sync): Add GCancellables and implement 2147 cancellation. 2148 (soup_socket_start_ssl, soup_socket_start_proxy_ssl) 2149 (soup_socket_read, soup_socket_read_until, soup_socket_write): add 2150 GCancellables, though these routines don't actually implement 2151 cancellation yet. 2152 (soup_socket_disconnect): Don't close() the socket if someone is 2153 doing I/O on it, as that creates a race condition. (The fd number 2154 might be quickly recycled.) Instead, keep the socket open but 2155 dead, via shutdown(). 2156 21572008-01-14 Benjamin Otte <otte@gnome.org> 2158 2159 * libsoup/soup-socket.c: (soup_socket_class_init): clarify docs for 2160 new-connection signal. 2161 21622008-01-14 Dan Winship <danw@gnome.org> 2163 2164 * tests/test-utils.c: renamed from apache-wrappers and expanded. 2165 (test_init): do option parsing and general setup 2166 (test_cleanup): print error count and do cleanup 2167 (debug_printf): define here rather than in each test, and rename 2168 from dprintf [#501631] 2169 (soup_test_server_new): create a SoupServer, optionally in its own 2170 thread, and clean it up when exiting. 2171 (soup_test_session_new): create a SoupSession, optionally with 2172 an attached SoupLogger (if requested via command line) 2173 2174 * tests/*.c: use test-utils 2175 21762008-01-13 Dan Winship <danw@gnome.org> 2177 2178 * libsoup/soup-logger.c: New HTTP debug logging object. (Based on 2179 E2K_DEBUG and its clones.) 2180 2181 * libsoup/soup-message.c (soup_message_class_init) 2182 (soup_message_add_header_handler) 2183 (soup_message_add_status_code_handler): Change things around a 2184 little; remove the "requeuing or cancelling the message stops 2185 signal emission" rule, and instead make that be a feature of just 2186 the header and status code handlers. (Makes the basic signal 2187 handlers behave more predictably.) 2188 21892008-01-11 Dan Winship <danw@gnome.org> 2190 2191 * libsoup/soup-auth-domain.c (soup_auth_domain_set_filter): 2192 * libsoup/soup-auth-domain-basic.c 2193 (soup_auth_domain_basic_set_auth_callback): 2194 * libsoup/soup-auth-domain-digest.c 2195 (soup_auth_domain_digest_set_auth_callback): 2196 * libsoup/soup-message.c (soup_message_cleanup_response) 2197 (soup_message_set_flags, soup_message_set_http_version) 2198 (soup_message_set_uri, soup_message_set_status) 2199 (soup_message_set_status_full): 2200 * libsoup/soup-message-client-io.c (parse_response_headers): 2201 * libsoup/soup-message-server-io.c (parse_request_headers): 2202 Call g_object_notify() when changing properties. 2203 2204 * libsoup/soup-session.c (soup_session_class_init): bump the 2205 default value of SOUP_SESSION_MAX_CONNS_PER_HOST down to 2, per 2206 RFC 2616. 2207 2208 * libsoup/soup-message-body.c (soup_buffer_copy): When copying a 2209 TEMPORARY buffer, keep a reference to the copy, so that a second 2210 copy will get that same buffer, rather than actually copying it 2211 again. 2212 2213 * libsoup/soup-types.h: remove SoupMessageFilter, which doesn't 2214 exist any more 2215 22162008-01-07 Dan Winship <danw@gnome.org> 2217 2218 * libsoup/soup-session.c (soup_session_class_init): Change 2219 request_started signal to have a SoupSocket as its last parameter. 2220 2221 * libsoup/soup-server.c: Fix request_* signals to all be (server, 2222 msg, client) rather than (server, client, msg). 2223 22242008-01-07 Dan Winship <danw@gnome.org> 2225 2226 * docs/reference/porting-2.2-2.4.xml: Notes on porting from 2.2 to 2227 2.4 2228 22292008-01-07 Dan Winship <danw@gnome.org> 2230 2231 * libsoup/*.c: Move gtk-doc stuff from docs/reference/tmpl/ to the 2232 C files themselves. Some updates. 2233 2234 * docs/reference/Makefile.am: fix (kludge?) this up to not require 2235 tmpl/ to exist 2236 2237 * docs/reference/client-howto.xml: 2238 * docs/reference/server-howto.xml: update 2239 22402008-01-06 Dan Winship <danw@gnome.org> 2241 2242 * libsoup/soup-soap-message.c: 2243 * libsoup/soup-soap-response.c: For the second time, remove SOAP 2244 support from libsoup... These APIs are not really all that helpful 2245 in the grand scheme of SOAPiness, and are only used by the 2246 Evolution GroupWise backend, which can just import this code and 2247 integrate it better there. 2248 2249 * libsoup/soup-misc.c (soup_xml_real_node): 2250 * libsoup/soup-xmlrpc.c: Move soup_xml_real_node out of soup-misc 2251 to soup-xmlrpc, and make it private. libxml is no longer exposed 2252 in the public API. 2253 22542008-01-06 Dan Winship <danw@gnome.org> 2255 2256 * libsoup/soup-date.c (soup_date_new_from_now): new method to 2257 generate a date relative to now. 2258 (soup_date_new, etc): document SoupDate methods 2259 2260 * libsoup/soup-server.c (got_headers): set Date header, as 2261 required by RFC 2616 2262 22632008-01-06 Dan Winship <danw@gnome.org> 2264 2265 * libsoup/soup-server.c (got_headers): if raw_paths isn't set, 2266 decode the request's uri->path before doing anything else 2267 (soup_server_class_init): add "raw-paths" property, to tell 2268 SoupServer to NOT decode the Request-URI path. 2269 2270 * libsoup/soup-auth-domain.c (soup_auth_domain_covers): Revert 2271 earlier path-decoding change; that happens at the SoupServer level 2272 now. 2273 22742008-01-06 Dan Winship <danw@gnome.org> 2275 2276 * libsoup/soup-message-body.c (soup_buffer_get_type): Register 2277 SoupBuffer as a boxed type. 2278 2279 * libsoup/soup-message.c (soup_message_class_init): Use 2280 SOUP_TYPE_BUFFER in got_chunk signal definition 2281 2282 * libsoup/soup-server.c (soup_client_context_get_type): Register 2283 SoupClientContext as a pointer type 2284 (soup_server_class_init): use SOUP_TYPE_CLIENT_CONTEXT in signal 2285 definitions. 2286 2287 * libsoup/soup-marshal.list: clean this up 2288 22892008-01-06 Dan Winship <danw@gnome.org> 2290 2291 * libsoup/soup-server.c (SoupClientContext): Make this opaque. 2292 (soup_client_context_get_socket) 2293 (soup_client_context_get_auth_domain) 2294 (soup_client_context_get_auth_user): New accessors 2295 (soup_server_class_init): Make the signals take a 2296 SoupClientContext rather than a SoupSocket. 2297 (start_request, check_auth, call_handler, request_finished): Clean 2298 these up by using a SoupClientContext to communicate between them. 2299 (soup_server_add_handler): tweak the argument order to match the 2300 gtk standard (callback, user_data, destroynotify). 2301 23022008-01-06 Dan Winship <danw@gnome.org> 2303 2304 * libsoup/soup-address.c: remove the "dns_result" signal, which 2305 was just an implementation detail of soup_address_resolve_async(). 2306 23072008-01-06 Dan Winship <danw@gnome.org> 2308 2309 * libsoup/*.c: misc documentation updates/gtk-doc fixes 2310 2311 * libsoup/soup-server.c: finally start documenting this properly. 2312 2313 * libsoup/soup-status.h (SoupStatusClass): kill this, since 2314 soup_message_add_status_class_handler() is gone now. 2315 2316 * libsoup/soup-status.c (soup_status_get_phrase): Update docs to 2317 explain that you probably don't want to use this. 2318 2319 * libsoup/soup-misc.h (SOUP_SSL_ERROR, SoupSSLError): Move these 2320 here, since soup-ssl.h isn't installed. 2321 2322 * docs/references: start updating this... 2323 23242008-01-04 Dan Winship <danw@gnome.org> 2325 2326 * libsoup/soup-message-body.c (soup_buffer_new) 2327 (soup_message_body_append): Reorder the arguments to match 2328 soup_message_set_request/response, so it's not confusing. 2329 2330 * libsoup/soup-message.c (wrote_chunk): remove the "chunk" arg 2331 from the signal, as it turns out to be *in*convenient, since most 2332 callers use this signal to mean "need another chunk", so they want 2333 it to have the same prototype as "wrote_headers", which means 2334 "need first chunk". 2335 23362008-01-04 Dan Winship <danw@gnome.org> 2337 2338 * libsoup/soup-auth-domain.c: add documentation 2339 (soup_auth_domain_set_filter): take a GDestroyNotify, for better 2340 bindability 2341 2342 * libsoup/soup-auth-domain-basic.c: 2343 * libsoup/soup-auth-domain-digest.c: Add documentation. Replace 2344 authentication signals with more-easily-bindable authentication 2345 callbacks (with GDestroyNotifys). 2346 (soup_auth_domain_digest_evil_check_password): Add this for the 2347 benefit of code that depends on being able to do the equivalent 2348 of the old soup_server_auth_check_passwd(). 2349 23502008-01-02 Dan Winship <danw@gnome.org> 2351 2352 * libsoup/soup-message-body.h (SoupMessageBody): add data and 2353 length parameters like SoupBuffer, to make this easier for callers 2354 to use. 2355 2356 * libsoup/soup-message-body.c (soup_message_body_append) 2357 (soup_message_body_append_buffer) 2358 (soup_message_body_truncate): Update body->length 2359 (soup_message_body_flatten): Fill in body->data (and NUL-terminate 2360 it as an added bonus). 2361 2362 * libsoup/soup-message.c (got_body): flatten the newly-gotten 2363 body. 2364 (soup_message_get_request, soup_message_get_response): gone 2365 2366 * libsoup/soup-message-client-io.c (get_request_headers): 2367 * libsoup/soup-message-server-io.c (get_response_headers): 2368 * libsoup/soup-soap-message.c (soup_soap_message_parse_response): 2369 * tests/*.c: simplify 2370 23712008-01-02 Dan Winship <danw@gnome.org> 2372 2373 * libsoup/Makefile.am (soup_headers): oops, move soup-auth.h here 2374 23752008-01-02 Dan Winship <danw@gnome.org> 2376 2377 * libsoup/soup-form.c: new HTML-form-related methods (just URI 2378 decoding/encoding at the moment). 2379 2380 * libsoup/soup-server.h (SoupServerCallback): change the prototype 2381 to include the decoded path and query rather than the undecoded 2382 URI. 2383 2384 * libsoup/soup-server.c (call_handler): %-decode the URI path 2385 before looking up a handler. Decode query if available. Pass path 2386 and query to the callback. 2387 2388 * libsoup/soup-auth-domain.c (soup_auth_domain_covers): fix this 2389 to %-decode the URI path before testing it 2390 2391 * libsoup/soup-message-body.c (soup_message_body_append): allow 2392 0-length appends 2393 2394 * tests/query-test.c: URI query parsing test 2395 23962008-01-02 Dan Winship <danw@gnome.org> 2397 2398 * libsoup/soup-uri.c: 2399 * libsoup/soup-uri.h: Change all the "const SoupURI *" to just 2400 "SoupURI *", since the const is just there to be annoying. 2401 2402 * */*.c: update 2403 24042008-01-02 Dan Winship <danw@gnome.org> 2405 2406 * libsoup/soup-message-body.c (soup_message_body_get_length) 2407 (soup_message_body_get_chunk): Use goffset rather than gsize for 2408 references to the entire size of the message body. (SoupBuffer 2409 still uses gsize, so individual chunks can only be G_MAXSIZE 2410 long.) 2411 2412 * libsoup/soup-message-headers.c 2413 (soup_message_headers_get_content_length): 2414 (soup_message_headers_set_content_length): Likewise, use goffset. 2415 24162008-01-02 Dan Winship <danw@gnome.org> 2417 2418 * libsoup/soup-message-headers.c (soup_message_headers_get): 2419 Renamed from soup_message_headers_find, and with new behavior; now 2420 multiple headers with the same name are automatically merged 2421 together into a single comma-separated value, to ensure that apps 2422 treat multivalued headers the same regardless of how upstream 2423 servers generate them. 2424 (soup_message_headers_find_nth): no longer needed/wanted 2425 2426 * libsoup/soup-auth-manager.c: Update to deal with 2427 SoupMessageHeaders change. (Ugh.) 2428 2429 * tests/header-parsing.c: Update multiple-values test, and undo a 2430 change that mistakenly got committed while debugging something 2431 earlier. 2432 24332008-01-01 Dan Winship <danw@gnome.org> 2434 2435 * libsoup/soup-auth-manager.c: 2436 * libsoup/soup-dns.c: 2437 * libsoup/soup-gnutls.c: 2438 * libsoup/soup-message.c: 2439 * libsoup/soup-message-io.c: 2440 * libsoup/soup-message-queue.c: 2441 * libsoup/soup-misc.c: 2442 * libsoup/soup-path-map.c: 2443 * libsoup/soup-server.c: 2444 * libsoup/soup-session.c: 2445 * libsoup/soup-session-sync.c: 2446 * libsoup/soup-socket.c: Use g_slice. 2447 24482008-01-01 Dan Winship <danw@gnome.org> 2449 2450 * libsoup/soup-session.c (soup_session_cancel_message): add a 2451 "status_code" argument rather than having the caller set the 2452 status code separately, to prevent a race condition. 2453 24542008-01-01 Dan Winship <danw@gnome.org> 2455 2456 * libsoup/soup-session.c (soup_session_queue_message): change the 2457 callback type to include the SoupSession as a parameter as well. 2458 2459 * *.c: update 2460 24612007-12-31 Dan Winship <danw@gnome.org> 2462 2463 * libsoup/soup-session.c (soup_session_class_init): change 2464 the "authenticate" signal to include a SoupAuth rather than its 2465 components, and to have a "retrying" parameter rather than 2466 separating "authenticate" and "reauthenticate". 2467 2468 * libsoup/soup-connection.c (soup_connection_class_init): Likewise 2469 2470 * libsoup/soup-auth-manager.c (authenticate_auth): update 2471 2472 * libsoup/soup-auth.c: make various attributes into gobject 2473 properties. 2474 (soup_auth_is_for_proxy): check whether an auth is plain or proxy 2475 (soup_auth_get_host): get the hostname associated with an auth 2476 2477 * libsoup/soup-auth-ntlm.c: dummy class used by SoupConnectionNTLM 2478 in the authenticate signal 2479 2480 * libsoup/soup-connection-ntlm.c (ntlm_authorize_pre): update for 2481 authenticate signals changes; use a fake SoupAuthNTLM to assist. 2482 24832007-12-20 Dan Winship <danw@gnome.org> 2484 2485 * libsoup/soup-message.c (soup_message_add_header_handler) 2486 (soup_message_add_status_code_handler): Make these be wrappers 2487 around g_signal_connect() rather than having a completely separate 2488 system. 2489 (soup_message_class_init): improve signal docs. Use 2490 "got_foo_signal_wrapper" to wrap the got-foo signals. 2491 (got_foo_signal_wrapper): Wraps the marshaller for the got-foo 2492 signals and cancels the signal emission if the message gets 2493 cancelled or requeued. 2494 (got_informational, got_headers, got_chunk, got_body): remove 2495 no-longer-needed default implementations. 2496 2497 * libsoup/soup-message-handlers.c: gone 2498 2499 * tests/ntlm-test.c (do_message): Simplify now that callback 2500 processing doesn't happen in two separate phases. 2501 25022007-12-20 Dan Winship <danw@gnome.org> 2503 2504 * libsoup/soup-auth-domain.c: 2505 * libsoup/soup-auth-domain-basic.c: 2506 * libsoup/soup-auth-domain-digest.c: New server-side auth system. 2507 2508 * libsoup/soup-server.c: remove SoupServerAuth / SoupAuthContext 2509 stuff, add SoupAuthDomain support. 2510 (SoupServerCallbackFn): improve the args here 2511 (SoupClientContext): renamed from SoupServerContext and made less 2512 redundant 2513 2514 * libsoup/soup-server-auth.c: gone! 2515 2516 * libsoup/soup-auth-digest.c (soup_auth_digest_parse_algorithm) 2517 (soup_auth_digest_get_algorithm, soup_auth_digest_parse_qop) 2518 (soup_auth_digest_get_qop, soup_auth_digest_compute_hex_urp) 2519 (soup_auth_digest_compute_hex_a1) 2520 (soup_auth_digest_compute_response): New routines shared between 2521 client-side and server-side digest auth. 2522 2523 * tests/server-auth-test.c: test server-side auth, using curl for 2524 the client side 2525 2526 * configure.in: check for curl, for server-auth-test 2527 25282007-12-20 Dan Winship <danw@gnome.org> 2529 2530 * libsoup/soup-headers.c (soup_header_parse_list) 2531 (soup_header_parse_quality_list): New methods to parse list-type 2532 headers (with optional qvalues) correctly. 2533 (soup_header_parse_param_list): Rename to match the other methods, 2534 and update the semantics a bit. 2535 (soup_header_contains): Correctly check for a token in a list 2536 2537 * libsoup/soup-message.c (soup_message_is_keepalive): 2538 * libsoup/soup-message-client-io.c (get_request_headers): 2539 * libsoup/soup-message-server-io.c (parse_request_headers): Use 2540 soup_header_contains() with Connection headers. 2541 2542 * tests/header-parsing.c (do_qvalue_tests): add 2543 soup_header_parse_quality_list() test 2544 25452007-12-20 Dan Winship <danw@gnome.org> 2546 2547 * libsoup/soup-auth-manager.c: Move auth-related code from 2548 SoupSession and SoupAuth here, and make various cleanups and 2549 beginnings of cleanups. 2550 2551 * libsoup/soup-session.c: lots of stuff moved to 2552 soup-auth-manager.c 2553 2554 * libsoup/soup-auth.c (soup_auth_new_from_headers): partly moved 2555 to soup-auth-manager.c, partly renamed to soup_auth_new(). 2556 (soup_auth_update): new method to update an existing auth based on 2557 a new WWW-Authenticate/Proxy-Authenticate header. Also replaces 2558 the old "construct" method. 2559 2560 * libsoup/soup-auth-digest.c (update): Implement. If the new auth 2561 has stale=true, don't invalidate the auth, just update the nonce. 2562 (get_authorization): add a header handler to the message to catch 2563 Authentication-Info/Proxy-Authentication-Info headers so that if 2564 there's a nextnonce, we can start using it. #471380. 2565 2566 * libsoup/soup-auth-basic.c (update): Implement. (Updating an 2567 existing Basic auth always invalidates it.) 2568 2569 * tests/http.conf.in: 2570 * tests/auth-test.c: add a test for digest nonce handling 2571 25722007-12-20 Dan Winship <danw@gnome.org> 2573 2574 * libsoup/soup-path-map.c: New type representing a sparse 2575 path->something mapping 2576 2577 * libsoup/soup-server.c: Use SoupPathMap to record handlers. Make 2578 SoupServerHandler a private type. 2579 (soup_server_new): Rewrite this to just be a thin wrapper, and put 2580 all of the code into a constructor override. #491653 2581 (soup_server_add_handler): Turn the "unregister" arg into a 2582 GDestroyNotify, for better bindability. 2583 25842007-12-19 Dan Winship <danw@gnome.org> 2585 2586 * libsoup/soup-server.c: define new request_started, request_read, 2587 request_finished, and request_aborted signals, for finer-grained 2588 tracking than normal handlers allow. 2589 (check_auth): split this out of call_handler, and run it 2590 immediately after "got_headers", not "got_body", so that we can 2591 preemptively reject "Expect: 100-continue" messages that will 2592 require auth. 2593 2594 * libsoup/soup-message-io.c (io_write, io_read): Fix up 2595 100-continue processing 2596 2597 * tests/continue-test.c: new test of client/server 100-continue 2598 processing 2599 26002007-12-19 Dan Winship <danw@gnome.org> 2601 2602 * libsoup/soup-socket.c: Cleanup. Remove the "connect_result" 2603 signal. Make local_address and remote_address 2604 into (construct-only) properties. 2605 (soup_socket_connect_async, soup_socket_connect_sync): Replace 2606 soup_socket_connect. _async takes a callback+user_data (like the 2607 old soup_socket_client_new_async), but doesn't implement the 2608 callback in terms of a connect_result signal. 2609 (soup_socket_client_new_async, soup_socket_client_new_sync): Gone. 2610 (Unused since the async_context addition anyway). Replaced by the 2611 new construct properties and connect methods. 2612 (soup_socket_read, soup_socket_read_until, soup_socket_write): 2613 Make these actually take a GError rather than doing an ugly hack 2614 to preserve the old API. 2615 (SOUP_SOCKET_FLAG_NODELAY, SOUP_SOCKET_FLAG_REUSEADDR) 2616 (SOUP_SOCKET_FLAG_CLOEXEC): kill these off (all three are always 2617 TRUE now); SoupSocket is libsoup's socket API; it's not 2618 necessarily intended to be generically useful for everyone. 2619 2620 * *.c: Update for SoupSocket changes 2621 26222007-12-19 Dan Winship <danw@gnome.org> 2623 2624 * libsoup/soup-server-message.c: Kill! 2625 2626 * libsoup/soup-message-server-io.c (parse_request_headers): 2627 Generate the full request URL from the socket's data, since we no 2628 longer have soup_server_message_get_server(). 2629 2630 * libsoup/soup-server.c (request_finished, call_handler) 2631 (start_request, new_connection): update 2632 26332007-12-19 Dan Winship <danw@gnome.org> 2634 2635 * libsoup/soup-message-headers.c: Add some more fields to 2636 SoupMessageHeaders, and start caching the parsed values of certain 2637 important headers. 2638 (soup_message_headers_get/set_encoding): replaces old SoupMessage 2639 methods, and only deals with the declared transfer encoding, not 2640 the wire encoding. 2641 (soup_message_headers_get/set_content_length): Handle 2642 Content-Length. 2643 (soup_message_headers_get_expectations): Handle Expect. (Replaces 2644 the SOUP_MESSAGE_EXPECT_CONTINUE flag). 2645 2646 * libsoup/soup-message.c (soup_message_get_request_encoding): 2647 (soup_message_get_response_encoding): 2648 (soup_message_set_response_encoding): replaced by 2649 SoupMessageHeaders methods. 2650 2651 * libsoup/soup-message-client-io.c: 2652 * libsoup/soup-message-server-io.c: 2653 * libsoup/soup-message-io.c: Update for SoupMessageHeaders changes 2654 with encoding/content-length stuff. 2655 26562007-12-19 Dan Winship <danw@gnome.org> 2657 2658 * libsoup/soup-message-body.c (SoupMessageBody): new opaque type 2659 for request/response bodies allowing less hacky handling of 2660 chunked encoding. 2661 (SoupBuffer): refcounted buffer type 2662 2663 * libsoup/soup-message.h (SoupMessage): turn request and response 2664 members into SoupMessageBody. 2665 (SoupOwnership, SoupDataBuffer): gone, replaced by 2666 SoupMessageBody/SoupBuffer. 2667 2668 * libsoup/soup-message.c (soup_message_wrote_chunk) 2669 (soup_message_got_chunk): add the chunk as a signal param rather 2670 than having it be visible in msg->request/response. 2671 (soup_message_add_chunk, soup_message_add_final_chunk) 2672 (soup_message_pop_chunk): replaced by SoupMessageBody methods now. 2673 26742007-12-19 Dan Winship <danw@gnome.org> 2675 2676 * libsoup/soup-xmlrpc.c: 2677 * libsoup/soup-value-utils.c: Oops. Change the API a bunch so this 2678 works on x86; apparently I was doing illegal things with va_lists 2679 before that only work on x86_64. 2680 26812007-12-14 Dan Winship <danw@gnome.org> 2682 2683 * libsoup/soup-message.c: use GObject properties for SoupMessage 2684 fields. 2685 2686 * libsoup/soup-message-server-io.c: 2687 * libsoup/soup-soap-message.c: update for that 2688 26892007-12-14 Dan Winship <danw@gnome.org> 2690 2691 * libsoup/soup-uri.c: Rename from SoupUri to SoupURI. Use the 2692 slice allocator and register as a boxed type. 2693 (SoupURI): Rename "protocol" field to "scheme" and "passwd" to 2694 "password". Make scheme an interned string. Replace 2695 SOUP_PROTOCOL_HTTPS with soup_uri_is_https(). 2696 2697 * *.c: update 2698 26992007-12-14 Dan Winship <danw@gnome.org> 2700 2701 * libsoup/Makefile.am: Use glib-mkenums to build soup-enum-types.c 2702 and soup-enum-types.h 2703 2704 * libsoup/soup-address.h (SoupAddressFamily): redo this definition 2705 again, to make glib-mkenums happy. 2706 27072007-12-13 Dan Winship <danw@gnome.org> 2708 2709 * libsoup/soup-xmlrpc.c: New easier-to-use and 2710 easier-to-do-language-bindings-of XML-RPC code. 2711 2712 * libsoup/soup-xmlrpc-message.c: 2713 * libsoup/soup-xmlrpc-response.c: gone 2714 2715 * libsoup/soup-value-utils.c: Utilites for working with 2716 GValueArray, and GHashTables of GValues, used by soup-xmlrpc. 2717 2718 * tests/getbug.c: 2719 * tests/xmlrpc-test.c: Update to use new XML-RPC stuff 2720 27212007-12-13 Dan Winship <danw@gnome.org> 2722 2723 * libsoup/soup-date.c: Make a SoupDate type, and redo in terms of 2724 that rather than struct tm and time_t. Also be much more liberal 2725 when parsing. 2726 2727 * libsoup/soup-xmlrpc-message.c (soup_xmlrpc_message_write_datetime): 2728 * libsoup/soup-xmlrpc-response.c (soup_xmlrpc_value_get_datetime): 2729 Use SoupDate. 2730 2731 * tests/date.c: Use SoupDate, test parsing lots more formats 2732 2733 * tests/xmlrpc-test.c: update for SoupDate 2734 27352007-12-12 Dan Winship <danw@gnome.org> 2736 2737 * libsoup/soup-message.c: 2738 * libsoup/soup-message-private.h: Remove SoupMessageStatus, 2739 msg->status, and soup_message_io_* from the public API, as they 2740 all really belong to the session, not the message. (For now 2741 they've just been moved to soup-message-private.h, but some day 2742 they'll be fully refactored away from SoupMessage.) 2743 2744 * libsoup/soup-server.c (soup_server_pause_message) 2745 (soup_server_unpause_message): 2746 * libsoup/soup-session.c (soup_session_pause_message) 2747 (soup_session_unpause_message): session/server-level methods to 2748 replace soup_message_io_pause() and soup_message_io_unpause(). 2749 2750 * libsoup/soup-server-message.c: Remove some unused methods 2751 2752 * */*.c: Update 2753 27542007-12-05 Dan Winship <danw@gnome.org> 2755 2756 * libsoup/soup-connection.c: 2757 * libsoup/soup-session.c: replace message filters with a 2758 "request_started" signal 2759 2760 * libsoup/soup-message-filter.c: gone 2761 2762 * libsoup/soup-types.h (SOUP_MAKE_INTERFACE): no longer needed 2763 27642007-12-05 Dan Winship <danw@gnome.org> 2765 2766 * libsoup/soup-uri.c: Update for RFC 3986 changes, bgo 266516, and 2767 general conformance 2768 (soup_uri_get_protocol): match protocols case-insensitively 2769 (soup_uri_new_with_base): Don't fully %-decode the fragment, 2770 query, and path, but do %-decode anything which isn't supposed to 2771 be encoded. Recognize IPv6 address literals. Use stricter 2772 "../"-stripping rules on the path. Reject URIs with junk between 2773 the port number and the path. 2774 (soup_uri_to_string): Update for the fact that the host might be 2775 an IPv6 literal, and for the fact that path, query, and fragment 2776 are now pre-escaped. 2777 (soup_uri_equal): compare hostnames case-insensitively 2778 (uri_encoded_char): update to match RFC 3986 2779 (append_uri_encoded): use uppercase hex letters as recommended by 2780 RFC 3986. 2781 (soup_uri_normalize): decode only %-escapes that don't belong 2782 there. 2783 2784 * docs/reference/tmpl/soup-uri.sgml: add some more SoupUri docs 2785 2786 * tests/uri-parsing.c: Add new tests from RFC 3986, RFC 2732, RFC 2787 2616, bgo 266516, and elsewhere. Update some tests to match new 2788 parsing/unparsing rules. 2789 27902007-12-05 Dan Winship <danw@gnome.org> 2791 2792 * libsoup/soup-message.c (soup_message_new) 2793 (soup_message_new_from_uri): g_intern_string() the method name 2794 rather than assuming it's static. Also remove the NULL==GET 2795 assumption. 2796 2797 * libsoup/soup-method.c: 2798 * libsoup/soup-method.h: remove the SOUP_METHOD_ID_* macros, and 2799 have the SOUP_METHOD_* macros return interned strings 2800 2801 * libsoup/soup-server.h (SoupServerContext): remove method_id 2802 field. 2803 2804 * libsoup/soup-server-message.c (finalize): no longer needed, 2805 since smsg->method is now an interned string just like with a 2806 normal SoupMessage. 2807 2808 * libsoup/soup-soap-message.c (soup_soap_message_new_from_uri): 2809 remove NULL==GET assumption 2810 2811 * *.c: update 2812 28132007-12-05 Dan Winship <danw@gnome.org> 2814 2815 * libsoup/soup-message.h (SoupHTTPVersion): rename (from 2816 SoupHttpVersion) 2817 2818 * libsoup/soup-message-headers.c: New opaque type representing 2819 message headers, and new methods that work on it. Uses an array 2820 rather than a hash table, to preserve header ordering as required 2821 by RFC 2616. (Also fixes the API wart that 2822 "soup_message_get_header", etc, did not actually take a 2823 SoupMessage.) 2824 2825 * libsoup/soup-message.c: Kill off old header-manipulating 2826 methods. 2827 2828 * libsoup/soup-headers.c (soup_headers_parse_request): return a 2829 guint rather than gboolean, so we can properly return 2830 SOUP_STATUS_HTTP_VERSION_NOT_SUPPORTED where appropriate. Also fix 2831 up HTTP-Version parsing to conform with the RFC. 2832 (soup_headers_parse_status_line): Likewise update HTTP-Version 2833 parsing. 2834 2835 * libsoup/soup-message-server-io.c (parse_request_headers): set 2836 return status appropriately on parse errors 2837 2838 * tests/header-parsing.c: update / add more tests 2839 2840 * *.c: update 2841 28422007-12-05 Dan Winship <danw@gnome.org> 2843 2844 * libsoup/soup-misc.c: remove deprecated base64 methods 2845 2846 * tests/auth-test.c (identify_auth): oops, update to use 2847 g_base64_decode. 2848 28492007-12-05 Dan Winship <danw@gnome.org> 2850 2851 * libsoup/Makefile.am (libsoupinclude_HEADERS): remove 2852 soup-connection.h and soup-message-queue.h 2853 2854 * libsoup/soup-types.h: remove SoupConnection and SoupMessageQueue 2855 which are no longer public 2856 2857 * libsoup/soup.h: sync this to reality for the first time in years 2858 2859 * libsoup/soup-session.c (soup_session_get_queue): Add this, for 2860 subclasses, as the queue is no longer a public part of the session 2861 struct. 2862 2863 * libsoup/soup-message.h: 2864 * libsoup/soup-message-private.h: Move soup_message_send_request() 2865 and soup_message_receive_request() to soup-message-private.h, 2866 remove soup_message_send_request_internal(). 2867 2868 * libsoup/soup-session-private.h: Move "protected" SoupSession 2869 methods (soup_session_get_connection, 2870 soup_session_try_prune_connection) here from soup-session.h 2871 Add soup_session_get_queue. 2872 28732007-12-05 Dan Winship <danw@gnome.org> 2874 2875 * configure.in: bump version to 2.3.0 and SOUP_API_VERSION to 2.4, 2876 and drop AGE/CURRENT/REVISION all to 0. 2877 2878 * libsoup/Makefile.am: Rename library to libsoup-2.4.la 2879 2880 (start of libsoup-2.4 branch) 2881 28822007-11-26 Dan Winship <danw@gnome.org> 2883 2884 * configure.in: 2.2.104 2885 2886 * NEWS: update 2887 28882007-11-21 Dan Winship <danw@gnome.org> 2889 2890 * libsoup/soup-message-io.c (soup_message_io_cleanup): make this 2891 non-static. 2892 2893 * libsoup/soup-message.c (finalize): Use soup_message_io_cleanup() 2894 rather than soup_message_io_stop(), to avoid leaks when finalizing 2895 an unfinished message. (Another part of #498509, Wouter Cloetens.) 2896 28972007-11-20 Dan Winship <danw@gnome.org> 2898 2899 Fix up SOUP_SESSION_ASYNC_CONTEXT. #498509, Wouter Cloetens 2900 2901 * libsoup/soup-message-io.c (soup_message_io_unpause): don't leak 2902 the async_context 2903 2904 * libsoup/soup-server.c (soup_server_quit): disconnect the 2905 "new_connection" handler. 2906 (soup_server_get_async_context): Convenience method to return the 2907 server's async_context. 2908 2909 * libsoup/soup-server-message.c: don't circularly ref the server, 2910 there's no need anyway. 2911 2912 * libsoup/soup-session.c (soup_session_get_async_context): 2913 Convenience method to return the session's async_context. 2914 2915 * libsoup/soup-session-async.c (queue_message): call run_queue in 2916 the session's async_context, not the main context. 2917 (send_message): don't leak the async_context 2918 2919 * libsoup/soup-session-sync.c (queue_message_thread): don't leak 2920 the async_context 2921 2922 * tests/context-test.c: test that SOUP_SESSION_ASYNC_CONTEXT works 2923 and doesn't leak 2924 29252007-11-20 Dan Winship <danw@gnome.org> 2926 2927 * libsoup/soup-connection.c (soup_connection_connect_async): don't 2928 leak the SoupAddress. 2929 2930 * libsoup/soup-dns.c (soup_dns_lookup_resolve_async): fix a leak 2931 when re-looking up an address 2932 2933 * libsoup/soup-session.c (soup_session_abort): close all 2934 connections in addition to cancelling messages (needed because 2935 connections currently end up holding a ref on their session, 2936 preventing them from being destroyed). 2937 2938 * tests/auth-test.c: 2939 * tests/ntlm-test.c: 2940 * tests/proxy-test.c: 2941 * tests/pull-api.c: 2942 * tests/ssl-test.c: 2943 * tests/xmlrpc-test.c: clean up more memory on exit, to help find 2944 leaks in the library 2945 2946 * tests/libsoup.supp: add a zillion new suppressions so we 2947 can use --leak-resolution=med 2948 29492007-11-16 Dan Winship <danw@gnome.org> 2950 2951 * libsoup/soup-message-io.c (read_body_chunk): Fix the guards 2952 around the got_chunk emission so that it doesn't get messed up if 2953 you pause the I/O from the got_chunk handler. (#452280, Marco 2954 Barisione). 2955 (soup_message_io_pause, soup_message_io_unpause): Update docs 2956 again; these are now allowed with client-side I/O as well. Fix 2957 unpause() to unpause asynchronously on async sockets. 2958 2959 * libsoup/soup-session-async.c (send_message): Iterate session's 2960 async_context, not the default main context. 2961 2962 * tests/pull-api.c: Test/sample of creating a pull-style API using 2963 SoupSessionAsync. 2964 2965 * tests/index.txt: new file to act as DirectoryIndex for the 2966 tests. (In particular, pull-api wants this to be largeish.) 2967 29682007-10-28 Dan Winship <danw@gnome.org> 2969 2970 * configure.in: 2.2.103 2971 2972 * NEWS: update 2973 29742007-10-28 Dan Winship <danw@gnome.org> 2975 2976 * libsoup/soup-server.c (start_request, request_finished): ref the 2977 socket around the processing of the message, since otherwise it 2978 might already be freed when request_finished runs. #459896. 2979 2980 * libsoup/soup-message-io.c (soup_message_io_pause) 2981 (soup_message_io_unpause): Clarify the docs here; this is for 2982 server-side use only. Inspired by #452280. 2983 2984 * docs/reference/server-howto.xml: You need to watch the 2985 "finished" signal on the message if using soup_message_io_pause() 2986 or chunked encoding, because the client might disconnect while 2987 you're paused. Clarification inspired by #471385. 2988 2989 * tests/simple-proxy.c (client_msg_failed): Fix this to DTRT since 2990 server-howto.xml points to it as an example of what to do. 2991 29922007-10-28 Dan Winship <danw@gnome.org> 2993 2994 * libsoup/soup-session.c (finalize): free proxy-related stuff 2995 2996 * libsoup/soup-session-async.c (idle_run_queue): clean up the weak 2997 pointer. (From the dev repo, but identical to a patch from Rob 2998 Bradford in #484988.) 2999 3000 * tests/*.c: fix leaks 3001 30022007-10-28 Dan Winship <danw@gnome.org> 3003 3004 * tests/auth-test.c: 3005 * tests/date.c: 3006 * tests/header-parsing.c: 3007 * tests/ntlm-test.c: 3008 * tests/proxy-test.c: 3009 * tests/uri-parsing.c: 3010 * tests/xmlrpc-test.c: Make these less verbose by default (to make 3011 it easier to see what failed when a "make check" fails). 3012 30132007-10-15 Dan Winship <danw@gnome.org> 3014 3015 * configure.in: 2.2.102 3016 3017 * NEWS: update 3018 30192007-10-08 Dan Winship <danw@gnome.org> 3020 3021 * libsoup/soup-nossl.c: Update for current soup-ssl.h prototypes 3022 3023 * tests/proxy-test.c (run_test): wrap https tests in #if HAVE_SSL 3024 30252007-10-05 Dan Winship <danw@gnome.org> 3026 3027 * configure.in: 2.2.101 3028 3029 * NEWS: update 3030 3031 * tests/httpd.conf.in: 3032 * tests/Makefile.am: 3033 * tests/ssl-test.c: srcdir != builddir fixes 3034 30352007-10-05 Dan Winship <danw@gnome.org> 3036 3037 * libsoup/soup-connection-ntlm.c (ntlm_authorize_pre): Don't crash 3038 if the authenticate callback returns a username and no password 3039 (even though it's not supposed to do that). #480987 3040 30412007-09-24 Dan Winship <danw@gnome.org> 3042 3043 * libsoup/soup-auth.h (SoupAuth): add "realm" field to the struct. 3044 (SoupAuthClass) remove "get_realm" virtual method. 3045 3046 * libsoup/soup-auth.c (soup_auth_new_from_header_list): Parse the 3047 WWW-Authenticate/Proxy-Authenticate header here, set realm, and 3048 pass the params hash to the construct method. 3049 (soup_auth_get_info): Return an identifier for the auth: 3050 "SCHEME:REALM" 3051 3052 * libsoup/soup-auth-basic.c: 3053 * libsoup/soup-auth-digest.c: update 3054 3055 * libsoup/soup-session.c (invalidate_auth, update_auth_internal): 3056 use soup_auth_get_info(). 3057 30582007-09-24 Dan Winship <danw@gnome.org> 3059 3060 * libsoup/soup-date.c (soup_date_parse): minor rfc850-date parsing 3061 improvement suggested by RFC2616 19.3. 3062 3063 * libsoup/soup-headers.c (soup_headers_parse_request): allow 3064 erroneous trailing whitespace after HTTP version. #475169 3065 3066 * libsoup/soup-message-server-io.c (parse_request_headers): fix 3067 the parsing of the Host header to assume it already includes the 3068 port (which it should; the only reason this ever worked is because 3069 SoupUri ignores the second port number when parse_request_headers 3070 generates a URL like "http://localhost:9999:9999/"). 3071 3072 * tests/header-parsing.c (reqtests): add a test for #475169 3073 30742007-09-23 Dan Winship <danw@gnome.org> 3075 3076 * libsoup/soup-message.c (soup_message_class_init): remove a 3077 mysterious partial sentence in the ::wrote-chunk docstring. 3078 #458116 3079 3080 * docs/reference/libsoup-sections.txt: Remove documentation of MD5 3081 methods, which are not public. #440092 3082 30832007-09-23 Dan Winship <danw@gnome.org> 3084 3085 * libsoup/soup-message.c (soup_message_set_auth) 3086 (soup_message_set_proxy_auth): Only remove the Authorization / 3087 Proxy-Authorization header from the message if it was previously 3088 set by soup_message_set_auth(). (Eg, not if it was added by 3089 SoupConnectionNTLM.) #471389 3090 3091 * libsoup/soup-connection-ntlm.h: fix a search-and-replace-o 3092 3093 * tests/ntlm-test.c: Simple NTLM regression test; doesn't really 3094 test the crypto/encoding bits, just that the right headers are 3095 being sent at the right times. 3096 30972007-09-14 Dan Winship <danw@gnome.org> 3098 3099 Make "make check" pass on Fedora 7: 3100 3101 * configure.in: update apache/php tests with additional filenames 3102 3103 * tests/httpd.conf.in: updates for configure.in changes and 3104 slightly-more-recent apache 3105 3106 * tests/ssl-test.c (start_writing): fix uninitialized struct field 3107 (main): start server after setting up client since otherwise 3108 there's a race condition since soup_gnutls_init() isn't actually 3109 thread-safe. (FIXME) 3110 3111 * tests/xmlrpc-server.php: rewrite to not use $HTTP_RAW_POST_DATA 3112 (which only exists if register_globals is set) 3113 31142007-06-01 Dan Winship <danw@novell.com> 3115 3116 * libsoup/soup-message-filter.h (SOUP_IS_MESSAGE_FILTER_CLASS): 3117 fix. noted by "cascardo" on libsoup-list. 3118 31192007-05-16 Jonathon Jongsma <jjongsma@gnome.org> 3120 3121 * libsoup/*.h: add G_BEGIN_DECLS / G_END_DECLS to all installed 3122 headers so that libsoup can be used from C++ programs. #438776 3123 31242007-04-16 Dan Winship <danw@novell.com> 3125 3126 * libsoup/soup-ssl.h: Make a real SoupSSLCredentials type rather 3127 than just using gpointer 3128 3129 * libsoup/soup-server.c (SoupServerPrivate): use it 3130 3131 * libsoup/soup-session.c (SoupSessionPrivate): use it 3132 3133 * libsoup/soup-gnutls.c: Use it, and consistently use "creds" 3134 rather than "cred" as the abbreviation for "credentials". 3135 3136 * docs/reference/libsoup-sections.txt: 3137 * docs/reference/tmpl/soup-misc.sgml: 3138 * docs/reference/tmpl/soup-ssl.sgml: update 3139 31402007-03-29 Dan Winship <danw@novell.com> 3141 3142 * libsoup/soup-session-sync.c (queue_message): Implement this by 3143 sending the message (synchronously) in another thread and then 3144 queueing the callback back in the main thread. 3145 3146 * libsoup/soup-session.c (soup_session_queue_message): update docs 3147 to be more explicit about what thread the callback occurs in 3148 31492007-03-17 Dan Winship <danw@novell.com> 3150 3151 * libsoup/soup-message.c (soup_message_set_auth) 3152 (soup_message_get_auth, soup_message_set_proxy_auth) 3153 (soup_message_get_proxy_auth): get/set auth/proxy_auth info for a 3154 message. 3155 3156 * libsoup/soup-session.c (add_auth): Use soup_message_set_auth and 3157 soup_message_set_proxy_auth. 3158 (update_auth_internal): Call soup_message_get_auth or 3159 soup_message_get_proxy_auth to determine the message's prior auth, 3160 rather than calling lookup_auth() again, since it isn't guaranteed 3161 to return the same thing now as it did when the message was 3162 originally sent. Fixes erroneous 401s when queuing multiple 3163 messages at once to an as-yet-unauthenticated-to server. #271540 3164 3165 * libsoup/soup-session-async.c (queue_message): don't run the 3166 queue right away, do it at idle time. Otherwise in some cases 3167 (especially errors), the message callbacks could be invoked before 3168 queue_message returns. 3169 3170 * tests/auth-test.c: add a regression test for #271540. 3171 31722007-03-17 Dan Winship <danw@novell.com> 3173 3174 * configure.in: require glib 2.12. check for timegm(). 3175 3176 * libsoup/soup-date.c (soup_mktime_utc): Use timegm if available. 3177 (soup_date_iso8601_parse): use g_time_val_from_iso8601. #337010, 3178 patch from Emmanuele Bassi. 3179 3180 * libsoup/soup-types.h: remove local copy of 3181 G_GNUC_NULL_TERMINATED since we now depend on a new-enough copy of 3182 glib. 3183 3184 * libsoup/soup-misc.c (soup_base64_encode_close) 3185 (soup_base64_encode_step, soup_base64_encode) 3186 (soup_base64_decode_step): Make these just be wrappers around the 3187 glib base64 methods. (For now; eventually they'll just go away.) 3188 3189 * libsoup/soup-auth-basic.c (authenticate): 3190 * libsoup/soup-auth-digest.c (authenticate): 3191 * libsoup/soup-connection-ntlm.c (soup_ntlm_parse_challenge) 3192 (soup_ntlm_response): 3193 * libsoup/soup-server-auth.c (soup_server_auth_new): 3194 * libsoup/soup-soap-message.c (soup_soap_message_write_base64): 3195 * libsoup/soup-xmlrpc-message.c 3196 (soup_xmlrpc_message_write_base64): 3197 * libsoup/soup-xmlrpc-response.c (soup_xmlrpc_value_get_base64): 3198 Use glib base64 methods 3199 32002007-03-16 Dan Winship <danw@novell.com> 3201 3202 * libsoup/soup-message.c (soup_message_get_response_encoding): 3203 update the handling of CONNECT: it has no response body by 3204 default, but does have a body if its headers say so. 3205 3206 * tests/proxy-test.c: test libsoup's behavior when talking to 3207 proxies. 3208 3209 * tests/httpd.conf.in: Load mod_proxy and mod_ssl, and add 3210 sections configuring them, for proxy-test 3211 3212 * configure.in: update the apache-module-dir-finding code to deal 3213 with the fact that some modules (eg, mod_ssl) might only be in the 3214 mpm-specific module dir, while others (eg, mod_php5) might only be 3215 in the generic module dir. 3216 32172007-03-12 Dan Winship <danw@novell.com> 3218 3219 * tests/Makefile.am (INCLUDES): add $(LIBGNUTLS_CFLAGS) for 3220 ssl-test. #417617, patch from Elijah Newren. 3221 32222007-03-12 Dan Winship <danw@novell.com> 3223 3224 * libsoup/soup-session-sync.c (wait_for_connection): if 3225 soup_connection_connect_sync() returns SOUP_STATUS_TRY_AGAIN, then 3226 try again. (Duh.) Fixes SSL-via-proxy-when-using-synchronous-I/O- 3227 where-the-proxy-closes-the-connection-when-returning-407. (Reported 3228 by Varadhan.) 3229 3230 * tests/get.c: Rewrite to use soup_session_send_message rather 3231 than soup_session_queue_message, and add a "-s" flag to use 3232 SoupSessionSync rather than SoupSessionAsync (so we can test bugs 3233 in the sync code paths). 3234 32352007-03-08 Dan Winship <danw@novell.com> 3236 3237 * libsoup/soup-gnutls.c (do_handshake): don't return 3238 G_IO_STATUS_AGAIN if we're doing blocking I/O; just keep retrying 3239 until the handshake is complete. 3240 (soup_gnutls_read, soup_gnutls_write): if we get 3241 GNUTLS_E_REHANDSHAKE, call do_handshake() immediately rather than 3242 returning G_IO_STATUS_AGAIN; if the socket is blocking then 3243 G_IO_STATUS_AGAIN is wrong, and if the socket is non-blocking, we 3244 might already need to return SOUP_SSL_ERROR_HANDSHAKE_NEEDS_WRITE 3245 or SOUP_SSL_ERROR_HANDSHAKE_NEEDS_READ. 3246 3247 #415402, based on a patch from Jacob Berkman. 3248 3249 * tests/ssl-test.c: basic ssl test. In particular, tests that 3250 rehandshake requests are handled correctly during both synchronous 3251 and asynchronous I/O. Might eventually test other stuff too... 3252 3253 * configure.in: 3254 * tests/Makefile.am: updates for ssl-test 3255 32562007-02-19 Dan Winship <danw@novell.com> 3257 3258 * configure.in: Get gcrypt libs/cflags. 3259 3260 * libsoup/Makefile.am (INCLUDES, libsoup_2_2_la_LIBADD): add 3261 gcrypt flags. Patch from "Cygwin Ports Maintainer", #384498 3262 32632007-02-12 Dan Winship <danw@novell.com> 3264 3265 * configure.in: 2.2.100 3266 32672007-02-12 Dan Winship <danw@novell.com> 3268 3269 * libsoup/soup-headers.c (soup_headers_parse_status_line): Fix 3270 this to handle "\0"-terminated status lines (eg, from WebDAV 3271 responses), like the docs say it does. #406997 3272 (soup_headers_parse): Balance that out by rejecting internal "\0"s 3273 here. 3274 (soup_headers_parse_request, soup_headers_parse_response): Update 3275 docs to warn that @dest may be modified even on error. (This was 3276 always true, it just wasn't documented.) 3277 32782007-01-16 Dan Winship <danw@novell.com> 3279 3280 * tests/header-parsing.c (do_request_tests, do_response_tests): 3281 initialize "errors" to 0. duh. Pointed out by Michael Wolf. 3282 32832007-01-08 Dan Winship <danw@novell.com> 3284 3285 * configure.in: 2.2.99 3286 3287 * NEWS: update 3288 32892007-01-06 Dan Winship <danw@novell.com> 3290 3291 * libsoup/soup-headers.c (soup_headers_parse): Rewrite this to be 3292 easier to understand and more correct, and make the "str" param 3293 const rather than overwriting it during parsing. 3294 (soup_headers_parse_request, soup_headers_parse_response): 3295 Likewise, make "str" param const. Fix the doc comment to describe 3296 the correct constraint on str. Make the parsing slightly more 3297 lenient as per sections 4.1 and 19.3 of RFC 2616. 3298 3299 * tests/header-parsing.c: new regression test, for Request-Line, 3300 Status-Line, and message-header parsing. 3301 3302 Inspired by #391970 (crash in SoupServer when certain invalid 3303 requests are received). 3304 33052006-12-05 Dan Winship <danw@novell.com> 3306 3307 * libsoup/soup-message.c (soup_message_set_uri): Remove the calls 3308 to soup_message_io_stop() here; the corresponding calls were 3309 needed back in the SoupContext days, but they are wrong now and 3310 cause async-redirects-to-other-hosts to fail. #382251. Also 3311 clarify docs with respect to soup_session_requeue_message(). 3312 3313 * libsoup/soup-message-io.c (soup_message_io_stop): Clarify docs 3314 3315 * libsoup/soup-session.c (finalize): Free ssl_creds. Pointed out 3316 by Chris Austin. 3317 33182006-11-20 Dan Winship <danw@novell.com> 3319 3320 * configure.in: 2.2.98 3321 3322 * NEWS: update 3323 33242006-11-20 Dan Winship <danw@novell.com> 3325 3326 Patch from Andrew W. Nosenko: 3327 3328 * libsoup/soup-message-client-io.c (parse_response_headers): Avoid 3329 memory leak when parse_response_headers() is called on a message 3330 that has a 'reason_phrase' already for some reason. 3331 3332 * libsoup/soup-gnutls.c (soup_gnutls_free): Avoid memory leak: 3333 hostname was not freed. 3334 (soup_ssl_wrap_iochannel): Avoid memory leak: SoupGNUTLSChannel 3335 'chan' was not freed in case of initialization error. Avoid double 3336 close of the "real" (plain, non-ssl) channel FD. 3337 3338 * libsoup/soup-socket.c (soup_socket_start_proxy_ssl): Avoid 3339 memory leak: the "real" (plain, non-ssl) GIOChannel was never 3340 "finally" unreffed (one more *_ref() than *_unref()) in case of 3341 ssl-wrapping. 3342 33432006-11-20 Dan Winship <danw@novell.com> 3344 3345 * libsoup/soup-connection-ntlm.c (send_request): 3346 * libsoup/soup-session-sync.c (queue_message): 3347 * libsoup/soup-status.c (reason_phrases): Add some missing 3348 "static"s. Patch from Matthias Clasen, #376387 3349 3350 * libsoup/soup-xmlrpc-response.c (soup_xmlrpc_value_get_type) 3351 (soup_xmlrpc_value_get_string): <value>foo</value> should mean the 3352 same thing as <value><string>foo</string></value>. Pointed out by 3353 Todd Kulesza. #364490 3354 33552006-11-06 Dan Winship <danw@novell.com> 3356 3357 * configure.in: Bump version to 2.2.97. Bump AGE and CURRENT for 3358 addition of soup_xml_real_node. 3359 3360 * NEWS: update 3361 33622006-11-06 Dan Winship <danw@novell.com> 3363 3364 * libsoup/soup-misc.c (soup_xml_real_node): new method to find a 3365 "real" (ie, not comment or whitespace) xml node 3366 3367 * libsoup/soup-soap-response.c (parse_parameters) 3368 (soup_soap_response_from_string) 3369 (soup_soap_parameter_get_first_child) 3370 (soup_soap_parameter_get_next_child): Use soup_xml_real_node. 3371 Based on a patch from Andrew W. Nosenko. 3372 3373 * libsoup/soup-xmlrpc-message.c (soup_xmlrpc_message_from_string): 3374 don't call xmlKeepBlanksDefault, which changes libxml's behavior 3375 globally! Instead, use soup_xml_real_node() when traversing the 3376 xml tree. 3377 3378 * libsoup/soup-xmlrpc-response.c 3379 (soup_xmlrpc_response_from_string): don't call 3380 xmlKeepBlanksDefault. 3381 (exactly_one_child): rewrite in terms of soup_xml_real_node() 3382 (which means it handles comments now as well) 3383 (soup_xmlrpc_value_get_struct) 3384 (soup_xmlrpc_value_array_get_iterator) 3385 (soup_xmlrpc_value_array_iterator_prev) 3386 (soup_xmlrpc_value_array_iterator_next): Use soup_xml_real_node. 3387 33882006-11-05 Dan Winship <danw@novell.com> 3389 3390 * libsoup/soup-headers.c (soup_headers_parse_request): document 3391 this (in particular, point out that str+len must point to exactly 3392 the right place). Allow req_method and req_path to be NULL. 3393 (soup_headers_parse_status_line, soup_headers_parse_response): 3394 document. Also, change "status_phrase" argument to "reason_phrase" 3395 to match the spec. Inspired by #339889. 3396 33972006-11-03 Dan Winship <danw@novell.com> 3398 3399 * libsoup/*.c: fix lots of warnings. Partially from patches from 3400 Andrew W. Nosenko, and also some fixes from libsoup-pre214-branch. 3401 34022006-11-03 Dan Winship <danw@novell.com> 3403 3404 * Makefile.am (uninstall-local): uninstall the pkgconfig file. 3405 Based on #356809 from Matthew Barnes. 3406 3407 * libsoup/soup-server.c (get_property): Fix leaks pointed out by 3408 Paolo Borelli. #351500 3409 3410 * libsoup/soup-uri.c (soup_uri_get_protocol): Fix an off by one 3411 pointed out by Andrew W. Nosenko. 3412 3413 * configure.in: Use pkgconfig to find gnutls. Remove old static 3414 linking stuff that was only needed for rcd. 3415 3416 * acinclude.m4: remove gnutls stuff 3417 3418 * libsoup.pc.in: Use Requires rather than putting xml/ssl 3419 dependencies directly into Libs/Cflags. From Mikhail Zabaluev. 3420 #343340. 3421 3422 * libsoup/Makefile.am (libsoup_2_2_la_LDFLAGS): fix build on 3423 cygwin. From "Cygwin Ports maintainer", #321827. 3424 34252006-07-24 Dan Winship <danw@novell.com> 3426 3427 * configure.in: 2.2.96. bump AGE and CURRENT for new API 3428 3429 * NEWS: update 3430 3431 * libsoup/soup-xmlrpc-message.c (soup_xmlrpc_message_from_string): 3432 New, from Fernando Herrera, bug 348532. 3433 34342006-07-21 Dan Winship <danw@novell.com> 3435 3436 * libsoup/soup-auth.c (soup_auth_new_from_header_list): if the 3437 constructed auth doesn't have a realm, it's invalid, as per RFC 3438 2617. Based on a patch from Nate Nielsen on libsoup-list. 3439 (soup_auth_get_realm): remove "if available" from docs; all auths 3440 always have a realm. 3441 3442 * libsoup/soup-message-server-io.c (get_response_headers): If the 3443 server handler set a Content-Length header on the message, don't 3444 add a second one. (Preserves compatibility with an old hacky way 3445 that people might have been handling HEAD from SoupServer.) 3446 3447 * README: update to mention mailing list and bugzilla 3448 3449 * HACKING: kill this since there's nothing here that isn't either 3450 obvious, or redundant with the README 3451 34522006-07-21 Dan Winship <danw@novell.com> 3453 3454 * libsoup/soup-server-message.c (soup_server_message_init): 3455 initialize encoding to SOUP_TRANSFER_CONTENT_LENGTH rather than 3456 SOUP_TRANSFER_UNKNOWN, since SOUP_TRANSFER_UNKNOWN has never 3457 actually worked here, and so there was an undocumented requirement 3458 that you manually set the encoding on every response 3459 (which SoupServer itself was not doing on internal errors). 3460 Problem pointed out by Dennis Jacobfeuerborn on libsoup-list. 3461 (soup_server_message_set_encoding): reject the new 3462 SoupTransferEncoding values, for compatibility 3463 3464 * libsoup/soup-message.h (SoupTransferEncoding): Clarify that 3465 SOUP_TRANSFER_UNKNOWN is essentially an error value, since in the 3466 public API, it always has been, due to bugs. Add some new values, 3467 currently just for internal use: SOUP_TRANSFER_NONE (for cases 3468 like HEAD which never have a body), SOUP_TRANSFER_EOF (to replace 3469 SOUP_TRANSFER_UNKNOWN), and SOUP_TRANSFER_BYTERANGES (which isn't 3470 actually implemented yet). 3471 3472 * libsoup/soup-message.c (soup_message_get_request_encoding, 3473 soup_message_get_response_encoding): figure out the body encoding 3474 being used by the request/response, including all the tricky 3475 cases like HEAD/1xx/etc. 3476 (soup_message_is_keepalive): if the response encoding is 3477 SOUP_TRANSFER_EOF, then the message isn't keepalive. 3478 3479 * libsoup/soup-message-client-io.c (parse_response_headers): use 3480 soup_message_get_response_encoding. 3481 3482 * libsoup/soup-message-server-io.c (parse_request_headers): use 3483 soup_message_get_request_encoding. 3484 (get_response_headers): use both soup_server_message_get_encoding 3485 and soup_message_get_response_encoding, to properly distinguish 3486 between the wire encoding and the alleged-by-headers encoding 3487 (which differ for HEAD, etc). 3488 3489 * libsoup/soup-message-io.c (io_error, read_body_chunk): 3490 s/SOUP_TRANSFER_UNKNOWN/SOUP_TRANSFER_EOF/. 3491 (io_body_state): if encoding is SOUP_TRANSFER_NONE, jump right to 3492 SOUP_MESSAGE_IO_STATE_FINISHING. 3493 3494 * libsoup/soup-server.c (request_finished): Check 3495 soup_socket_is_connected() *before* soup_message_is_keepalive(), 3496 since the message will be invalid if the client unexpectedly 3497 dropped the connection. 3498 3499 * tests/simple-httpd.c (server_callback): handle HEAD requests. 3500 Remove no-longer-necessary soup_server_message_set_encoding() 3501 call. 3502 3503 * tests/get.c: add -d (debug) flag to print headers, and -h flag 3504 to do a HEAD rather than GET 3505 35062006-07-10 Dan Winship <danw@novell.com> 3507 3508 * configure.in: 2.2.95.1, and bump SOUP_AGE/SOUP_CURRENT this 3509 time. Pointed out by Daniel Holbach. 3510 35112006-07-10 Dan Winship <danw@novell.com> 3512 3513 * configure.in: 2.2.95 3514 3515 * NEWS: update 3516 35172006-06-19 Dan Winship <danw@novell.com> 3518 3519 * tests/Makefile.am (noinst_PROGRAMS): don't build xmlrpc-test 3520 unless we have apache/php/xmlrpc-epi. Fixes the build. #345342 3521 3522 * configure.in: fix some quoting 3523 35242006-06-14 Dan Winship <danw@novell.com> 3525 3526 * configure.in: add tests for apache mod_php5 and xmlrpc-epi-php 3527 3528 * tests/xmlrpc-test.c: XML-RPC regression test 3529 3530 * tests/xmlrpc-server.php: PHP server for xmlrpc-test 3531 3532 * tests/httpd.conf.in: add php stuff 3533 3534 * tests/apache-wrapper.c (apache_cleanup): Use "graceful-stop" 3535 rather than "stop", so that it stops listening on the socket 3536 before exiting, so that we can immediately start another apache 3537 (eg, in "make check"). 3538 3539 * libsoup/soup-date.c (soup_mktime_utc): Fix a bug in leap-year 3540 counting. 3541 3542 * libsoup/soup-xmlrpc-message.c 3543 (soup_xmlrpc_message_write_datetime): rename from 3544 "..._write_time", to make it consistent with the XML-RPC type name 3545 and the corresponding SoupXmlrpcResponse method. Also, fix it to 3546 use the same ISO 8601 format as the spec, and use the right value 3547 for the seconds field. 3548 (soup_xmlrpc_message_write_base64): Change the buf arg to a 3549 gconstpointer rather than a const char *. 3550 3551 * libsoup/soup-xmlrpc-response.c (soup_xmlrpc_value_get_base64): 3552 Return a GByteArray containing the decoded data, rather than 3553 the base64-encoded string. 3554 (soup_xmlrpc_value_dump_internal): Update for that (and don't 3555 leak it). 3556 (soup_xmlrpc_value_array_get_iterator, 3557 soup_xmlrpc_value_array_iterator_get_value): Make these actually 3558 work. 3559 35602006-06-12 Dan Winship <danw@novell.com> 3561 3562 * configure.in: 2.2.94 3563 3564 * NEWS: update 3565 35662006-06-12 Dan Winship <danw@novell.com> 3567 3568 * docs/reference/client-howto.xml: 3569 * docs/reference/server-howto.xml: New client and server API 3570 tutorials. 3571 3572 * docs/reference/*: reorganize, regenerate, fill in some missing 3573 pieces, etc 3574 3575 * libsoup/soup-connection.c (soup_connection_new): document the 3576 varargs param 3577 3578 * libsoup/soup-date.h: sync prototypes to declarations for gtk-doc. 3579 3580 * libsoup/soup-headers.c (soup_headers_parse_response): fix typo 3581 in doc. 3582 35832006-06-12 Dan Winship <danw@novell.com> 3584 3585 * libsoup/soup-xmlrpc-response.c (soup_xmlrpc_value_get_int, 3586 soup_xmlrpc_value_get_double): Further fixes from Brent Smith. 3587 #344458. 3588 (soup_xmlrpc_value_get_boolean): Similar fix, plus actually set 3589 the output parameter and make the return value match the other 3590 get_* methods. 3591 35922006-06-09 Dan Winship <danw@novell.com> 3593 3594 * configure.in: Add tests for apache, output tests/httpd.conf 3595 3596 * tests/htdigest: 3597 * tests/htpasswd: 3598 * tests/httpd.conf.in: Apache 2.2 config files for auth-test 3599 3600 * tests/apache-wrapper.c (apache_init, apache_cleanup): functions 3601 to start/stop apache 3602 3603 * tests/auth-test.c: Use apache-wrapper functions to start a local 3604 apache process to test authentication against, since the auth-test 3605 tree at developer.ximian.com went missing a long time ago. #311825 3606 3607 * tests/Makefile.am (auth_test_SOURCES): use apache-wrapper.c 3608 (TESTS): include auth-test if HAVE_APACHE. 3609 3610 * libsoup/soup-session.c (lookup_auth): Fix this in the case of a 3611 URI pointing to a directory rather than a file. 3612 36132006-06-08 Dan Winship <danw@novell.com> 3614 3615 * libsoup/soup-xmlrpc-response.c (soup_xmlrpc_value_get_int, 3616 soup_xmlrpc_value_get_double, soup_xmlrpc_value_get_boolean): 3617 Check return value of strtol/g_ascii_strtod correctly. #344222, 3618 patch from Brent Smith. 3619 36202006-06-07 Dan Winship <danw@novell.com> 3621 3622 * libsoup/soup-xmlrpc-response.c 3623 (soup_xmlrpc_response_from_string): record whether or not the 3624 response was a fault. 3625 (soup_xmlrpc_response_is_fault): test that. #343973, patch from 3626 Brent Smith. 3627 36282006-05-29 Dan Winship <danw@novell.com> 3629 3630 * configure.in: 2.2.93 3631 3632 * NEWS: update 3633 36342006-05-29 Dan Winship <danw@novell.com> 3635 3636 * libsoup/soup-message-io.c (SoupMessageIOState): add a new state 3637 "FINISHING" which means "done I/O, but not yet done processing and 3638 cleanup" before "DONE" (which now always means "completely done"). 3639 (soup_message_io_stop): disconnect the socket if the read state is 3640 "< FINISHING", not "!= DONE". 3641 (io_error): on an EOF-that-signals-end-of-data, set state to 3642 FINISHING and run io_read(). 3643 (io_read, io_write): remove the g_return_if_fails from before. 3644 s/DONE/FINISHING/ in most places. In the FINISHING handler, stop 3645 listening for the readable/writable signal (eg, so we don't end up 3646 reading a following pipelined request), and set the state to DONE. 3647 (soup_message_io_unpause): Only reconnect the readable/writable 3648 signals if the io state isn't DONE. Guard the calls to 3649 io_read/io_write better so that it's safe to call this even after 3650 they are both DONE, since it may be easier for us to test that 3651 than for the caller to. 3652 3653 Fixes 334469, 342640, and another bug caused by the earlier 3654 workaround to 334469. Based on patches and analysis from William 3655 Jon McCann and Armin Bauer. 3656 3657 * tests/simple-proxy.c (main): add g_thread_init (NULL) to make 3658 this work again. (Pointed out by Alex Larsson) 3659 36602006-05-26 Dan Winship <danw@novell.com> 3661 3662 * libsoup/soup-socket.c: #include <sys/time.h> for struct timeval. 3663 #342048 3664 3665 * libsoup/soup-connection.c (soup_connection_connect_sync): Start 3666 SSL after CONNECTing! Doh. Part of bnc #174255. 3667 (SoupConnectionMode): new enum for the three types of 3668 SoupConnection (direct, proxy, tunnel). 3669 (set_property): set priv->mode according to proxy_uri and 3670 conn_uri. 3671 (socket_connect_result, soup_connection_connect_sync): use 3672 priv->mode to decide whether or not to tunnel. 3673 (send_request): Only pass TRUE for is_proxy to 3674 soup_message_send_request if mode is PROXY, not if it's TUNNEL. 3675 (Also part of bnc #174255). 3676 36772006-05-26 Dan Winship <danw@novell.com> 3678 3679 * libsoup/soup-message-io.c (soup_message_io_in_progress): tests 3680 if IO is currently in progress on a message. 3681 3682 * libsoup/soup-session-async.c (run_queue): don't process messages 3683 that are io_in_progress. #342545, fix based on analysis from Wang 3684 Xin. (In the future we may want to re-fix this by adding a 3685 REQUEUED message status separate from QUEUED.) 3686 36872006-05-22 Dan Winship <danw@novell.com> 3688 3689 * libsoup/soup-session.c (cleanup_hosts): Don't free the hosts 3690 while holding host_lock; that's not allowed and can cause 3691 deadlock. #309867. Based on a patch from Veerapuram Varadhan for 3692 part of bnc #174255. 3693 36942006-04-10 Dan Winship <danw@novell.com> 3695 3696 * configure.in: bump version to 2.2.92 3697 3698 * NEWS: update 3699 37002006-04-10 Dan Winship <danw@novell.com> 3701 3702 * libsoup/soup-message-io.c (io_write, io_read): g_return_if_fail 3703 if these get called after the IO is done. This isn't supposed to 3704 happen, but apparently does. Workaround for #334469. 3705 3706 * libsoup/soup-auth-digest.c (qop_types, algorithm_types): 3707 NULL-terminate these so we don't crash when trying to parse an 3708 invalid value. (Flip side of the previous #328615 patch.) 3709 37102006-04-02 Dan Winship <danw@novell.com> 3711 3712 * libsoup/soup-server-auth.c (soup_server_auth_context_challenge): 3713 Write out correct digest algorithm value. #328615. 3714 3715 * libsoup/soup-headers.c (soup_headers_parse_request): Rewrite 3716 Request-Line-parsing code to not have a lame max length. #335040. 3717 3718 * Makefile.am (install-data-local): Install the .pc file mode 644, 3719 not 755. #330878 3720 3721 * libsoup/soup-auth-digest.c: 3722 * libsoup/soup-auth.c: 3723 * libsoup/soup-message-client-io.c: 3724 * libsoup/soup-message-server-io.c: 3725 * libsoup/soup-message.c: 3726 * libsoup/soup-method.c: 3727 * libsoup/soup-server-auth.c: 3728 * tests/get.c: replace locale-ish strcasecmps with 3729 g_ascii_strcasecmp 3730 3731 * libsoup/*.c: fix most signed/unsigned mismatch warnings 3732 37332006-03-03 Dan Winship <danw@novell.com> 3734 3735 * configure.in: bump version to 2.2.91. 3736 3737 * NEWS: Update 3738 37392006-03-03 Dan Winship <danw@novell.com> 3740 3741 * libsoup/soup-dns.c (soup_dns_lookup_resolve_async): Take a 3742 GMainContext as well, and update the resolution code to dispatch 3743 each lookup result in the correct context. 3744 3745 * libsoup/soup-address.c (soup_address_resolve_async_full): New 3746 method that takes a GMainContext to pass to 3747 soup_dns_lookup_resolve_async. 3748 3749 * libsoup/soup-socket.c (soup_socket_connect): Use 3750 soup_address_resolve_async_full. Fixes a problem reported by Armin 3751 Bauer. 3752 3753 * configure.in: update to require glib 2.6, since apparently the 3754 code does. 3755 37562006-02-25 Veerapuram Varadhan <vvaradhan@novell.com> 3757 3758 * libsoup/soup-connection.c: 3759 * libsoup/soup-session.c: 3760 * libsoup/soup-socket.c: add a "timeout" property, 3761 which gets passed from server to socket, and session to connection 3762 to socket, allowing blocking non-responsive sync connections to 3763 return. Combination of "EAGAIN" && "Blocking" connection is treated 3764 as error and the connection will be terminated and the control 3765 is returned to the caller immediately. 3766 37672006-02-02 Tor Lillqvist <tml@novell.com> 3768 3769 * configure.in: Don't use getaddrinfo() etc or try to support IPv6 3770 on Windows, as they are present by default on XP only. We do want 3771 to support Windows 2000, too. 3772 37732005-12-21 Dan Winship <danw@novell.com> 3774 3775 * libsoup/soup-date.c (soup_date_iso8601_parse): fix two bugs in 3776 the YYYYMMDD case. 3777 3778 * tests/date.c: add three more ISO 8601 cases, to exercise all the 3779 code paths. 3780 3781 #324671, from Emmanuele Bassi 3782 37832005-11-25 Dan Winship <danw@novell.com> 3784 3785 * README: sync to text on wiki, and point to wiki 3786 3787 * TODO: moved to http://live.gnome.org/LibSoup_2fToDo 3788 37892005-11-17 Dan Winship <danw@novell.com> 3790 3791 * libsoup/soup-message-io.c (io_cleanup): clear priv->io_data 3792 right away, to protect against this being re-entered mid-cleanup 3793 (when we unref the connection). #321208, based on a patch from 3794 Jedy Wang. 3795 37962005-11-16 Dan Winship <danw@novell.com> 3797 3798 * libsoup/soup-xmlrpc-message.c 3799 (soup_xmlrpc_message_start_member): add the "name" element to the 3800 struct member. #321362, patch from Sebastian Bauer. 3801 38022005-11-10 Dan Winship <danw@novell.com> 3803 3804 * configure.in: bump version to 2.2.90. This will not be 3805 officially released, but once these patches have gotten some 3806 testing they may be pulled up to the gnome-2-12 branch. 3807 3808 * libsoup/soup-connection.c: 3809 * libsoup/soup-server.c: 3810 * libsoup/soup-session.c: 3811 * libsoup/soup-socket.c: add an "async-context" property, 3812 which gets passed from server to socket, and session to connection 3813 to socket, allowing async usage outside the main thread. Based on 3814 patches from Armin Bauer and Jürg Billeter. 3815 3816 * libsoup/soup-misc.c (soup_add_io_watch, soup_add_idle, 3817 soup_add_timeout): utility routines to add watches, idles, and 3818 timeouts to non-default GMainContexts. 3819 3820 * libsoup/soup-message-io.c (io_write): set the read state 3821 appropriately after writing a "100 Continue" response 3822 (io_read): More 100-Continue stuff. I don't think this is quite 3823 right so it will probably change again later. 3824 38252005-11-01 Dan Winship <danw@novell.com> 3826 3827 * docs/reference/libsoup-docs.sgml: tell it to generate an index 3828 3829 * docs/reference/tmpl/*.sgml: regen with newer gtk-doc 3830 38312005-11-01 Dan Winship <danw@novell.com> 3832 3833 * libsoup/soup-connection.c (set_current_request, 3834 clear_current_request): Cast the argument to 3835 g_object_add/remove_weak_pointer to the wrong type, to make gcc 3836 4.1 happy, because C is stupid and "void **" means "a pointer to a 3837 void *", not "a pointer to any kind of pointer". 3838 3839 * libsoup/soup-xmlrpc-response.c 3840 (soup_xmlrpc_value_dump_internal): fix gccism. #320349, from 3841 Roland Illig. 3842 38432005-10-27 Dan Winship <danw@novell.com> 3844 3845 * libsoup/soup-socket.c (soup_socket_client_new_async, 3846 soup_socket_client_new_sync): unref the SoupAddress passed to 3847 soup_socket_connect to avoid a leak. Based on a patch from Wang 3848 Xin. 3849 (socket_read_watch, read_from_network, socket_write_watch, 3850 soup_socket_write): request and handle G_IO_ERR and G_IO_HUP 3851 events when polling, since poll() will return them whether or not 3852 you asked for them, but glib will ignore them unless you did, 3853 which will result in CPU suckage if such an error occurs. #319305, 3854 patch from Jonathan Matthew. 3855 38562005-10-27 Dan Winship <danw@novell.com> 3857 3858 bgo #316313 / bnc #116762, and probably also bgo #318252 3859 3860 * libsoup/soup-message-io.c (soup_message_io_stop): clear io->conn 3861 after releasing it, to make sure we can't accidentally release it 3862 twice. 3863 3864 * libsoup/soup-connection.c (clear_current_request): Call 3865 soup_message_io_stop() on the cleared request. 3866 3867 * libsoup/soup-connection-ntlm.c (ntlm_authorize_post): do a 3868 little dance here to make sure the session can't queue another 3869 message on the connection while we're in the process of requeuing 3870 the original one. 3871 38722005-08-30 Tor Lillqvist <tml@novell.com> 3873 3874 * libsoup-zip.in: Include documentation in developer zipfile. 3875 38762005-08-22 Dan Winship <danw@novell.com> 3877 3878 * libsoup/soup-soap-message.c (soup_soap_message_class_init): Call 3879 g_type_class_add_private. 3880 3881 * configure.in: Bump to 2.2.6.1 3882 3883 * NEWS: update 3884 38852005-08-22 Dan Winship <danw@novell.com> 3886 3887 * configure.in: Bump to 2.2.6. Bump SOUP_AGE and SOUP_CURRENT for 3888 soup_server_get_socket() addition. 3889 3890 * NEWS: update 3891 38922005-08-22 Dan Winship <danw@novell.com> 3893 3894 * libsoup/soup-connection.c (set_current_request, 3895 clear_current_request): Fix g_object_add/remove_weak_pointer usage 3896 to prevent a crash when canceling a request. From Tambet. 3897 38982005-08-16 Dan Winship <danw@novell.com> 3899 3900 Fix a connection leak reported by Tambet. 3901 3902 * libsoup/soup-connection.c (send_request): rather than tracking 3903 the message progress via signals, call 3904 soup_message_send_request_internal() and have it call 3905 soup_connection_release() when it's done. 3906 (request_restarted, request_done): gone 3907 (clear_current_request): handle disconnecting (if necessary) and 3908 updating last_used time here. 3909 (soup_connection_release): Call clear_current_request(). 3910 (dispose): Call clear_current_request() 3911 3912 * libsoup/soup-message-client-io.c 3913 (soup_message_send_request_internal): New. Takes a SoupConnection 3914 in addition to the other args, and passes that on to 3915 soup-message-io. 3916 3917 * libsoup/soup-message-io.c (SoupMessageIOData): add a 3918 SoupConnection field. 3919 (io_cleanup): if io->conn is set, unref it. 3920 (soup_message_io_stop): if io->conn is set, and we ended in a 3921 clean state, call soup_connection_release() on it. 3922 (soup_message_io_client): Add a SoupConnection arg, which gets 3923 reffed and stored in io->conn. 3924 3925 * TODO: misc updates 3926 39272005-08-15 Dan Winship <danw@novell.com> 3928 3929 * libsoup/soup-connection.h (soup_connection_new): 3930 * libsoup/soup-server.h (soup_server_new): 3931 * libsoup/soup-session-async.h (soup_session_async_new_with_options): 3932 * libsoup/soup-session-sync.h (soup_session_sync_new_with_options): 3933 * libsoup/soup-socket.h (soup_socket_new): use G_GNUC_NULL_TERMINATED. 3934 3935 * libsoup/soup-types.h (G_GNUC_NULL_TERMINATED): steal the 3936 definition of this from glib 2.8 for use when compiling against 3937 glib 2.6. 3938 39392005-08-15 Tambet Ingo <tambet@ximian.com> 3940 3941 * libsoup/soup-socket.c (update_fdflags, set_property): Fix compilation 3942 errors. 3943 3944 * libsoup/soup-server.c (soup_server_get_listener): ditto. 3945 39462005-08-12 Dan Winship <danw@novell.com> 3947 3948 * libsoup/soup-server.c (soup_server_get_listener): new method to 3949 get the server's listening socket. 3950 3951 * libsoup/soup-socket.c: add a new "cloexec" property, to set 3952 FD_CLOEXEC on the socket. Update everything for that. 3953 39542005-08-05 Dan Winship <danw@novell.com> 3955 3956 * libsoup/soup-socket.c (finalize): Free priv->read_buf. From 3957 Tambet. 3958 (soup_socket_connect): Make sure that get_iochannel() gets called 3959 if the connect succeeds right away, or the socket will fail on 3960 the first read or write. [#312540] 3961 39622005-08-01 Dan Winship <danw@novell.com> 3963 3964 * configure.in: drop version back down to 2.2.5 and 3965 SOUP_API_VERSION back to 2.2; due to various snafus, there has 3966 never yet been an official release of the 2.4 API and the GNOME 3967 2.12 betas have been shipping with libsoup 2.2 tarballs (while 3968 jhbuild has been using 2.4, with evolution and related packages 3969 having configure hacks to build against either). As there never 3970 ended up being any API-incompatible changes in the 2.4 series, we 3971 can just merge it back into the 2.2 series and kill off 2.4. 3972 3973 * NEWS: Copy in the 2.2-series news from the gnome-2-10 branch, 3974 and add new NEWS 3975 3976 * libsoup-zip.in: s/2.2/@SOUP_API_VERSION@/ 3977 3978 * libsoup/Makefile.am (libsoupincludedir, lib_LTLIBRARIES, 3979 libsoup_2_2_la_LDFLAGS, libsoup_2_2_la_LIBADD, 3980 libsoup_2_2_la_SOURCES): s/4/2/ in all the places automake won't 3981 let us use a variable. 3982 39832005-08-01 Dan Winship <danw@novell.com> 3984 3985 * libsoup/soup-md5-utils.c (soup_md5_final_hex): Finalize a 3986 SoupMD5Context and write out the digest in hex digits. 3987 3988 * libsoup/soup-auth-digest.c (authenticate, compute_response): 3989 * libsoup/soup-server-auth.c (check_digest_passwd): Use that, 3990 rather than duplicating the code in both places here. 3991 3992 Patch from Wim Lewis. 3993 39942005-07-15 Dan Winship <danw@novell.com> 3995 3996 * libsoup/soup-session.c (redirect_handler): Allow relative URIs, 3997 since some servers are lame. Based on a patch from Jean-Yves 3998 Lefort. [#270688] 3999 4000 * tests/uri-parsing.c: add some more tests to make sure that 4001 things that should be %-escaped do get %-escaped 4002 40032005-07-06 Tor Lillqvist <tml@novell.com> 4004 4005 * libsoup/soup-date.c (soup_gmtime): Mention in the doc comment 4006 that gmtime() is thread-safe on Windows. 4007 (soup_date_generate): Use soup_gmtime() instead of gmtime_r(). 4008 40092005-06-14 Dan Winship <danw@novell.com> 4010 4011 * configure.in: check for gmtime_r 4012 4013 * libsoup/soup-date.c: date/time-manipulation functions 4014 4015 * libsoup/soup-xmlrpc-message.c: 4016 * libsoup/soup-xmlrpc-response.c: XMLRPC message classes, from 4017 Mariano Suarez-Alvarez, Fernando Herrera, and Jeff Bailey. 4018 [#300227] 4019 4020 * tests/date.c: soup-date test code 4021 4022 * tests/getbug.c: XMLRPC test code. (Should be switched to use 4023 bugzilla.gnome.org once bgo supports XMLRPC.) 4024 4025 * TODO: XMLRPC is implemented now (but shares the problem with 4026 SOAP that the API is not very good). 4027 40282005-06-14 Dan Winship <danw@novell.com> 4029 4030 * libsoup/*.[ch]: add/fix gtk-doc comments, make functions match 4031 prototypes, etc 4032 4033 * docs/reference/*: update, fix, etc 4034 40352005-06-13 Tor Lillqvist <tml@novell.com> 4036 4037 * configure.in: Check also for inet_ntop(). Pre-cache knowledge 4038 that we do have inet_pton() and inet_ntop() on Windows (because we 4039 implement them ourselves in soup-dns.c). 4040 4041 * libsoup/soup-dns.c (inet_pton, inet_ntop): Fix the Win32 4042 implementations, they were completely bogus. 4043 (soup_dns_ntop): Make it compile if HAVE_INET_NTOP. 4044 40452005-06-08 Dan Winship <danw@novell.com> 4046 4047 * libsoup/soup-connection-ntlm.c (ntlm_authorize_pre): Fix this to 4048 use just the domain name for the domain, not the whole 4049 DOMAIN\username. Based on a patch by Jeroen Hautekeete in #306877. 4050 40512005-05-26 Dan Winship <danw@novell.com> 4052 4053 * libsoup/soup-session.c (cleanup_hosts): lock host_lock around 4054 this, since it can be called from set_property(). Possible fix for 4055 bnc #81641. 4056 40572005-05-05 Dan Winship <danw@novell.com> 4058 4059 * docs/reference/Makefile.am (SCANGOBJ_OPTIONS): Use 4060 --type-init-func to force g_thread_init to be called. [#302674] 4061 40622005-04-18 Tor Lillqvist <tml@novell.com> 4063 4064 * configure.in: Call AC_LIBTOOL_WIN32_DLL. Check for Win32, set 4065 Automake conditional OS_WIN32. Pre-cache information that we do 4066 have getaddrinfo(), getnameinfo(), and IPv6 on Win32. (The tests 4067 wouldn't notice as they don't include the necessary headers or 4068 link with -lws2_32. Easiest to just pre-cache it.) 4069 4070 * libsoup-zip.in: New file, to build zipfile-based distribution of 4071 libsoup for Win32. 4072 4073 * Makefile.am (EXTRA_DIST) 4074 * configure.in (AC_OUTPUT): Add libsoup-zip(.in). 4075 4076 * libsoup/Makefile.am: Use -no-undefined on Win32. Link with 4077 WinSock library -lws2_32. 4078 4079 * libsoup/soup-portability.h: New file. On Unix it includes the 4080 traditional BSD socket etc headers. On Win32 it includes 4081 winsock2.h and ws2tcpip.h. 4082 4083 * libsoup/*.c 4084 * libsoup/*.h: Correspondingly, don't include the BSD socket API 4085 headers directly. 4086 4087 * libsoup/soup-address.h 4088 * libsoup/soup-dns.h: Include soup-portability.h 4089 4090 * libsoup/soup-address.c (soup_address_class_init): This function 4091 should get called before libsoup uses the WinSock API, so this is 4092 a good place to call WSAStartup(). 4093 4094 * libsoup/soup-auth-digest.c (get_protection_space): Use 4095 g_strsplit() instead of the relatively unportable strtok_r(). 4096 4097 * libsoup/soun-dns.c: Remove unused headers. Implement 4098 inet_pton() and inet_ntop() on Win32 using WSAStringToAddress() 4099 and WSAAddressToString(). 4100 4101 * libsoup/soup-socket.c (SOUP_CLOSE_SOCKET, SOUP_IS_SOCKET_ERROR, 4102 SOUP_IS_INVALID_SOCKET, SOUP_IS_CONNECT_STATUS_INPROGRESS): 4103 Portability macros. 4104 (soup_socket_class_init): Call soup_address_get_type() to make 4105 sure WSAStartup() gets called (through soup_address_class_init()). 4106 (update_fdflags): Use ioctlsocket(FIONBIO) on Win32. 4107 (soup_socket_write): Conditionalize SIGPIPE use. 4108 4109 * tests/get.c: mkdir() is different in Microsoft's C library. 4110 4111 * tests/simple-httpd.c: Rename TRY_AGAIN label to AGAIN to avoid 4112 some clash with winsock2.h (which includes windows.h). The Win32 4113 headers pollute the namespace wildly. 4114 41152005-04-15 Dan Winship <danw@novell.com> 4116 4117 * libsoup/soup-dns.c (resolve_name): make this work with 4118 pre-EAI_OVERFLOW glibc [#300620] 4119 41202005-04-12 Dan Winship <danw@novell.com> 4121 4122 * configure.in: Remove the various gethostbyname_r checks and just 4123 check for getnameinfo/getaddrinfo. 4124 4125 * libsoup/soup-dns.c: de-nastify. Make this use threads instead of 4126 forking. Change the API around a bunch in the process. 4127 4128 * libsoup/soup-address.c: Update for soup-dns changes 4129 4130 * tests/dns.c: take multiple hostnames on the command line and 4131 resolve them all at once (patch from tml) 4132 41332005-04-11 Dan Winship <danw@novell.com> 4134 4135 * configure.in: require glib-2.0 >= 2.4.0 4136 4137 * libsoup/*.c: use G_DEFINE_TYPE and 4138 g_type_class_add_private/G_TYPE_INSTANCE_GET_PRIVATE 4139 4140 * libsoup/soup-types.h: kill SOUP_MAKE_TYPE and 4141 SOUP_MAKE_TYPE_WITH_IFACE 4142 4143 * tests/revserver.c: use GThread. (patch from tml) 4144 41452005-04-11 Dan Winship <danw@novell.com> 4146 4147 * configure.in: bump version to 2.3.0. bump SOUP_API_VERSION to 4148 2.4 4149 4150 * libsoup.pc.in: rename from libsoup-2.2.pc.in 4151 4152 * Makefile.am (EXTRA_DIST, pkgconfig_DATA, install-data-local): 4153 install the .pc file by hand, renaming it to include the 4154 SOUP_API_VERSION 4155 4156 * libsoup/Makefile.am: s/2.2/2.4/ 4157 41582005-03-09 Dan Winship <danw@novell.com> 4159 4160 * libsoup/soup-gnutls.c (soup_gnutls_read): return G_IO_STATUS_EOF 4161 if gnutls returns 0. [#73352] 4162 (verify_certificate): put an #ifdef around 4163 GNUTLS_CERT_NOT_TRUSTED so it works with gnutls 1.2.x. [#57811] 4164 41652005-01-08 Not Zed <NotZed@Ximian.com> 4166 4167 ** See ximian bug #70323. 4168 4169 * libsoup/soup-connection-ntlm.c: replace all unsigned long/long 4170 types with guint32, as the code needs 32 bit longs. 4171 41722004-10-20 Dan Winship <danw@novell.com> 4173 4174 * libsoup/soup-gnutls.c: Commit the alleged changes from the 10-06 4175 commit, which somehow did not actually get committed then. 4176 4177 * libsoup/soup-connection.c (SoupConnectionPrivate): add a flag 4178 indicating whether or not the connection is connected. 4179 (tunnel_connect_finished): If successful, set connected. If the 4180 server returns a 3xx response, translate it to 407 (under the 4181 assumption that it's trying to redirect us to an HTML login page, 4182 as in bug 68531). Use soup_socket_start_proxy_ssl() rather than 4183 soup_socket_start_ssl(). 4184 (socket_connect_result, soup_connection_connect_sync): If 4185 successful, set connected 4186 (soup_connection_disconnect): Don't emit "disconnected" if we 4187 aren't yet connected, or the message that was waiting for this 4188 connection may get stranded in the queue. (also part of 68531) 4189 4190 * libsoup/soup-socket.c (soup_socket_start_proxy_ssl): New, starts 4191 SSL and lets the caller pass the expected hostname. Fixes a 4192 problem where SSL certification validation would always fail if 4193 you used a proxy, because it was comparing the cert against the 4194 proxy's hostname. (68583) 4195 41962004-10-06 Dan Winship <danw@novell.com> 4197 4198 * libsoup/soup-ssl.h (SoupSocketError): add 4199 SOUP_SSL_ERROR_CERTIFICATE. 4200 4201 * libsoup/soup-gnutls.c (do_handshake): Pass the GError to 4202 verify_certificate. 4203 (verify_certificate): Set the GError appropriately rather than 4204 spewing g_warnings. 4205 4206 * libsoup/soup-socket.c (read_from_network, soup_socket_write): If 4207 the GIOChannel operation returns an error, store it as GOBject 4208 data on the socket (as a hack so soup-message-io.c can access it 4209 without us needing to change SoupSocket's API). 4210 4211 * libsoup/soup-message-io.c (io_error): peek at the socket's 4212 "last_error" datum and set the message's status to SSL_FAILED 4213 (with the GError's message string) rather than IO_ERROR, if 4214 appropriate. For 64414. 4215 42162004-09-30 Dan Winship <danw@novell.com> 4217 4218 * libsoup/soup-gnutls.c (soup_gnutls_init): Add this, with some 4219 extra initialization needed for libgcrypt 1.2 or higher. Fixes 4220 66342. 4221 (soup_ssl_get_client_credentials, 4222 soup_ssl_get_server_credentials): Call soup_gnutls_init(). 4223 42242004-08-26 Dan Winship <danw@novell.com> 4225 4226 * configure.in: Bump version to 2.2.0. 4227 4228 * AUTHORS: Update this to reflect the last 2 years. 4229 4230 * NEWS: Brief summary of 1.99.x -> 2.2 changes 4231 4232 * README, TODO: Updates 4233 42342004-08-26 Dan Winship <danw@novell.com> 4235 4236 * libsoup/*: add/fix lots of gtk-doc comments 4237 4238 * libsoup/soup-misc.c (soup_str_case_hash, soup_str_case_equal): 4239 Fix bug noticed while documenting. (We were using the 4240 locale-case-insensitive functions rather than the g_ascii_ ones.) 4241 4242 * libsoup/soup-message.h (SoupMessageFlags): remove the (never 4243 implemented) NO_PIPELINE and NO_COOKIE flags. 4244 4245 * docs/reference/tmpl/*.sgml: Regenerate, fill in some stuff. 4246 There are still problems here with gtk-doc not recognizing many of 4247 the objects in libsoup... 4248 42492004-08-13 JP Rosevear <jpr@novell.com> 4250 4251 * configure.in: bump version, libtool number 4252 42532004-08-09 Dan Winship <danw@novell.com> 4254 4255 * libsoup/soup-connection.c (soup_connection_connect_sync): Don't 4256 use conn after emitting the "connect_result" signal, since it 4257 might be destroyed by that. Based on a patch from hpj. 4258 42592004-08-02 Dan Winship <danw@novell.com> 4260 4261 * libsoup/soup-uri.h: Add flag "broken_encoding" to SoupUri. 4262 4263 * libsoup/soup-uri.c: (soup_uri_to_string): if broken_encoding is 4264 set, don't re-encode the URL parts. Based on a patch by 4265 Alfred.Peng@Sun.COM. 4266 42672004-07-19 JP Rosevear <jpr@novell.com> 4268 4269 * configure.in: bump version, libtool number 4270 42712004-07-15 Dan Winship <danw@novell.com> 4272 4273 * libsoup/soup-session-sync.c (send_message): Simplify this. If 4274 the message comes back from soup_connection_send_request not 4275 FINISHED, get a new connection rather than reusing the old one. 4276 This fixes a race condition in which a connection could end up 4277 double-booked, and fixes the handling of messages that get 4278 redirected to another server. 4279 42802004-07-13 Dan Winship <danw@novell.com> 4281 4282 * libsoup/soup-session.c (connect_result): If the connection 4283 attempt succeeded, reserve the connection before releasing 4284 host_lock. Otherwise, another thread might find it in the 4285 connection pool before the caller can queue a message on it. 4286 #60693 4287 4288 * libsoup/soup-session-async.c (got_connection): Call 4289 soup_connection_release(), since we don't have a specific message 4290 in mind for the connection, so we need it to be considered idle. 4291 4292 * libsoup/soup-connection.c (soup_connection_release): New 4293 function, to undo a soup_connection_reserve(). 4294 (soup_connection_send_request, soup_connection_reserve, 4295 soup_connection_authenticate, soup_connection_reauthenticate): 4296 Document these 4297 42982004-07-12 Dan Winship <danw@novell.com> 4299 4300 * libsoup/soup-session-sync.c (send_message): signal the 4301 "connections available" condition after the message finishes. Duh. 4302 4303 * libsoup-2.2.pc.in (Cflags, Libs): add XML_CFLAGS and XML_LIBS 4304 43052004-07-08 Dan Winship <danw@novell.com> 4306 4307 * libsoup/soup-soap-response.c: Revert previous change for now; it 4308 breaks the build on distros with older libxmls. 4309 43102004-07-08 Dan Winship <danw@novell.com> 4311 4312 * tests/dict.c: Basic SOAP test, using Aonaware's SOAP->DICT 4313 gateway 4314 43152004-07-07 Fernando Herrera <fherrera@onirica.com> 4316 4317 * libsoup/soup-soap-response.c: (finalize), (init), 4318 (soup_soap_response_from_string): Use a parse context for the 4319 xml document, so we can safely use the option to ignore 4320 blank spaces and '\n'. 4321 43222004-07-06 Dan Winship <danw@novell.com> 4323 4324 * libsoup/soup-uri.c (soup_uri_new_with_base): if the protocol is 4325 http or https, require a hostname. For #61049 4326 4327 * tests/uri-parsing.c (rel_tests, do_uri): Update for that 4328 43292004-06-03 JP Rosevear <jpr@novell.com> 4330 4331 * configure.in: bump version to 2.1.11, libtool number 4332 43332004-06-01 Dan Winship <danw@novell.com> 4334 4335 * libsoup/soup-address.c: Redo the various IPv4/IPv6-abstracting 4336 macros to not use ?: expressions as lvalues, since that's 4337 apparently a GNU extension. 4338 (soup_address_resolve_async): Use a timeout rather than an idle 4339 handler to poll the dns result. (soup-dns really should be 4340 rewritten to not require polling, but this is easier for now.) 4341 #59240 4342 4343 * libsoup/soup-server.c (call_handler): Don't use GNU-only 4344 non-constant structure initialization 4345 4346 * tests/dns.c: Simple test of the dns code 4347 4348 * tests/Makefile.am (noinst_PROGRAMS): build it 4349 43502004-05-19 JP Rosevear <jpr@novell.com> 4351 4352 * configure.in (SOUP_API_VERSION): bump version, libtool numbers 4353 43542004-05-18 Dan Winship <danw@novell.com> 4355 4356 * libsoup/soup-ssl.h: 4357 * libsoup/soup-nossl.c: define some GError codes and stuff 4358 4359 * libsoup/soup-gnutls.c: add missing #include <gnutls/x509.h> 4360 (do_handshake): when returning G_IO_STATUS_AGAIN, set the GError 4361 to SOUP_SSL_ERROR_HANDSHAKE_NEEDS_READ or _NEEDS_WRITE 4362 appropriately. 4363 4364 * libsoup/soup-socket.c (soup_socket_write): Handle 4365 SOUP_SSL_ERROR_HANDSHAKE_NEEDS_READ, by setting an io watch for 4366 G_IO_IN instead of G_IO_OUT. Fixes the rcd-sucking-up-all-cpu bug 4367 (#58434) 4368 (read_from_network): Handle the reverse case (which would cause 4369 hanging rather than spinning, and might be the cause of some 4370 connector 1.5 slowness?) 4371 43722004-05-11 Dan Winship <danw@novell.com> 4373 4374 * libsoup/soup-misc.c (soup_signal_connect_once): Do this less 4375 kludgefully, using the magic of GClosure, to fix x86_64 problems 4376 reported by snorp. 4377 43782004-05-04 Sivaiah Nallagatla <snallagatla@novell.com> 4379 4380 * libsoup/soup-soap-message.c (finalize) : free 4381 the elements of priv structure before freeing priv 4382 43832004-04-20 Dan Winship <danw@ximian.com> 4384 4385 * libsoup/soup-connection-ntlm.c (ntlm_authorize_post): if 4386 re-sending the message, call soup_message_restarted() 4387 (send_request): Connect to "restarted" signal, and remove the 401 4388 handlers from there; doing it here didn't work because if the 4389 connection was closed, the message would be re-sent on a new 4390 connection, but would still have the handlers from the old 4391 connection attached to it, which would make authentication fail. 4392 4393 * libsoup/soup-message-handlers.c (soup_message_run_handlers): 4394 Copy the handler list before starting, to protect against handlers 4395 that modify the handler list. 4396 43972004-04-15 Dan Winship <danw@ximian.com> 4398 4399 * libsoup/soup-connection.c (soup_connection_connect_sync): 4400 Connect to the socket's "disconnect" signal. (We were only doing 4401 this from the async version before, which meant that synchronous 4402 SoupConnections could outlive their sockets and start causing 4403 errors.) #57004 4404 4405 * libsoup/soup-connection-ntlm.c (send_request): Remove the old 4406 Authorization header before adding a new one. 4407 44082004-04-02 JP Rosevear <jpr@ximian.com> 4409 4410 * configure.in: bump version, libtool number 4411 44122004-03-15 Dan Winship <danw@ximian.com> 4413 4414 * libsoup/soup-soap-message.c (soup_soap_message_persist): Fix up 4415 types to kill a warning with -Wall -O2 4416 44172004-03-05 JP Rosevear <jpr@ximian.com> 4418 4419 * configure.in: bump version, libtool number 4420 44212004-03-02 Dan Winship <danw@ximian.com> 4422 4423 * libsoup/soup-dns.c (check_hostent): Only loop on EINTR if 4424 bytes_read is -1, since the value of errno is irrelevant when 4425 bytes_read is 0. Probably #54960. 4426 44272004-03-01 Rodrigo Moya <rodrigo@ximian.com> 4428 4429 * libsoup/soup-soap-response.h: removed not-implemented function's 4430 prototype. 4431 44322004-02-27 Rodney Dawes <dobey@ximian.com> 4433 4434 * configure.in: 4435 * libsoup/Makefile.am: Use a different variable for linking to the 4436 static version of gnutls, so we don't pull the .a files into the .pc 4437 4438 Fixes #53346 4439 44402004-02-20 Dan Winship <danw@ximian.com> 4441 4442 * libsoup/soup-message-io.c (read_metadata, read_body_chunk, 4443 write_data): Pass gsize *, not guint *, to soup_socket_read/write, 4444 to make this work on 64-bit platforms. (Grr. C type checking 4445 sucks.) #54631 4446 4447 * tests/revserver.c: Likewise 4448 44492004-02-18 Rodrigo Moya <rodrigo@ximian.com> 4450 4451 Fixes #54512 4452 4453 * libsoup/soup-soap-response.c (soup_soap_parameter_get_int_value): 4454 don't leak the value returned from xmlNodeGetContent(). 4455 (soup_soap_parameter_get_string_value, 4456 soup_soap_parameter_get_property): return a g_strdup'ed 4457 string, not the value returned by xmlNodeGetContent, so that 4458 callers can use g_free, and not xmlFree. 4459 4460 * libsoup/soup-soap-response.h: made soup_parameter_get_property 4461 not return const. 4462 44632004-02-17 Dan Winship <danw@ximian.com> 4464 4465 * libsoup/soup-soap-message.h (SOUP_IS_SOAP_MESSAGE_CLASS): Fix a 4466 typo. #54433, from Mariano Suarez-Alvarez. 4467 4468 * libsoup/soup-soap-response.h (SOUP_IS_SOAP_RESPONSE_CLASS): 4469 Likewise 4470 44712004-02-17 Rodney Dawes <dobey@ximian.com> 4472 4473 * libsoup/soup-message.c (soup_message_new): HTTP connections require 4474 a hostname, and we also hash on the host for message queueing in the 4475 session, if the host is NULL we free the SoupUri and return NULL 4476 44772004-02-14 Dan Winship <danw@ximian.com> 4478 4479 * configure.in: Use POSIX-compliant "test $foo = bar", rather than 4480 GNU-only "test $foo == bar". #54354, from Julio M. Merino Vidal. 4481 44822004-02-12 Joe Shaw <joe@ximian.com> 4483 4484 * libsoup/soup-dns.c (check_hostent): Call read() in a do-while 4485 loop to prevent DNS errors from short reads. 4486 44872004-02-11 Joe Shaw <joe@ximian.com> 4488 4489 * configure.in: Bumped version number to 2.1.7 and libtool 4490 current. 4491 44922004-02-11 Dan Winship <danw@ximian.com> 4493 4494 * libsoup/soup-connection.c (soup_connection_disconnect): Update 4495 Joe's comment here with a gory explanation of exactly what's going 4496 on. (It's not just an SSL bug either, it affects all connections.) 4497 44982004-02-10 Joe Shaw <joe@ximian.com> 4499 4500 * libsoup/soup-connection.c (soup_connection_disconnect): Add a 4501 workaround for SSL connections which time-out but don't close the 4502 socket until we try sending data again later. 4503 4504 * libsoup/soup-socket.c (soup_socket_connect, soup_socket_listen): 4505 Don't free the sockaddr from soup_address_get_sockaddr(); we don't 4506 own it, the SoupAddress does. 4507 45082004-02-09 JP Rosevear <jpr@ximian.com> 4509 4510 * configure.in: Bump libtool numbers 4511 45122004-02-05 Dan Winship <danw@ximian.com> 4513 4514 * libsoup/soup-session.c (soup_session_add_filter): Ref the filter 4515 when adding it. 4516 (soup_session_remove_filter): And unref it here (we were already 4517 unreffing it in dispose().) 4518 45192004-02-05 Joe Shaw <joe@ximian.com> 4520 4521 * libsoup/soup-dns.c (soup_dns_entry_unref): Don't try to free the 4522 hostent if it's NULL. 4523 (soup_dns_entry_check_lookup): If the entry is resolved, but the 4524 hostent is NULL, uncache it. 4525 45262004-02-04 Dan Winship <danw@ximian.com> 4527 4528 * libsoup/soup-connection-ntlm.c (ntlm_authorize_pre): Always 4529 remove the WWW-Authenticate headers before returning, so the 4530 session won't fall back to Basic auth. Also, leave the connection 4531 in the "authenticating" state rather than setting it to 4532 "authenticated". 4533 (ntlm_authorize_post): Only requeue the message if it's in the 4534 "authenticating" state (and set it to "authenticated"). Fixes an 4535 "unepectedly disconnected" error if authentication fails. 4536 45372004-02-03 Dan Winship <danw@ximian.com> 4538 4539 * libsoup/soup-message-io.c (io_cleanup): Call 4540 soup_message_io_stop so we don't get a callback on the io after 4541 it's been cleaned up. 4542 4543 * libsoup/soup-session.c (add_auth): Only remove the Authorization 4544 header if we have another one to add. (Otherwise it messes up 4545 SoupConnectionNTLM.) 4546 4547 * libsoup/soup-socket.c (read_from_buf): Use memmove rather than 4548 memcpy here, since the source and destination will overlap if 4549 *nread is small and read_buf->len is large. (Noticed by valgrind, 4550 #53625.) 4551 45522004-02-02 Joe Shaw <joe@ximian.com> 4553 4554 * libsoup/soup-gnutls.c (soup_gnutls_close): Call gnutls_bye() 4555 with the GNUTLS_SHUT_WR flag (instead of RDWR) and check only for 4556 GNUTLS_E_INTERRUPTED. GNUTLS_E_AGAIN will be returned by recv() 4557 when there are no messages on the wire on a non-blocking socket. 4558 This sends a SSL hangup message and then allows us to immediately 4559 close the socket. 4560 45612004-01-30 Rodrigo Moya <rodrigo@ximian.com> 4562 4563 * configure.in: bumped version number to 2.1.6. 4564 45652004-01-29 Rodrigo Moya <rodrigo@ximian.com> 4566 4567 * libsoup/soup-soap-response.[ch] (soup_soap_parameter_get_property): 4568 new function. 4569 45702004-01-29 Rodrigo Moya <rodrigo@ximian.com> 4571 4572 * libsoup/soup-soap-response.[ch] 4573 (soup_soap_parameter_get_string_value): removed 'const' from return 4574 type. 4575 45762004-01-29 Joe Shaw <joe@ximian.com> 4577 4578 * libsoup/soup-gnutls.c (verify_certificate): Initialize the 4579 certificate before we try to use it. Ahem. 4580 45812004-01-23 Joe Shaw <joe@ximian.com> 4582 4583 * configure.in: Bump version to 2.1.5 and SOUP_RELEASE to 2 4584 45852004-01-21 Joe Shaw <joe@ximian.com> 4586 4587 * configure.in: Require at least GnuTLS 1.0.0. 4588 4589 * libsoup/soup-gnutls.c: Fix the use of deprecated GnuTLS 4590 functions. 4591 (verify_certificate): Use gnutls_x509_crt_import() and 4592 gnutls_x509_crt_check_hostname() instead of 4593 gnutls_x509_check_certificates_hostname(). 4594 (init_dh_params): Use gnutls_dh_params_generate2() instead of 4595 gnutls_dh_params_generate() and gnutls_dh_params_set(). 4596 45972004-01-20 Joe Shaw <joe@ximian.com> 4598 4599 * libsoup/soup-gnutls.c (soup_gnutls_close): gnutls_bye() doesn't 4600 close the socket itself, so we need to do it or else our 4601 connections stay in CLOSE_WAIT forever. 4602 46032004-01-16 Jason Leach <leach@wam.umd.edu> 4604 4605 * libsoup/Makefile.am: builddir != srcdir fixes. 4606 46072004-01-14 Joe Shaw <joe@ximian.com> 4608 4609 * libsoup/soup-gnutls.c (verify_certificate): Remove the 4610 check for GNUTLS_CERT_CORRUPTED, it's not in 1.0.x. 4611 46122004-01-12 JP Rosevear <jpr@ximian.com> 4613 4614 * configure.in: bump version and libtool revision 4615 46162004-01-12 Dan Winship <danw@ximian.com> 4617 4618 * tests/simple-httpd.c (main): Add a g_thread_init() so this works 4619 again. 4620 46212004-01-10 Larry Ewing <lewing@ximian.com> 4622 4623 * libsoup-2.2.pc.in (Libs): use LIBGNUTLS_LIBS in the substitution 4624 string. 4625 46262004-01-09 Joe Shaw <joe@ximian.com> 4627 4628 * acinclude.m4: Include the libgnutls.m4 file. 4629 4630 * configure.in: Remove manual checking for libgnutls-config and 4631 use the AM_PATH_LIBGNUTLS so we can pass in a minimum required 4632 version, which is 0.9.7 for now. 4633 4634 * libsoup/Makefile.am: Some changes for the above change. 4635 4636 * libsoup/soup-gnutls.c: Check for HAVE_SSL, not 4637 HAVE_GNUTLS_GNUTLS_H. 4638 (verify_certificate): Uncomment the SSL certificate hostname 4639 check. 4640 4641 * libsoup/soup-session.c (set_property): Be smart about flushing 4642 our SSL credentials only when the CA file is set to something 4643 different than it was before. 4644 46452004-01-09 Harish K <kharish@novell.com> 4646 * libsoup/soup-soap-response.c (soup_soap_response_from_string): 4647 added code to ignore Header element, if present, while creating 4648 response objects. 4649 46502004-01-05 Dan Winship <danw@ximian.com> 4651 4652 * configure.in: Remove no-longer-relevant socklen_t check 4653 4654 * libsoup/soup-address.c: Reorder #includes for FreeBSD (From Joe 4655 Marcus Clarke, #52566) 4656 4657 * libsoup/soup-dns.c: Likewise 4658 46592003-12-29 JP Rosevear <jpr@ximian.com> 4660 4661 * configure.in: bump version and libtool numbers 4662 46632003-12-22 Dan Winship <danw@ximian.com> 4664 4665 * README, TODO: Update these 4666 46672003-12-22 Dan Winship <danw@ximian.com> 4668 4669 * libsoup/soup-socket.c: Lots of thread-safety stuff, primarly so 4670 you can disconnect a socket from one thread while doing I/O in 4671 another. 4672 4673 * libsoup/soup-message-io.c (soup_message_io_cancel): Split into 4674 soup_message_io_stop() and io_cleanup(), to separate out the "stop 4675 reading/writing" and "free data" phases to allow thread-safe 4676 synchronous cancellation. 4677 (soup_message_io_finished): call both soup_message_io_stop() and 4678 io_cleanup() 4679 (io_error): Only set SOUP_STATUS_IO_ERROR on the message if it 4680 doesn't already have a transport error status (eg, CANCELLED). 4681 (new_iostate): Call io_cleanup() if needed. 4682 4683 * libsoup/soup-status.h: add "SOUP_STATUS_NONE" for 0, to make it 4684 clearer that it's not a status. 4685 4686 * libsoup/soup-message.c (finalize, restarted, finished, 4687 soup_message_set_uri): s/soup_message_io_cancel/soup_message_io_stop/ 4688 (soup_message_cleanup_response): s/0/SOUP_STATUS_NONE/ 4689 4690 * libsoup/soup-connection.c (send_request): Remove 4691 soup_message_io_cancel call. 4692 4693 * libsoup/soup-session-sync.c (send_message): Connect to the 4694 connection's "disconnected" signal rather than using a weak ref, 4695 since that's what we really care about, and it's possible that the 4696 connection may have an extra ref on it somewhere that would keep 4697 it from being destroyed even if it was disconnected. 4698 46992003-12-20 Joe Shaw <joe@ximian.com> 4700 4701 * libsoup/soup-session.c (lookup_auth): If const_path is NULL un 4702 the non-proxy case, then use the root ("/"). 4703 47042003-12-19 Dan Winship <danw@ximian.com> 4705 4706 * libsoup/soup-message-filter.c: New. An interface for objects 4707 that want to act on every message passing through a session. 4708 (Initially being used for authentication, but could also be used 4709 for cache handling, cookie management, etc.) 4710 4711 * libsoup/soup-connection.c (class_init, etc): Add a message 4712 filter property. 4713 (send_request): If the connection has a message filter set, run 4714 it on the message before sending it. 4715 (soup_connection_connect_async, etc): When setting up a tunnel, if 4716 we get back a 407 and the session tries to requeue the message, 4717 either re-send it, or return SOUP_STATUS_TRY_AGAIN (depending on 4718 whether or not the proxy closed the connection). 4719 (soup_connection_connect_sync): Likewise 4720 (send_request, request_done): Ref/unref the connection 4721 4722 * libsoup/soup-session.c (soup_session_get_type): Implement the 4723 SoupMessageFilter interface. 4724 (soup_session_get_connection): Use the session as the connection's 4725 message filter 4726 (soup_session_add_filter, soup_session_remove_filter): Add/remove 4727 filters from the session 4728 (setup_message): do auth handling, and call each of the session's 4729 filters' setup_message methods as well. 4730 (soup_session_send_message_via): No longer needed. 4731 (connect_result): Handle SOUP_STATUS_TRY_AGAIN. 4732 4733 * libsoup/soup-session-async.c (run_queue): Use 4734 soup_connection_send_request, since soup_session_send_message_via 4735 is gone now. 4736 4737 * libsoup/soup-session-sync.c (send_message): Likewise 4738 4739 * libsoup/soup-message.c (soup_message_is_keepalive): A successful 4740 response to a CONNECT is always keepalive, even if it's HTTP/1.0 4741 with no Connection header. 4742 4743 * libsoup/soup-status.h: add SOUP_STATUS_TRY_AGAIN 4744 4745 * libsoup/soup-types.h: Add SoupMessageFilter, and macros for 4746 gobject interface types. 4747 4748 * tests/get.c (main): Add a -p flag to specify a proxy 4749 4750 * tests/simple-proxy.c: Fix #includes 4751 47522003-12-18 Dan Winship <danw@ximian.com> 4753 4754 * libsoup/soup-connection.c (soup_connection_disconnect): Actually 4755 disconnect the socket rather than just unreffing it, since the IO 4756 code may be holding an extra ref on it. 4757 (send_request): connect to the "restarted" signal too 4758 (request_restarted): Deal with "Connection: close" 4759 4760 * libsoup/soup-connection-ntlm.c (ntlm_authorize_pre): Make this 4761 not go into an infinite loop if the server only supports Basic. 4762 47632003-12-17 Rodrigo Moya <rodrigo@ximian.com> 4764 4765 * libsoup/Makefile.am: install soup-message-queue.h with the rest 4766 of the headers. 4767 47682003-12-17 Dan Winship <danw@ximian.com> 4769 4770 * configure.in: Add gthread to glib check 4771 4772 * libsoup/soup-session.c: Make this an abstract class. 4773 4774 * libsoup/soup-session-async.c: A SoupSession class for 4775 asynchronous gmain-based operation; replaces the old SoupSession. 4776 4777 * libsoup/soup-session-sync.c: A SoupSession class for synchronous 4778 blocking operation for use with threaded apps. 4779 4780 * libsoup/soup-types.h, libsoup/soup.h: add the new session 4781 subclasses 4782 4783 * libsoup/soup-connection.c (soup_connection_connect_sync): Don't 4784 try to unref the socket if the socket creation fails. 4785 (soup_connection_reserve): New, to explicitly mark a connection as 4786 being in use without queueing a message on it. 4787 4788 * libsoup/soup-dns.c (check_hostent): Oof. Fix the logic of the 4789 "block" flag to not be reversed. 4790 4791 * libsoup/soup-message.c (finished): set status to FINISHED here. 4792 (soup_message_cancel): Gone; needs to be done at the session 4793 level. 4794 4795 * libsoup/soup-message-queue.c: Add a mutex and make all of the 4796 operations thread-safe. 4797 4798 * libsoup/soup-socket.c (disconnect_internal): Make this 4799 thread-safe. 4800 (soup_socket_connect): Make the sync case work correctly. 4801 4802 * libsoup/Makefile.am: add the SoupSession subclasses 4803 4804 * tests/Makefile.am: libsoup depends on libgthread now, so 4805 revserver doesn't need to explicitly. 4806 4807 * tests/get.c, tests/auth-test.c, tests/simple-proxy.c: Use 4808 soup_session_async_new(). 4809 48102003-12-16 Rodrigo Moya <rodrigo@ximian.com> 4811 4812 * libsoup/soup-soap-response.[ch] (soup_soap_parameter_get_int_value): 4813 new function. 4814 48152003-12-16 Joe Shaw <joe@ximian.com> 4816 4817 * libsoup/soup-connection.c (socket_connect_result, 4818 soup_connection_connect_sync): Only set up a tunnel if the 4819 destination protocol is HTTPS. 4820 4821 * libsoup/soup-message.c (class_init): Add a default handler for 4822 wrote_body. 4823 (wrote_body): Run the SOUP_HANDLER_POST_REQUEST handlers here. 4824 (soup_message_cancel): Don't set the status to 4825 SOUP_STATUS_CANCELLED and call soup_message_finished() if the 4826 status is already SOUP_MESSAGE_STATUS_FINISHED. 4827 4828 * libsoup/soup-session.c (set_property): Don't cancel the session 4829 if the proxy URI set as a property isn't different from the old 4830 one. 4831 (get_host_for_message): Refactor some code so that we can easily 4832 get the right SoupSessionHost for proxies as well as from the 4833 message. 4834 (authenticate_auth): Take a gboolean proxy parameter. Check it to 4835 see which URI (message URI or proxy URI) to use for 4836 authentication. Add a long comment about lack of clarity in RFC 4837 2617 with respect to proxies and protection spaces. 4838 48392003-12-15 Dan Winship <danw@ximian.com> 4840 4841 * libsoup/soup-socket.h (soup_socket_read, soup_socket_read_until, 4842 soup_socket_write): s/guint/gsize/ to match the definitions in 4843 soup-socket.c. #52167. 4844 48452003-12-12 Rodrigo Moya <rodrigo@ximian.com> 4846 4847 * libsoup/soup-soap-message.c: removed debugging of the messages here. 4848 48492003-12-12 Rodrigo Moya <rodrigo@ximian.com> 4850 4851 * libsoup/soup-soap-message.c (soup_soap_message_start_envelope): 4852 added information for SOAP-ENV namespace. 4853 48542003-12-10 Dan Winship <danw@ximian.com> 4855 4856 * libsoup/soup-message-client-io.c (parse_response_headers): if we 4857 receive an HTTP/1.0 response to an HTTP/1.1 request, downgrade the 4858 message's http_version so the keep-alive handling is correct. 4859 Fixes a problem noticed almost simultaneously by Rodrigo and Joe. 4860 4861 * libsoup/soup-message.c (soup_message_restarted, etc): Add a 4862 "restarted" signal as suggested by Joe. 4863 4864 * libsoup/soup-message-io.c (soup_message_io_finished): emit 4865 either "restarted" or "finished" as appropriate 4866 4867 * libsoup/soup-session.c (soup_session_queue_message): Connect to 4868 "restarted" and run the queue if a message gets restarted 4869 4870 * libsoup/soup-status.h: Remove a stray comma that gtk-doc doesn't 4871 like. 4872 48732003-12-10 Tambet Ingo <tambet@ximian.com> 4874 4875 * configure.in: Use autoconfig to check for socklen_t ... 4876 4877 * libsoup/soup-address.c: ... and remove it from here ... 4878 4879 * libsoup/soup-dns.c: ... and here. 4880 48812003-12-09 Rodrigo Moya <rodrigo@ximian.com> 4882 4883 * libsoup/soup-soap-message.c (soup_soap_message_persist): 4884 (soup_soap_message_parse_response): print out request/response's 4885 contents, if in debug mode. 4886 48872003-12-07 JP Rosevear <jpr@ximian.com> 4888 4889 * configure.in: Bump version 4890 48912003-11-28 Rodrigo Moya <rodrigo@ximian.com> 4892 4893 * libsoup/soup-soap-response.[ch] 4894 (soup_soap_parameter_get_first_child, 4895 soup_soap_parameter_get_first_child_by_name, 4896 soup_soap_parameter_get_next_child, 4897 soup_soap_parameter_get_next_child_by_name): new functions to 4898 manage SoupSoapParameter's children. 4899 (soup_soap_response_get_first_parameter): dont return a GList, but 4900 a SoupSoapParameter contained in the GList. 4901 49022003-11-26 Rodrigo Moya <rodrigo@ximian.com> 4903 4904 * libsoup/soup-soap-response.[ch] 4905 (soup_soap_parameter_get_string_value): new function. 4906 49072003-11-26 Rodrigo Moya <rodrigo@ximian.com> 4908 4909 * libsoup/soup-soap-response.[ch]: added SoupSoapParameter 4910 structure, to "hide" the usage of xmlNode's. 4911 (soup_soap_parameter_get_name): functions to manage SOAP 4912 response parameters. 4913 (soup_soap_response_get_first_parameter, 4914 soup_soap_response_get_first_parameter_by_name, 4915 soup_soap_response_get_next_parameter, 4916 soup_soap_response_get_next_parameter_by_name): 4917 new functions for an easy access to the response's parameters. 4918 (soup_soap_response_from_string): removed warnings. 4919 49202003-11-25 Rodrigo Moya <rodrigo@ximian.com> 4921 4922 * libsoup/soup-soap-response.c (soup_soap_response_set_method_name): 4923 fixed typo. 4924 49252003-11-25 Rodrigo Moya <rodrigo@ximian.com> 4926 4927 * libsoup/soup-soap-response.[ch] (soup_soap_response_get_method_name, 4928 soup_soap_response_set_method_name, soup_soap_message_get_parameters): 4929 new functions. 4930 (finalize): NULL out new private fields. 4931 (soup_soap_response_from_string): added validation code. 4932 49332003-11-23 Rodrigo Moya <rodrigo@ximian.com> 4934 4935 * libsoup/soup-soap-response.[ch]: new class for managing SOAP 4936 responses. 4937 4938 * libsoup/soup-soap-message.[ch] (soup_soap_message_parse_response): 4939 new function. 4940 4941 * libsoup/Makefile.am: added new files. 4942 49432003-11-18 Rodney Dawes <dobey@ximian.com> 4944 4945 * gtk-doc.make: Add gtk-doc.make to cvs for systems without gtk-doc 4946 49472003-11-18 Rodney Dawes <dobey@ximian.com> 4948 4949 * acinclude.m4: Add GTK_DOC_CHECK 4950 49512003-11-18 Dan Winship <danw@ximian.com> 4952 4953 * configure.in: Replace old gtk-doc test with GTK_DOC_CHECK() 4954 (AC_OUTPUT): add docs/Makefile, docs/reference/Makefile 4955 4956 * autogen.sh (REQUIRED_AUTOMAKE_VERSION): 1.6, for gtk-doc.make 4957 4958 * Makefile.am: updates for gtk-doc 4959 (SUBDIRS): add back "docs" 4960 4961 * docs/Makefile.am (EXTRA_DIST): remove, since those old docs 4962 aren't around any more 4963 4964 * docs/reference/*: set up gtk-doc 4965 4966 * libsoup/Makefile.am (INCLUDES): Change G_LOG_DOMAIN to 4967 "libsoup". Remove unused defines. 4968 4969 * libsoup/soup-connection.c: Fix doc comments 4970 * libsoup/soup-message.c: Likewise 4971 * libsoup/soup-misc.c: Likewise 4972 * libsoup/soup-socket.c: Likewise 4973 * libsoup/soup-uri.c: Likewise 4974 4975 * libsoup/soup-address.h: Fixes to please gtk-doc 4976 * libsoup/soup-connection.h: Likewise 4977 * libsoup/soup-message.h: Likewise 4978 * libsoup/soup-message-private.h: Likewise 4979 * libsoup/soup-misc.h: Likewise 4980 * libsoup/soup-server-auth.h: Likewise 4981 * libsoup/soup-socket.h: Likewise 4982 * libsoup/soup-status.h: Likewise 4983 49842003-11-18 Dan Winship <danw@ximian.com> 4985 4986 * configure.in: Fix up the SSL checks some. Remove some useless 4987 old header checks. 4988 4989 * libsoup/soup-misc.h: declare soup_ssl_supported. 4990 4991 * libsoup/soup-gnutls.c: add soup_ssl_supported declaration. 4992 4993 * libsoup/soup-nossl.c: Not an SSL implementation, built if 4994 HAVE_SSL is not defined. 4995 4996 * libsoup/Makefile.am (libsoup_2_2_la_SOURCES): add soup-nossl.c 4997 4998 * libsoup/soup-socket.c (soup_socket_start_ssl): Return success or 4999 failure. 5000 (listen_watch): Deal with soup_socket_start_ssl failing. 5001 5002 * libsoup/soup-connection.c (tunnel_connect_finished, 5003 socket_connect_result, soup_connection_connect_sync): Deal with 5004 the soup_socket_start_ssl failing. 5005 5006 * libsoup/soup-server.c (soup_server_new): Deal with 5007 soup_ssl_get_server_credentials failing 5008 50092003-11-18 Rodrigo Moya <rodrigo@ximian.com> 5010 5011 * libsoup/soup-soap-message.[ch] (soup_soap_message_start_fault, 5012 soup_soap_message_end_fault, soup_soap_message_start_fault_detail, 5013 soup_soap_message_end_fault_detail, soup_soap_message_start_header, 5014 soup_soap_message_end_header, 5015 soup_soap_message_start_header_element, 5016 soup_soap_message_end_header_element, soup_soap_message_write_int, 5017 soup_soap_message_write_double, soup_soap_message_write_base64, 5018 soup_soap_message_write_time, soup_soap_message_write_string, 5019 soup_soap_message_write_buffer, soup_soap_message_set_element_type, 5020 soup_soap_message_set_null, soup_soap_message_add_attribute, 5021 soup_soap_message_add_namespace, 5022 soup_soap_message_set_default_namespace, 5023 soup_soap_message_get_namespace_prefix, 5024 soup_soap_message_set_encoding_style, soup_soap_message_reset, 5025 soup_soap_message_persist): new functions from old SoupSerializer. 5026 50272003-11-17 Rodrigo Moya <rodrigo@ximian.com> 5028 5029 * libsoup/soup-soap-message.[ch] (soup_soap_message_new, 5030 soup_soap_message_new_from_uri): added a bunch of initialization 5031 parameters. 5032 (soup_soap_message_get_xml_doc, soup_soap_message_start_envelope, 5033 soup_soap_message_end_envelope, soup_soap_message_start_body, 5034 soup_soap_message_end_body, soup_soap_message_start_element, 5035 soup_soap_message_end_element): 5036 new functions. 5037 5038 * configure.in: depend on libxml-2.0 for the SOAP code. 5039 5040 * libsoup/Makefile.am: use XML CFLAGS and LIBS. 5041 50422003-11-17 Joe Shaw <joe@ximian.com> 5043 5044 * configure.in: Add in the --enable-libgpg-error flag from the 2.0 5045 branch. 5046 5047 * acinclude.m4: Include the gpg-error macros. 5048 50492003-11-17 Rodrigo Moya <rodrigo@ximian.com> 5050 5051 * libsoup/soup-soap-message.[ch]: new class to make it easier to 5052 build SOAP messages. 5053 5054 * libsoup/Makefile.am: added new files. 5055 5056 * configure.in: increased version number. 5057 50582003-10-24 Joe Shaw <joe@ximian.com> 5059 5060 * libsoup/soup-address.c (update_address_from_entry): Call 5061 soup_dns_entry_get_hostent() on the SoupAddress passed in, not the 5062 one in addr->priv->lookup. Fixes a crash on synchronous DNS 5063 lookups. 5064 5065 * libsoup/soup-server.c (soup_server_new): We need to ref the 5066 address we're binding to, because soup_socket_get_local_address() 5067 doesn't ref for us. 5068 50692003-10-23 Dan Winship <danw@ximian.com> 5070 5071 * libsoup/soup-socket.c (init): Initialize flags to default 5072 values. 5073 50742003-09-23 Dan Winship <danw@ximian.com> 5075 5076 * libsoup/soup-gnutls.c (SoupGNUTLSCred): Remove refcounting, but 5077 note whether or not the CA file has been loaded. 5078 (SoupGNUTLSChannel): add a "hostname" field. 5079 (verify_certificate): Remove the comment about not being able to 5080 verify the hostname because of soup problems. Now it's because of 5081 GNUTLS problems instead. 5082 (soup_ssl_wrap_iochannel): Renamed from soup_ssl_get_iochannel, 5083 and takes a hostname and a creds argument now. 5084 (soup_ssl_get_client_credentials, 5085 soup_ssl_get_server_credentials): Return client/server credentials 5086 structures. 5087 (soup_ssl_free_client_credentials, 5088 soup_ssl_free_server_credentials): and free them. 5089 5090 * libsoup/soup-session.c (class_init, set_property, get_property): 5091 add ssl_ca_file property 5092 (get_host_for_message): when returning an SSL host for the first 5093 time, create a client credentials structure for the session. 5094 (run_queue): Pass the ssl creds to the new connection. Also fix an 5095 unrelated bug that caused infinite loops on "bad hostname". 5096 5097 * libsoup/soup-server.c: Use GObject properties, including 5098 ssl_cert_file and ssl_key_file properties. 5099 (soup_server_new): Remove "protocol" argument; if the cert file 5100 and key file properties were set, create a server credential 5101 structure from them and pass that to soup_socket_server_new. 5102 5103 * libsoup/soup-connection.c (SoupConnectionPrivate): Rename 5104 dest_uri to origin_uri to match RFC 2616 terminology. Add an 5105 "ssl_creds" field. 5106 (class_init, set_property, get_property): add SSL_CREDS property 5107 (soup_connection_connect_async, soup_connection_connect_sync): 5108 Pass ssl_creds to soup_socket_client_new calls. 5109 5110 * libsoup/soup-socket.c: Use GObject properties, including an 5111 ssl_creds property 5112 (soup_socket_set_flags): Gone (replaced with boolean properties) 5113 (soup_socket_new): Make this take a list of properties 5114 (listen_watch): copy ssl creds from listener to new socket 5115 (soup_socket_start_ssl): Pass remote hostname and socket creds 5116 structure to soup_ssl_wrap_iochannel. 5117 (soup_socket_client_new_async, soup_socket_client_new_sync, 5118 soup_socket_server_new): Replace the SSL boolean with an ssl_creds 5119 structure. 5120 5121 * libsoup/soup-misc.c (soup_set_ssl_ca_file, 5122 soup_set_ssl_cert_files, soup_get_ssl_ca_file, 5123 soup_get_ssl_cert_files): Gone. SSL state is now per-session or 5124 per-server. 5125 5126 * tests/get.c: add a "-c CAfile" argument, for loading a CA 5127 certificate file to validate https connections against 5128 5129 * tests/simple-httpd.c: Add "-c certfile" and "-k keyfile" 5130 arguments for loading an SSL server certificate. Only start an SSL 5131 server if those arguments were used. 5132 5133 * tests/test-cert.pem: 5134 * tests/test-key.pem: SSL certificate for testing simple-httpd 5135 5136 * tests/revserver.c: Update for API changes 5137 * tests/simple-proxy.c: Likewise 5138 51392003-09-22 Dan Winship <danw@ximian.com> 5140 5141 * libsoup/soup-message-io.c: Move RESPONSE_BLOCK_SIZE #define here 5142 from soup-private.h 5143 5144 * libsoup/soup-misc.c (soup_load_config, etc): Remove all this. 5145 (soup_set_security_policy, soup_get_security_policy): Remove, 5146 since the GNUTLS backend doesn't actually implement it. 5147 (soup_set_ssl_ca_dir, soup_get_ssl_ca_dir): Likewise 5148 5149 * libsoup/soup-misc.h: sync to soup-misc.c. Don't #include extra 5150 stuff. 5151 5152 * libsoup/soup-types.h (SOUP_MAKE_TYPE): Move this here from 5153 soup-private.h 5154 5155 * libsoup/soup-ssl.h: Merge soup_ssl_get_iochannel and 5156 soup_ssl_get_server_iochannel into a single function that takes a 5157 SoupSSLType. 5158 5159 * libsoup/soup-gnutls.c: Remove soup_get_ssl_ca_dir() reference. 5160 (soup_ssl_get_iochannel): Renamed from soup_gnutls_get_iochannel. 5161 (soup_gnutls_set_security_policy): Gone 5162 5163 * libsoup/soup-gnutls.h 5164 * libsoup/soup-ssl.c: Gone; soup-ssl.h is the #include file for 5165 soup-gnutls.c now 5166 5167 * libsoup/soup-socket.c: Move soup_sockaddr_max 5168 #define here from soup-private.h 5169 (soup_socket_start_ssl): Update for new soup_ssl_get_iochannel 5170 prototype. 5171 5172 * libsoup/soup-private.h: Gone 5173 5174 * libsoup/soup-address.c: Fix #includes for soup-private.h and 5175 soup-misc.h changes 5176 * libsoup/soup-auth-digest.c: Likewise 5177 * libsoup/soup-auth.c: Likewise 5178 * libsoup/soup-connection-ntlm.c: Likewise 5179 * libsoup/soup-connection.c: Likewise 5180 * libsoup/soup-dns.c: Likewise 5181 * libsoup/soup-gnutls.c: Likewise 5182 * libsoup/soup-headers.c: Likewise 5183 * libsoup/soup-message-client-io.c: Likewise 5184 * libsoup/soup-message-handlers.c: Likewise 5185 * libsoup/soup-message-io.c: Likewise 5186 * libsoup/soup-message-server-io.c: Likewise 5187 * libsoup/soup-message.c: Likewise 5188 * libsoup/soup-server-message.c: Likewise 5189 * libsoup/soup-server.c: Likewise 5190 * libsoup/soup-session.c: Likewise 5191 * libsoup/soup-socket.c: Likewise 5192 * tests/auth-test.c: Likewise 5193 51942003-09-19 Dan Winship <danw@ximian.com> 5195 5196 * libsoup/soup-address.c (update_address_from_entry): free the 5197 hostent. 5198 5199 * libsoup/soup-connection-ntlm.c (ntlm_authorize_pre): Don't leak 5200 the domain 5201 5202 * libsoup/soup-gnutls.c (soup_gnutls_get_iochannel): Add some more 5203 iochannel initialization. Not sure how this worked before... 5204 5205 * libsoup/soup-message.c (soup_message_cleanup_response): Renamed 5206 from soup_message_prepare (and a few things removed). 5207 5208 * libsoup/soup-message-client-io.c (soup_message_send_request): 5209 s/soup_message_prepare/soup_message_cleanup_response/ 5210 5211 * libsoup/soup-message-io.c (io_read): Replace the final "\r\n" 5212 with "\0" on the headers before passing them to the parse 5213 function. 5214 (io_read): Call soup_message_cleanup_response after returning an 5215 informational response so the data doesn't leak. 5216 5217 * libsoup/soup-headers.c (soup_headers_parse): Update for 5218 soup-message-io.c:io_read change 5219 5220 * libsoup/soup-server.c (soup_server_new, 5221 soup_server_new_with_host): Don't leak the SoupAddress. 5222 5223 * libsoup/soup-session.c (class_init): Make PROP_PROXY_URI not 5224 CONSTRUCT_ONLY. 5225 (set_property): If the proxy uri changes, call 5226 soup_session_abort() and cleanup_hosts(). 5227 (request_finished, final_finished): Fix a bug when requeuing 5228 messages. 5229 5230 * tests/libsoup.supp: valgrind suppression file for soup tests 5231 5232 * tests/Makefile.am (EXTRA_DIST): dist it. 5233 (noinst_PROGRAMS): move the former check_PROGRAMS to 5234 noinst_PROGRAMS instead. 5235 52362003-09-18 Dan Winship <danw@ximian.com> 5237 5238 * libsoup/soup-message.c: Add wrote_informational and 5239 got_informational signals. 5240 5241 * libsoup/soup-message-client-io.c (get_request_headers): Set the 5242 EXPECT_CONTINUE flag on the message if that header is set. 5243 5244 * libsoup/soup-message-server-io.c (parse_request_headers): 5245 Likewise 5246 5247 * libsoup/soup-message-io.c (io_write): Set read_state to HEADERS 5248 when blocking on an expect-continue. Emit wrote_informational 5249 instead of wrote_headers in the 1xx case. 5250 (io_read): Set read_state to BLOCKING, not NOT_STARTED after 5251 reading a 100 Continue response. Emit got_informational instead of 5252 got_headers in the 1xx case. 5253 5254 * libsoup/soup-session.c (soup_session_send_message): Reorder 5255 things to deal with the fact that the message could finish right 5256 away if there is a connection available and the server is very 5257 close. 5258 5259 * libsoup/soup-status.h: Rename SOUP_STATUS_CLASS_TRANSPORT to 5260 SOUP_STATUS_CLASS_TRANSPORT_ERROR. 5261 52622003-09-17 Dan Winship <danw@ximian.com> 5263 5264 * libsoup/soup-session.c (find_oldest_connection): Fix two bugs 5265 (one that pruned too little, one that pruned too much). 5266 (queue_message): When requeuing, don't run the queue; 5267 final_finished will take care of that later. 5268 (soup_session_abort): New, to cancel all pending requests. 5269 5270 * libsoup/soup-socket.c (soup_socket_connect, got_address): ref 5271 the socket while waiting for the address to resolve 5272 52732003-09-17 Dan Winship <danw@ximian.com> 5274 5275 * libsoup/soup-connection.c (soup_connection_new): Replaces the 5276 three previous soup_connection_new* functions and uses gobject 5277 properties to set the destination and proxy uris. 5278 (class_init): set up two more signals, authenticate and 5279 reauthenticate. 5280 (soup_connection_send_request): virtualize 5281 (send_request): Default implementation 5282 5283 * libsoup/soup-connection-ntlm.c: New SoupConnection subclass that 5284 also handles NTLM authentication. Includes all of the NTLM code 5285 formerly in soup-auth-ntlm.c. 5286 5287 * libsoup/soup-auth-ntlm.[ch]: Gone. 5288 5289 * libsoup/soup-auth.c: Remove NTLM refs 5290 5291 * libsoup/soup-session.c (class_init): Add gobject properties for 5292 proxy, max_conns, use_ntlm. Change the "authenticate" and 5293 "reauthenticate" signal prototypes to not pass a SoupAuth (so they 5294 can be used for authenticating SoupConnectionNTLM as well, which 5295 doesn't use a SoupAuth). 5296 (soup_session_new): Renamed from soup_session_new_default. 5297 (soup_session_new_with_options): Replaces 5298 soup_session_new_with_proxy and soup_session_new_full. Takes 5299 gobject properties. 5300 (run_queue): Create a new connection of type SoupConnection or 5301 SoupConnectionNTLM depending on our "use_ntlm" property. Connect 5302 to its authenticate and reauthenticate signals. 5303 (connection_authenticate, connection_reauthenticate): proxy these 5304 signals. 5305 5306 * libsoup/soup-address.c (update_address_from_entry): Fix a 5307 crasher when failing to resolve the address. 5308 5309 * libsoup/soup-dns.c (check_hostent): Fix some "how was this 5310 working before" bugs. 5311 5312 * libsoup/soup-message-client-io.c (soup_message_send_request): 5313 call soup_message_prepare() to clean up the existing response 5314 state. 5315 5316 * libsoup/soup-message-io.c (io_error): Set the read_state to DONE 5317 when processing an OK EOF. 5318 5319 * libsoup/soup-status.h (SoupStatusClass): fix the numbering of 5320 these so that SOUP_STATUS_CLASS_SUCCESS is 2, etc. 5321 5322 * tests/auth-test.c (authenticate, reauthenticate): Update for new 5323 prototypes. 5324 (main): Use soup_session_new. 5325 * tests/get.c (main): Likewise. 5326 * tests/simple-proxy.c (main): Likewise. 5327 53282003-09-10 Dan Winship <danw@ximian.com> 5329 5330 * libsoup/soup-session.c: Add "authenticate" and "reauthenticate" 5331 signals. 5332 (invalidate_auth): Remove the call to soup_auth_invalidate. 5333 (authenticate_auth): soup_auth_fn is gone. If the URI doesn't 5334 contain authentication, then emit "authenticate" or 5335 "reauthenticate" (depending on whether or not this is the first 5336 time we've asked for a password for this auth). 5337 (update_auth_internal): If the server rejects our 5338 username/password, don't bail out immediately. Try doing a 5339 "reauthenticate" first. 5340 5341 * libsoup/soup-misc.c (soup_set_authorize_callback): Gone 5342 5343 * libsoup/soup-auth.c (soup_auth_new_from_header_list): Remove the 5344 "pref" arg. 5345 (soup_auth_invalidate): Remove this; it doesn't actually do 5346 anything useful for us. 5347 5348 * libsoup/soup-auth-basic.c (invalidate): Remove 5349 * libsoup/soup-auth-digest.c: (invalidate): Remove 5350 * libsoup/soup-auth-ntlm.c: (invalidate): Remove 5351 5352 * libsoup/soup-uri.c: Remove all references to "authmech". 5353 (soup_uri_set_auth): Remove this too. 5354 5355 * tests/auth-test.c: Update to use the "authenticate" and 5356 "reauthenticate" signals instead of encoding usernames and 5357 passwords in the URIs. Add a few more test cases. 5358 53592003-09-10 Dan Winship <danw@ximian.com> 5360 5361 * libsoup/soup-message-private.h (SoupMessagePrivate): Remove the 5362 "status" field from here, since it's mostly used by SoupSession, 5363 which shouldn't need access to SoupMessagePrivate. 5364 5365 * libsoup/soup-message.h (SoupMessage): Move it here. 5366 (SoupCallbackFn): Remove this alias for SoupMessageCallbackFn. 5367 (soup_message_set_uri): also moved from soup-message-private.h 5368 5369 * libsoup/soup-message.c: s/msg->priv->status/msg->status/. 5370 5371 * libsoup/soup-message-handlers.c: 5372 s/SoupCallbackFn/SoupMessageCallbackFn/ everywhere. 5373 5374 * libsoup/soup-message-io.c (soup_message_io_client, 5375 soup_message_io_server, soup_message_io_unpause): Don't set up an 5376 idle handler, just jump right in to reading/writing; if this is a 5377 synchronous socket, then the caller wants to block, and if it's 5378 not, then we'll quickly get an EAGAIN anyway. 5379 5380 * libsoup/soup-session.c: (queue_message): Likewise. 5381 (*) Update for SoupMessageStatus move and remove 5382 soup-message-private.h include. 5383 5384 * libsoup/soup-server-message.c: Remove soup-message-private.h 5385 include. 5386 5387 * libsoup/soup-server.c: Likewise. 5388 5389 * libsoup/soup-connection.c (soup_connection_is_connected, 5390 soup_connection_is_new): Remove these, since they weren't being 5391 used. 5392 5393 * libsoup/soup-md5-utils.c: Moved from md5-utils.c and renamed, to 5394 avoid namespace pollution. 5395 5396 * libsoup/soup-auth-digest.c: Update for that. 5397 * libsoup/soup-server-auth.c: Likewise 5398 5399 * tests/auth-test.c: Remove soup-message-private.h include 5400 54012003-09-09 Dan Winship <danw@ximian.com> 5402 5403 Beginnings of improved synchronous API support 5404 5405 * libsoup/soup-dns.c: Simplify this by making it not automatically 5406 return the result: force the caller to poll. (This isn't really a 5407 performance issue: the results should come back quickly anyway.) 5408 Also, make the cache thread-safe. 5409 (soup_dns_entry_from_name): Was soup_gethostbyname 5410 (soup_dns_entry_from_addr): Was soup_gethostbyaddr 5411 (soup_dns_entry_check_lookup): Used to poll to see if DNS is done 5412 (soup_dns_entry_get_hostent): Gets the hostent from an entry (and 5413 blocks if it's not resolved yet). 5414 5415 * libsoup/soup-address.c: Update for soup-dns changes. 5416 (soup_address_new): Don't automatically start resolving the 5417 hostname now, since we don't know if the caller is going to want 5418 it resolved synchronously or asynchronously. 5419 (soup_address_resolve_async): Renamed from soup_address_resolve. 5420 (soup_address_resolve_sync): New routine to do blocking 5421 synchronous DNS. 5422 5423 * libsoup/soup-socket.c (soup_socket_connect): Now returns a 5424 status value directly when connecting synchronously. 5425 (soup_socket_client_new_async, soup_socket_client_new_sync): 5426 Separate async/sync client socket functions. 5427 (soup_socket_get_iochannel): Made static since it was not used 5428 outside soup-socket. 5429 5430 * libsoup/soup-connection.c (soup_connection_new, 5431 soup_connection_new_proxy, soup_connection_new_tunnel): Just set 5432 up the data, don't actually start connecting. 5433 (soup_connection_connect_async, soup_connection_connect_sync): New 5434 async and sync SoupConnection connecting routines. 5435 (soup_connection_get_socket): Remove this since it wasn't being 5436 used. 5437 5438 * libsoup/soup-session.c (final_finished): Run the queue since a 5439 connection is now freed up. 5440 (run_queue): Update for soup_connection_new* changes. 5441 5442 * libsoup/soup-misc.c (soup_substring_index): Remove, since it 5443 wasn't being used any more. 5444 5445 * libsoup/soup-private.h: Remove some prototypes for functions 5446 that no longer exist. 5447 5448 * libsoup/soup-uri.c (soup_uri_copy_root): New utility function 5449 (copies the protocol, host, and port of a SoupUri). 5450 5451 * tests/auth-test.c: 5452 * tests/get.c: 5453 * tests/simple-proxy.c: belatedly update for soup-session change 5454 5455 * tests/revserver.c: Handle each new connection in its own thread, 5456 using synchronous SoupSocket calls. 5457 54582003-09-05 Dan Winship <danw@ximian.com> 5459 5460 * libsoup/soup-session.c: Move a bunch of logic here from 5461 soup-context. Now the session keeps track of hosts (instead of 5462 having a global soup_hosts hash) and their connections. 5463 (soup_session_new_with_proxy, soup_session_new_full): New session 5464 constructors to specify a proxy or a proxy and connection limits 5465 (send_request): Add Authorization and Proxy-Authorization headers 5466 before sending off the request. 5467 (soup_session_queue_message, et al): Improve the way this works. 5468 There's no need to use timeouts to wait for connections to become 5469 free; we *know* when they become free. 5470 5471 * libsoup/soup-private.h: Remove SoupHost and some other 5472 no-longer-used stuff. 5473 5474 * libsoup/soup-misc.c (soup_set_proxy, soup_get_proxy, 5475 soup_set_connection_limit, soup_set_connection_limit): Gone. These 5476 are all per-session now. 5477 5478 * libsoup/soup-message.c: Remove all SoupContext references 5479 (mostly replaced with SoupUri references) 5480 (cleanup_message): priv->connect_tag and priv->connection are gone 5481 now, so this was just soup_message_io_cancel(). So remove 5482 cleanup_message and replace it with that everywhere. 5483 (soup_message_disconnect): Gone. 5484 (soup_message_set_uri): Replaces soup_message_set_context. 5485 (soup_message_set_connection, soup_message_get_connection): Gone 5486 5487 * libsoup/soup-message-server-io.c (parse_request_headers): 5488 s/soup_message_set_context/soup_message_set_uri/ 5489 5490 * libsoup/soup-message-private.h (SoupMessagePrivate): Remove 5491 connect_tag, context, and connection. 5492 5493 * libsoup/soup-message-client-io.c (encode_http_auth): Gone. 5494 5495 * libsoup/soup-context.c: Gone 5496 5497 * tests/auth-test.c (identify_auth): update for session/context 5498 changes 5499 55002003-09-03 Dan Winship <danw@ximian.com> 5501 5502 * libsoup/soup-status.h: Renamed from soup-error.h, with types 5503 and defines renamed accordingly. 5504 5505 * libsoup/soup-message.h (SoupMessage): Rename errorcode to 5506 status_code and errorphrase to reason_phrase. Remove errorclass. 5507 (SOUP_MESSAGE_IS_ERROR): Remove this. You can't classify redirects 5508 as being either "errors" or "not errors", so its semantics are 5509 guaranteed to be wrong sometimes. 5510 5511 * libsoup/soup-message.c (soup_message_set_status, 5512 soup_message_set_status_full): Renamed 5513 5514 * libsoup/soup-message-handlers.c 5515 (soup_message_add_status_code_handler, 5516 soup_message_add_status_class_handler): Rename. 5517 5518 * libsoup/soup-session.c (soup_session_send_message): Make this 5519 return a status code rather than a status class. 5520 5521 * libsoup/soup-message-private.h (SoupMessagePrivate): Remove some 5522 unrelated unused fields (retries, callback, user_data). 5523 5524 * ...: Updates 5525 55262003-09-02 Dan Winship <danw@ximian.com> 5527 5528 * libsoup/soup-session.c: First draft at the new object to 5529 maintain formerly-global state. (Not yet complete; still need to 5530 get rid of SoupContext). 5531 5532 * libsoup/soup-message-queue.c: Data structure used by SoupSession 5533 5534 * libsoup/soup-queue.c: Gone. Mostly moved into soup-session, but 5535 some bits went into soup-connection. 5536 5537 * libsoup/soup-connection.c (soup_connection_send_request): New, 5538 to send a request on a connection. The connection updates its 5539 internal state and then hands off to soup_message_send_request. 5540 (request_done): Callback set up by soup_connection_send_request. 5541 Marks the connection as no-longer-in-use, and disconnects it if 5542 the message says to. 5543 (soup_connection_set_in_use, soup_connection_mark_old): No longer 5544 needed; the connection takes care of this itself now. 5545 (soup_connection_new_proxy): New, to create a new connection that 5546 is explicitly marked as being through an HTTP proxy. 5547 (soup_connection_new_tunnel): New, to create a new HTTPS 5548 connection through a proxy. (Includes the code to send the 5549 CONNECT.) 5550 5551 * libsoup/soup-context.c (try_existing_connections): Don't need to 5552 call soup_connection_set_in_use. 5553 (try_create_connection): Use soup_connection_new, 5554 soup_connection_new_proxy, or soup_connection_new_tunnel as 5555 appropriate. 5556 5557 * libsoup/soup-message.c (soup_message_prepare): Replaces 5558 queue_message. 5559 (soup_message_queue, soup_message_requeue, soup_message_prepare): 5560 Gone. This must be done via a SoupSession now. 5561 (soup_message_set_connection): don't need to mark in_use/not 5562 in_use. Also, msg->priv->socket is gone now. 5563 (soup_message_get_socket): Gone. 5564 5565 * libsoup/soup-message-handlers.c (soup_message_run_handlers): 5566 Remove references to global handlers. 5567 (redirect_handler, authorize_handler): Moved to soup-session.c. 5568 5569 * libsoup/soup-misc.c (soup_shutdown): Gone; just unref the 5570 session to shut down now. 5571 5572 * libsoup/soup.h: add soup-session.h 5573 5574 * libsoup/Makefile.am: updates 5575 5576 * tests/auth-test.c, tests/get.c, tests/simple-proxy.c: Use 5577 SoupSession. 5578 55792003-08-29 Dan Winship <danw@ximian.com> 5580 5581 * libsoup/soup-message-io.c: Major rewrite. There is now only a 5582 single IO state object (instead of one for reading and one for 5583 writing), and the IO code handles switching back and forth between 5584 reading and writing as appropriate (including handling the extra 5585 switches needed for "Expect: 100-continue"). 5586 (soup_message_io_client, soup_message_io_server): The new entry 5587 points. 5588 (soup_message_io_cancel): If the caller cancels the IO when we 5589 were expecting to read more data, disconnect the socket. 5590 5591 * libsoup/soup-message.h (SoupMessageFlags): add 5592 SOUP_MESSAGE_EXPECT_CONTINUE, to indicate that the IO code should 5593 do the special expect-continue handling. 5594 5595 * libsoup/soup-message.c: Move all the signal stuff here. Remove 5596 the "done_reading" and "done_writing" signals and replace them 5597 with a single "finished" signal. (A single signal. Say that 10 5598 times fast!) 5599 (soup_message_got_headers, etc): Functions to emit signals. 5600 (got_headers, got_chunk, got_body): Default signal methods that 5601 call soup_message_run_handlers. 5602 (finished): Default signal method that replaces 5603 soup_message_issue_callback. 5604 ([various]): s/soup_message_issue_callback/soup_message_finished/ 5605 (soup_message_requeue): There's no soup_message_set_read_callbacks 5606 any more, so if the caller requeues while it's still reading, just 5607 cancel the read. 5608 (soup_message_add_chunk, soup_message_add_final_chunk, 5609 soup_message_pop_chunk): Moved here from soup-server-message, 5610 although we don't actually quite support using chunked encoding 5611 for requests yet. 5612 5613 * libsoup/soup-server-message.c (soup_server_message_new): No 5614 longer takes a socket argument. 5615 (soup_server_message_add_chunk, soup_server_message_get_chunk): 5616 Moved into SoupMessage. 5617 5618 * libsoup/soup-message-handlers.c (global_handlers): Make these 5619 POST_BODY rather than PRE_BODY, so they won't mess up the IO 5620 channel when the requeue the message. 5621 (soup_message_run_handlers): Don't need to issue the message 5622 callback from here any more. 5623 (authorize_handler): Just leave the error as 401 or 407 (see 5624 soup-error.h change) 5625 5626 * libsoup/soup-message-client-io.c (soup_message_send_request): 5627 Replaces soup_message_write_request and 5628 soup_message_read_response. 5629 5630 * libsoup/soup-message-server-io.c: Parallel to 5631 soup-message-client-io.c, this defines the server-side header 5632 handling. 5633 (soup_message_read_request): Its entry point. 5634 5635 * libsoup/soup-server.c: Lots of code moved into 5636 soup-message-server-io.c. Update for other changes. 5637 5638 * libsoup/soup-queue.c: Update for changes 5639 5640 * libsoup/soup-socket.c (read_from_network, soup_socket_write): 5641 Don't call soup_socket_disconnect() on an error, just return 5642 SOUP_SOCKET_ERROR. Otherwise soup_socket_disconnect() could emit 5643 signals that will mess up the caller of the read/write function. 5644 5645 * libsoup/soup-connection.c (soup_connection_disconnect): When 5646 disconnecting the socket, disconnect from its signals first to 5647 prevent bad reentrancy. 5648 5649 * libsoup/soup-error.h: Kill off SOUP_ERROR_CANT_AUTHENTICATE and 5650 SOUP_ERROR_CANT_AUTHENTICATE_PROXY, since they don't really say 5651 anything that SOUP_ERROR_UNATHORIZED and 5652 SOUP_ERROR_PROXY_UNAUTHORIZED don't say. (And now, all of the 5653 "transport" errors actually are transport-related.) 5654 5655 * tests/auth-test.c (main): s/CANT_AUTHENTICATE/UNAUTHORIZED/ 5656 5657 * tests/simple-proxy.c: Complicate this a bunch. In particular, 5658 use SOUP_MESSAGE_OVERWRITE_CHUNKS and the GOT_CHUNK signal, and 5659 pass the data back to the client in chunked format. 5660 56612003-08-27 Dan Winship <danw@ximian.com> 5662 5663 * libsoup/soup-types.h: New header with typedefs, to avoid 5664 #include loops among other headers. 5665 5666 * libsoup/Makefile.am (libsoupinclude_HEADERS): add it 5667 5668 * libsoup/*.[ch], tests/*.c: Update for soup-types.h 5669 56702003-08-26 Dan Winship <danw@ximian.com> 5671 5672 * libsoup/soup-message-client-io.c (soup_message_write_request, 5673 soup_message_read_response): Higher-than-soup-message-io-level 5674 functions to do client-side IO. (Code that used to be in 5675 soup-queue.c) 5676 (get_request_header_cb): Fix a bug in the generation of the Host: 5677 header; need to include the port number if it's not the default. 5678 5679 * libsoup/soup-message-io.c (soup_message_write, 5680 soup_message_write_simple): Take separate user_datas for the get_* 5681 callbacks and the done callbacks. 5682 5683 * libsoup/soup-queue.c: Update to use soup_message_write_request 5684 and soup_message_read_response. 5685 5686 * libsoup/soup-connection.c (soup_connection_new): Change the 5687 prototype to take a SoupUri and a callback. 5688 5689 * libsoup/soup-context.c (try_create_connection, 5690 soup_context_connect_cb): Update for soup_connection_new change. 5691 5692 * libsoup/soup-server.c (read_done_cb, issue_bad_request): Update 5693 for soup_message_write changes 5694 5695 * libsoup/soup-uri.c (soup_uri_uses_default_port): new utility 5696 function 5697 56982003-08-26 Dan Winship <danw@ximian.com> 5699 5700 * libsoup/soup-message-private.h: Define SoupMessage signal stuff 5701 (READ_HEADERS, READ_CHUNK, READ_BODY, READ_ERROR, WROTE_HEADERS, 5702 WROTE_CHUNK, WROTE_BODY, WRITE_ERROR). 5703 5704 * libsoup/soup-message.c (class_init): set up signals 5705 (requeue_read_finished): Update for changes. 5706 5707 * libsoup/soup-message-io.c (soup_message_read): Split out 5708 parse_headers_cb from read_headers_cb. Also add a SoupDataBuffer * 5709 arg to say where to store the message body. Set up 5710 read_headers_cb, read_chunk_cb, read_body_cb, and error_cb as 5711 signal handlers. 5712 (do_read): Call r->parse_headers_cb, then emit READ_HEADERS 5713 (read_body_chunk): emit READ_CHUNK. 5714 (issue_final_callback): Set r->body. emit READ_BODY. 5715 (failed_read): emit READ_ERROR. 5716 (soup_message_read_set_callbacks): Disconnect old signal handlers, 5717 connect new ones. 5718 (soup_message_read_cancel): Disconnect signal handlers. 5719 (soup_message_write, soup_message_write_simple): Set up 5720 wrote_body_cb and error_cb as signal handlers. 5721 (do_write): emit WROTE_HEADERS and WROTE_CHUNK, even though 5722 nothing currently ever listens for them. emit WROTE_BODY when 5723 done. 5724 (failed_write): emit WRITE_ERROR 5725 5726 * libsoup/soup-queue.c (soup_queue_parse_headers_cb, 5727 soup_queue_read_headers_cb): Split this into two unequal chunks. 5728 (read_header_cb only runs the pre-body handlers). 5729 (soup_queue_read_chunk_cb, soup_queue_read_done_cb): Update 5730 prototypes. 5731 (soup_queue_write_done_cb): Update call to soup_message_read 5732 5733 * libsoup/soup-server.c (parse_headers_cb): Renamed from 5734 read_headers_cb 5735 (read_done_cb): Update prototype 5736 (start_request): Update soup_message_read call. 5737 57382003-08-25 Dan Winship <danw@ximian.com> 5739 5740 * libsoup/soup-message-io.c (soup_message_read, 5741 soup_message_write, soup_message_write_simple): Add a "user_data" 5742 arg, pass it to the callbacks. 5743 5744 * libsoup/soup-message.c (soup_message_requeue, 5745 requeue_read_finished, requeue_read_error): Update for that 5746 5747 * libsoup/soup-queue.c: Likewise 5748 5749 * libsoup/soup-server.c: Likewise 5750 57512003-08-25 Dan Winship <danw@ximian.com> 5752 5753 * libsoup/soup-message.c (soup_message_new): Take a uri string 5754 instead of a context. Also, swap the args (so the method comes 5755 before the URI, just like in the protocol). 5756 (soup_message_new_from_uri): Like soup_messgae_new, but takes a 5757 SoupUri instead of a string 5758 (soup_message_set_request, soup_message_set_response): Replace 5759 soup_message_new_full. 5760 (cleanup_message): Was soup_message_cleanup, but is static now. 5761 (queue_message): Do the pre-queuing message cleanup here instead 5762 of in soup_queue_message. 5763 (soup_message_queue): Set the callback and user_data, then call 5764 queue_message. 5765 (requeue_read_error, requeue_read_finished, soup_message_requeue): 5766 Use queue_message 5767 (soup_message_get_uri): Replaces soup_message_get_context. 5768 5769 * libsoup/soup-message.h (SoupMessage): Remove msg->context. (It's 5770 part of SoupMessagePrivate now) 5771 5772 * libsoup/soup-context.c: #include soup-message-private 5773 (soup_context_from_uri): constify the uri arg. 5774 5775 * libsoup/soup-queue.c: Various context/uri fixes 5776 (proxy_https_connect): Use soup_message_new_from_uri. 5777 (soup_queue_message): Drastically simplified since most of the 5778 work is in soup-messsage.c:queue_message() now 5779 5780 * libsoup/soup-auth-digest.c (compute_response, 5781 get_authorization): Use soup_message_get_uri. 5782 5783 * libsoup/soup-server-auth.c (parse_digest): Likewise 5784 5785 * libsoup/soup-server.c (call_handler): Likewise 5786 5787 * tests/simple-httpd.c (server_callback): Likewise. 5788 5789 * tests/simple-proxy.c (server_callback): Likewise 5790 5791 * tests/get.c (got_url): Likewise. 5792 (get_url): Update soup_message_new usage. 5793 5794 * tests/auth-test.c: #include soup-message-private. Update for 5795 context changes and soup_message_new change. 5796 57972003-08-22 Dan Winship <danw@ximian.com> 5798 5799 * libsoup/soup-message-private.h: New file containing 5800 SoupMessagePrivate and some other soup-message-internal 5801 types/functions. Also includes the new, expanded SoupMessageStatus 5802 enum. 5803 5804 * libsoup/soup-message-io.c: Replaces what used to be in 5805 soup-transfer, but now all the interfaces take SoupMessages 5806 instead of SoupReader/SoupWriter and deal with maintaining 5807 msg->priv->{read,write}_state themselves. Fixes up all the 5808 refcounting madness. 5809 5810 * libsoup/soup-message-handlers.c: Move the handler code here, 5811 mostly unchanged. (But rename SoupHandlerType to SoupHandlerPhase 5812 to make the distinction from SoupHandlerKind clearer.) 5813 5814 * libsoup/soup-message.c: Update for soup-message-io and new 5815 SoupMessageStatus values. Remove handler code. 5816 (soup_message_cleanup): Remove the hack to try to preserve the 5817 connection if the message gets cleaned up before it finishes 5818 reading. soup_message_requeue handles this in the requeuing case, 5819 and there's no especially compelling reason to bother doing it in 5820 any other case. (And the soup-message-io api doesn't support 5821 having a read operation that's not connected to any message.) 5822 5823 * libsoup/soup-private.h: remove SoupMessagePrivate 5824 5825 * libsoup/soup-queue.c: Update for soup-message-io and new 5826 SoupMessageStatus values. 5827 5828 * libsoup/soup-server-message.c: Likewise 5829 5830 * libsoup/soup-server.c: Likewise 5831 5832 * libsoup/soup-transfer.c: Gone (yay) 5833 5834 * libsoup/Makefile.am (libsoup_2_2_la_SOURCES): update 5835 58362003-08-20 Dan Winship <danw@ximian.com> 5837 5838 * libsoup/soup-message.c: Make this a GObject. (Note that since 5839 SoupMessage was not refcounted before, it's not really refcounted 5840 now either. TBF) 5841 (soup_message_free): Gone, replaced by g_object_unref 5842 (soup_message_copy, soup_message_foreach_remove_header): Remove 5843 these, since neither was currently functional. 5844 (soup_message_is_keepalive): New utility function to look at 5845 HTTP version and request/response headers to decide if a message 5846 indicates the connection should be kept alive. 5847 (soup_message_set_connection, soup_message_get_connection): New 5848 (soup_message_get_socket): New 5849 5850 * libsoup/soup-server-message.c: Make this a subclass of 5851 SoupMessage. 5852 (soup_server_message_new): Now takes a SoupServer and SoupSocket 5853 (soup_server_message_get_server): New 5854 (soup_server_message_set_encoding, 5855 soup_server_message_get_encoding): Get/set whether the message 5856 should be sent with content-length or chunked encoding 5857 (soup_server_message_is_started, soup_server_message_is_finished): 5858 Private member accessors. 5859 (soup_server_message_add_chunk): Renamed from add_data 5860 (soup_server_message_get_chunk): Pops a chunk from the list. 5861 (soup_server_message_get_source): Gone 5862 5863 * libsoup/soup-server.c: Update for SoupServerMessage changes. 5864 (error_cb, write_done_cb): All the cleanup stuff that used to be 5865 here happens automatically by unreffing the message now. 5866 (get_response_header): Remove some erroneous leftover CGI stuff 5867 (issue_bad_request): add "Connection: close" to the response. 5868 (read_headers_cb): clean this up a bit. Reject HTTP/1.1 messages 5869 with no Host header as per RFC 2616. 5870 5871 * libsoup/soup-connection.c (soup_connection_start_ssl): Gone 5872 (soup_connection_set_in_use): Let the caller set the connection to 5873 "not in use" even after the socket has been disconnected. 5874 5875 * libsoup/soup-context.c: Use soup_message_get_connection 5876 5877 * libsoup/soup-headers.c (soup_headers_parse_request): Remove the 5878 check on request length, since it was rejecting 5879 "GET / HTTP/1.0\r\n\r\n", which is a valid complete request. 5880 5881 * libsoup/soup-queue.c: Use soup_message_get_connection and 5882 soup_message_get_socket. 5883 (soup_queue_read_done_cb): Use soup_message_is_keepalive 5884 (proxy_https_connect_cb): Use soup_socket_start_ssl rather than 5885 soup_connection_start_ssl 5886 5887 * libsoup/soup-socket.c (finalize): disconnect the GIOChannel 5888 handlers if the socket hasn't been disconnected yet. 5889 5890 * libsoup/soup-transfer.c (soup_reader_read_body_chunk, 5891 reader_read): Fix these so that reader_read will exit properly if 5892 the read is cancelled. 5893 5894 * tests/auth-test.c (main): s/soup_message_free/g_object_unref/ 5895 5896 * tests/simple-httpd.c (server_callback): set the message to 5897 content-length encoding. 5898 * tests/simple-proxy.c (server_callback): Likewise 5899 59002003-08-19 Dan Winship <danw@ximian.com> 5901 5902 * libsoup/soup-socket.c (soup_socket_read, 5903 soup_socket_read_until, soup_socket_write): New API for doing 5904 socket IO. Works both synchronously and asynchronously, and 5905 buffers data to prevent the "100 Continue" problem. 5906 (soup_socket_set_flag): Replaces formerly-private 5907 soup_set_sockopts. (primarily to let the caller turn off 5908 SOUP_SOCKET_FLAG_NONBLOCKING). 5909 5910 * libsoup/soup-transfer.c (soup_transfer_read, 5911 soup_transfer_write, soup_transfer_write_simple): Take a 5912 SoupSocket instead of a GIOChannel. Use the new socket IO api. 5913 Changed the prototypes of some of the callbacks to be less 5914 hackish. 5915 5916 * libsoup/soup-connection.c (soup_connection_get_socket): Replaces 5917 soup_connection_get_iochannel. 5918 5919 * libsoup/soup-message.c: Fix up for soup-transfer changes 5920 5921 * libsoup/soup-queue.c: Likewise 5922 5923 * libsoup/soup-server.c: Likewise 5924 5925 * tests/revserver.c: A slightly more complicated replacement for 5926 timeserver. (Does both reads and writes) 5927 59282003-08-19 Dan Winship <danw@ximian.com> 5929 5930 * libsoup/soup-socks.[ch]: Remove this. RC doesn't let you 5931 configure it, and no one has complained, and it looks like the 5932 SOCKS5 auth code doesn't actually work anyway... 5933 5934 * libsoup/soup-queue.c (proxy_connect): Remove SOCKS code. 5935 5936 * libsoup/soup-uri.h: Remove SOUP_PROTOCOL_SOCKS4 and 5937 SOUP_PROTOCOL_SOCKS5 5938 5939 * libsoup/soup-misc.c: Remove a references to SOCKS in a comment 5940 5941 * libsoup/Makefile.am (libsoup_2_2_la_SOURCES): remove 5942 soup-socks.[ch] 5943 59442003-08-19 Dan Winship <danw@ximian.com> 5945 5946 * libsoup/soup-server.c: Make this a GObject. Remove 5947 SoupServerMessage code (to soup-server-message.c). Remove CGI 5948 server code (for now?) 5949 (soup_server_add_handler, soup_server_remove_handler): Rename 5950 (from register/unregister) to make it clearer what they do. 5951 5952 * libsoup/soup-server-message.c: Moved out of soup-server.c 5953 5954 * libsoup/soup-private.h: Remove SoupServer def 5955 5956 * libsoup/Makefile.am (libsoupinclude_HEADERS, 5957 libsoup_2_2_la_SOURCES): add soup-server-message.[ch] 5958 5959 * tests/simple-httpd.c: 5960 * tests/simple-proxy.c: Update for SoupServer changes 5961 59622003-08-18 Dan Winship <danw@ximian.com> 5963 5964 * libsoup/soup-address.c (SoupAddressPrivate): Make this more like 5965 a struct sockaddr again (like it used to be). In particular, add 5966 back the "port" field. Add a bunch of macros to try (and fail) to 5967 simplify some of the code. 5968 (soup_address_new): Now returns a SoupAddress directly rather than 5969 a random handle, and the caller can just use g_object_unref to 5970 cancel the lookup. Also, the callback now uses a 5971 SoupKnownErrorCode rather than a special-purpose address-lookup 5972 error code. 5973 (soup_address_new_cancel): No longer needed. 5974 (soup_address_new_sync): Removed 5975 (soup_address_new_any): Replaces soup_address_ipv4_any and 5976 soup_address_ipv6_any. 5977 (soup_address_get_name, etc): Gone. Use soup_address_resolve() 5978 now. 5979 (soup_address_get_physical): Renamed from 5980 soup_address_get_canonical_name. 5981 (soup_address_get_sockaddr): Replaces soup_address_make_sockaddr() 5982 5983 * libsoup/soup-socket.c: Update for SoupAddress changes and make 5984 similar changes here. 5985 (soup_socket_new): Just creates a generic SoupSocket now. 5986 (soup_socket_connect): Client setup 5987 (soup_socket_listen): Server setup. Now also sets up an iochannel 5988 listening for connects and emits a "new_connection" signal as they 5989 come in. 5990 (soup_socket_start_ssl): Turns on SSL. 5991 (soup_socket_client_new, soup_socket_server_new): Utility 5992 functions that wrap the above. 5993 (soup_socket_new_cancel, soup_socket_new_sync): Gone 5994 (soup_socket_server_accept, soup_socket_server_try_accept): No 5995 longer needed. 5996 (soup_socket_get_iochannel): No longer adds a ref when returning 5997 the iochannel. Also, we set it to "close_on_unref" so that if a 5998 caller adds a ref to it, the connection will actually remain open 5999 even after the SoupSocket is destroyed. 6000 (soup_socket_get_local_address, soup_socket_get_remote_address): 6001 Let the caller get both of these. 6002 6003 * libsoup/soup-connection.c: Don't keep a private copy of the 6004 socket's iochannel. 6005 (soup_connection_new): Don't need to set socket options here. 6006 SoupSocket does it. 6007 (soup_connection_start_ssl): Just call soup_socket_start_ssl. 6008 (soup_connection_get_iochannel): Just return the socket's 6009 iochannel (and don't ref it) 6010 6011 * libsoup/soup-error.c: add SOUP_ERROR_CANT_RESOLVE and 6012 SOUP_ERROR_CANT_RESOLVE_PROXY 6013 6014 * libsoup/soup-dns.c (soup_ntop): Make the address arg const. 6015 Remove the "FIXME add a CANT_RESOLVE error" and return 6016 SOUP_ERROR_CANT_RESOLVE instead. 6017 6018 * libsoup/soup-server.c: Update for socket/address changes. Don't 6019 poke into SoupSocket's private fields. 6020 (soup_server_run_async): Just connect to the socket's 6021 "new_connection" signal. 6022 6023 * libsoup/soup-context.c (try_create_connection, 6024 soup_context_connect_cb): Update for socket changes. Replace 6025 SOUP_CONNECT_ERROR codes with plain SOUP_ERROR codes. 6026 6027 * libsoup/soup-misc.c (soup_signal_connect_once): Utility function 6028 to connect to a signal handler and connect another function to 6029 clean up the first signal handler after its first invocation. 6030 (Lets us use signals to replace one-off callbacks.) 6031 6032 * libsoup/soup-private.h: Remove SoupSocketPrivate since it is 6033 actually private now. 6034 (struct _SoupServer): Remove accept_tag. 6035 6036 * libsoup/soup-queue.c (soup_queue_read_done_cb, start_request): 6037 Don't unref the iochannel. 6038 (soup_queue_connect_cb): Takes a SoupKnownErrorCode now. 6039 6040 * libsoup/soup-socks.c: Update for socket/address changes 6041 6042 * tests/simple-httpd.c (main): 6043 s/SOUP_SERVER_ANY_PORT/SOUP_ADDRESS_ANY_PORT/ 6044 * tests/simple-proxy.c (main): Likewise 6045 6046 * tests/timeserver.c: Update for SoupSocket's "new_connection" 6047 signal, and for SoupAddress changes. 6048 60492003-08-14 Dan Winship <danw@ximian.com> 6050 6051 * libsoup/soup-connection.c: New, split out from soup-context and 6052 made into a GObject. 6053 (soup_connection_disconnect): Disconnects the connection and emits 6054 a signal. (Replaces the old "keep_alive" flag.) 6055 (soup_connection_is_connected): Checks if the connection is still 6056 connected 6057 (connection_died): Just disconnect, rather than freeing the 6058 connection. This way if anyone else is still referencing it they 6059 won't end up with an invalid pointer. 6060 6061 * libsoup/soup-context.c: Make this a GObject, remove all the 6062 SoupConnection code. Add an "ntlm_auths" field to SoupHost so that 6063 SoupContext can keep track of connection auth stuff there without 6064 SoupConnection needing to care. Various other updates. 6065 6066 * libsoup/soup-private.h: Remove SoupContext and SoupConnection 6067 definitions. 6068 6069 * libsoup/*.c, tests/get.c: Update for context/connection changes 6070 6071 * libsoup/soup-socks.c (soup_connect_socks_proxy): Change the 6072 definition to deal with the fact that there's no 6073 soup_connection_get_context any more. 6074 6075 * libsoup/soup-queue.c (soup_queue_read_headers_cb): Don't deal 6076 with connection persistence here. 6077 (soup_queue_read_done_cb): Do it here instead. Disconnect the 6078 connection when appropriate. 6079 (proxy_connect, proxy_https_connect, proxy_https_connect_cb): 6080 Reference-count the connection properly. (I think.) 6081 6082 * libsoup/soup-marshal.list: New, for SoupConnection's 6083 "disconnected" signal. 6084 6085 * libsoup/Makefile.am: add rules to build soup-marshal.[ch] 6086 6087 * configure.in: Use AM_PATH_GLIB_2 rather than pkg-config, so that 6088 GLIB_GENMARSHAL gets set too. 6089 60902003-08-14 Dan Winship <danw@ximian.com> 6091 6092 * libsoup/soup-error.c: Fix a spelling mistake. 6093 6094 * libsoup/*.c: Fix use of @/%/#/() in gtk-doc comments 6095 60962003-08-12 Dan Winship <danw@ximian.com> 6097 6098 * libsoup/soup-auth.c: Make this an abstract GObject. Tweak some 6099 of the interfaces around a little bit. 6100 6101 * libsoup/soup-auth-basic.c: subclass for Basic auth 6102 6103 * libsoup/soup-auth-digest.c: subclass for Digest auth 6104 6105 * libsoup/soup-auth-ntlm.c: subclass for NTLM auth. Move all of 6106 the code from soup-ntlm.c here, and make it private. 6107 6108 * libsoup/soup-ntlm.c: gone 6109 6110 * libsoup/soup-misc.h: Remove the definition of SoupAuthType from 6111 here, and change the signature of SoupAuthorizeFn. 6112 6113 * libsoup/soup-context.c: Use g_object_unref to free auths, use 6114 methods instead of directly access private fields. 6115 6116 * libsoup/soup-queue.c: Likewise 6117 6118 * libsoup/soup-server-auth.c (soup_server_auth_free): Remove all 6119 NTLM references. We have no plans to implement server-side NTLM 6120 auth. 6121 6122 * tests/auth-test.c (identify_auth): Update for auth api changes 6123 61242003-08-12 Dan Winship <danw@ximian.com> 6125 6126 * configure.in (GLIB): add gobject-2.0 to the PKG_CHECK_MODULES 6127 call 6128 6129 * libsoup/soup-address.c: Make this a GObject. 6130 (soup_address_ref, soup_address_unref): Gone. 6131 (soup_address_copy): Gone. Wasn't being used anyway. 6132 6133 * libsoup/soup-dns.c: Move all of the DNS code and caching stuff 6134 here from soup-address.c, so that soup-address doesn't need to 6135 worry about trying to cache zero-ref addresses. 6136 6137 * libsoup/soup-socket.c: Make this a GObject. Use "guint" 6138 consistently for port numbers. 6139 (soup_socket_ref, soup_socket_unref): Gone. 6140 6141 * libsoup/soup-private.h: Change the SoupSocket definition to be 6142 SoupSocketPrivate. (Still need to keep this here since soup-server 6143 pokes around in its internals.) 6144 (SOUP_MAKE_TYPE): Copied from gal's E_MAKE_TYPE. 6145 6146 * libsoup/soup-server.c (read_done_cb, write_done_cb): Unref the 6147 reader/writer rather than leaking them. 6148 6149 * libsoup/*: Use GObject methods for socket/address refcounting 6150 6151 * tests/auth-test.c (main) 6152 * tests/timeserver.c (main): Call g_type_init. 6153 6154 * tests/get.c (main): Call g_type_init. 6155 (get_url, got_url): Fix some bugs that could make -r mode get into 6156 infinite loops downloading the same files over and over. Plug some 6157 memory leaks to make this more useful for valgrinding libsoup. 6158 6159 * tests/simple-httpd.c (main): Call g_type_init. Set up a signal 6160 handler for SIGINT so we can exit cleanly, since valgrind won't 6161 give a leak report if you don't. Plug a few memory leaks. 6162 6163 * tests/simple-proxy.c (main): Likewise 6164 61652003-08-12 Dan Winship <danw@ximian.com> 6166 6167 Pull over some new test programs from the soup-refactoring branch, 6168 along with the SoupUri changes they depend on. 6169 6170 * tests/simple-httpd.c: A really simple HTTP server, to test the 6171 server code. 6172 6173 * tests/simple-proxy.c: An even simpler HTTP proxy 6174 6175 * tests/get.c: Add "-r" flag to recursively get files (thereby 6176 testing multiple-connections-at-once code). Also good for setting 6177 up a tree to use with simple-httpd. 6178 6179 * tests/timeserver.c (main): Fix a bug. (s/ipv6/ipv4/ in the 6180 normal case) 6181 6182 * tests/uri-parsing.c: Regression test for the new soup-uri.c 6183 6184 * libsoup/soup-uri.c: Rewrite/update to conform to RFC 2396, and 6185 pull in some optimizations from camel-url. Also, make SoupProtocol 6186 a GQuark so we can still compare them with ==, but we can also 6187 recognize any protocol. 6188 (soup_uri_new_with_base): New, to merge base and relative URIs 6189 (soup_uri_to_string): Update this. Change the "show_password" flag 6190 (which we always passed FALSE for) to "just_path", for places that 6191 want the path+query without the protocol, host, etc. 6192 6193 * libsoup/soup-queue.c (soup_get_request_header): Just use 6194 soup_uri_to_string to generate the request URI. 6195 6196 * libsoup/soup-auth.c (compute_response, digest_auth_func): Use 6197 "soup_uri_to_path (uri, TRUE)" rather than trying to reassemble 6198 the URI by hand badly. 6199 * libsoup/soup-server-auth.c (parse_digest): Likewise 6200 6201 * libsoup/soup-socks.c (soup_connect_socks_proxy): Change a 6202 switch() to an series of if()s since SOUP_PROTOCOL_* aren't 6203 constants any more. 6204 6205 * libsoup/soup-context.c (soup_context_uri_hash, 6206 soup_context_uri_equal): s/querystring/query/ 6207 62082003-08-12 Dan Winship <danw@ximian.com> 6209 6210 * configure.in: Bump API version to 2.2 and package version to 6211 2.1.0. Remove NSS and OpenSSL checks and proxy-related config. Use 6212 libgnutls-config to find GNUTLS. 6213 6214 * libsoup-2.2.pc.in: Update, and rename from soup-2.0.pc 6215 6216 * Makefile.am: Update for pc file rename 6217 6218 * libsoup/Makefile.am: s/2.0/2.2/ everywhere. Remove NSS, OpenSSL, 6219 and libsoup-ssl-proxy stuff. 6220 6221 * libsoup/soup-ssl-proxy.c 6222 * libsoup/soup-nss.[ch] 6223 * libsoup/soup-openssl.[ch]: gone 6224 6225 * libsoup/soup-ssl.c: remove NSS and OpenSSL bits 6226 6227 * tests/Makefile.am (get_LDADD, timeserver_LDADD, 6228 auth_test_LDADD): Update libsoup version 6229 62302003-08-07 Dan Winship <danw@ximian.com> 6231 6232 * libsoup/soup-auth.c (soup_auth_lookup, soup_auth_set_context, 6233 soup_auth_invalidate): These are all really SoupContext functions, 6234 so move them to soup-context.c (and rename them appropriately). 6235 (soup_auth_get_protection_space): New method to get the 6236 "protection space" of an auth (paths where it is valid). 6237 (soup_auth_invalidate): New method to try to un-authenticate an 6238 auth (so we can keep the domain info cached even if the auth info 6239 is wrong). 6240 (basic_pspace_func): Basic protection space is all directories 6241 below the current one. 6242 (basic_invalidate_func): Clear the encoded username/password 6243 (digest_pspace_func): Digest protection space is either the whole 6244 server, or "what the domain parameter says" (though we don't deal 6245 with cross-host domains). 6246 (digest_invalidate_func): Return FALSE; bad digest auth info isn't 6247 cacheable. 6248 (digest_parse_func, digest_free): Set/free domain parameter 6249 (ntlm_pspace): NTLM protection space is always the whole server. 6250 (ntlm_invalidate): Clear the auth state. 6251 (soup_auth_new_ntlm): Make this non-static 6252 (SoupAuth): Replace the quad-state "status" field with an 6253 "authenticated" boolean. 6254 6255 * libsoup/soup-private.h (SoupHost): Replace the "valid_auths" 6256 hash with separate "auth_realms" (path->realm) and "auths" 6257 (realm->auth) hashes. Also add a "use_ntlm" flag. 6258 6259 * libsoup/soup-context.c (soup_context_unref): Update SoupHost 6260 freeing code. 6261 (connection_free): Don't the connection's auth, just free it. 6262 (soup_context_lookup_auth): Formerly soup_auth_lookup, but now 6263 does two-stage lookup (path->realm then realm->auth) and also 6264 deals with NTLM hacks. 6265 (soup_context_update_auth): Mostly formerly soup_auth_set_context, 6266 but also large parts of authorize_handler. Updates the auth hashes 6267 based on information from a 401 or 407 response. Does a better job 6268 than authorize_handler did of not throwing away good information. 6269 (soup_context_preauthenticate): New; fakes up auth info so that 6270 requests will end up using authentication without the server 6271 needing to return an error first. 6272 (soup_context_authenticate_auth): Moved out of authorize_handler 6273 so it can be used at request-sending time too, if we know that we 6274 need it. (That way we can avoid requeuing the request if it isn't 6275 going to be able to be authenticated.) 6276 (soup_context_invalidate_auth): Sort of like the old 6277 soup_auth_invalidate, but only destroys the auth data, while still 6278 remembering the path->realm mapping. 6279 6280 * libsoup/soup-message.c (authorize_handler): Mostly moved into 6281 soup_context_update_auth. 6282 (maybe_validate_auth): Remove this; it was only useful because of 6283 bugs elsewhere in the auth handling. 6284 6285 * libsoup/soup-queue.c (soup_encode_http_auth): Update for 6286 soup_context_lookup_auth. If the returned auth isn't 6287 authenticated, call soup_context_authenticate_auth() on it. 6288 6289 * tests/auth-test.c: New (from soup-refactoring branch). Tests 6290 that the Basic/Digest auth code does the right thing. (TODO: find 6291 a good way to add NTLM tests too.) 6292 6293 * tests/Makefile.am (check_PROGRAMS): add auth-test 6294 62952003-07-29 Dan Winship <danw@ximian.com> 6296 6297 * configure.in: 1.99.25 ("Potato and Leek Soup") 6298 6299 * libsoup/soup-message.c (requeue_read_finished, 6300 release_connection): Free the passed-in body data. Otherwise the 6301 response body ends up getting leaked on most 3xx and 4xx 6302 responses. 6303 (soup_message_cleanup): Remove a piece of code that didn't 6304 actually do anything and its associated confused comment. 6305 6306 * libsoup/soup-auth.c (ntlm_free): plug an occasional NTLM auth leak 6307 6308 * libsoup/soup-context.c (connection_free): plug a non-occasional 6309 NTLM auth leak. 6310 63112003-06-26 Joe Shaw <joe@ximian.com> 6312 6313 * configure.in: Version 1.99.24 6314 63152003-06-24 Dan Winship <danw@ximian.com> 6316 6317 * configure.in: Check pkgconfig for openssl, since 0.9.7 (a) uses 6318 it, and (b) depends on lots of new things sometimes (like on RH9). 6319 6320 * libsoup/soup-openssl.c: 6321 * libsoup/soup-ssl-proxy.c: Change #ifdef HAVE_OPENSSL_SSL_H to 6322 just #ifdef HAVE_OPENSSL since the header check doesn't get run in 6323 the pkgconfig case 6324 63252003-06-19 Dan Winship <danw@ximian.com> 6326 6327 * libsoup/soup-queue.c (soup_queue_read_done_cb): unref the 6328 old read_tag before changing/clearing it. 6329 (soup_queue_write_done_cb): Likewise with the write_tag. 6330 6331 * libsoup/soup-transfer.c (issue_final_callback): ref the reader 6332 around the stop+callback. 6333 (soup_transfer_write_cb): Likewise. 6334 63352003-06-12 Dan Winship <danw@ximian.com> 6336 6337 * libsoup/soup-transfer.c (SoupReader, SoupWriter): add a 6338 ref_count field. 6339 (soup_transfer_read, create_writer): Set initial ref_count to 2 6340 (one for soup-transfer, one for the caller). 6341 (soup_transfer_read_ref, soup_transfer_read_unref): ref/unref a 6342 reader 6343 (soup_transfer_read_stop): Clears the GIOChannel callbacks and 6344 drops soup-transfer's ref. 6345 (soup_transfer_read_cancel): Now just a stop+unref 6346 (soup_transfer_write_ref, soup_transfer_write_unref, 6347 soup_transfer_write_stop, soup_transfer_write_cancel): Similarly. 6348 6349 * libsoup/soup-message.c (soup_message_cleanup): when setting up 6350 the "finish reading" callbacks, unref the reader so it will be 6351 destroyed once it's done reading. 6352 (soup_message_requeue): Likewise. 6353 6354 * libsoup/soup-queue.c (soup_queue_read_headers_cb): Update for 6355 prototype change (no longer returns a SoupTransferDone). 6356 (soup_queue_read_chunk_cb): Likewise. 6357 6358 * libsoup/soup-server.c (read_headers_cb): Likewise 6359 63602003-06-11 Dan Winship <danw@ximian.com> 6361 6362 * libsoup/soup-transfer.c: Change all functions to take a 6363 SoupReader * or SoupWriter * instead of a guint. 6364 6365 * libsoup/soup-private.h (SoupMessagePrivate): make read_tag and 6366 write_tag pointers instead of guints. 6367 63682003-06-02 Chris Toshok <toshok@ximian.com> 6369 6370 * libsoup/soup-ssl.c: remove #include for soup-nss.h 6371 63722003-06-02 Chris Toshok <toshok@ximian.com> 6373 6374 * libsoup/Makefile.am (INCLUDES): remove NSS_CFLAGS. 6375 (libsoup_2_0_la_LIBADD): remove NSS_LIBS. 6376 (libsoup_2_0_la_SOURCES): remove soup-nss.[ch] 6377 63782003-06-02 Chris Toshok <toshok@ximian.com> 6379 6380 * configure.in: Bump version to 1.99.23. 6381 63822003-05-30 Chris Toshok <toshok@ximian.com> 6383 6384 * libsoup/soup-queue.c (soup_queue_error_cb): always force a 6385 reconnect when there's an error with ssl connection. This fixes 6386 #43387, but it runs the risk of sending requests multiple times to 6387 the exchange server, and it results in lots of shorter lived 6388 connections and more forking (in the ssl proxy case), depending on 6389 the length of the operation. 6390 63912003-05-21 Dan Winship <danw@ximian.com> 6392 6393 * configure.in: 1.99.22 (codename: French Onion Soup) 6394 63952003-05-20 Dan Winship <danw@ximian.com> 6396 6397 * libsoup/soup-message.c (soup_message_requeue): Clear the 6398 write_tag as well so we don't double-cancel it. #43395. 6399 6400 * libsoup/soup-queue.c (soup_queue_error_cb): The connection might 6401 be destroyed by the end of the func, so we have to call 6402 soup_connection_set_used at the beginning. 6403 6404 * libsoup/soup-openssl.c (soup_openssl_read, soup_openssl_write): 6405 Call g_set_error() so that we don't SEGV immediately after 6406 returning G_IO_STATUS_ERROR. 6407 64082003-05-08 Joe Shaw <joe@ximian.com> 6409 6410 * configure.in: Bump version to 1.99.21 6411 6412 * libsoup/soup-queue.c (proxy_connect): If the proxy HTTPS 6413 tunnelling fails, the other message which shares our same 6414 connection will free it first, so set ours to NULL. 6415 64162003-05-08 Dan Winship <danw@ximian.com> 6417 6418 * libsoup/soup-auth.c (ntlm_auth): If the auth status is PENDING, 6419 return an NTLM request string. Otherwise return the "response" 6420 field (which should include the NTLM authenticate message) 6421 (ntlm_init): Don't bother setting "response" to the NTLM request 6422 string. Just leave it NULL in that case. 6423 6424 * libsoup/soup-message.c (authorize_handler): Never try to reuse 6425 an NTLM auth returned from soup_auth_lookup. Only set the auth on 6426 the connection when it's SOUP_AUTH_STATUS_SUCCESSFUL. Otherwise, 6427 call soup_auth_set_context() on it just like for non-NTLM auth. 6428 The net effect of all of this is that now we record when a context 6429 needs NTLM auth just like with non-NTLM auth, so that that info 6430 gets preserved across connections. 6431 (soup_message_requeue): No longer need the hackery here to 6432 preserve the connection auth state. 6433 64342003-05-07 Dan Winship <danw@ximian.com> 6435 6436 * libsoup/soup-context.c (soup_connection_set_in_use): New, to 6437 toggle the connection's in_use flag, and set up the death watch 6438 when it's not in use. 6439 (connection_death): This is only hooked up when the connection is 6440 not in use now, so don't need to check that. Should fix the 6441 infinite connection_death loop. 6442 (soup_connection_is_new): Keep a distinct "new" flag rather than 6443 defining "new" as "has been released at least once". 6444 (soup_connection_set_used): Mark a connection no-longer new. 6445 (soup_context_connect_cb): Mark the connection as new. Don't set 6446 up the death watch since it's in_use. 6447 (try_existing_connections): Use soup_connection_set_in_use. 6448 (soup_connection_release): Likewise 6449 6450 * libsoup/soup-message.c (requeue_read_finished): Call 6451 soup_connection_set_used so that the connection isn't still 6452 considered new when we send the message the second time. 6453 6454 * libsoup/soup-queue.c (soup_queue_error_cb): Call 6455 soup_connection_set_used (assuming we don't close the connection) 6456 (soup_queue_read_done_cb): Likewise. 6457 6458 * libsoup/soup-transfer.c (soup_transfer_read_cb): If we read 6459 nothing, call soup_transfer_read_error_cb rather than just 6460 cancelling, or else it will get cancelled again later. 6461 64622003-05-07 Dan Winship <danw@ximian.com> 6463 6464 * soup-2.0.pc.in (Libs): Don't put @OPENSSL_LIBS@ here; the 6465 library doesn't depend on them, only the proxy does. #42473 6466 64672003-05-06 Dan Winship <danw@ximian.com> 6468 6469 * src/libsoup/soup-message.c (global_handlers): Change the 6470 redirect handler to be a RESPONSE_ERROR_CLASS_HANDLER for 6471 SOUP_ERROR_CLASS_REDIRECT rather than a RESPONSE_HEADER_HANDLER 6472 for "Location" to get around the non-64-bit-clean union 6473 initialization pointed out by Jeremy Katz <katzj@redhat.com>. 6474 (redirect_handler): Update for that. 6475 64762003-04-28 Dan Winship <danw@ximian.com> 6477 6478 * configure.in: 1.99.20 6479 6480 * libsoup/soup-transfer.c (soup_transfer_read_error_cb): Make sure 6481 we always call UNIGNORE_CANCEL. Might fix #41971 6482 64832003-04-25 Dan Winship <danw@ximian.com> 6484 6485 * libsoup/soup-queue.c (soup_queue_error_cb): if an old connection 6486 suddenly gets an io error while reading or writing, assume it's a 6487 timeout or something, close the connection, and requeue the 6488 message. 6489 64902003-04-23 Dan Winship <danw@ximian.com> 6491 6492 * libsoup/soup-message.c (soup_message_cleanup): Don't set up the 6493 soup-transfer callbacks to keep reading off the connection unless 6494 we're actually going to keep the connection around afterward. 6495 Otherwise we can just close it. 6496 6497 * libsoup/soup-transfer.c: Re-kludge the awful IGNORE_CANCEL 6498 thingy so that it's possible to cancel a read from inside a 6499 callback so that the above change actually works instead of just 6500 crashing. 6501 65022003-04-20 Rodney Dawes <dobey@ximian.com> 6503 6504 * configure.in: Up version to 1.99.18 6505 * libsoup/Makefile.am: Line separator after GNUTLS_CFLAGS 6506 65072003-04-11 Dan Winship <danw@ximian.com> 6508 6509 * libsoup/soup-context.c (soup_connection_purge_idle): New 6510 function to close all idle connections. (Needed for #41117 or else 6511 there's no way to force-discard NTLM authentication.) 6512 6513 * libsoup/soup-queue.c (soup_queue_shutdown): Use it 6514 65152003-04-10 Joe Shaw <joe@ximian.com> 6516 6517 * libsoup/soup-queue.c (proxy_https_connect): 6518 proxy_https_connect_cb() might not get called if connecting to the 6519 proxy fails, and it causes us to double-free the connection. 6520 Always set the message's connection to NULL before freeing it. 6521 65222003-04-09 Dan Winship <danw@ximian.com> 6523 6524 * configure.in: 1.99.17 6525 65262003-04-07 Dan Winship <danw@ximian.com> 6527 6528 * libsoup/soup-context.c (connection_death): Revert Joe's changes. 6529 We can't release the connection there because there may be 6530 SoupMessages still pointing to it. (Needs to be revisited.) 6531 65322003-04-03 JP Rosevear <jpr@ximian.com> 6533 6534 * libsoup/soup-ssl.c (soup_ssl_hup_waitpid): guard against EINTR 6535 error during waitpid 6536 6537 * libsoup/soup-address.c: ditto 6538 65392003-04-02 Joe Shaw <joe@ximian.com> 6540 6541 * libsoup/soup-context.c (connection_death): Only drop the 6542 connection if we get an error condition on the channel. Fixes a 6543 double-free. 6544 65452003-04-02 Joe Shaw <joe@ximian.com> 6546 6547 * libsoup/soup-context.c (connection_death): Just call 6548 soup_connection_release() from here and return whether the 6549 connection is in use. 6550 65512003-03-31 Ian Peters <itp@ximian.com> 6552 6553 * libsoup/soup-gnutls.c (soup_gnutls_close): loop on gnutls_bye in 6554 case of EAGAIN or EINTR, since shutting down an SSL connection 6555 requires more than just closing a socket. 6556 65572003-03-28 Dan Winship <danw@ximian.com> 6558 6559 * libsoup/soup-message.c (soup_message_set_context): If the new 6560 context points to a different server from the old context, call 6561 soup_message_cleanup. Otherwise it tries to reuse the old 6562 connection... 6563 65642003-03-25 Joe Shaw <joe@ximian.com> 6565 6566 * configure.in: Bump up to 1.99.16 6567 65682003-03-24 Joe Shaw <joe@ximian.com> 6569 6570 * soup-error.[ch]: Add SOUP_ERROR_SSL_FAILED which gives a 6571 slightly better error message on various SSL failures than the 6572 previous message. 6573 6574 * soup-queue.c (soup_queue_error_cb): Throw the 6575 SOUP_ERROR_SSL_FAILED error when we fail an SSL handshake. 6576 65772003-03-21 Joe Shaw <joe@ximian.com> 6578 6579 * soup-server.c: Use non-deprecated g_main_loop_* calls 6580 throughout. 6581 (soup_server_unref): Don't unref the main loop if it's NULL. 6582 Fixes a glib warning. 6583 65842003-03-18 Dan Winship <danw@ximian.com> 6585 6586 * configure.in: comment out NSS checks. The NSS code doesn't work 6587 and there are no current plans to fix it. 6588 6589 * README (Features): Mention GnuTLS, remove NSS and the rest of 6590 the "Planned Features" section. 6591 6592 * MAINTAINERS: remove Alex 6593 6594 * libsoup/soup-openssl.c (soup_openssl_get_iochannel): Bump the 6595 timeout to 10 seconds (and get rid of the 3 tries) so we don't 6596 fail to connect just because the server is slow/far away. 6597 65982003-03-17 Joe Shaw <joe@ximian.com> 6599 6600 * configure.in: Bump up to 1.99.15. 6601 66022003-03-12 Ian Peters <itp@ximian.com> 6603 6604 * libsoup/soup-gnutls.c: because creating client credentials is 6605 expensive, keep the same one around as long as possible, only 6606 recreating it if the ssl_ca_file changes. Wrap 6607 gnutls_certificate_credentials in a refcounted struct to avoid 6608 freeing it while another established connection may potentially 6609 need it (say, to rehandshake). 6610 66112003-03-11 Frank Belew <frb@ximian.com> 6612 6613 * soup-2.0.pc.in: add ssl libs to defaults, since ssl doesn't 6614 use pkgconfig 6615 66162003-03-10 Joe Shaw <joe@ximian.com> 6617 6618 * configure.in: Bump up to 1.99.14. 6619 6620 * configure.in, libsoup/Makefile.am, libsoup/soup.gnutls.[ch], 6621 libsoup/soup-ssl.c: Add support for GnuTLS. Patch from Ian 6622 Peters. 6623 66242003-03-07 Joe Shaw <joe@ximian.com> 6625 6626 * configure.in: Bump up to 1.99.13. 6627 6628 * libsoup/soup-context.c (soup_context_connect_cb): Add G_IO_IN to 6629 the list of conditions to watch. If the remote end hangs up the 6630 connection, we'll get a successful read of 0 bytes, not a HUP. 6631 The connection will have to be released by the point we check for 6632 it in connection_death(). 6633 6634 * libsoup/soup-queue.c (soup_queue_error_cb): Get rid of some 6635 (apparently) errant resetting of the read and write tags. I think 6636 this might have been causing some reentrancy and crashes. 6637 6638 * libsoup/soup-socket.c (soup_socket_get_iochannel): Set the IO 6639 channel to NULL encoding and not buffered. 6640 6641 * libsoup/soup-transfer.c (soup_transfer_read_cb): Remove some 6642 incorrect comments. 6643 66442003-02-28 Joe Shaw <joe@ximian.com> 6645 6646 * configure.in: Bump up to 1.99.12. 6647 6648 * libsoup/soup-transfer.c (soup_transfer_read_cb): We can get a 6649 header_len of 0 and a total_read of 0 in the case of a SIGPIPE; in 6650 this case we probably don't want to call the error callback, we 6651 just want to act like our transfer was cancelled. 6652 66532003-02-27 Joe Shaw <joe@ximian.com> 6654 6655 Try to apply some order to the iochannel refcounting... 6656 6657 * configure.in: Bump up to 1.99.11. 6658 6659 * libsoup/soup-context.c (soup_connection_get_iochannel): The 6660 connections needs to own a reference to the iochannel! If we're 6661 using HTTPS, release the ref we get from soup_socket_get_iochannel 6662 and replace it with the ref we get from soup_ssl_get_iochannel(). 6663 Then, always ref the channel that we return (ugh, but that's the 6664 soup way). 6665 (connection_free): Release the connection's ref to the iochannel. 6666 6667 * libsoup/soup-ssl.c (soup_ssl_get_iochannel_real): Ref the 6668 iochannel. The reference we pass back will be owned by the 6669 connection. 6670 (soup_ssl_hup_waitpid): Release our ref. 6671 66722003-02-27 Joe Shaw <joe@ximian.com> 6673 6674 * configure.in: Bump up to 1.99.10. 6675 6676 * libsoup/soup-ssl.c (soup_ssl_get_iochannel_real): Ref the 6677 iochannel, return to the status quo. Sigh. 6678 66792003-02-26 Joe Shaw <joe@ximian.com> 6680 6681 * configure.in: Bump up to 1.99.9. 6682 6683 * libsoup/soup-ssl.c (soup_ssl_hup_waitpid): Comment out the unref, 6684 it's causing problems with HTTPS and proxies; the iochannel 6685 refcounting is waaaaaay horked. 6686 66872003-02-26 Frank Belew <frb@ximian.com> 6688 6689 * libsoup/Makefile.am: added workaround to link ssl-proxy statically 6690 66912003-02-11 Joe Shaw <joe@ximian.com> 6692 6693 * configure.in: Bump up to 1.99.8 for snaps. 6694 6695 * libsoup/soup-address.c (soup_gethostbyname): Fix this for Solaris. 6696 It returns the address to the resulting hostent or NULL on failure, 6697 unlike Linux which returns an error code. 6698 66992003-02-11 Joe Shaw <joe@ximian.com> 6700 6701 * configure.in: Bump up to 1.99.7 for snaps. 6702 6703 * libsoup/soup-openssl.c (soup_openssl_get_iochannel): Print out 6704 the error string from OpenSSL if we can't establish a connection. 6705 67062003-02-04 Joe Shaw <joe@ximian.com> 6707 6708 * configure.in: Bump up to 1.99.6 for snaps. 6709 6710 * libsoup/soup-server.c (destroy_message): We already assigned 6711 chan, so don't reassign it, and unref it in all cases. 6712 (issue_bad_request): Always unref after a call to 6713 soup_socket_get_iochannel(), because it refs it. 6714 (conn_accept): Fix some funky GIOChannel reffing here. 6715 6716 * libsoup/soup-ssl.c (soup_ssl_get_iochannel_real): Don't call 6717 g_io_channel_ref() on the socket. This is the exact opposite of 6718 what we want to do. Create a temporary structure containing the 6719 parent pid and the old socket and unref the socket when our 6720 callback is called. This should fix GIOChannels being leaked on 6721 SSL connections. 6722 6723 * libsoup/soup-ssl-proxy.c: Always close the GIOChannels after the 6724 main loop quits. 6725 67262003-01-22 Joe Shaw <joe@ximian.com> 6727 6728 * configure.in: Bump up to 1.99.5 for the snaps. 6729 6730 * libsoup/soup-address.c (soup_address_new): If we found the 6731 address in our hash, we need to return NULL or else Soup will 6732 think we're doing an async lookup and do some cancellation on 6733 us. Besides, we were returning the wrong type anyway and it 6734 was crashing things. 6735 67362003-01-17 Joe Shaw <joe@ximian.com> 6737 6738 * libsoup/soup-ssl-proxy.c (soup_ssl_proxy_readwrite): It's not 6739 uncommon for us to get a G_IO_ERROR_AGAIN when trying to write 6740 out, so keep trying until we succeed. 6741 67422003-01-10 Joe Shaw <joe@ximian.com> 6743 6744 * libsoup/soup-openssl.c (verify_cb): Load some X509 and SSL error 6745 strings and print out the error when the cert can't verify. 6746 67472003-01-09 Dan Winship <danw@ximian.com> 6748 6749 * libsoup/soup-address.c (soup_gethostbyname): Fix a memcpy 6750 overrun noticed by valgrind 6751 67522002-12-20 Joe Shaw <joe@ximian.com> 6753 6754 * libsoup/soup-server.c (soup_server_new_with_host): Added. 6755 Starts a server only on the interface specified, instead of all 6756 network interfaces. 6757 67582002-12-16 Jeremy Katz <katzj@redhat.com> 6759 6760 * configure.in: use $libdir instead of /usr/lib when looking for 6761 libraries 6762 67632002-12-11 Joe Shaw <joe@ximian.com> 6764 6765 * libsoup/soup-queue.c (proxy_https_connect_cb): I am an idiot. 6766 Don't set a variable to NULL and then immediately try to 6767 dereference it. 6768 67692002-12-09 Joe Shaw <joe@ximian.com> 6770 6771 * libsoup/soup-openssl.c (soup_openssl_get_iochannel): Put a 6772 timeout on the select()s when we get SSL_ERROR_WANT_READ/WRITE so 6773 we don't hang forever if we don't get more data. 6774 6775 * libsoup/soup-ssl-proxy.c (main): Don't set our fds to blocking 6776 or else we'll hang forever in SSL_connect() if the other side 6777 hangs up. 6778 6779 * libsoup/soup-queue.c (proxy_https_connect_cb): We never want to 6780 release the connection on message free, even if the connection was 6781 unsuccessful. 6782 67832002-12-03 Joe Shaw <joe@ximian.com> 6784 6785 * libsoup/soup-ssl.c (soup_ssl_get_iochannel_real): Call 6786 g_io_channel_set_close_on_unref() on the second half of the socket 6787 pair so we don't leak file descriptors. 6788 67892002-12-03 Frank Belew <frb@ximian.com> 6790 6791 * libsoup/soup-address.c: add signal.h to the list of headers to 6792 pick up SIGKILL 6793 67942002-11-25 Joe Shaw <joe@ximian.com> 6795 6796 * Makefile.am: Build the tests directory again 6797 67982002-11-21 Rodney Dawes <dobey@ximian.com> 6799 6800 * configure.in: Don't require autoconf 2.5x, needs to work with 2.13 6801 68022002-11-20 Michael Meeks <michael@ximian.com> 6803 6804 * configure.in: require autoconf 2.52 not 2.53. 6805 68062002-11-18 Dan Winship <danw@ximian.com> 6807 6808 * libsoup/soup-address.c (soup_address_hash): Don't use s6_addr32 6809 since it's apparently non-portable. Use s6_addr instead. 6810 (soup_gethostbyaddr): fix a sometimes-uninitialized variable. 6811 6812 * libsoup/soup-error.c: Fix spelling of 6813 SOUP_ERROR_MOVED_PERMANENTLY and its description. 6814 6815 * libsoup/soup-message.c (soup_message_get_request_header, etc): 6816 Remove long-deprecated API. 6817 6818 * libsoup/soup-socket.c (soup_socket_connect): remove unused 6819 variable. 6820 6821 * libsoup/soup-openssl.c (soup_openssl_read): Use gsize. 6822 * libsoup/soup-server.c (cgi_read): Likewise 6823 * libsoup/soup-socks.c (soup_socks_write, soup_socks_read): 6824 Likewise. 6825 * libsoup/soup-ssl-proxy.c (soup_ssl_proxy_readwrite): Likewise. 6826 * libsoup/soup-transfer.c (soup_transfer_read_cb, 6827 soup_transfer_write_cb): Likewise. 6828 6829 * tests/timeserver.c: Add "-6" to listen on the IPv6 local address 6830 instead of IPv4. (Tested on OS X.) 6831 68322002-11-15 Dan Winship <danw@ximian.com> 6833 6834 * libsoup/*: Change old Helix Code refs to Ximian (and update 6835 copyright dates). 6836 68372002-11-15 Frank Belew <frb@ximian.com> 6838 6839 * tests/Makefile.am: uncomment lines to make timeserver build 6840 correctly 6841 68422002-11-14 Joe Shaw <joe@ximian.com> 6843 6844 * libsoup/soup-address.c (soup_address_new): When we get an 6845 address from the hash, call our address lookup callback or else 6846 the connection will hang. 6847 68482002-11-13 Dan Winship <danw@ximian.com> 6849 6850 * tests/timeserver.c: Oops, commit this. 6851 6852 * tests/Makefile.am (noinst_PROGRAMS): reenable timeserver. 6853 68542002-11-13 Joe Shaw <joe@ximian.com> 6855 6856 * libsoup/Makefile.am: Replace the BINDIR define with LIBEXECDIR. 6857 (install-exec-hook): Install libsoup-ssl-proxy into libexecdir 6858 instead of bindir. 6859 6860 * libsoup/soup-openssl.c (soup_openssl_close): Call SSL_shutdown() 6861 to properly shut down the SSL connection before closing the 6862 socket. 6863 6864 * libsoup/soup-ssl-proxy.c (soup_ssl_proxy_readwrite): Close the 6865 iochannels before quitting the main loop. 6866 6867 * tests/Makefile.am: disable building timeserver, the source file 6868 wasn't added. 6869 68702002-11-12 Dan Winship <danw@ximian.com> 6871 6872 * configure.in: Check for IPv6 support in networking headers. 6873 6874 * libsoup/soup-address.c: Make the internal structure of 6875 SoupAddress entirely private, and make SoupAddress be more like a 6876 hostent and less like a sockaddr. (Ie, make it not have a port 6877 associated with it.) Document undocumented functions. Add 6878 completely-untested support for IPv6. 6879 (soup_address_new_from_sockaddr): New, to parse a sockaddr into a 6880 SoupAddress and a port. 6881 (soup_address_ipv4_any, soup_address_ipv6_any): Return static 6882 addresses corresponding to the IPv6 and IPv6 "any" addresses. 6883 (soup_address_get_canonical_name): Use inet_ntop/inet_ntoa. 6884 (soup_address_make_sockaddr): Now constructs a new sockaddr, which 6885 may be a sockaddr_in or sockaddr_in6. 6886 (soup_address_gethostname, soup_address_gethostaddr): Remove 6887 these. They aren't reliable, especially on multihomed hosts. 6888 (soup_gethostbyname, soup_gethostbyaddr): support IPv6 6889 (soup_address_new): Keep pending lookups in a separate hash table 6890 from completed lookups. Fix a bug when canceling a lookup when 6891 there was more one outstanding request for it. 6892 (soup_address_lookup_in_cache): Removed. 6893 6894 * libsoup/soup-socket.c: Add a port field to SoupSocket (since 6895 it's not in SoupAddress any more). 6896 (soup_socket_connect): Simplify this. Don't use 6897 soup_address_lookup_in_cache, just call soup_address_new, since we 6898 already know the code can deal with the callback being invoked 6899 immediately. 6900 (soup_socket_new_sync, soup_socket_new): Take a port argument. 6901 (soup_socket_server_new): Take a SoupAddress to use as the local 6902 address to bind to. This lets the caller choose between the IPv4 6903 and IPv6 "any" addresses, and also lets you bind to a single 6904 interface of a multi-homed machine. 6905 (soup_socket_server_accept, soup_socket_server_try_accept): Merge 6906 the common code. 6907 6908 * libsoup/soup-server.c (soup_server_new): Pass 6909 soup_address_ipv4_any() to soup_socket_server_new(). 6910 6911 * libsoup/soup-socks.c (soup_connect_socks_proxy, 6912 soup_socks_write): Fix up for the API changes, but it won't work 6913 with IPv6 yet. 6914 6915 * tests/timeserver.c: Another really simple test, for the server 6916 socket code. 6917 6918 * tests/Makefile.am: build timeserver 6919 69202002-11-11 Dan Winship <danw@ximian.com> 6921 6922 * libsoup/soup-address.c: Move the SoupAddress code from 6923 soup-socket.c and soup-socket-unix.c to here. 6924 6925 * libsoup/soup-socket.c: Move the remaining code from 6926 soup-socket-unix.c here. 6927 6928 * libsoup/soup-socket-unix.c: Gone 6929 6930 * tests/get.c: really really trivial test program 6931 6932 * configure.in (AC_OUTPUT): 6933 * Makefile.am (SUBDIRS): add tests/ 6934 69352002-11-05 Dan Winship <danw@ximian.com> 6936 6937 * Split libsoup out of soup. ChangeLog.old contains the original 6938 soup ChangeLog. 6939 6940 * Makefile.am, etc: Fix things up to work with the new directory 6941 layout. Disable docs until we fix them. 6942 6943 * autogen.sh: Use gnome-autogen.sh 6944 6945 * configure.in: Require autoconf 2.53. Remove stuff that was only 6946 needed for httpd or wsdl code. Remove glib1 support. Bump version 6947 to 2.0. 6948 6949 * libsoup/Makefile.am: Rename library to libsoup-2.0, put includes 6950 in ${includedir}/soup-2.0 6951 6952 * libsoup/*: Merge soup-0-7 back onto the trunk. Remove 6953 SOAP-specific stuff, Windows support, and other things that 6954 weren't being maintained. 6955 6956 * soup-config.in, soupConf.sh: Kill these. We only support 6957 pkg-config now. 6958