diff options
Diffstat (limited to 'libsoup/soup-message-server-io.c')
-rw-r--r-- | libsoup/soup-message-server-io.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/libsoup/soup-message-server-io.c b/libsoup/soup-message-server-io.c index 2647b811..53c0ba38 100644 --- a/libsoup/soup-message-server-io.c +++ b/libsoup/soup-message-server-io.c @@ -252,17 +252,22 @@ get_response_headers (SoupMessage *msg, GString *headers, void soup_message_read_request (SoupMessage *msg, SoupSocket *sock, + gboolean use_thread_context, SoupMessageCompletionFn completion_cb, gpointer user_data) { GMainContext *async_context; GIOStream *iostream; - g_object_get (sock, - SOUP_SOCKET_ASYNC_CONTEXT, &async_context, - NULL); - if (!async_context) - async_context = g_main_context_ref (g_main_context_default ()); + if (use_thread_context) + async_context = g_main_context_ref_thread_default (); + else { + g_object_get (sock, + SOUP_SOCKET_ASYNC_CONTEXT, &async_context, + NULL); + if (!async_context) + async_context = g_main_context_ref (g_main_context_default ()); + } iostream = soup_socket_get_iostream (sock); @@ -271,6 +276,5 @@ soup_message_read_request (SoupMessage *msg, parse_request_headers, sock, completion_cb, user_data); - if (async_context) - g_main_context_unref (async_context); + g_main_context_unref (async_context); } |