diff --git a/lib/client.c b/lib/client.c
index 40c2391e402a00f749f5bdacf68ee31341b2eb1c..a8f36738c4e70223545a2a258c443e61c7a4fc5b 100644
--- a/lib/client.c
+++ b/lib/client.c
@@ -855,7 +855,7 @@ bail3:
 	close_reason = LWS_CLOSE_STATUS_NOSTATUS;
 
 bail2:
-	if (wsi->protocol) {
+	if (wsi->protocol && wsi->state == LWSS_ESTABLISHED) {
 		if (isErrorCodeReceived && p) {
 			wsi->protocol->callback(wsi,
 				LWS_CALLBACK_CLIENT_CONNECTION_ERROR,