2006-05-29 Dan Winship * configure.in: 2.2.93 * NEWS: update 2006-05-29 Dan Winship * libsoup/soup-message-io.c (SoupMessageIOState): add a new state "FINISHING" which means "done I/O, but not yet done processing and cleanup" before "DONE" (which now always means "completely done"). (soup_message_io_stop): disconnect the socket if the read state is "< FINISHING", not "!= DONE". (io_error): on an EOF-that-signals-end-of-data, set state to FINISHING and run io_read(). (io_read, io_write): remove the g_return_if_fails from before. s/DONE/FINISHING/ in most places. In the FINISHING handler, stop listening for the readable/writable signal (eg, so we don't end up reading a following pipelined request), and set the state to DONE. (soup_message_io_unpause): Only reconnect the readable/writable signals if the io state isn't DONE. Guard the calls to io_read/io_write better so that it's safe to call this even after they are both DONE, since it may be easier for us to test that than for the caller to. Fixes 334469, 342640, and another bug caused by the earlier workaround to 334469. Based on patches and analysis from William Jon McCann and Armin Bauer. * tests/simple-proxy.c (main): add g_thread_init (NULL) to make this work again. (Pointed out by Alex Larsson) 2006-05-26 Dan Winship * libsoup/soup-socket.c: #include for struct timeval. #342048 * libsoup/soup-connection.c (soup_connection_connect_sync): Start SSL after CONNECTing! Doh. Part of bnc #174255. (SoupConnectionMode): new enum for the three types of SoupConnection (direct, proxy, tunnel). (set_property): set priv->mode according to proxy_uri and conn_uri. (socket_connect_result, soup_connection_connect_sync): use priv->mode to decide whether or not to tunnel. (send_request): Only pass TRUE for is_proxy to soup_message_send_request if mode is PROXY, not if it's TUNNEL. (Also part of bnc #174255). 2006-05-26 Dan Winship * libsoup/soup-message-io.c (soup_message_io_in_progress): tests if IO is currently in progress on a message. * libsoup/soup-session-async.c (run_queue): don't process messages that are io_in_progress. #342545, fix based on analysis from Wang Xin. (In the future we may want to re-fix this by adding a REQUEUED message status separate from QUEUED.) 2006-05-22 Dan Winship * libsoup/soup-session.c (cleanup_hosts): Don't free the hosts while holding host_lock; that's not allowed and can cause deadlock. #309867. Based on a patch from Veerapuram Varadhan for part of bnc #174255.