From 0390608a39579d21e1d0be7e81c2fa44914f237e Mon Sep 17 00:00:00 2001 From: Andy Green Date: Sun, 10 Feb 2013 10:43:04 +0800 Subject: [PATCH] use context service buffer instead of stack for server_socket_service Reduces lws_server_socket_service from 4208 to 80 stack allocation on x86_64 Signed-off-by: Andy Green --- lib/server.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/server.c b/lib/server.c index aa51b129..5f746f59 100644 --- a/lib/server.c +++ b/lib/server.c @@ -126,8 +126,6 @@ libwebsocket_create_new_server_wsi(struct libwebsocket_context *context) int lws_server_socket_service(struct libwebsocket_context *context, struct libwebsocket *wsi, struct pollfd *pollfd) { - unsigned char buf[LWS_SEND_BUFFER_PRE_PADDING + 1 + - LWS_MAX_SOCKET_IO_BUF + LWS_SEND_BUFFER_POST_PADDING]; struct libwebsocket *new_wsi; int accept_fd; unsigned int clilen; @@ -153,10 +151,10 @@ int lws_server_socket_service(struct libwebsocket_context *context, #ifdef LWS_OPENSSL_SUPPORT if (wsi->ssl) - len = SSL_read(wsi->ssl, buf, sizeof buf); + len = SSL_read(wsi->ssl, context->service_buffer, sizeof context->service_buffer); else #endif - len = recv(pollfd->fd, buf, sizeof buf, 0); + len = recv(pollfd->fd, context->service_buffer, sizeof context->service_buffer, 0); if (len < 0) { lwsl_debug("Socket read returned %d\n", len); @@ -171,7 +169,7 @@ int lws_server_socket_service(struct libwebsocket_context *context, return 0; } - n = libwebsocket_read(context, wsi, buf, len); + n = libwebsocket_read(context, wsi, context->service_buffer, len); if (n < 0) /* we closed wsi */ return 0;