return;
}
+ event_del (c->ev);
event_set (c->ev, fd, what, rspamd_ssl_event_handler, c);
event_base_set (c->ev_base, c->ev);
event_add (c->ev, c->tv);
break;
case ssl_next_read:
event_del (c->ev);
+ /* Restore handler */
+ event_set (c->ev, c->fd, EV_READ|EV_PERSIST,
+ c->handler, c->handler_data);
+ event_base_set (c->ev_base, c->ev);
+ event_add (c->ev, c->tv);
c->state = ssl_conn_connected;
c->handler (fd, EV_READ, c->handler_data);
break;
case ssl_next_write:
case ssl_conn_connected:
event_del (c->ev);
+ /* Restore handler */
+ event_set (c->ev, c->fd, EV_WRITE,
+ c->handler, c->handler_data);
+ event_base_set (c->ev_base, c->ev);
+ event_add (c->ev, c->tv);
c->state = ssl_conn_connected;
c->handler (fd, EV_WRITE, c->handler_data);
break;
if (ret == 1) {
conn->state = ssl_conn_connected;
+
+ if (event_get_base (ev)) {
+ event_del (ev);
+ }
+
event_set (ev, fd, EV_WRITE, rspamd_ssl_event_handler, conn);
if (conn->ev_base) {
return FALSE;
}
+ if (event_get_base (ev)) {
+ event_del (ev);
+ }
+
event_set (ev, fd, what, rspamd_ssl_event_handler, conn);
event_base_set (conn->ev_base, ev);
event_add (ev, tv);
return -1;
}
+ event_del (conn->ev);
event_set (conn->ev, conn->fd, what, rspamd_ssl_event_handler, conn);
event_base_set (conn->ev_base, conn->ev);
event_add (conn->ev, conn->tv);
return -1;
}
+ event_del (conn->ev);
event_set (conn->ev, conn->fd, what, rspamd_ssl_event_handler, conn);
event_base_set (conn->ev_base, conn->ev);
event_add (conn->ev, conn->tv);