diff options
Diffstat (limited to 'libsoup/soup-session.c')
-rw-r--r-- | libsoup/soup-session.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/libsoup/soup-session.c b/libsoup/soup-session.c index 4d4c8654..5acf60a8 100644 --- a/libsoup/soup-session.c +++ b/libsoup/soup-session.c @@ -1740,6 +1740,9 @@ soup_session_process_queue_item (SoupSession *session, if (item->paused) return; + if (item->state != SOUP_MESSAGE_FINISHING && g_cancellable_is_cancelled (item->cancellable)) + item->state = SOUP_MESSAGE_FINISHING; + switch (item->state) { case SOUP_MESSAGE_STARTING: if (!soup_session_ensure_item_connection (session, item)) @@ -2907,7 +2910,8 @@ conditional_get_ready_cb (SoupSession *session, stream = soup_session_send_finish (session, result, &error); if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { soup_cache_cancel_conditional_request (data->cache, data->conditional_msg); - cancel_cache_response (data->item); + if (data->item->state != SOUP_MESSAGE_FINISHED) + cancel_cache_response (data->item); async_cache_conditional_data_free (data); return; } |