diff --git a/src/context.c b/src/context.c index 5acba6cf..b46dc3bd 100644 --- a/src/context.c +++ b/src/context.c @@ -3266,6 +3266,20 @@ getdns_context_set_eventloop(getdns_context* context, getdns_eventloop* loop) return GETDNS_RETURN_GOOD; } +getdns_return_t +getdns_context_get_eventloop(getdns_context *context, getdns_eventloop **loop) +{ + if (!context || !loop) + return GETDNS_RETURN_INVALID_PARAMETER; + + if (!context->extension) + return GETDNS_RETURN_GENERIC_ERROR; + else + *loop = context->extension; + + return GETDNS_RETURN_GOOD; +} + static in_port_t upstream_port(getdns_upstream *upstream) { diff --git a/src/getdns/getdns_extra.h.in b/src/getdns/getdns_extra.h.in index dd0574c7..8593fda4 100644 --- a/src/getdns/getdns_extra.h.in +++ b/src/getdns/getdns_extra.h.in @@ -119,6 +119,11 @@ getdns_return_t getdns_context_set_eventloop(getdns_context* context, getdns_eventloop *eventloop); +/* get the currently active (pluggable) eventloop from the context */ +getdns_return_t +getdns_context_get_eventloop(getdns_context* context, + getdns_eventloop **eventloop); + /* detach the eventloop from the context */ getdns_return_t getdns_context_detach_eventloop(getdns_context *context);