diff --git a/lib/ssl.c b/lib/ssl.c index cd7fa997..6f994d7c 100644 --- a/lib/ssl.c +++ b/lib/ssl.c @@ -444,12 +444,14 @@ lws_ssl_capable_read(struct libwebsocket_context *context, */ if (n == len && wsi->ssl && SSL_pending(wsi->ssl)) { if (!wsi->pending_read_list_next && !wsi->pending_read_list_prev) { - /* add us to the linked list of guys with pending ssl */ - if (context->pending_read_list) - context->pending_read_list->pending_read_list_prev = wsi; - wsi->pending_read_list_next = context->pending_read_list; - wsi->pending_read_list_prev = NULL; - context->pending_read_list = wsi; + if (context->pending_read_list != wsi) { + /* add us to the linked list of guys with pending ssl */ + if (context->pending_read_list) + context->pending_read_list->pending_read_list_prev = wsi; + wsi->pending_read_list_next = context->pending_read_list; + wsi->pending_read_list_prev = NULL; + context->pending_read_list = wsi; + } } } else lws_ssl_remove_wsi_from_buffered_list(context, wsi);