add timeout between accept and negotiation
authorAndy Green <andy.green@linaro.org>
Sat, 15 Feb 2014 06:36:02 +0000 (14:36 +0800)
committerAndy Green <andy.green@linaro.org>
Sat, 15 Feb 2014 06:36:02 +0000 (14:36 +0800)
Signed-off-by: Andy Green <andy.green@linaro.org>
lib/handshake.c
lib/server.c

index 1e4919a..35c6e4d 100644 (file)
@@ -169,6 +169,7 @@ http_postbody:
                        lwsl_parser("libwebsocket_parse sees parsing complete\n");
 
                        wsi->mode = LWS_CONNMODE_PRE_WS_SERVING_ACCEPT;
+                       libwebsocket_set_timeout(wsi, NO_PENDING_TIMEOUT, 0);
 
                        /* is this websocket protocol or normal http 1.0? */
 
index 547364c..dcb6cc1 100644 (file)
@@ -282,6 +282,11 @@ int lws_server_socket_service(struct libwebsocket_context *context,
 
                new_wsi->sock = accept_fd;
 
+               /* the transport is accepted... give him time to negotiate */
+               libwebsocket_set_timeout(new_wsi,
+                       PENDING_TIMEOUT_ESTABLISH_WITH_SERVER,
+                                                       AWAITING_TIMEOUT);
+
                /*
                 * A new connection was accepted. Give the user a chance to
                 * set properties of the newly created wsi. There's no protocol
@@ -416,9 +421,10 @@ int lws_server_socket_service(struct libwebsocket_context *context,
                }
 
 accepted:
-               /* OK, we are accepted */
-
-               libwebsocket_set_timeout(wsi, NO_PENDING_TIMEOUT, 0);
+               /* OK, we are accepted... give him some time to negotiate */
+               libwebsocket_set_timeout(wsi,
+                       PENDING_TIMEOUT_ESTABLISH_WITH_SERVER,
+                                                       AWAITING_TIMEOUT);
 
                wsi->mode = LWS_CONNMODE_HTTP_SERVING;