Skip to content

Commit

Permalink
Make bufferevent_set_timeouts(bev, NULL, NULL) have plausible semantics
Browse files Browse the repository at this point in the history
  • Loading branch information
nmathewson committed Nov 16, 2012
1 parent e3b2e08 commit 9dee36b
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 11 deletions.
23 changes: 17 additions & 6 deletions bufferevent_openssl.c
Original file line number Diff line number Diff line change
Expand Up @@ -1221,14 +1221,25 @@ be_openssl_adj_timeouts(struct bufferevent *bev)
{
struct bufferevent_openssl *bev_ssl = upcast(bev);

if (bev_ssl->underlying)
if (bev_ssl->underlying) {
return bufferevent_generic_adj_timeouts_(bev);
else {
} else {
int r1=0, r2=0;
if (event_pending(&bev->ev_read, EV_READ, NULL))
r1 = bufferevent_add_event_(&bev->ev_read, &bev->timeout_read);
if (event_pending(&bev->ev_write, EV_WRITE, NULL))
r2 = bufferevent_add_event_(&bev->ev_write, &bev->timeout_write);
if (event_pending(&bev->ev_read, EV_READ, NULL)) {
if (evutil_timerisset(&bev->timeout_read)) {
r1 = bufferevent_add_event_(&bev->ev_read, &bev->timeout_read);
} else {
event_remove_timer(&bev->ev_read);
}
}
if (event_pending(&bev->ev_write, EV_WRITE, NULL)) {
if (evutil_timerisset(&bev->timeout_write)) {
r2 = bufferevent_add_event_(&bev->ev_write, &bev->timeout_write);
} else {
event_remove_timer(&bev->ev_write);
}
}

return (r1<0 || r2<0) ? -1 : 0;
}
}
Expand Down
19 changes: 14 additions & 5 deletions bufferevent_sock.c
Original file line number Diff line number Diff line change
Expand Up @@ -600,12 +600,21 @@ static int
be_socket_adj_timeouts(struct bufferevent *bufev)
{
int r = 0;
if (event_pending(&bufev->ev_read, EV_READ, NULL))
if (be_socket_add(&bufev->ev_read, &bufev->timeout_read) < 0)
r = -1;
if (event_pending(&bufev->ev_read, EV_READ, NULL)) {
if (evutil_timerisset(&bufev->timeout_read)) {
if (be_socket_add(&bufev->ev_read, &bufev->timeout_read) < 0)
r = -1;
} else {
event_remove_timer(&bufev->ev_read);
}
}
if (event_pending(&bufev->ev_write, EV_WRITE, NULL)) {
if (be_socket_add(&bufev->ev_write, &bufev->timeout_write) < 0)
r = -1;
if (evutil_timerisset(&bufev->timeout_write)) {
if (be_socket_add(&bufev->ev_write, &bufev->timeout_write) < 0)
r = -1;
} else {
event_remove_timer(&bufev->ev_write);
}
}
return r;
}
Expand Down

0 comments on commit 9dee36b

Please sign in to comment.