diff options
author | Nick Mathewson <nickm@torproject.org> | 2012-09-07 15:53:02 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2012-09-07 15:53:02 -0400 |
commit | 576b29f21b28c5fbc6313b56356477f1bda3f920 (patch) | |
tree | c954db9e7104a8690bab54c49c0ff9d14d41283d /bufferevent_openssl.c | |
parent | 484e93c1d0ab413dd5f30963e592abbcd15888cb (diff) | |
download | libevent-576b29f21b28c5fbc6313b56356477f1bda3f920.tar.gz |
Don't discard SSL read event when timeout and read come close together
Diffstat (limited to 'bufferevent_openssl.c')
-rw-r--r-- | bufferevent_openssl.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/bufferevent_openssl.c b/bufferevent_openssl.c index fdbec280..6667f412 100644 --- a/bufferevent_openssl.c +++ b/bufferevent_openssl.c @@ -925,11 +925,12 @@ be_openssl_readeventcb(evutil_socket_t fd, short what, void *ptr) { struct bufferevent_openssl *bev_ssl = ptr; _bufferevent_incref_and_lock(&bev_ssl->bev.bev); - if (what & EV_TIMEOUT) { + if (what == EV_TIMEOUT) { _bufferevent_run_eventcb(&bev_ssl->bev.bev, BEV_EVENT_TIMEOUT|BEV_EVENT_READING); - } else + } else { consider_reading(bev_ssl); + } _bufferevent_decref_and_unlock(&bev_ssl->bev.bev); } @@ -938,11 +939,12 @@ be_openssl_writeeventcb(evutil_socket_t fd, short what, void *ptr) { struct bufferevent_openssl *bev_ssl = ptr; _bufferevent_incref_and_lock(&bev_ssl->bev.bev); - if (what & EV_TIMEOUT) { + if (what == EV_TIMEOUT) { _bufferevent_run_eventcb(&bev_ssl->bev.bev, BEV_EVENT_TIMEOUT|BEV_EVENT_WRITING); + } else { + consider_writing(bev_ssl); } - consider_writing(bev_ssl); _bufferevent_decref_and_unlock(&bev_ssl->bev.bev); } |