diff --git a/include/event2/listener.h b/include/event2/listener.h index 0cb8583c..9a72e99e 100644 --- a/include/event2/listener.h +++ b/include/event2/listener.h @@ -69,6 +69,9 @@ typedef void (*evconnlistener_errorcb)(struct evconnlistener *, void *); /** Flag: Indicates that the listener should be locked so it's safe to use * from multiple threadcs at once. */ #define LEV_OPT_THREADSAFE (1u<<4) +/** Flag: Indicates that the listener should be created in disabled + * state. Use evconnlistener_enable() to enable it later. */ +#define LEV_OPT_DISABLED (1u<<5) /** Allocate a new evconnlistener object to listen for incoming TCP connections diff --git a/listener.c b/listener.c index 7f803382..703a6aae 100644 --- a/listener.c +++ b/listener.c @@ -193,7 +193,8 @@ evconnlistener_new(struct event_base *base, event_assign(&lev->listener, base, fd, EV_READ|EV_PERSIST, listener_read_cb, lev); - evconnlistener_enable(&lev->base); + if (!(flags & LEV_OPT_DISABLED)) + evconnlistener_enable(&lev->base); return &lev->base; }