Mercurial > hg > nginx
changeset 5024:03513220b83b
SSL: fixed ngx_ssl_handshake() with level-triggered event methods.
Missing calls to ngx_handle_write_event() and ngx_handle_read_event()
resulted in a CPU hog during SSL handshake if an level-triggered event
method (e.g. select) was used.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Fri, 01 Feb 2013 14:37:43 +0000 |
parents | 70a35b7b63ea |
children | 43cb2c9799c1 |
files | src/event/ngx_event_openssl.c |
diffstat | 1 files changed, 8 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/event/ngx_event_openssl.c Mon Jan 28 15:41:12 2013 +0000 +++ b/src/event/ngx_event_openssl.c Fri Feb 01 14:37:43 2013 +0000 @@ -808,6 +808,10 @@ return NGX_ERROR; } + if (ngx_handle_write_event(c->write, 0) != NGX_OK) { + return NGX_ERROR; + } + return NGX_AGAIN; } @@ -816,6 +820,10 @@ c->read->handler = ngx_ssl_handshake_handler; c->write->handler = ngx_ssl_handshake_handler; + if (ngx_handle_read_event(c->read, 0) != NGX_OK) { + return NGX_ERROR; + } + if (ngx_handle_write_event(c->write, 0) != NGX_OK) { return NGX_ERROR; }