From a2c48e3be814cf5f4ab6707cdf285731a8524820 Mon Sep 17 00:00:00 2001 From: Samy Al Bahra Date: Mon, 24 Oct 2011 01:31:55 +0000 Subject: [PATCH] evhttp: Add evhttp_foreach_bound_socket. Applies the function specified in the first argument to all evhttp_bound_sockets associated with a struct evhttp. The user must not attempt to free or remove any connections, sockets or listeners in the callback function. --- http.c | 10 ++++++++++ include/event2/http.h | 13 +++++++++++++ 2 files changed, 23 insertions(+) diff --git a/http.c b/http.c index abc73471b5..f9feabdf55 100644 --- a/http.c +++ b/http.c @@ -3239,6 +3239,16 @@ evhttp_accept_socket(struct evhttp *http, evutil_socket_t fd) return (0); } +void +evhttp_foreach_bound_socket(struct evhttp *http, + evhttp_bound_socket_foreach_fn *function, + void *argument) +{ + struct evhttp_bound_socket *bound; + + TAILQ_FOREACH(bound, &http->sockets, next) + function(bound, argument); +} struct evhttp_bound_socket * evhttp_accept_socket_with_handle(struct evhttp *http, evutil_socket_t fd) diff --git a/include/event2/http.h b/include/event2/http.h index 401635f74b..9ae95d7625 100644 --- a/include/event2/http.h +++ b/include/event2/http.h @@ -150,6 +150,19 @@ struct evhttp_bound_socket *evhttp_bind_listener(struct evhttp *http, struct evc */ struct evconnlistener *evhttp_bound_socket_get_listener(struct evhttp_bound_socket *bound); +typedef void evhttp_bound_socket_foreach_fn(struct evhttp_bound_socket *, void *); +/** + * Applies the function specified in the first argument to all + * evhttp_bound_sockets associated with "http". The user must not + * attempt to free or remove any connections, sockets or listeners + * in the callback "function". + * + * @param http pointer to an evhttp object + * @param function function to apply to every bound socket + * @param argument pointer value passed to function for every socket iterated + */ +void evhttp_foreach_bound_socket(struct evhttp *http, evhttp_bound_socket_foreach_fn *function, void *argument); + /** * Makes an HTTP server stop accepting connections on the specified socket *