fix for https connection code
authorGadkari Mugdha <mugdha.gadkari@siemens.com>
Mon, 13 Jun 2016 06:43:03 +0000 (08:43 +0200)
committerAndy Green <andy@warmcat.com>
Mon, 13 Jun 2016 09:19:55 +0000 (17:19 +0800)
lib/client.c [changed mode: 0644->0755]
lib/libwebsockets.c [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index fd7bb18..35fe8a1
@@ -868,9 +868,7 @@ bail3:
        close_reason = LWS_CLOSE_STATUS_NOSTATUS;
 
 bail2:
-       if (wsi->protocol &&
-           (wsi->state == LWSS_ESTABLISHED ||
-            wsi->state == LWSS_CLIENT_UNCONNECTED)) {
+       if (wsi->protocol && wsi->state == LWSS_ESTABLISHED) {
                if (isErrorCodeReceived && p) {
                        wsi->protocol->callback(wsi,
                                LWS_CALLBACK_CLIENT_CONNECTION_ERROR,
old mode 100644 (file)
new mode 100755 (executable)
index 3f5760b..99f8ec1
@@ -405,10 +405,20 @@ just_kill_connection:
                                               wsi->user_space, NULL, 0 );
        } else if (wsi->mode == LWSCM_WSCL_WAITING_SERVER_REPLY ||
                   wsi->mode == LWSCM_WSCL_WAITING_CONNECT) {
+               char* errorString;
+
                lwsl_debug("Connection closed before server reply\n");
-               context->protocols[0].callback(wsi,
+               errorString = lws_hdr_simple_ptr(wsi, WSI_TOKEN_HTTP);
+               if (errorString) {
+                       context->protocols[0].callback(wsi,
+                                       LWS_CALLBACK_CLIENT_CONNECTION_ERROR,
+                                       wsi->user_space, errorString,
+                                       (unsigned int)strlen(errorString));
+               } else {
+                       context->protocols[0].callback(wsi,
                                        LWS_CALLBACK_CLIENT_CONNECTION_ERROR,
                                        wsi->user_space, NULL, 0);
+               }
        } else
                lwsl_debug("not calling back closed mode=%d state=%d\n",
                           wsi->mode, wsi->state_pre_close);