use part of service buffer to make response not malloc
authorAndy Green <andy.green@linaro.org>
Mon, 11 Feb 2013 01:37:23 +0000 (09:37 +0800)
committerAndy Green <andy.green@linaro.org>
Mon, 11 Feb 2013 02:19:59 +0000 (10:19 +0800)
Done with an offset because the encoded key is stored at the
start of service_buffer at this time

Signed-off-by: Andy Green <andy.green@linaro.org>
lib/server-handshake.c

index 71007ec..ce6cb55 100644 (file)
@@ -83,15 +83,7 @@ handshake_0405(struct libwebsocket_context *context, struct libwebsocket *wsi)
 
        /* make a buffer big enough for everything */
 
-       response = (char *)malloc(256 +
-               wsi->u.hdr.hdrs[WSI_TOKEN_UPGRADE].token_len +
-               wsi->u.hdr.hdrs[WSI_TOKEN_CONNECTION].token_len +
-               wsi->u.hdr.hdrs[WSI_TOKEN_PROTOCOL].token_len);
-       if (!response) {
-               lwsl_err("Out of memory for response buffer\n");
-               goto bail;
-       }
-
+       response = (char *)context->service_buffer + MAX_WEBSOCKET_04_KEY_LEN;
        p = response;
        LWS_CPYAPP(p, "HTTP/1.1 101 Switching Protocols\x0d\x0a"
                      "Upgrade: WebSocket\x0d\x0a"
@@ -251,7 +243,6 @@ handshake_0405(struct libwebsocket_context *context, struct libwebsocket *wsi)
 
        /* alright clean up and set ourselves into established state */
 
-       free(response);
        wsi->state = WSI_STATE_ESTABLISHED;
        wsi->lws_rx_parse_state = LWS_RXPS_NEW;