[libsoup] soup-session.c: always send the "Keep-Alive" header
- From: Sergio Villar Senin <svillar src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libsoup] soup-session.c: always send the "Keep-Alive" header
- Date: Tue, 26 Apr 2011 17:18:57 +0000 (UTC)
commit 8e99df80d27115a6afce4203ddcc9ce31c4a7ce6
Author: Sergio Villar Senin <svillar igalia com>
Date: Tue Apr 26 18:47:11 2011 +0200
soup-session.c: always send the "Keep-Alive" header
This will save us many new connection attempts when connecting to HTTP1.0
servers that automatically try to close the connection unless specified by
the client.
https://bugzilla.gnome.org/show_bug.cgi?id=648680
libsoup/soup-session.c | 45 +++++++--------------------------------------
1 files changed, 7 insertions(+), 38 deletions(-)
---
diff --git a/libsoup/soup-session.c b/libsoup/soup-session.c
index ba98e65..0a7f7a3 100644
--- a/libsoup/soup-session.c
+++ b/libsoup/soup-session.c
@@ -66,8 +66,6 @@ typedef struct {
guint num_conns;
guint num_messages;
-
- SoupHTTPVersion http_version;
} SoupSessionHost;
typedef struct {
@@ -1037,7 +1035,6 @@ soup_session_host_new (SoupSession *session, SoupURI *uri)
host = g_slice_new0 (SoupSessionHost);
host->uri = soup_uri_copy_host (uri);
host->addr = soup_address_new (host->uri->host, host->uri->port);
- host->http_version = SOUP_HTTP_1_1;
return host;
}
@@ -1190,8 +1187,7 @@ soup_session_send_queue_item (SoupSession *session,
SoupMessageCompletionFn completion_cb)
{
SoupSessionPrivate *priv = SOUP_SESSION_GET_PRIVATE (session);
- SoupHTTPVersion http_version;
- SoupSessionHost *host;
+ const char *conn_header;
if (priv->user_agent) {
soup_message_headers_replace (item->msg->request_headers,
@@ -1206,27 +1202,17 @@ soup_session_send_queue_item (SoupSession *session,
priv->accept_language);
}
- g_mutex_lock (priv->host_lock);
- host = get_host_for_message (session, item->msg);
- http_version = host->http_version;
- g_mutex_unlock (priv->host_lock);
-
/* Force keep alive connections for HTTP 1.0. Performance will
* improve when issuing multiple requests to the same host in
* a short period of time, as we wouldn't need to establish
* new connections. Keep alive is implicit for HTTP 1.1.
*/
- if (http_version == SOUP_HTTP_1_0) {
- const gchar* conn_header;
-
- conn_header = soup_message_headers_get_list (item->msg->request_headers, "Connection");
- if (!conn_header ||
- (!soup_header_contains (conn_header, "Keep-Alive") &&
- !soup_header_contains (conn_header, "close")))
-
- soup_message_headers_append (item->msg->request_headers,
- "Connection", "Keep-Alive");
- }
+ conn_header = soup_message_headers_get_list (item->msg->request_headers, "Connection");
+ if (!conn_header ||
+ (!soup_header_contains (conn_header, "Keep-Alive") &&
+ !soup_header_contains (conn_header, "close")))
+ soup_message_headers_append (item->msg->request_headers,
+ "Connection", "Keep-Alive");
g_signal_emit (session, signals[REQUEST_STARTED], 0,
item->msg, soup_connection_get_socket (item->conn));
@@ -1507,20 +1493,6 @@ soup_session_set_item_status (SoupSession *session,
}
static void
-got_headers_cb (SoupMessage *msg, gpointer data)
-{
- SoupMessageQueueItem *item = data;
- SoupSessionPrivate *priv = SOUP_SESSION_GET_PRIVATE (item->session);
- SoupSessionHost *host;
-
- /* Update the HTTP version to use for messages to this host */
- g_mutex_lock (priv->host_lock);
- host = get_host_for_message (item->session, SOUP_MESSAGE (msg));
- host->http_version = soup_message_get_http_version (msg);
- g_mutex_unlock (priv->host_lock);
-}
-
-static void
queue_message (SoupSession *session, SoupMessage *msg,
SoupSessionCallback callback, gpointer user_data)
{
@@ -1541,9 +1513,6 @@ queue_message (SoupSession *session, SoupMessage *msg,
G_CALLBACK (redirect_handler), item);
}
- /* Used to keep track of the HTTP version used by the host */
- g_signal_connect (msg, "got-headers", G_CALLBACK (got_headers_cb), item);
-
g_signal_emit (session, signals[REQUEST_QUEUED], 0, msg);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]