summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libsoup/soup-cache.c5
-rw-r--r--libsoup/soup-message.c17
-rw-r--r--libsoup/soup-session.c10
3 files changed, 13 insertions, 19 deletions
diff --git a/libsoup/soup-cache.c b/libsoup/soup-cache.c
index d118c4c0..3cc4844e 100644
--- a/libsoup/soup-cache.c
+++ b/libsoup/soup-cache.c
@@ -1069,7 +1069,7 @@ SoupCacheResponse
soup_cache_has_response (SoupCache *cache, SoupMessage *msg)
{
SoupCacheEntry *entry;
- const char *cache_control, *pragma;
+ const char *cache_control;
gpointer value;
int max_age, max_stale, min_fresh;
GList *lru_item, *item;
@@ -1130,8 +1130,7 @@ soup_cache_has_response (SoupCache *cache, SoupMessage *msg)
/* For HTTP 1.0 compatibility. RFC2616 section 14.9.4
*/
- pragma = soup_message_headers_get_list (msg->request_headers, "Pragma");
- if (pragma && soup_header_contains (pragma, "no-cache"))
+ if (soup_message_headers_header_contains (msg->request_headers, "Pragma", "no-cache"))
return SOUP_CACHE_RESPONSE_STALE;
cache_control = soup_message_headers_get_list (msg->request_headers, "Cache-Control");
diff --git a/libsoup/soup-message.c b/libsoup/soup-message.c
index 45f56a4d..07bcea60 100644
--- a/libsoup/soup-message.c
+++ b/libsoup/soup-message.c
@@ -1528,13 +1528,6 @@ soup_message_get_http_version (SoupMessage *msg)
gboolean
soup_message_is_keepalive (SoupMessage *msg)
{
- const char *c_conn, *s_conn;
-
- c_conn = soup_message_headers_get_list (msg->request_headers,
- "Connection");
- s_conn = soup_message_headers_get_list (msg->response_headers,
- "Connection");
-
if (msg->status_code == SOUP_STATUS_OK &&
msg->method == SOUP_METHOD_CONNECT)
return TRUE;
@@ -1550,13 +1543,15 @@ soup_message_is_keepalive (SoupMessage *msg)
* doesn't request it. So ignore c_conn.
*/
- if (!s_conn || !soup_header_contains (s_conn, "Keep-Alive"))
+ if (!soup_message_headers_header_contains (msg->response_headers,
+ "Connection", "Keep-Alive"))
return FALSE;
} else {
/* Normally persistent unless either side requested otherwise */
- if (c_conn && soup_header_contains (c_conn, "close"))
- return FALSE;
- if (s_conn && soup_header_contains (s_conn, "close"))
+ if (soup_message_headers_header_contains (msg->request_headers,
+ "Connection", "close") ||
+ soup_message_headers_header_contains (msg->response_headers,
+ "Connection", "close"))
return FALSE;
return TRUE;
diff --git a/libsoup/soup-session.c b/libsoup/soup-session.c
index 76bf76f7..a9b14976 100644
--- a/libsoup/soup-session.c
+++ b/libsoup/soup-session.c
@@ -1316,7 +1316,6 @@ soup_session_send_queue_item (SoupSession *session,
SoupMessageCompletionFn completion_cb)
{
SoupSessionPrivate *priv = SOUP_SESSION_GET_PRIVATE (session);
- const char *conn_header;
if (priv->user_agent) {
soup_message_headers_replace (item->msg->request_headers,
@@ -1336,12 +1335,13 @@ soup_session_send_queue_item (SoupSession *session,
* a short period of time, as we wouldn't need to establish
* new connections. Keep alive is implicit for HTTP 1.1.
*/
- 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")))
+ if (!soup_message_headers_header_contains (item->msg->request_headers,
+ "Connection", "Keep-Alive") &&
+ !soup_message_headers_header_contains (item->msg->request_headers,
+ "Connection", "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));