diff netio.c @ 1136:a7c4a70ae495

Don't try to send data on first ack packet of 3way handshake. Cisco SSH on 15.4(3)M2 or similar can't handle it.
author Matt Johnston <matt@ucc.asn.au>
date Mon, 03 Aug 2015 20:53:37 +0800
parents bb3a03feb31f
children 57d09741d46d
line wrap: on
line diff
--- a/netio.c	Mon Aug 03 20:46:29 2015 +0800
+++ b/netio.c	Mon Aug 03 20:53:37 2015 +0800
@@ -21,23 +21,6 @@
 	char* errstring;
 };
 
-#if defined(__linux__) && defined(TCP_DEFER_ACCEPT)
-static void set_piggyback_ack(int sock) {
-	/* Undocumented Linux feature - set TCP_DEFER_ACCEPT and data will be piggybacked
-	on the 3rd packet (ack) of the TCP handshake. Saves a IP packet.
-	http://thread.gmane.org/gmane.linux.network/224627/focus=224727
-	"Piggyback the final ACK of the three way TCP connection establishment with the data" */
-	int val = 1;
-	/* No error checking, this is opportunistic */
-	int err = setsockopt(sock, IPPROTO_TCP, TCP_DEFER_ACCEPT, (void*)&val, sizeof(val));
-	if (err)
-	{
-		TRACE(("Failed setsockopt TCP_DEFER_ACCEPT: %s", strerror(errno)))
-	}
-}
-#endif
-
-
 /* Deallocate a progress connection. Removes from the pending list if iter!=NULL.
 Does not close sockets */
 static void remove_connect(struct dropbear_progress_connection *c, m_list_elem *iter) {
@@ -87,10 +70,6 @@
 		set_sock_nodelay(c->sock);
 		setnonblocking(c->sock);
 
-#if defined(__linux__) && defined(TCP_DEFER_ACCEPT)
-		set_piggyback_ack(c->sock);
-#endif
-
 #ifdef DROPBEAR_CLIENT_TCP_FAST_OPEN
 		fastopen = (c->writequeue != NULL);