Mercurial > dropbear
diff tcp-accept.c @ 641:2b1bb792cd4d dropbear-tfm
- Update tfm changes to current default tip
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Mon, 21 Nov 2011 19:52:28 +0800 |
parents | abf040aedd44 |
children | dfdb9d9189ff |
line wrap: on
line diff
--- a/tcp-accept.c Mon Nov 21 19:19:57 2011 +0800 +++ b/tcp-accept.c Mon Nov 21 19:52:28 2011 +0800 @@ -61,6 +61,7 @@ if (getnameinfo((struct sockaddr*)&addr, len, ipstring, sizeof(ipstring), portstring, sizeof(portstring), NI_NUMERICHOST | NI_NUMERICSERV) != 0) { + m_close(fd); return; } @@ -81,6 +82,9 @@ port = tcpinfo->listenport; } + if (addr == NULL) { + addr = "localhost"; + } buf_putstring(ses.writepayload, addr, strlen(addr)); buf_putint(ses.writepayload, port); @@ -104,21 +108,13 @@ struct Listener *listener = NULL; int nsocks; char* errstring = NULL; - /* listen_spec = NULL indicates localhost */ - const char* listen_spec = NULL; TRACE(("enter listen_tcpfwd")) /* first we try to bind, so don't need to do so much cleanup on failure */ snprintf(portstring, sizeof(portstring), "%d", tcpinfo->listenport); - /* a listenaddr of "" will indicate all interfaces */ - if (opts.listen_fwd_all - && (strcmp(tcpinfo->listenaddr, "localhost") != 0) ) { - listen_spec = tcpinfo->listenaddr; - } - - nsocks = dropbear_listen(listen_spec, portstring, socks, + nsocks = dropbear_listen(tcpinfo->listenaddr, portstring, socks, DROPBEAR_MAX_SOCKS, &errstring, &ses.maxfd); if (nsocks < 0) { dropbear_log(LOG_INFO, "TCP forward failed: %s", errstring);