[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