mirror of
https://github.com/libevent/libevent.git
synced 2025-01-31 09:12:55 +08:00
Make bufferevent_set_timeouts(bev, NULL, NULL) have plausible semantics
This commit is contained in:
parent
e3b2e0869e
commit
9dee36bc8b
@ -1221,14 +1221,25 @@ be_openssl_adj_timeouts(struct bufferevent *bev)
|
|||||||
{
|
{
|
||||||
struct bufferevent_openssl *bev_ssl = upcast(bev);
|
struct bufferevent_openssl *bev_ssl = upcast(bev);
|
||||||
|
|
||||||
if (bev_ssl->underlying)
|
if (bev_ssl->underlying) {
|
||||||
return bufferevent_generic_adj_timeouts_(bev);
|
return bufferevent_generic_adj_timeouts_(bev);
|
||||||
else {
|
} else {
|
||||||
int r1=0, r2=0;
|
int r1=0, r2=0;
|
||||||
if (event_pending(&bev->ev_read, EV_READ, NULL))
|
if (event_pending(&bev->ev_read, EV_READ, NULL)) {
|
||||||
r1 = bufferevent_add_event_(&bev->ev_read, &bev->timeout_read);
|
if (evutil_timerisset(&bev->timeout_read)) {
|
||||||
if (event_pending(&bev->ev_write, EV_WRITE, NULL))
|
r1 = bufferevent_add_event_(&bev->ev_read, &bev->timeout_read);
|
||||||
r2 = bufferevent_add_event_(&bev->ev_write, &bev->timeout_write);
|
} 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;
|
return (r1<0 || r2<0) ? -1 : 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -600,12 +600,21 @@ static int
|
|||||||
be_socket_adj_timeouts(struct bufferevent *bufev)
|
be_socket_adj_timeouts(struct bufferevent *bufev)
|
||||||
{
|
{
|
||||||
int r = 0;
|
int r = 0;
|
||||||
if (event_pending(&bufev->ev_read, EV_READ, NULL))
|
if (event_pending(&bufev->ev_read, EV_READ, NULL)) {
|
||||||
if (be_socket_add(&bufev->ev_read, &bufev->timeout_read) < 0)
|
if (evutil_timerisset(&bufev->timeout_read)) {
|
||||||
r = -1;
|
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 (event_pending(&bufev->ev_write, EV_WRITE, NULL)) {
|
||||||
if (be_socket_add(&bufev->ev_write, &bufev->timeout_write) < 0)
|
if (evutil_timerisset(&bufev->timeout_write)) {
|
||||||
r = -1;
|
if (be_socket_add(&bufev->ev_write, &bufev->timeout_write) < 0)
|
||||||
|
r = -1;
|
||||||
|
} else {
|
||||||
|
event_remove_timer(&bufev->ev_write);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user