]> granicus.if.org Git - libevent/commitdiff
be: replace conn_address by full struct instead of pointer
authorAzat Khuzhin <a3at.mail@gmail.com>
Sat, 15 Nov 2014 21:29:19 +0000 (00:29 +0300)
committerAzat Khuzhin <a3at.mail@gmail.com>
Tue, 18 Aug 2015 17:06:53 +0000 (20:06 +0300)
bufferevent-internal.h
bufferevent_sock.c

index ac32384c5e2f3be1a0d492a56681fb6da85a6457..d2fea2326a9d09b173ed199562ec3e01029a48d9 100644 (file)
@@ -213,7 +213,7 @@ struct bufferevent_private {
         * So we need to save it, just after we connected to remote server, or
         * after resolving (to avoid extra dns requests during retrying, since UDP
         * is slow) */
-       struct sockaddr_storage *conn_address;
+       struct sockaddr_storage conn_address;
 };
 
 /** Possible operations for a control callback. */
index ef1b7e435b93060354653752f6c5dc9d694d79dc..63db9341c4331ffa3f3b6180a47e9ea36feee5f8 100644 (file)
@@ -106,29 +106,21 @@ bufferevent_socket_get_conn_address_(struct bufferevent *bev)
        struct bufferevent_private *bev_p =
            EVUTIL_UPCAST(bev, struct bufferevent_private, bev);
 
-       return (struct sockaddr *)bev_p->conn_address;
+       return (struct sockaddr *)&bev_p->conn_address;
 }
 static void
 bufferevent_socket_set_conn_address_fd(struct bufferevent_private *bev_p, int fd)
 {
-       socklen_t len = sizeof(*bev_p->conn_address);
+       socklen_t len = sizeof(bev_p->conn_address);
 
-       if (!bev_p->conn_address) {
-               bev_p->conn_address = mm_malloc(sizeof(*bev_p->conn_address));
-       }
-       if (getpeername(fd, (struct sockaddr *)bev_p->conn_address, &len)) {
-               mm_free(bev_p->conn_address);
-               bev_p->conn_address = NULL;
-       }
+       struct sockaddr *addr = (struct sockaddr *)&bev_p->conn_address;
+       getpeername(fd, addr, &len);
 }
 static void
 bufferevent_socket_set_conn_address(struct bufferevent_private *bev_p,
        struct sockaddr *addr, size_t addrlen)
 {
-       if (!bev_p->conn_address) {
-               bev_p->conn_address = mm_malloc(sizeof(*bev_p->conn_address));
-       }
-       memcpy(bev_p->conn_address, addr, addrlen);
+       memcpy(&bev_p->conn_address, addr, addrlen);
 }
 
 static void
@@ -623,9 +615,6 @@ be_socket_destruct(struct bufferevent *bufev)
 
        if ((bufev_p->options & BEV_OPT_CLOSE_ON_FREE) && fd >= 0)
                EVUTIL_CLOSESOCKET(fd);
-
-       mm_free(bufev_p->conn_address);
-       bufev_p->conn_address = NULL;
 }
 
 static int