Author: file
Date: Mon Mar 16 09:31:52 2015
New Revision: 432992

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=432992
Log:
Incorporate review feedback.

Modified:
    team/group/dns/include/asterisk/dns_core.h
    team/group/dns/main/dns_core.c
    team/group/dns/tests/test_dns.c

Modified: team/group/dns/include/asterisk/dns_core.h
URL: 
http://svnview.digium.com/svn/asterisk/team/group/dns/include/asterisk/dns_core.h?view=diff&rev=432992&r1=432991&r2=432992
==============================================================================
--- team/group/dns/include/asterisk/dns_core.h (original)
+++ team/group/dns/include/asterisk/dns_core.h Mon Mar 16 09:31:52 2015
@@ -69,7 +69,7 @@
  */
 void *ast_dns_query_get_data(const struct ast_dns_query *query);
 
-/*! \brief Opaque structure for a DNS query result */
+/*! \brief Opaque structure for a DNS query result, guaranteed to be immutable 
*/
 struct ast_dns_result;
 
 /*!
@@ -78,6 +78,8 @@
  * \param query The DNS query
  *
  * \return the DNS result information
+ *
+ * \note The result is NOT ao2 allocated
  */
 struct ast_dns_result *ast_dns_query_get_result(const struct ast_dns_query 
*query);
 

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=432992&r1=432991&r2=432992
==============================================================================
--- team/group/dns/main/dns_core.c (original)
+++ team/group/dns/main/dns_core.c Mon Mar 16 09:31:52 2015
@@ -124,7 +124,17 @@
 
 void ast_dns_result_free(struct ast_dns_result *result)
 {
-       ao2_cleanup(result);
+       struct ast_dns_record *record;
+
+       if (!result) {
+               return;
+       }
+
+       while ((record = AST_LIST_REMOVE_HEAD(&result->records, list))) {
+               ast_free(record);
+       }
+
+       ast_free(result);
 }
 
 int ast_dns_record_get_rr_type(const struct ast_dns_record *record)
@@ -167,26 +177,26 @@
        struct ast_dns_query *query;
 
        if (ast_strlen_zero(name)) {
-               ast_log(LOG_ERROR, "Could not perform asynchronous resolution, 
no name provided\n");
+               ast_log(LOG_WARNING, "Could not perform asynchronous 
resolution, no name provided\n");
                return NULL;
        } else if (rr_type > ns_t_max) {
-               ast_log(LOG_ERROR, "Could not perform asynchronous resolution 
of '%s', resource record type '%d' exceeds maximum\n",
+               ast_log(LOG_WARNING, "Could not perform asynchronous resolution 
of '%s', resource record type '%d' exceeds maximum\n",
                        name, rr_type);
                return NULL;
        } else if (rr_type < 0) {
-               ast_log(LOG_ERROR, "Could not perform asynchronous resolution 
of '%s', invalid resource record type '%d'\n",
+               ast_log(LOG_WARNING, "Could not perform asynchronous resolution 
of '%s', invalid resource record type '%d'\n",
                        name, rr_type);
                return NULL;
        } else if (rr_class > ns_c_max) {
-               ast_log(LOG_ERROR, "Could not perform asynchronous resolution 
of '%s', resource record class '%d' exceeds maximum\n",
+               ast_log(LOG_WARNING, "Could not perform asynchronous resolution 
of '%s', resource record class '%d' exceeds maximum\n",
                        name, rr_class);
                return NULL;
        } else if (rr_class < 0) {
-               ast_log(LOG_ERROR, "Could not perform asynchronous resolution 
of '%s', invalid resource class '%d'\n",
+               ast_log(LOG_WARNING, "Could not perform asynchronous resolution 
of '%s', invalid resource class '%d'\n",
                        name, rr_class);
                return NULL;
        } else if (!callback) {
-               ast_log(LOG_ERROR, "Could not perform asynchronous resolution 
of '%s', no callback provided\n",
+               ast_log(LOG_WARNING, "Could not perform asynchronous resolution 
of '%s', no callback provided\n",
                        name);
                return NULL;
        }
@@ -256,7 +266,8 @@
 {
        struct dns_synchronous_resolve *synchronous = 
ast_dns_query_get_data(query);
 
-       synchronous->result = ao2_bump(ast_dns_query_get_result(query));
+       synchronous->result = query->result;
+       ((struct ast_dns_query *)query)->result = NULL;
 
        ast_mutex_lock(&synchronous->lock);
        synchronous->completed = 1;
@@ -270,26 +281,26 @@
        struct ast_dns_query *query;
 
        if (ast_strlen_zero(name)) {
-               ast_log(LOG_ERROR, "Could not perform synchronous resolution, 
no name provided\n");
+               ast_log(LOG_WARNING, "Could not perform synchronous resolution, 
no name provided\n");
                return -1;
        } else if (rr_type > ns_t_max) {
-               ast_log(LOG_ERROR, "Could not perform synchronous resolution of 
'%s', resource record type '%d' exceeds maximum\n",
+               ast_log(LOG_WARNING, "Could not perform synchronous resolution 
of '%s', resource record type '%d' exceeds maximum\n",
                        name, rr_type);
                return -1;
        } else if (rr_type < 0) {
-               ast_log(LOG_ERROR, "Could not perform synchronous resolution of 
'%s', invalid resource record type '%d'\n",
+               ast_log(LOG_WARNING, "Could not perform synchronous resolution 
of '%s', invalid resource record type '%d'\n",
                        name, rr_type);
                return -1;
        } else if (rr_class > ns_c_max) {
-               ast_log(LOG_ERROR, "Could not perform synchronous resolution of 
'%s', resource record class '%d' exceeds maximum\n",
+               ast_log(LOG_WARNING, "Could not perform synchronous resolution 
of '%s', resource record class '%d' exceeds maximum\n",
                        name, rr_class);
                return -1;
        } else if (rr_class < 0) {
-               ast_log(LOG_ERROR, "Could not perform synchronous resolution of 
'%s', invalid resource class '%d'\n",
+               ast_log(LOG_WARNING, "Could not perform synchronous resolution 
of '%s', invalid resource class '%d'\n",
                        name, rr_class);
                return -1;
        } else if (!result) {
-               ast_log(LOG_ERROR, "Could not perform synchronous resolution of 
'%s', no result pointer provided for storing results\n",
+               ast_log(LOG_WARNING, "Could not perform synchronous resolution 
of '%s', no result pointer provided for storing results\n",
                        name);
                return -1;
        }
@@ -335,17 +346,6 @@
        return query->resolver_data;
 }
 
-/*! \brief Destructor for DNS result */
-static void dns_result_destroy(void *obj)
-{
-       struct ast_dns_result *result = obj;
-       struct ast_dns_record *record;
-
-       while ((record = AST_LIST_REMOVE_HEAD(&result->records, list))) {
-               ast_free(record);
-       }
-}
-
 int ast_dns_resolver_set_result(struct ast_dns_query *query, unsigned int 
secure, unsigned int bogus,
        unsigned int rcode, const char *canonical)
 {
@@ -361,11 +361,9 @@
                return -1;
        }
 
-       if (query->result) {
-               ast_dns_result_free(query->result);
-       }
-
-       query->result = ao2_alloc_options(sizeof(*query->result) + 
strlen(canonical) + 1, dns_result_destroy, AO2_ALLOC_OPT_LOCK_NOLOCK);
+       ast_dns_result_free(query->result);
+
+       query->result = ast_calloc(1, sizeof(*query->result) + 
strlen(canonical) + 1);
        if (!query->result) {
                return -1;
        }

Modified: team/group/dns/tests/test_dns.c
URL: 
http://svnview.digium.com/svn/asterisk/team/group/dns/tests/test_dns.c?view=diff&rev=432992&r1=432991&r2=432992
==============================================================================
--- team/group/dns/tests/test_dns.c (original)
+++ team/group/dns/tests/test_dns.c Mon Mar 16 09:31:52 2015
@@ -367,14 +367,14 @@
        if (!ast_dns_resolver_set_result(&some_query, 1, 1, ns_r_noerror, 
"asterisk.org")) {
                ast_test_status_update(test, "Successfully added a result that 
was both secure and bogus\n");
                result = ast_dns_query_get_result(&some_query);
-               ao2_cleanup(result);
+               ast_dns_result_free(result);
                return AST_TEST_FAIL;
        }
 
        if (!ast_dns_resolver_set_result(&some_query, 0, 0, ns_r_noerror, 
NULL)) {
                ast_test_status_update(test, "Successfully added result with no 
canonical name\n");
                result = ast_dns_query_get_result(&some_query);
-               ao2_cleanup(result);
+               ast_dns_result_free(result);
                return AST_TEST_FAIL;
        }
 


-- 
_____________________________________________________________________
-- 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

Reply via email to