summaryrefslogtreecommitdiff
path: root/bufferevent_openssl.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2012-09-07 15:53:02 -0400
committerNick Mathewson <nickm@torproject.org>2012-09-07 15:53:02 -0400
commit576b29f21b28c5fbc6313b56356477f1bda3f920 (patch)
treec954db9e7104a8690bab54c49c0ff9d14d41283d /bufferevent_openssl.c
parent484e93c1d0ab413dd5f30963e592abbcd15888cb (diff)
downloadlibevent-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.c10
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);
}