return do_handshake(bev_ssl);
} else {
struct bufferevent *bev = &bev_ssl->bev.bev;
- int r1=0, r2=0;
if (event_initialized(&bev->ev_read)) {
event_del(&bev->ev_read);
event_assign(&bev->ev_write, bev->ev_base, fd,
EV_WRITE|EV_PERSIST|EV_FINALIZE,
be_openssl_handshakeeventcb, bev_ssl);
- if (fd >= 0) {
- r1 = bufferevent_add_event_(&bev->ev_read, &bev->timeout_read);
- r2 = bufferevent_add_event_(&bev->ev_write, &bev->timeout_write);
- }
- return (r1<0 || r2<0) ? -1 : 0;
+ if (fd >= 0)
+ bufferevent_enable(bev, bev->enabled);
+ return 0;
}
}
struct bufferevent_openssl *bev_ssl = upcast(bev);
int r1 = 0, r2 = 0;
- if (bev_ssl->state != BUFFEREVENT_SSL_OPEN)
- return 0;
-
if (events & EV_READ)
r1 = start_reading(bev_ssl);
if (events & EV_WRITE)
static int
be_socket_enable(struct bufferevent *bufev, short event)
{
- if (event & EV_READ) {
- if (bufferevent_add_event_(&bufev->ev_read, &bufev->timeout_read) == -1)
+ if (event & EV_READ &&
+ bufferevent_add_event_(&bufev->ev_read, &bufev->timeout_read) == -1)
return -1;
- }
- if (event & EV_WRITE) {
- if (bufferevent_add_event_(&bufev->ev_write, &bufev->timeout_write) == -1)
+ if (event & EV_WRITE &&
+ bufferevent_add_event_(&bufev->ev_write, &bufev->timeout_write) == -1)
return -1;
- }
return 0;
}