diff --git a/lib/service.c b/lib/service.c index 1b5dcf42..283c3923 100644 --- a/lib/service.c +++ b/lib/service.c @@ -497,6 +497,9 @@ libwebsocket_service_fd(struct libwebsocket_context *context, n = lws_server_socket_service(context, wsi, pollfd); if (n < 0) goto close_and_handled; + pending = lws_ssl_pending(wsi); + if (pending) + goto handle_pending; goto handled; case LWS_CONNMODE_WS_SERVING: @@ -596,6 +599,7 @@ drain: pending = lws_ssl_pending(wsi); if (pending) { +handle_pending: pending = pending > sizeof(context->service_buffer)? sizeof(context->service_buffer):pending; goto read;