diff --git a/libsoup/soup-session.c b/libsoup/soup-session.c
index 1dbde5a..50faf88 100644
--- a/libsoup/soup-session.c
+++ b/libsoup/soup-session.c
@@ -1301,8 +1301,14 @@ soup_session_get_connection (SoupSession *session,
 	SoupURI *uri;
 
 	if (item->conn) {
-		g_return_val_if_fail (soup_connection_get_state (item->conn) != SOUP_CONNECTION_DISCONNECTED, FALSE);
-		return TRUE;
+		/* (soup_connection_get_state (item->conn) != SOUP_CONNECTION_DISCONNECTED) ? (void)0 : abort(); */
+		/* g_return_val_if_fail (soup_connection_get_state (item->conn) != SOUP_CONNECTION_DISCONNECTED, FALSE); */
+		if (soup_connection_get_state (item->conn) == SOUP_CONNECTION_DISCONNECTED) {
+			g_object_unref (item->conn);
+			item->conn = NULL;
+		} else {
+			return TRUE;
+		}
 	}
 
 	g_mutex_lock (priv->host_lock);
