9d7d3f
From 9a84abe8bd4951f8674e172acf1335d3be961d73 Mon Sep 17 00:00:00 2001
9d7d3f
From: Martin Frodl <mfrodl@redhat.com>
9d7d3f
Date: Mon, 24 Oct 2016 17:44:45 +0200
9d7d3f
Subject: [PATCH] nss: fix tight loop in non-blocking TLS handhsake over proxy
9d7d3f
9d7d3f
... in case the handshake completes before entering
9d7d3f
CURLM_STATE_PROTOCONNECT
9d7d3f
9d7d3f
Bug: https://bugzilla.redhat.com/1388162
9d7d3f
9d7d3f
Upstream-commit: eb84412b33aa9cbe109d3e2874f9dbba48043263
9d7d3f
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
9d7d3f
---
9d7d3f
 lib/nss.c | 5 ++++-
9d7d3f
 1 file changed, 4 insertions(+), 1 deletion(-)
9d7d3f
9d7d3f
diff --git a/lib/nss.c b/lib/nss.c
9d7d3f
index 36c100d..848ce86 100644
9d7d3f
--- a/lib/nss.c
9d7d3f
+++ b/lib/nss.c
9d7d3f
@@ -1603,8 +1603,11 @@ static CURLcode nss_connect_common(struct connectdata *conn, int sockindex,
9d7d3f
   const bool blocking = (done == NULL);
9d7d3f
   CURLcode rv;
9d7d3f
 
9d7d3f
-  if(connssl->state == ssl_connection_complete)
9d7d3f
+  if(connssl->state == ssl_connection_complete) {
9d7d3f
+    if(!blocking)
9d7d3f
+      *done = TRUE;
9d7d3f
     return CURLE_OK;
9d7d3f
+  }
9d7d3f
 
9d7d3f
   if(connssl->connecting_state == ssl_connect_1) {
9d7d3f
     rv = nss_setup_connect(conn, sockindex);
9d7d3f
-- 
9d7d3f
2.7.4
9d7d3f