diff options
author | Dan Winship <danw@gnome.org> | 2014-01-19 09:44:35 -0500 |
---|---|---|
committer | Dan Winship <danw@gnome.org> | 2014-05-02 09:03:56 -0400 |
commit | 3ccb212449e7ac4f43888eee93366be934a87445 (patch) | |
tree | cb2a0547b0e1db180523d80e6158db33bbaa742b /libsoup/soup-server.c | |
parent | 93fa1c4b6afaf1cec0d241ccacc003d8fc531231 (diff) | |
download | libsoup-3ccb212449e7ac4f43888eee93366be934a87445.tar.gz |
soup-message-io: slight tweak to callback/error handling
Let the callback know whether I/O completed on the message, and move
the server-side "disconnect on I/O error" code from soup-message-io to
soup-server.
Diffstat (limited to 'libsoup/soup-server.c')
-rw-r--r-- | libsoup/soup-server.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/libsoup/soup-server.c b/libsoup/soup-server.c index 07d801d1..18aefba5 100644 --- a/libsoup/soup-server.c +++ b/libsoup/soup-server.c @@ -870,20 +870,22 @@ soup_client_context_unref (SoupClientContext *client) } static void -request_finished (SoupMessage *msg, gpointer user_data) +request_finished (SoupMessage *msg, gboolean io_complete, gpointer user_data) { SoupClientContext *client = user_data; SoupServer *server = client->server; SoupSocket *sock = client->sock; soup_message_finished (msg); + g_signal_emit (server, - msg->status_code == SOUP_STATUS_IO_ERROR ? + (!io_complete || msg->status_code == SOUP_STATUS_IO_ERROR) ? signals[REQUEST_ABORTED] : signals[REQUEST_FINISHED], 0, msg, client); soup_client_context_cleanup (client); - if (soup_socket_is_connected (sock) && soup_message_is_keepalive (msg)) { + if (io_complete && soup_socket_is_connected (sock) && + soup_message_is_keepalive (msg)) { /* Start a new request */ start_request (server, client); } else { |