libwebsocket_set_timeout(wsi, NO_PENDING_TIMEOUT, 0);
/* free up his parsing allocations */
+
if (wsi->u.hdr.ah)
free(wsi->u.hdr.ah);
- /* mark him as being alive */
-
+ lws_union_transition(wsi, LWS_CONNMODE_WS_CLIENT);
wsi->state = WSI_STATE_ESTABLISHED;
- wsi->mode = LWS_CONNMODE_WS_CLIENT;
-
- /* union transition */
-
- memset(&wsi->u, 0, sizeof(wsi->u));
wsi->rxflow_change_to = LWS_RXFLOW_ALLOW;
return -1;
#endif
}
+
+LWS_VISIBLE void
+lws_union_transition(struct libwebsocket *wsi, enum connection_mode mode)
+{
+ memset(&wsi->u, 0, sizeof(wsi->u));
+ wsi->mode = mode;
+}
LWS_EXTERN int
_libwebsocket_rx_flow_control(struct libwebsocket *wsi);
+LWS_EXTERN void
+lws_union_transition(struct libwebsocket *wsi, enum connection_mode mode);
+
LWS_EXTERN int
user_callback_handle_rxflow(callback_function,
struct libwebsocket_context *context,
ah = wsi->u.hdr.ah;
- /* union transition */
- memset(&wsi->u, 0, sizeof(wsi->u));
- wsi->mode = LWS_CONNMODE_HTTP_SERVING_ACCEPTED;
+ lws_union_transition(wsi, LWS_CONNMODE_HTTP_SERVING_ACCEPTED);
wsi->state = WSI_STATE_HTTP;
wsi->u.http.fd = LWS_INVALID_FILE;
ah = wsi->u.hdr.ah;
- wsi->mode = LWS_CONNMODE_HTTP2_SERVING;
-
- /* union transition */
- memset(&wsi->u, 0, sizeof(wsi->u));
+ lws_union_transition(wsi, LWS_CONNMODE_HTTP2_SERVING);
/* http2 union member has http union struct at start */
wsi->u.http.ah = ah;
/* drop the header info -- no bail_nuke_ah after this */
lws_free_header_table(wsi);
- wsi->mode = LWS_CONNMODE_WS_SERVING;
-
- /* union transition */
- memset(&wsi->u, 0, sizeof(wsi->u));
+ lws_union_transition(wsi, LWS_CONNMODE_WS_SERVING);
/*
* create the frame buffer for this connection according to the
return;
/* http2 */
-
- wsi->mode = LWS_CONNMODE_HTTP2_SERVING;
- wsi->state = WSI_STATE_HTTP2_AWAIT_CLIENT_PREFACE;
/* adopt the header info */
ah = wsi->u.hdr.ah;
- /* union transition */
- memset(&wsi->u, 0, sizeof(wsi->u));
+ lws_union_transition(wsi, LWS_CONNMODE_HTTP2_SERVING);
+ wsi->state = WSI_STATE_HTTP2_AWAIT_CLIENT_PREFACE;
/* http2 union member has http union struct at start */
wsi->u.http.ah = ah;