]> granicus.if.org Git - libevent/commitdiff
Expose a function to getsockname() on a listener's fd.
authorNick Mathewson <nickm@torproject.org>
Fri, 3 Sep 2010 20:41:16 +0000 (16:41 -0400)
committerNick Mathewson <nickm@torproject.org>
Fri, 3 Sep 2010 20:41:16 +0000 (16:41 -0400)
include/event2/listener.h
listener.c

index fa4e949988faee4b18006e45dd60362b76819182..dbc0366f3dd1690b921790bc98d767d4ff1a0a58 100644 (file)
@@ -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
index edfdaefca4c6bac353b5a0aa2a9260dac10d5dec..dbd9c83c68ff948410c4be084ff35df0c5595448 100644 (file)
@@ -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)
 {