[Telepathy-commits] [telepathy-gabble/master] socks5: ensure to keep the bytestream alive in transport_handler
Guillaume Desmottes
guillaume.desmottes at collabora.co.uk
Tue Mar 17 09:43:15 PDT 2009
---
src/bytestream-socks5.c | 9 ++++++++-
1 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/src/bytestream-socks5.c b/src/bytestream-socks5.c
index 446b598..7b2fb7f 100644
--- a/src/bytestream-socks5.c
+++ b/src/bytestream-socks5.c
@@ -950,6 +950,11 @@ transport_handler (GibberTransport *transport,
g_string_append_len (priv->read_buffer, (const gchar *) data->data,
data->length);
+ /* If something goes wrong in socks5_handle_received_data, the bytestream
+ * could be closed and disposed. Ref it to artificially keep this bytestream
+ * object alive while we are in this function. */
+ g_object_ref (self);
+
do
{
/* socks5_handle_received_data() processes the data and returns the
@@ -960,11 +965,13 @@ transport_handler (GibberTransport *transport,
if (priv->read_buffer == NULL)
/* If something did wrong in socks5_handle_received_data, the
* bytestream can be closed and so destroyed. */
- return;
+ break;
g_string_erase (priv->read_buffer, 0, used_bytes);
}
while (used_bytes > 0 && priv->read_buffer->len > 0);
+
+ g_object_unref (self);
}
static void
--
1.5.6.5
More information about the telepathy-commits
mailing list