diff --git a/src/connection.c b/src/connection.c
index 35db516..63f143e 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -27,31 +27,48 @@
 	struct connection *conn = fdtab[fd].owner;
 	int ret = 0;
 
-	if (!conn)
+	if (unlikely(!conn))
 		goto leave;
 
-	if (conn->flags & CO_FL_ERROR)
-		goto leave;
-
-	if (conn->flags & CO_FL_SI_SEND_PROXY)
-		if ((ret = conn_si_send_proxy(conn, CO_FL_SI_SEND_PROXY)))
+ process_handshake:
+	while (unlikely(conn->flags & CO_FL_HANDSHAKE)) {
+		if (unlikely(conn->flags & CO_FL_ERROR))
 			goto leave;
 
+		if (conn->flags & CO_FL_SI_SEND_PROXY)
+			if ((ret = conn_si_send_proxy(conn, CO_FL_SI_SEND_PROXY)))
+				goto leave;
+	}
+
+	/* OK now we're in the data phase now */
+
 	if (fdtab[fd].ev & (FD_POLL_IN | FD_POLL_HUP | FD_POLL_ERR))
 		if (!conn->data->read(conn))
 			ret |= FD_WAIT_READ;
 
-	if (conn->flags & CO_FL_ERROR)
+	if (unlikely(conn->flags & CO_FL_ERROR))
 		goto leave;
 
+	/* It may happen during the data phase that a handshake is
+	 * enabled again (eg: SSL)
+	 */
+	if (unlikely(conn->flags & CO_FL_HANDSHAKE))
+		goto process_handshake;
+
 	if (fdtab[fd].ev & (FD_POLL_OUT | FD_POLL_ERR))
 		if (!conn->data->write(conn))
 			ret |= FD_WAIT_WRITE;
 
-	if (conn->flags & CO_FL_ERROR)
+	if (unlikely(conn->flags & CO_FL_ERROR))
 		goto leave;
 
-	if (conn->flags & CO_FL_WAIT_L4_CONN) {
+	/* It may happen during the data phase that a handshake is
+	 * enabled again (eg: SSL)
+	 */
+	if (unlikely(conn->flags & CO_FL_HANDSHAKE))
+		goto process_handshake;
+
+	if (unlikely(conn->flags & CO_FL_WAIT_L4_CONN)) {
 		/* still waiting for a connection to establish and no data to
 		 * send in order to probe it ? Then let's retry the connect().
 		 */
@@ -64,7 +81,7 @@
 		stream_sock_update_conn(conn);
 
 	/* Last check, verify if the connection just established */
-	if (!(conn->flags & (CO_FL_WAIT_L4_CONN | CO_FL_CONNECTED)))
+	if (unlikely(!(conn->flags & (CO_FL_WAIT_L4_CONN | CO_FL_WAIT_L6_CONN | CO_FL_CONNECTED))))
 		conn->flags |= CO_FL_CONNECTED;
 
 	/* remove the events before leaving */
diff --git a/src/stream_interface.c b/src/stream_interface.c
index 8415abb..cf26b51 100644
--- a/src/stream_interface.c
+++ b/src/stream_interface.c
@@ -502,7 +502,7 @@
 		si->flags |= SI_FL_ERR;
 
 	/* check for recent connection establishment */
-	if (!(conn->flags & (CO_FL_WAIT_L4_CONN | CO_FL_CONNECTED))) {
+	if (unlikely(!(conn->flags & (CO_FL_WAIT_L4_CONN | CO_FL_WAIT_L6_CONN | CO_FL_CONNECTED)))) {
 		si->exp = TICK_ETERNITY;
 		si->ob->flags |= BF_WRITE_NULL;
 	}
