[Telepathy-commits] [telepathy-gabble/master] Listen on a random free port instead of a hard-coded one

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


---
 src/bytestream-socks5.c |   14 ++++++++------
 1 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/bytestream-socks5.c b/src/bytestream-socks5.c
index 57ed6b6..72b4e29 100644
--- a/src/bytestream-socks5.c
+++ b/src/bytestream-socks5.c
@@ -999,8 +999,10 @@ gabble_bytestream_socks5_initiate (GabbleBytestreamIface *iface)
   GabbleBytestreamSocks5 *self = GABBLE_BYTESTREAM_SOCKS5 (iface);
   GabbleBytestreamSocks5Private *priv = GABBLE_BYTESTREAM_SOCKS5_GET_PRIVATE (self);
   struct sockaddr_in addr;
+  guint addr_len;
   gint fd;
   GIOChannel *channel;
+  gchar port[G_ASCII_DTOSTR_BUF_SIZE];
   LmMessage *msg;
 
   if (priv->bytestream_state != GABBLE_BYTESTREAM_STATE_INITIATING)
@@ -1011,12 +1013,8 @@ gabble_bytestream_socks5_initiate (GabbleBytestreamIface *iface)
     }
 
   fd = socket (AF_INET, SOCK_STREAM, 0);
-  addr.sin_family = AF_INET;
-  addr.sin_addr.s_addr = INADDR_ANY;
-  addr.sin_port = htons (5087);
 
   /* FIXME: check the return values */
-  bind (fd, (struct sockaddr *)&addr, sizeof (addr));
   listen (fd, 5);
   channel = g_io_channel_unix_new (fd);
 
@@ -1025,7 +1023,11 @@ gabble_bytestream_socks5_initiate (GabbleBytestreamIface *iface)
   /* FIXME handle errors */
   priv->read_watch = g_io_add_watch (channel, G_IO_IN, socks5_listen_cb, self);
 
-  /* FIXME: send a real address and port. */
+  addr_len = sizeof (addr);
+  getsockname (fd, (struct sockaddr *)&addr, &addr_len);
+  g_ascii_dtostr (port, G_N_ELEMENTS (port), ntohs (addr.sin_port));
+
+  /* FIXME: send a real address */
   msg = lm_message_build (priv->peer_jid, LM_MESSAGE_TYPE_IQ,
       '@', "type", "set",
       '(', "query", "",
@@ -1035,7 +1037,7 @@ gabble_bytestream_socks5_initiate (GabbleBytestreamIface *iface)
         '(', "streamhost", "",
           '@', "jid", priv->peer_jid,
           '@', "host", "127.0.0.1",
-          '@', "port", "5087",
+          '@', "port", port,
         ')',
       ')', NULL);
 
-- 
1.5.6.5




More information about the Telepathy-commits mailing list