[Telepathy-commits] [telepathy-gabble/master] Handle errors when listening on the SOCKS5 socket

Marco Barisione marco at barisione.org
Tue Jan 6 08:41:29 PST 2009


---
 src/bytestream-socks5.c |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/bytestream-socks5.c b/src/bytestream-socks5.c
index d083eb9..9af1d7d 100644
--- a/src/bytestream-socks5.c
+++ b/src/bytestream-socks5.c
@@ -1145,6 +1145,13 @@ socks5_listen_cb (GIOChannel *source,
   guint addr_len = sizeof (addr);
   int flags;
 
+  if (condition & G_IO_ERR || condition & G_IO_HUP)
+    {
+      socks5_error (self);
+
+      return FALSE;
+    }
+
   fd = accept (g_io_channel_unix_get_fd (source), (struct sockaddr *) &addr,
       &addr_len);
 
@@ -1354,8 +1361,8 @@ gabble_bytestream_socks5_initiate (GabbleBytestreamIface *iface)
 
   g_io_channel_set_close_on_unref (channel, TRUE);
 
-  /* FIXME handle errors */
-  priv->read_watch = g_io_add_watch (channel, G_IO_IN, socks5_listen_cb, self);
+  priv->read_watch = g_io_add_watch (channel, G_IO_IN | G_IO_HUP | G_IO_ERR,
+      socks5_listen_cb, self);
 
   addr_len = sizeof (addr);
   getsockname (fd, (struct sockaddr *)&addr, &addr_len);
-- 
1.5.6.5




More information about the Telepathy-commits mailing list