From: Nick Mathewson Date: Fri, 3 Sep 2010 20:41:16 +0000 (-0400) Subject: Expose a function to getsockname() on a listener's fd. X-Git-Tag: release-2.0.7-rc~22 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fab50488fcb741884ccdfa7b83643eac3e5c9cbf;p=libevent Expose a function to getsockname() on a listener's fd. --- diff --git a/include/event2/listener.h b/include/event2/listener.h index fa4e9499..dbc0366f 100644 --- a/include/event2/listener.h +++ b/include/event2/listener.h @@ -112,6 +112,11 @@ struct event_base *evconnlistener_get_base(struct evconnlistener *lev); /** Return the socket that an evconnlistner is listening on. */ evutil_socket_t evconnlistener_get_fd(struct evconnlistener *lev); +/** Set ss to the address that an evconnlistner is listening on; returns 0 + * on success, -1 on failure. */ +int evconnlistener_get_address(struct evconnlistener *lev, + struct sockaddr *sa, ev_socklen_t *socklen); + #ifdef __cplusplus } #endif diff --git a/listener.c b/listener.c index edfdaefc..dbd9c83c 100644 --- a/listener.c +++ b/listener.c @@ -261,6 +261,16 @@ event_listener_getfd(struct evconnlistener *lev) return event_get_fd(&lev_e->listener); } +int +evconnlistener_get_address(struct evconnlistener *lev, + struct sockaddr *sa, ev_socklen_t *socklen) +{ + evutil_socket_t s = evconnlistener_get_fd(lev); + if (s <= 0) + return -1; + return getsockname(s, sa, socklen); +} + struct event_base * evconnlistener_get_base(struct evconnlistener *lev) {