]> granicus.if.org Git - libevent/commitdiff
be_openssl: use bufferevent_enable() instead of bufferevent_add_event_()
authorAzat Khuzhin <a3at.mail@gmail.com>
Thu, 5 Nov 2015 14:56:07 +0000 (17:56 +0300)
committerAzat Khuzhin <a3at.mail@gmail.com>
Fri, 6 Nov 2015 07:21:04 +0000 (10:21 +0300)
By using bufferevent_enable() there will be no event for READ *or* WRITE if
they are not enabled before, and this patch reduces difference for
be_sock_enable/be_openssl_enable (handshake)

bufferevent_openssl.c
bufferevent_sock.c

index 54b7219795fe25dfa32778e978b5b9c06bd95847..7e4d1744dca046dbc8bfee33b32460428bc1a2ef 100644 (file)
@@ -1090,7 +1090,6 @@ set_handshake_callbacks(struct bufferevent_openssl *bev_ssl, evutil_socket_t fd)
                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);
@@ -1103,11 +1102,9 @@ set_handshake_callbacks(struct bufferevent_openssl *bev_ssl, evutil_socket_t fd)
                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;
        }
 }
 
@@ -1159,9 +1156,6 @@ be_openssl_enable(struct bufferevent *bev, short events)
        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)
index 5c0144268e307e08919371bc9ffb3440cc997c74..eb7314849b606275817d676003c3c37804c4d116 100644 (file)
@@ -573,14 +573,12 @@ bufferevent_new(evutil_socket_t fd,
 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;
 }