2003-06-02  Chris Toshok  <toshok@ximian.com>

	* libsoup/soup-ssl.c: remove #include for soup-nss.h

2003-06-02  Chris Toshok  <toshok@ximian.com>

	* libsoup/Makefile.am (INCLUDES): remove NSS_CFLAGS.
	(libsoup_2_0_la_LIBADD): remove NSS_LIBS.
	(libsoup_2_0_la_SOURCES): remove soup-nss.[ch]

2003-06-02  Chris Toshok  <toshok@ximian.com>

	* configure.in: Bump version to 1.99.23.

2003-05-30  Chris Toshok  <toshok@ximian.com>

	* libsoup/soup-queue.c (soup_queue_error_cb): always force a
	reconnect when there's an error with ssl connection.  This fixes
	#43387, but it runs the risk of sending requests multiple times to
	the exchange server, and it results in lots of shorter lived
	connections and more forking (in the ssl proxy case), depending on
	the length of the operation.

2003-05-21  Dan Winship  <danw@ximian.com>

	* configure.in: 1.99.22 (codename: French Onion Soup)

2003-05-20  Dan Winship  <danw@ximian.com>

	* libsoup/soup-message.c (soup_message_requeue): Clear the
	write_tag as well so we don't double-cancel it. #43395.

	* libsoup/soup-queue.c (soup_queue_error_cb): The connection might
	be destroyed by the end of the func, so we have to call
	soup_connection_set_used at the beginning.

	* libsoup/soup-openssl.c (soup_openssl_read, soup_openssl_write):
	Call g_set_error() so that we don't SEGV immediately after
	returning G_IO_STATUS_ERROR.

2003-05-08  Joe Shaw  <joe@ximian.com>

	* configure.in: Bump version to 1.99.21

	* libsoup/soup-queue.c (proxy_connect): If the proxy HTTPS
	tunnelling fails, the other message which shares our same
	connection will free it first, so set ours to NULL.

2003-05-08  Dan Winship  <danw@ximian.com>

	* libsoup/soup-auth.c (ntlm_auth): If the auth status is PENDING,
	return an NTLM request string. Otherwise return the "response"
	field (which should include the NTLM authenticate message)
	(ntlm_init): Don't bother setting "response" to the NTLM request
	string. Just leave it NULL in that case.

	* libsoup/soup-message.c (authorize_handler): Never try to reuse
	an NTLM auth returned from soup_auth_lookup. Only set the auth on
	the connection when it's SOUP_AUTH_STATUS_SUCCESSFUL. Otherwise,
	call soup_auth_set_context() on it just like for non-NTLM auth.
	The net effect of all of this is that now we record when a context
	needs NTLM auth just like with non-NTLM auth, so that that info
	gets preserved across connections.
	(soup_message_requeue): No longer need the hackery here to
	preserve the connection auth state.

2003-05-07  Dan Winship  <danw@ximian.com>

	* libsoup/soup-context.c (soup_connection_set_in_use): New, to
	toggle the connection's in_use flag, and set up the death watch
	when it's not in use.
	(connection_death): This is only hooked up when the connection is
	not in use now, so don't need to check that. Should fix the
	infinite connection_death loop.
	(soup_connection_is_new): Keep a distinct "new" flag rather than
	defining "new" as "has been released at least once".
	(soup_connection_set_used): Mark a connection no-longer new.
	(soup_context_connect_cb): Mark the connection as new. Don't set
	up the death watch since it's in_use.
	(try_existing_connections): Use soup_connection_set_in_use.
	(soup_connection_release): Likewise

	* libsoup/soup-message.c (requeue_read_finished): Call
	soup_connection_set_used so that the connection isn't still
	considered new when we send the message the second time.

	* libsoup/soup-queue.c (soup_queue_error_cb): Call
	soup_connection_set_used (assuming we don't close the connection)
	(soup_queue_read_done_cb): Likewise.

	* libsoup/soup-transfer.c (soup_transfer_read_cb): If we read
	nothing, call soup_transfer_read_error_cb rather than just
	cancelling, or else it will get cancelled again later.

2003-05-07  Dan Winship  <danw@ximian.com>

	* soup-2.0.pc.in (Libs): Don't put @OPENSSL_LIBS@ here; the
	library doesn't depend on them, only the proxy does. #42473

2003-05-06  Dan Winship  <danw@ximian.com>

	* src/libsoup/soup-message.c (global_handlers): Change the
	redirect handler to be a RESPONSE_ERROR_CLASS_HANDLER for
	SOUP_ERROR_CLASS_REDIRECT rather than a RESPONSE_HEADER_HANDLER
	for "Location" to get around the non-64-bit-clean union
	initialization pointed out by Jeremy Katz <katzj@redhat.com>.
	(redirect_handler): Update for that.

2003-04-28  Dan Winship  <danw@ximian.com>

	* configure.in: 1.99.20

	* libsoup/soup-transfer.c (soup_transfer_read_error_cb): Make sure
	we always call UNIGNORE_CANCEL. Might fix #41971

2003-04-25  Dan Winship  <danw@ximian.com>

	* libsoup/soup-queue.c (soup_queue_error_cb): if an old connection
	suddenly gets an io error while reading or writing, assume it's a
	timeout or something, close the connection, and requeue the
	message.

2003-04-23  Dan Winship  <danw@ximian.com>

	* libsoup/soup-message.c (soup_message_cleanup): Don't set up the
	soup-transfer callbacks to keep reading off the connection unless
	we're actually going to keep the connection around afterward.
	Otherwise we can just close it.

	* libsoup/soup-transfer.c: Re-kludge the awful IGNORE_CANCEL
	thingy so that it's possible to cancel a read from inside a
	callback so that the above change actually works instead of just
	crashing.

2003-04-20  Rodney Dawes  <dobey@ximian.com>

	* configure.in: Up version to 1.99.18
	* libsoup/Makefile.am: Line separator after GNUTLS_CFLAGS
	
2003-04-11  Dan Winship  <danw@ximian.com>

	* libsoup/soup-context.c (soup_connection_purge_idle): New
	function to close all idle connections. (Needed for #41117 or else
	there's no way to force-discard NTLM authentication.)

	* libsoup/soup-queue.c (soup_queue_shutdown): Use it

2003-04-10  Joe Shaw  <joe@ximian.com>

	* libsoup/soup-queue.c (proxy_https_connect):
	proxy_https_connect_cb() might not get called if connecting to the
	proxy fails, and it causes us to double-free the connection.
	Always set the message's connection to NULL before freeing it.

2003-04-09  Dan Winship  <danw@ximian.com>

	* configure.in: 1.99.17

2003-04-07  Dan Winship  <danw@ximian.com>

	* libsoup/soup-context.c (connection_death): Revert Joe's changes.
	We can't release the connection there because there may be
	SoupMessages still pointing to it. (Needs to be revisited.)

2003-04-03  JP Rosevear  <jpr@ximian.com>

	* libsoup/soup-ssl.c (soup_ssl_hup_waitpid): guard against EINTR
	error during waitpid

	* libsoup/soup-address.c: ditto

2003-04-02  Joe Shaw  <joe@ximian.com>

	* libsoup/soup-context.c (connection_death): Only drop the
	connection if we get an error condition on the channel.  Fixes a
	double-free.

2003-04-02  Joe Shaw  <joe@ximian.com>

	* libsoup/soup-context.c (connection_death): Just call
	soup_connection_release() from here and return whether the
	connection is in use.

2003-03-31  Ian Peters  <itp@ximian.com>

	* libsoup/soup-gnutls.c (soup_gnutls_close): loop on gnutls_bye in
	case of EAGAIN or EINTR, since shutting down an SSL connection
	requires more than just closing a socket.

2003-03-28  Dan Winship  <danw@ximian.com>

	* libsoup/soup-message.c (soup_message_set_context): If the new
	context points to a different server from the old context, call
	soup_message_cleanup. Otherwise it tries to reuse the old
	connection...

2003-03-25  Joe Shaw  <joe@ximian.com>

	* configure.in: Bump up to 1.99.16

2003-03-24  Joe Shaw  <joe@ximian.com>

	* soup-error.[ch]: Add SOUP_ERROR_SSL_FAILED which gives a
	slightly better error message on various SSL failures than the
	previous message.

	* soup-queue.c (soup_queue_error_cb): Throw the
	SOUP_ERROR_SSL_FAILED error when we fail an SSL handshake.

2003-03-21  Joe Shaw  <joe@ximian.com>

	* soup-server.c: Use non-deprecated g_main_loop_* calls
	throughout.
	(soup_server_unref): Don't unref the main loop if it's NULL.
	Fixes a glib warning.

2003-03-18  Dan Winship  <danw@ximian.com>

	* configure.in: comment out NSS checks. The NSS code doesn't work
	and there are no current plans to fix it.

	* README (Features): Mention GnuTLS, remove NSS and the rest of
	the "Planned Features" section.

	* MAINTAINERS: remove Alex

	* libsoup/soup-openssl.c (soup_openssl_get_iochannel): Bump the
	timeout to 10 seconds (and get rid of the 3 tries) so we don't
	fail to connect just because the server is slow/far away.

2003-03-17  Joe Shaw  <joe@ximian.com>

	* configure.in: Bump up to 1.99.15.

2003-03-12  Ian Peters  <itp@ximian.com>

	* libsoup/soup-gnutls.c: because creating client credentials is
	expensive, keep the same one around as long as possible, only
	recreating it if the ssl_ca_file changes.  Wrap
	gnutls_certificate_credentials in a refcounted struct to avoid
	freeing it while another established connection may potentially
	need it (say, to rehandshake).

2003-03-11  Frank Belew  <frb@ximian.com>

	* soup-2.0.pc.in: add ssl libs to defaults, since ssl doesn't 
	use pkgconfig

2003-03-10  Joe Shaw  <joe@ximian.com>

	* configure.in: Bump up to 1.99.14.

	* configure.in, libsoup/Makefile.am, libsoup/soup.gnutls.[ch],
	libsoup/soup-ssl.c: Add support for GnuTLS.  Patch from Ian
	Peters.

2003-03-07  Joe Shaw  <joe@ximian.com>

	* configure.in: Bump up to 1.99.13.

	* libsoup/soup-context.c (soup_context_connect_cb): Add G_IO_IN to
	the list of conditions to watch.  If the remote end hangs up the
	connection, we'll get a successful read of 0 bytes, not a HUP.
	The connection will have to be released by the point we check for
	it in connection_death().

	* libsoup/soup-queue.c (soup_queue_error_cb): Get rid of some
	(apparently) errant resetting of the read and write tags.  I think
	this might have been causing some reentrancy and crashes.

	* libsoup/soup-socket.c (soup_socket_get_iochannel): Set the IO
	channel to NULL encoding and not buffered.

	* libsoup/soup-transfer.c (soup_transfer_read_cb): Remove some
	incorrect comments.

2003-02-28  Joe Shaw  <joe@ximian.com>

	* configure.in: Bump up to 1.99.12.

	* libsoup/soup-transfer.c (soup_transfer_read_cb): We can get a
	header_len of 0 and a total_read of 0 in the case of a SIGPIPE; in
	this case we probably don't want to call the error callback, we
	just want to act like our transfer was cancelled.

2003-02-27  Joe Shaw  <joe@ximian.com>

	Try to apply some order to the iochannel refcounting...

	* configure.in: Bump up to 1.99.11.

	* libsoup/soup-context.c (soup_connection_get_iochannel): The
	connections needs to own a reference to the iochannel!  If we're
	using HTTPS, release the ref we get from soup_socket_get_iochannel
	and replace it with the ref we get from soup_ssl_get_iochannel().
	Then, always ref the channel that we return (ugh, but that's the
	soup way).
	(connection_free): Release the connection's ref to the iochannel.

	* libsoup/soup-ssl.c (soup_ssl_get_iochannel_real): Ref the
	iochannel. The reference we pass back will be owned by the
	connection.
	(soup_ssl_hup_waitpid): Release our ref.

2003-02-27  Joe Shaw  <joe@ximian.com>

	* configure.in: Bump up to 1.99.10.

	* libsoup/soup-ssl.c (soup_ssl_get_iochannel_real): Ref the
	iochannel, return to the status quo.  Sigh.

2003-02-26  Joe Shaw  <joe@ximian.com>

	* configure.in: Bump up to 1.99.9.

	* libsoup/soup-ssl.c (soup_ssl_hup_waitpid): Comment out the unref,
	it's causing problems with HTTPS and proxies; the iochannel
	refcounting is waaaaaay horked.

2003-02-26  Frank Belew  <frb@ximian.com>

	* libsoup/Makefile.am: added workaround to link ssl-proxy statically

2003-02-11  Joe Shaw  <joe@ximian.com>

	* configure.in: Bump up to 1.99.8 for snaps.

	* libsoup/soup-address.c (soup_gethostbyname): Fix this for Solaris.
	It returns the address to the resulting hostent or NULL on failure,
	unlike Linux which returns an error code.

2003-02-11  Joe Shaw  <joe@ximian.com>

	* configure.in: Bump up to 1.99.7 for snaps.

	* libsoup/soup-openssl.c (soup_openssl_get_iochannel): Print out
	the error string from OpenSSL if we can't establish a connection.

2003-02-04  Joe Shaw  <joe@ximian.com>

	* configure.in: Bump up to 1.99.6 for snaps.

	* libsoup/soup-server.c (destroy_message): We already assigned
	chan, so don't reassign it, and unref it in all cases.
	(issue_bad_request): Always unref after a call to
	soup_socket_get_iochannel(), because it refs it.
	(conn_accept): Fix some funky GIOChannel reffing here.

	* libsoup/soup-ssl.c (soup_ssl_get_iochannel_real): Don't call
	g_io_channel_ref() on the socket.  This is the exact opposite of
	what we want to do.  Create a temporary structure containing the
	parent pid and the old socket and unref the socket when our
	callback is called.  This should fix GIOChannels being leaked on
	SSL connections.

	* libsoup/soup-ssl-proxy.c: Always close the GIOChannels after the
	main loop quits.

2003-01-22  Joe Shaw  <joe@ximian.com>

	* configure.in: Bump up to 1.99.5 for the snaps.

	* libsoup/soup-address.c (soup_address_new): If we found the
	address in our hash, we need to return NULL or else Soup will
	think we're doing an async lookup and do some cancellation on
	us.  Besides, we were returning the wrong type anyway and it
	was crashing things.

2003-01-17  Joe Shaw  <joe@ximian.com>

	* libsoup/soup-ssl-proxy.c (soup_ssl_proxy_readwrite): It's not
	uncommon for us to get a G_IO_ERROR_AGAIN when trying to write
	out, so keep trying until we succeed.

2003-01-10  Joe Shaw  <joe@ximian.com>

	* libsoup/soup-openssl.c (verify_cb): Load some X509 and SSL error
	strings and print out the error when the cert can't verify.

2003-01-09  Dan Winship  <danw@ximian.com>

	* libsoup/soup-address.c (soup_gethostbyname): Fix a memcpy
	overrun noticed by valgrind

2002-12-20  Joe Shaw  <joe@ximian.com>

	* libsoup/soup-server.c (soup_server_new_with_host): Added.
	Starts a server only on the interface specified, instead of all
	network interfaces.

2002-12-16  Jeremy Katz  <katzj@redhat.com>

	* configure.in: use $libdir instead of /usr/lib when looking for
	libraries

2002-12-11  Joe Shaw  <joe@ximian.com>

	* libsoup/soup-queue.c (proxy_https_connect_cb): I am an idiot.
	Don't set a variable to NULL and then immediately try to
	dereference it.

2002-12-09  Joe Shaw  <joe@ximian.com>

	* libsoup/soup-openssl.c (soup_openssl_get_iochannel): Put a
	timeout on the select()s when we get SSL_ERROR_WANT_READ/WRITE so
	we don't hang forever if we don't get more data.

	* libsoup/soup-ssl-proxy.c (main): Don't set our fds to blocking
	or else we'll hang forever in SSL_connect() if the other side
	hangs up.

	* libsoup/soup-queue.c (proxy_https_connect_cb): We never want to
	release the connection on message free, even if the connection was
	unsuccessful.

2002-12-03  Joe Shaw  <joe@ximian.com>

	* libsoup/soup-ssl.c (soup_ssl_get_iochannel_real): Call
	g_io_channel_set_close_on_unref() on the second half of the socket
	pair so we don't leak file descriptors.

2002-12-03  Frank Belew	 <frb@ximian.com>

	* libsoup/soup-address.c: add signal.h to the list of headers to 
	pick up SIGKILL
	
2002-11-25  Joe Shaw  <joe@ximian.com>

	* Makefile.am: Build the tests directory again

2002-11-21  Rodney Dawes  <dobey@ximian.com>

	* configure.in: Don't require autoconf 2.5x, needs to work with 2.13
	
2002-11-20  Michael Meeks  <michael@ximian.com>

	* configure.in: require autoconf 2.52 not 2.53.

2002-11-18  Dan Winship  <danw@ximian.com>

	* libsoup/soup-address.c (soup_address_hash): Don't use s6_addr32
	since it's apparently non-portable. Use s6_addr instead.
	(soup_gethostbyaddr): fix a sometimes-uninitialized variable.

	* libsoup/soup-error.c: Fix spelling of
	SOUP_ERROR_MOVED_PERMANENTLY and its description.

	* libsoup/soup-message.c (soup_message_get_request_header, etc):
	Remove long-deprecated API.

	* libsoup/soup-socket.c (soup_socket_connect): remove unused
	variable.

	* libsoup/soup-openssl.c (soup_openssl_read): Use gsize.
	* libsoup/soup-server.c (cgi_read): Likewise
	* libsoup/soup-socks.c (soup_socks_write, soup_socks_read):
	Likewise.
	* libsoup/soup-ssl-proxy.c (soup_ssl_proxy_readwrite): Likewise.
	* libsoup/soup-transfer.c (soup_transfer_read_cb,
	soup_transfer_write_cb): Likewise.

	* tests/timeserver.c: Add "-6" to listen on the IPv6 local address
	instead of IPv4. (Tested on OS X.)

2002-11-15  Dan Winship  <danw@ximian.com>

	* libsoup/*: Change old Helix Code refs to Ximian (and update
	copyright dates).

2002-11-15  Frank Belew  <frb@ximian.com>

	* tests/Makefile.am: uncomment lines to make timeserver build 
	correctly
	
2002-11-14  Joe Shaw  <joe@ximian.com>

	* libsoup/soup-address.c (soup_address_new): When we get an
	address from the hash, call our address lookup callback or else
	the connection will hang.

2002-11-13  Dan Winship  <danw@ximian.com>

	* tests/timeserver.c: Oops, commit this.

	* tests/Makefile.am (noinst_PROGRAMS): reenable timeserver.

2002-11-13  Joe Shaw  <joe@ximian.com>

	* libsoup/Makefile.am: Replace the BINDIR define with LIBEXECDIR.
	(install-exec-hook): Install libsoup-ssl-proxy into libexecdir
	instead of bindir.

	* libsoup/soup-openssl.c (soup_openssl_close): Call SSL_shutdown()
	to properly shut down the SSL connection before closing the
	socket.

	* libsoup/soup-ssl-proxy.c (soup_ssl_proxy_readwrite): Close the
	iochannels before quitting the main loop.

	* tests/Makefile.am: disable building timeserver, the source file
	wasn't added.

2002-11-12  Dan Winship  <danw@ximian.com>

	* configure.in: Check for IPv6 support in networking headers.

	* libsoup/soup-address.c: Make the internal structure of
	SoupAddress entirely private, and make SoupAddress be more like a
	hostent and less like a sockaddr. (Ie, make it not have a port
	associated with it.) Document undocumented functions. Add
	completely-untested support for IPv6.
	(soup_address_new_from_sockaddr): New, to parse a sockaddr into a
	SoupAddress and a port.
	(soup_address_ipv4_any, soup_address_ipv6_any): Return static
	addresses corresponding to the IPv6 and IPv6 "any" addresses.
	(soup_address_get_canonical_name): Use inet_ntop/inet_ntoa.
	(soup_address_make_sockaddr): Now constructs a new sockaddr, which
	may be a sockaddr_in or sockaddr_in6.
	(soup_address_gethostname, soup_address_gethostaddr): Remove
	these. They aren't reliable, especially on multihomed hosts.
	(soup_gethostbyname, soup_gethostbyaddr): support IPv6
	(soup_address_new): Keep pending lookups in a separate hash table
	from completed lookups. Fix a bug when canceling a lookup when
	there was more one outstanding request for it.
	(soup_address_lookup_in_cache): Removed.

	* libsoup/soup-socket.c: Add a port field to SoupSocket (since
	it's not in SoupAddress any more).
	(soup_socket_connect): Simplify this. Don't use
	soup_address_lookup_in_cache, just call soup_address_new, since we
	already know the code can deal with the callback being invoked
	immediately.
	(soup_socket_new_sync, soup_socket_new): Take a port argument.
	(soup_socket_server_new): Take a SoupAddress to use as the local
	address to bind to. This lets the caller choose between the IPv4
	and IPv6 "any" addresses, and also lets you bind to a single
	interface of a multi-homed machine.
	(soup_socket_server_accept, soup_socket_server_try_accept): Merge
	the common code.

	* libsoup/soup-server.c (soup_server_new): Pass
	soup_address_ipv4_any() to soup_socket_server_new().

	* libsoup/soup-socks.c (soup_connect_socks_proxy,
	soup_socks_write): Fix up for the API changes, but it won't work
	with IPv6 yet.

	* tests/timeserver.c: Another really simple test, for the server
	socket code.

	* tests/Makefile.am: build timeserver

2002-11-11  Dan Winship  <danw@ximian.com>

	* libsoup/soup-address.c: Move the SoupAddress code from
	soup-socket.c and soup-socket-unix.c to here.

	* libsoup/soup-socket.c: Move the remaining code from
	soup-socket-unix.c here.

	* libsoup/soup-socket-unix.c: Gone

	* tests/get.c: really really trivial test program

	* configure.in (AC_OUTPUT):
	* Makefile.am (SUBDIRS): add tests/

2002-11-05  Dan Winship  <danw@ximian.com>

	* Split libsoup out of soup. ChangeLog.old contains the original
	soup ChangeLog.

	* Makefile.am, etc: Fix things up to work with the new directory
	layout. Disable docs until we fix them.

	* autogen.sh: Use gnome-autogen.sh

	* configure.in: Require autoconf 2.53. Remove stuff that was only
	needed for httpd or wsdl code. Remove glib1 support. Bump version
	to 2.0.

	* libsoup/Makefile.am: Rename library to libsoup-2.0, put includes
	in ${includedir}/soup-2.0
	
	* libsoup/*: Merge soup-0-7 back onto the trunk. Remove
	SOAP-specific stuff, Windows support, and other things that
	weren't being maintained.

	* soup-config.in, soupConf.sh: Kill these. We only support
	pkg-config now.
