summaryrefslogtreecommitdiff
path: root/libsoup
diff options
context:
space:
mode:
authorSergio Villar Senin <svillar@igalia.com>2011-09-26 19:09:31 +0200
committerDan Winship <danw@gnome.org>2011-09-29 10:36:25 -0400
commitd8108886c151bd0f190e949cf3e64d2a137a13a0 (patch)
tree94fd1e35bcad342f10949dc4ceae65d5da70e650 /libsoup
parent5cb220971a58d00616711d8ba04b7eaff89445a5 (diff)
downloadlibsoup-d8108886c151bd0f190e949cf3e64d2a137a13a0.tar.gz
SoupSession: set the connection to IDLE on unqueuing SoupMessages
Connection should be set to IDLE state only after being 100% sure that is not going to be reused by the current owner. Also, fix a bug in SoupSessionSync revealed by this change. https://bugzilla.gnome.org/show_bug.cgi?id=651146
Diffstat (limited to 'libsoup')
-rw-r--r--libsoup/soup-message-io.c2
-rw-r--r--libsoup/soup-session-sync.c2
-rw-r--r--libsoup/soup-session.c1
3 files changed, 2 insertions, 3 deletions
diff --git a/libsoup/soup-message-io.c b/libsoup/soup-message-io.c
index 59b75d8c..a489788a 100644
--- a/libsoup/soup-message-io.c
+++ b/libsoup/soup-message-io.c
@@ -144,8 +144,6 @@ soup_message_io_stop (SoupMessage *msg)
if (io->read_state < SOUP_MESSAGE_IO_STATE_FINISHING)
soup_socket_disconnect (io->sock);
- else if (io->item && io->item->conn)
- soup_connection_set_state (io->item->conn, SOUP_CONNECTION_IDLE);
}
#define SOUP_MESSAGE_IO_EOL "\r\n"
diff --git a/libsoup/soup-session-sync.c b/libsoup/soup-session-sync.c
index aecbf6f7..7bd76ea8 100644
--- a/libsoup/soup-session-sync.c
+++ b/libsoup/soup-session-sync.c
@@ -155,7 +155,7 @@ tunnel_connect (SoupSession *session, SoupMessageQueueItem *related)
soup_session_send_queue_item (session, item, NULL);
status = item->msg->status_code;
if (item->state == SOUP_MESSAGE_RESTARTING &&
- soup_connection_get_state (conn) != SOUP_CONNECTION_DISCONNECTED) {
+ soup_message_io_in_progress (item->msg)) {
item->state = SOUP_MESSAGE_STARTING;
soup_message_restarted (item->msg);
} else {
diff --git a/libsoup/soup-session.c b/libsoup/soup-session.c
index aa57d129..cd4bbdd5 100644
--- a/libsoup/soup-session.c
+++ b/libsoup/soup-session.c
@@ -1499,6 +1499,7 @@ soup_session_unqueue_item (SoupSession *session,
SoupSessionHost *host;
if (item->conn) {
+ soup_connection_set_state (item->conn, SOUP_CONNECTION_IDLE);
g_object_unref (item->conn);
item->conn = NULL;
}