]> granicus.if.org Git - libevent/commitdiff
be_openssl: introduce be_openssl_auto_fd() helper
authorAzat Khuzhin <a3at.mail@gmail.com>
Wed, 2 Sep 2015 09:42:29 +0000 (12:42 +0300)
committerAzat Khuzhin <a3at.mail@gmail.com>
Wed, 2 Sep 2015 16:27:01 +0000 (19:27 +0300)
bufferevent_openssl.c

index 7d7c426a44b362be876fe77341cf50d3c19ba5e7..3eb5a0fe7339a13036bfecc10438e5a7778689ee 100644 (file)
@@ -955,6 +955,18 @@ be_openssl_writeeventcb(evutil_socket_t fd, short what, void *ptr)
        bufferevent_decref_and_unlock_(&bev_ssl->bev.bev);
 }
 
+static int
+be_openssl_auto_fd(struct bufferevent_openssl *bev_ssl, int fd)
+{
+       if (!bev_ssl->underlying) {
+               struct bufferevent *bev = &bev_ssl->bev.bev;
+               if (event_initialized(&bev->ev_read) && fd < 0) {
+                       fd = event_get_fd(&bev->ev_read);
+               }
+       }
+       return fd;
+}
+
 static int
 set_open_callbacks(struct bufferevent_openssl *bev_ssl, evutil_socket_t fd)
 {
@@ -994,12 +1006,7 @@ set_open_callbacks(struct bufferevent_openssl *bev_ssl, evutil_socket_t fd)
 static int
 set_open_callbacks_auto(struct bufferevent_openssl *bev_ssl, evutil_socket_t fd)
 {
-       if (!bev_ssl->underlying) {
-               struct bufferevent *bev = &bev_ssl->bev.bev;
-               if (event_initialized(&bev->ev_read) && fd < 0) {
-                       fd = event_get_fd(&bev->ev_read);
-               }
-       }
+       fd = be_openssl_auto_fd(bev_ssl, fd);
        return set_open_callbacks(bev_ssl, fd);
 }
 
@@ -1108,12 +1115,7 @@ set_handshake_callbacks(struct bufferevent_openssl *bev_ssl, evutil_socket_t fd)
 static int
 set_handshake_callbacks_auto(struct bufferevent_openssl *bev_ssl, evutil_socket_t fd)
 {
-       if (!bev_ssl->underlying) {
-               struct bufferevent *bev = &bev_ssl->bev.bev;
-               if (event_initialized(&bev->ev_read) && fd < 0) {
-                       fd = event_get_fd(&bev->ev_read);
-               }
-       }
+       fd = be_openssl_auto_fd(bev_ssl, fd);
        return set_handshake_callbacks(bev_ssl, fd);
 }