fix frgmented server reply
authorAndy Green <andy@warmcat.com>
Sat, 16 Apr 2011 09:54:28 +0000 (10:54 +0100)
committerAndy Green <andy@warmcat.com>
Sat, 16 Apr 2011 09:54:28 +0000 (10:54 +0100)
Server handshake reply might not come in one packet as pointed out by
Pavel Borzenkov.  This replaces his fix with one directly in the packet
state machine.

Signed-off-by: Andy Green <andy@warmcat.com>
lib/libwebsockets.c

index 05f7a40..95d1249 100644 (file)
@@ -1364,11 +1364,14 @@ issue_hdr:
                for (n = 0; n < len; n++)
                        libwebsocket_parse(wsi, *p++);
 
-               if (wsi->parser_state != WSI_PARSING_COMPLETE) {
-                       fprintf(stderr, "libwebsocket_client_handshake "
-                                       "server response failed parsing\n");
-                       goto bail3;
-               }
+               /*
+                * may be coming in multiple packets, there is a 5-second
+                * libwebsocket timeout still active here too, so if parsing did
+                * not complete just wait for next packet coming in this state
+                */
+
+               if (wsi->parser_state != WSI_PARSING_COMPLETE)
+                       break;
 
                /*
                 * 00 / 76 -->