libsoup r1111 - in trunk: . libsoup



Author: danw
Date: Tue Mar 18 23:08:05 2008
New Revision: 1111
URL: http://svn.gnome.org/viewvc/libsoup?rev=1111&view=rev

Log:
	* libsoup/soup-message-io.c (soup_message_io_unpause): if delaying
	the unpause to idle time, we need to keep track of the idle source
	(soup_message_io_stop): if the message is waiting to unpause
	itself, cancel that

	* libsoup/soup-server.c (soup_server_pause_message): call
	soup_message_io_pause(), not soup_message_io_unpause(). Duh.


Modified:
   trunk/ChangeLog
   trunk/libsoup/soup-message-io.c
   trunk/libsoup/soup-server.c

Modified: trunk/libsoup/soup-message-io.c
==============================================================================
--- trunk/libsoup/soup-message-io.c	(original)
+++ trunk/libsoup/soup-message-io.c	Tue Mar 18 23:08:05 2008
@@ -62,6 +62,7 @@
 	guint                 written;
 
 	guint read_tag, write_tag, err_tag;
+	GSource *unpause_source;
 
 	SoupMessageGetHeadersFn   get_headers_cb;
 	SoupMessageParseHeadersFn parse_headers_cb;
@@ -139,6 +140,11 @@
 		io->err_tag = 0;
 	}
 
+	if (io->unpause_source) {
+		g_source_destroy (io->unpause_source);
+		io->unpause_source = NULL;
+	}
+
 	if (io->read_state < SOUP_MESSAGE_IO_STATE_FINISHING)
 		soup_socket_disconnect (io->sock);
 	else if (io->conn) {
@@ -874,6 +880,7 @@
 	SoupMessageIOData *io = priv->io_data;
 
 	g_return_val_if_fail (io != NULL, FALSE);
+	io->unpause_source = NULL;
 
 	if (io->write_tag || io->read_tag)
 		return FALSE;
@@ -910,9 +917,12 @@
 		      SOUP_SOCKET_FLAG_NONBLOCKING, &non_blocking,
 		      SOUP_SOCKET_ASYNC_CONTEXT, &async_context,
 		      NULL);
-	if (non_blocking)
-		soup_add_idle (async_context, io_unpause_internal, msg);
-	else
+	if (non_blocking) {
+		if (!io->unpause_source) {
+			io->unpause_source = soup_add_idle (
+				async_context, io_unpause_internal, msg);
+		}
+	} else
 		io_unpause_internal (msg);
 	if (async_context)
 		g_main_context_unref (async_context);

Modified: trunk/libsoup/soup-server.c
==============================================================================
--- trunk/libsoup/soup-server.c	(original)
+++ trunk/libsoup/soup-server.c	Tue Mar 18 23:08:05 2008
@@ -1288,7 +1288,7 @@
 	g_return_if_fail (SOUP_IS_SERVER (server));
 	g_return_if_fail (SOUP_IS_MESSAGE (msg));
 
-	soup_message_io_unpause (msg);
+	soup_message_io_pause (msg);
 }
 
 /**



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]