From 0ac33d22f70a41e4249f62fed844faf97c2fe0c1 Mon Sep 17 00:00:00 2001
From: Matt Johnston <matt@ucc.asn.au>
Date: Mon, 3 Aug 2015 20:53:37 +0800
Subject: 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.

---
 netio.c | 21 ---------------------
 1 file changed, 21 deletions(-)

diff --git a/netio.c b/netio.c
index 74eea7b..a8006a7 100644
--- a/netio.c
+++ b/netio.c
@@ -21,23 +21,6 @@ struct dropbear_progress_connection {
 	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 @@ static void connect_try_next(struct dropbear_progress_connection *c) {
 		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);
 
-- 
cgit v1.2.3