diff options
author | Dan Winship <danw@gnome.org> | 2011-01-10 12:50:21 -0500 |
---|---|---|
committer | Dan Winship <danw@gnome.org> | 2011-01-10 13:54:27 -0500 |
commit | 223db09654af305adddc3cf4389dca4329b634b1 (patch) | |
tree | 42fb7286c1f4724472e3cdba7d22dbaa9bec4f2e | |
parent | 6fdb42411b17099f9d9ce3f9e171f82e007ab0ac (diff) | |
download | libsoup-223db09654af305adddc3cf4389dca4329b634b1.tar.gz |
soup-message-io: don't watch for SoupSocket::disconnect
The IO code was explicitly handling the SoupSocket::disconnect signal,
but this is actually redundant; if the socket gets disconnected we'll
get either an error (if writing) or an eof (if reading), and the code
will do the right thing with that. Watching ::disconnected too just
results in processing the same error twice and having to be extra
careful to do it idempotently.
-rw-r--r-- | libsoup/soup-message-io.c | 24 |
1 files changed, 1 insertions, 23 deletions
diff --git a/libsoup/soup-message-io.c b/libsoup/soup-message-io.c index d78aa394..5a79d2fc 100644 --- a/libsoup/soup-message-io.c +++ b/libsoup/soup-message-io.c @@ -67,7 +67,7 @@ typedef struct { goffset write_length; goffset written; - guint read_tag, write_tag, err_tag, tls_signal_id; + guint read_tag, write_tag, tls_signal_id; GSource *unpause_source; SoupMessageGetHeadersFn get_headers_cb; @@ -137,10 +137,6 @@ soup_message_io_stop (SoupMessage *msg) g_signal_handler_disconnect (io->sock, io->write_tag); io->write_tag = 0; } - if (io->err_tag) { - g_signal_handler_disconnect (io->sock, io->err_tag); - io->err_tag = 0; - } if (io->unpause_source) { g_source_destroy (io->unpause_source); @@ -207,22 +203,6 @@ io_error (SoupSocket *sock, SoupMessage *msg, GError *error) soup_message_io_finished (msg); } -static void -io_disconnected (SoupSocket *sock, SoupMessage *msg) -{ - SoupMessagePrivate *priv = SOUP_MESSAGE_GET_PRIVATE (msg); - SoupMessageIOData *io = priv->io_data; - - /* Closing the connection to signify EOF is sometimes ok */ - if (io->read_state == SOUP_MESSAGE_IO_STATE_BODY && io->read_eof_ok) { - io->read_state = SOUP_MESSAGE_IO_STATE_FINISHING; - io_read (sock, msg); - return; - } - - io_error (sock, msg, NULL); -} - static gboolean io_handle_sniffing (SoupMessage *msg, gboolean done_reading) { @@ -1112,8 +1092,6 @@ new_iostate (SoupMessage *msg, SoupSocket *sock, SoupMessageIOMode mode, G_CALLBACK (io_read), msg); io->write_tag = g_signal_connect (io->sock, "writable", G_CALLBACK (io_write), msg); - io->err_tag = g_signal_connect (io->sock, "disconnected", - G_CALLBACK (io_disconnected), msg); io->read_state = SOUP_MESSAGE_IO_STATE_NOT_STARTED; io->write_state = SOUP_MESSAGE_IO_STATE_NOT_STARTED; |