summaryrefslogtreecommitdiff
path: root/libsoup/soup-session.c
diff options
context:
space:
mode:
Diffstat (limited to 'libsoup/soup-session.c')
-rw-r--r--libsoup/soup-session.c59
1 files changed, 11 insertions, 48 deletions
diff --git a/libsoup/soup-session.c b/libsoup/soup-session.c
index e427ffa4..c4b95bfe 100644
--- a/libsoup/soup-session.c
+++ b/libsoup/soup-session.c
@@ -892,7 +892,6 @@ soup_session_set_item_connection (SoupSession *session,
{
g_clear_object (&item->conn);
item->conn = conn ? g_object_ref (conn) : NULL;
- item->conn_is_dedicated = FALSE;
soup_message_set_connection (item->msg, conn);
}
@@ -1127,14 +1126,11 @@ soup_session_unqueue_item (SoupSession *session,
{
SoupSessionPrivate *priv = soup_session_get_instance_private (session);
SoupSessionHost *host;
- SoupConnection *dedicated_conn = NULL;
GSList *f;
if (item->conn) {
- if (item->conn_is_dedicated)
- dedicated_conn = g_object_ref (item->conn);
- else if (soup_message_get_method (item->msg) != SOUP_METHOD_CONNECT ||
- !SOUP_STATUS_IS_SUCCESSFUL (soup_message_get_status (item->msg)))
+ if (soup_message_get_method (item->msg) != SOUP_METHOD_CONNECT ||
+ !SOUP_STATUS_IS_SUCCESSFUL (soup_message_get_status (item->msg)))
soup_connection_set_state (item->conn, SOUP_CONNECTION_IDLE);
soup_session_set_item_connection (session, item, NULL);
}
@@ -1149,21 +1145,9 @@ soup_session_unqueue_item (SoupSession *session,
g_mutex_lock (&priv->conn_lock);
host = get_host_for_message (session, item->msg);
host->num_messages--;
- if (dedicated_conn) {
- /* FIXME: Do not drop the connection if current number of connections
- * is no longer over the limits, just mark it as IDLE so it can be reused.
- */
- g_hash_table_remove (priv->conns, dedicated_conn);
- drop_connection (session, host, dedicated_conn);
- }
g_cond_broadcast (&priv->conn_cond);
g_mutex_unlock (&priv->conn_lock);
- if (dedicated_conn) {
- soup_connection_disconnect (dedicated_conn);
- g_object_unref (dedicated_conn);
- }
-
/* g_signal_handlers_disconnect_by_func doesn't work if you
* have a metamarshal, meaning it doesn't work with
* soup_message_add_header_handler()
@@ -1446,9 +1430,7 @@ get_connection_for_host (SoupSession *session,
SoupMessageQueueItem *item,
SoupSessionHost *host,
gboolean need_new_connection,
- gboolean ignore_connection_limits,
- gboolean *try_cleanup,
- gboolean *is_dedicated_connection)
+ gboolean *try_cleanup)
{
SoupSessionPrivate *priv = soup_session_get_instance_private (session);
SoupConnection *conn;
@@ -1476,30 +1458,18 @@ get_connection_for_host (SoupSession *session,
/* Limit the number of pending connections; num_messages / 2
* is somewhat arbitrary...
*/
- if (num_pending > host->num_messages / 2) {
- if (!ignore_connection_limits)
- return NULL;
-
- *is_dedicated_connection = TRUE;
- }
+ if (num_pending > host->num_messages / 2)
+ return NULL;
if (host->num_conns >= priv->max_conns_per_host) {
- if (!ignore_connection_limits) {
- if (need_new_connection)
- *try_cleanup = TRUE;
- return NULL;
- }
-
- *is_dedicated_connection = TRUE;
+ if (need_new_connection)
+ *try_cleanup = TRUE;
+ return NULL;
}
if (priv->num_conns >= priv->max_conns) {
- if (!ignore_connection_limits) {
- *try_cleanup = TRUE;
- return NULL;
- }
-
- *is_dedicated_connection = TRUE;
+ *try_cleanup = TRUE;
+ return NULL;
}
ensure_socket_props (session);
@@ -1540,8 +1510,6 @@ get_connection (SoupMessageQueueItem *item, gboolean *should_cleanup)
SoupConnection *conn = NULL;
gboolean my_should_cleanup = FALSE;
gboolean need_new_connection;
- gboolean ignore_connection_limits;
- gboolean is_dedicated_connection = FALSE;
soup_session_cleanup_connections (session, FALSE);
@@ -1549,17 +1517,13 @@ get_connection (SoupMessageQueueItem *item, gboolean *should_cleanup)
(soup_message_query_flags (item->msg, SOUP_MESSAGE_NEW_CONNECTION)) ||
(!soup_message_query_flags (item->msg, SOUP_MESSAGE_IDEMPOTENT) &&
!SOUP_METHOD_IS_IDEMPOTENT (soup_message_get_method (item->msg)));
- ignore_connection_limits =
- soup_message_query_flags (item->msg, SOUP_MESSAGE_IGNORE_CONNECTION_LIMITS);
g_mutex_lock (&priv->conn_lock);
host = get_host_for_message (session, item->msg);
while (TRUE) {
conn = get_connection_for_host (session, item, host,
need_new_connection,
- ignore_connection_limits,
- &my_should_cleanup,
- &is_dedicated_connection);
+ &my_should_cleanup);
if (conn || item->async)
break;
@@ -1583,7 +1547,6 @@ get_connection (SoupMessageQueueItem *item, gboolean *should_cleanup)
}
soup_session_set_item_connection (session, item, conn);
- item->conn_is_dedicated = is_dedicated_connection;
if (soup_connection_get_state (item->conn) != SOUP_CONNECTION_NEW) {
item->state = SOUP_MESSAGE_READY;