diff tcp-accept.c @ 259:c049490e43fe

* fix -L forwarding on the client, broke last rev
author Matt Johnston <matt@ucc.asn.au>
date Tue, 06 Dec 2005 16:51:55 +0000
parents 306499676384
children 3cea9d789cca
line wrap: on
line diff
--- a/tcp-accept.c	Sun Dec 04 16:13:11 2005 +0000
+++ b/tcp-accept.c	Tue Dec 06 16:51:55 2005 +0000
@@ -65,15 +65,28 @@
 	}
 
 	if (send_msg_channel_open_init(fd, tcpinfo->chantype) == DROPBEAR_SUCCESS) {
+		unsigned char* addr = NULL;
+		unsigned int port = 0;
 
-		// address that was connected
-		buf_putstring(ses.writepayload, tcpinfo->listenaddr, 
-				strlen(tcpinfo->listenaddr));
-		// port that was connected
-		buf_putint(ses.writepayload, tcpinfo->listenport);
-		// originator ip
+		if (tcpinfo->tcp_type == direct) {
+			/* "direct-tcpip" */
+			/* host to connect, port to connect */
+			addr = tcpinfo->sendaddr;
+			port = tcpinfo->sendport;
+		} else {
+			dropbear_assert(tcpinfo->tcp_type == forwarded);
+			/* "forwarded-tcpip" */
+			/* address that was connected, port that was connected */
+			addr = tcpinfo->listenaddr;
+			port = tcpinfo->listenport;
+		}
+
+		buf_putstring(ses.writepayload, addr, strlen(addr));
+		buf_putint(ses.writepayload, port);
+
+		/* originator ip */
 		buf_putstring(ses.writepayload, ipstring, strlen(ipstring));
-		// originator port
+		/* originator port */
 		buf_putint(ses.writepayload, atol(portstring));
 
 		encrypt_packet();