diff --git a/netio.c b/netio.c
index d1a05f3a0548dd93e7b82fa9d86a052ce035f45b..9aa7ae5175bce641831f95e8f3773137cb25df6f 100644
--- a/netio.c
+++ b/netio.c
@@ -103,7 +103,7 @@ static void connect_try_next(struct dropbear_progress_connection *c) {
 			message.msg_iov = packet_queue_to_iovec(c->writequeue, &iovlen);
 			message.msg_iovlen = iovlen;
 			res = sendmsg(c->sock, &message, MSG_FASTOPEN);
-			if (res < 0) {
+			if (res < 0 && errno != EINPROGRESS) {
 				/* Not entirely sure which kind of errors are normal - 2.6.32 seems to 
 				return EPIPE for any (nonblocking?) sendmsg(). just fall back */
 				TRACE(("sendmsg tcp_fastopen failed, falling back. %s", strerror(errno)));