Author: file Date: Thu Mar 5 08:58:44 2015 New Revision: 432482 URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=432482 Log: Begin adding recurring support.
Modified: team/group/dns/include/asterisk/dns_internal.h team/group/dns/main/dns_core.c Modified: team/group/dns/include/asterisk/dns_internal.h URL: http://svnview.digium.com/svn/asterisk/team/group/dns/include/asterisk/dns_internal.h?view=diff&rev=432482&r1=432481&r2=432482 ============================================================================== --- team/group/dns/include/asterisk/dns_internal.h (original) +++ team/group/dns/include/asterisk/dns_internal.h Thu Mar 5 08:58:44 2015 @@ -99,6 +99,8 @@ void *resolver_data; /*! \brief Result of the DNS query */ struct ast_dns_result *result; + /*! \brief If the query is recurring or not */ + unsigned int recurring; /*! \brief Timer for recurring resolution */ int timer; /*! \brief Resource record type */ Modified: team/group/dns/main/dns_core.c URL: http://svnview.digium.com/svn/asterisk/team/group/dns/main/dns_core.c?view=diff&rev=432482&r1=432481&r2=432482 ============================================================================== --- team/group/dns/main/dns_core.c (original) +++ team/group/dns/main/dns_core.c Thu Mar 5 08:58:44 2015 @@ -141,7 +141,7 @@ ast_dns_result_free(query->result); } -struct ast_dns_query *ast_dns_resolve_async(const char *name, int rr_type, int rr_class, ast_dns_resolve_callback callback, void *data) +static struct ast_dns_query *dns_resolve_async(const char *name, int rr_type, int rr_class, ast_dns_resolve_callback callback, void *data, unsigned int recurring) { struct ast_dns_query *query; @@ -149,12 +149,19 @@ return NULL; } - query = ao2_alloc_options(sizeof(*query) + strlen(name) + 1, dns_query_destroy, AO2_ALLOC_OPT_LOCK_NOLOCK); + if (!recurring) { + query = ao2_alloc_options(sizeof(*query) + strlen(name) + 1, dns_query_destroy, AO2_ALLOC_OPT_LOCK_NOLOCK); + } else { + query = ao2_alloc(sizeof(*query) + strlen(name) + 1, dns_query_destroy); + } + if (!query) { return NULL; } query->callback = callback; + query->user_data = ao2_bump(data); + query->recurring = recurring; query->rr_type = rr_type; query->rr_class = rr_class; strcpy(query->name, name); /* SAFE */ @@ -180,9 +187,14 @@ return query; } +struct ast_dns_query *ast_dns_resolve_async(const char *name, int rr_type, int rr_class, ast_dns_resolve_callback callback, void *data) +{ + return dns_resolve_async(name, rr_type, rr_class, callback, data, 0); +} + struct ast_dns_query *ast_dns_resolve_async_recurring(const char *name, int rr_type, int rr_class, ast_dns_resolve_callback callback, void *data) { - return NULL; + return dns_resolve_async(name, rr_type, rr_class, callback, data, 1); } int ast_dns_resolve_cancel(struct ast_dns_query *query) -- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- svn-commits mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/svn-commits