diff --git a/lib/handshake.c b/lib/handshake.c index 35c6e4d6..f45ee53c 100644 --- a/lib/handshake.c +++ b/lib/handshake.c @@ -256,10 +256,20 @@ http_postbody: LWS_CALLBACK_FILTER_HTTP_CONNECTION, wsi->user_space, uri_ptr, uri_len); - if (!n && wsi->protocol->callback) - n = wsi->protocol->callback(context, wsi, - LWS_CALLBACK_HTTP, - wsi->user_space, uri_ptr, uri_len); + if (!n) { + /* + * if there is content supposed to be coming, + * put a timeout on it having arrived + */ + libwebsocket_set_timeout(wsi, + PENDING_TIMEOUT_HTTP_CONTENT, + AWAITING_TIMEOUT); + + if (wsi->protocol->callback) + n = wsi->protocol->callback(context, wsi, + LWS_CALLBACK_HTTP, + wsi->user_space, uri_ptr, uri_len); + } leave: /* now drop the header info we kept a pointer to */ @@ -273,14 +283,6 @@ leave: goto bail; /* struct ah ptr already nuked */ } - /* - * if there is content supposed to be coming, - * put a timeout on it having arrived - */ - libwebsocket_set_timeout(wsi, - PENDING_TIMEOUT_HTTP_CONTENT, - AWAITING_TIMEOUT); - /* * (if callback didn't start sending a file) * deal with anything else as body, whether