Handle pending SSL reads which would otherwise not trigger a POLLIN.
authorAndrew Canaday <andrew.canaday@nytimes.com>
Wed, 2 Dec 2015 20:13:56 +0000 (15:13 -0500)
committerAndy Green <andy.green@linaro.org>
Thu, 3 Dec 2015 01:45:18 +0000 (09:45 +0800)
lib/service.c

index 1b5dcf4..283c392 100644 (file)
@@ -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;