]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
clean up client.c
authorEvan Hunt <each@isc.org>
Tue, 31 Oct 2023 13:20:51 +0000 (14:20 +0100)
committerEvan Hunt <each@isc.org>
Thu, 7 Dec 2023 01:31:38 +0000 (17:31 -0800)
- make dns_client_startresolve() static since it's only used internally
- remove outdated comments

lib/dns/client.c
lib/dns/include/dns/client.h

index 486cda4af7d57264f7040cff912d587749a04985..f65cb5ef3cbefeccbcef2c20275d2e5d693596b2 100644 (file)
@@ -70,7 +70,6 @@
  * DNS client object
  */
 struct dns_client {
-       /* Unlocked */
        unsigned int magic;
        unsigned int attributes;
        isc_mem_t *mctx;
@@ -432,10 +431,6 @@ start_fetch(resctx_t *rctx) {
        isc_result_t result;
        int fopts = 0;
 
-       /*
-        * The caller must be holding the rctx's lock.
-        */
-
        REQUIRE(rctx->fetch == NULL);
 
        if (!rctx->want_cdflag) {
@@ -859,45 +854,11 @@ resolve_done(void *arg) {
        isc_mem_putanddetach(&resarg->mctx, resarg, sizeof(*resarg));
 }
 
-isc_result_t
-dns_client_resolve(dns_client_t *client, const dns_name_t *name,
-                  dns_rdataclass_t rdclass, dns_rdatatype_t type,
-                  unsigned int options, dns_namelist_t *namelist,
-                  dns_client_resolve_cb resolve_cb) {
-       isc_result_t result;
-       resarg_t *resarg = NULL;
-
-       REQUIRE(DNS_CLIENT_VALID(client));
-       REQUIRE(namelist != NULL && ISC_LIST_EMPTY(*namelist));
-       REQUIRE(rdclass == dns_rdataclass_in);
-
-       resarg = isc_mem_get(client->mctx, sizeof(*resarg));
-
-       *resarg = (resarg_t){
-               .client = client,
-               .name = name,
-               .result = DNS_R_SERVFAIL,
-               .namelist = namelist,
-               .resolve_cb = resolve_cb,
-       };
-
-       isc_mem_attach(client->mctx, &resarg->mctx);
-
-       result = dns_client_startresolve(client, name, rdclass, type, options,
-                                        resolve_done, resarg, &resarg->trans);
-       if (result != ISC_R_SUCCESS) {
-               isc_mem_put(client->mctx, resarg, sizeof(*resarg));
-               return (result);
-       }
-
-       return (result);
-}
-
-isc_result_t
-dns_client_startresolve(dns_client_t *client, const dns_name_t *name,
-                       dns_rdataclass_t rdclass, dns_rdatatype_t type,
-                       unsigned int options, isc_job_cb cb, void *arg,
-                       dns_clientrestrans_t **transp) {
+static isc_result_t
+startresolve(dns_client_t *client, const dns_name_t *name,
+            dns_rdataclass_t rdclass, dns_rdatatype_t type,
+            unsigned int options, isc_job_cb cb, void *arg,
+            dns_clientrestrans_t **transp) {
        dns_clientresume_t *rev = NULL;
        resctx_t *rctx = NULL;
        isc_mem_t *mctx = NULL;
@@ -981,6 +942,40 @@ cleanup:
        return (result);
 }
 
+isc_result_t
+dns_client_resolve(dns_client_t *client, const dns_name_t *name,
+                  dns_rdataclass_t rdclass, dns_rdatatype_t type,
+                  unsigned int options, dns_namelist_t *namelist,
+                  dns_client_resolve_cb resolve_cb) {
+       isc_result_t result;
+       resarg_t *resarg = NULL;
+
+       REQUIRE(DNS_CLIENT_VALID(client));
+       REQUIRE(namelist != NULL && ISC_LIST_EMPTY(*namelist));
+       REQUIRE(rdclass == dns_rdataclass_in);
+
+       resarg = isc_mem_get(client->mctx, sizeof(*resarg));
+
+       *resarg = (resarg_t){
+               .client = client,
+               .name = name,
+               .result = DNS_R_SERVFAIL,
+               .namelist = namelist,
+               .resolve_cb = resolve_cb,
+       };
+
+       isc_mem_attach(client->mctx, &resarg->mctx);
+
+       result = startresolve(client, name, rdclass, type, options,
+                             resolve_done, resarg, &resarg->trans);
+       if (result != ISC_R_SUCCESS) {
+               isc_mem_put(client->mctx, resarg, sizeof(*resarg));
+               return (result);
+       }
+
+       return (result);
+}
+
 void
 dns_client_freeresanswer(dns_client_t *client, dns_namelist_t *namelist) {
        dns_name_t *name;
@@ -1027,11 +1022,6 @@ destroyrestrans(dns_clientrestrans_t **transp) {
        mctx = client->mctx;
        dns_view_detach(&rctx->view);
 
-       /*
-        * Wait for the lock in client_resfind to be released before
-        * destroying the lock.
-        */
-
        INSIST(ISC_LINK_LINKED(rctx, link));
        ISC_LIST_UNLINK(client->resctxs, rctx, link);
 
index f5aef0a4a676dfd8f4c6267ec3b73bfde64c0707..148578f4b7aae42dd61be75975bafacb75a54800 100644 (file)
@@ -55,7 +55,7 @@ ISC_LANG_BEGINDECLS
  ***/
 
 /*%
- * Optional flags for dns_client_(start)resolve.
+ * Optional flags for dns_client_resolve.
  */
 /*%< Do not return DNSSEC data (e.g. RRSIGS) with response. */
 #define DNS_CLIENTRESOPT_NODNSSEC 0x01
@@ -185,11 +185,6 @@ dns_client_resolve(dns_client_t *client, const dns_name_t *name,
                   unsigned int options, dns_namelist_t *namelist,
                   dns_client_resolve_cb resolve_cb);
 
-isc_result_t
-dns_client_startresolve(dns_client_t *client, const dns_name_t *name,
-                       dns_rdataclass_t rdclass, dns_rdatatype_t type,
-                       unsigned int options, isc_job_cb cb, void *arg,
-                       dns_clientrestrans_t **transp);
 /*%<
  * Perform name resolution for 'name', 'rdclass', and 'type'.
  *
@@ -215,13 +210,6 @@ dns_client_startresolve(dns_client_t *client, const dns_name_t *name,
  * It is expected that the client object passed to dns_client_resolve() was
  * created via dns_client_create() and has external managers and contexts.
  *
- * dns_client_startresolve() is an asynchronous version of dns_client_resolve()
- * and does not block.  When name resolution is completed, 'cb' will be
- * called with the argument of a 'dns_clientresume_t' object, which contains
- * the resulting list of answer names (on success), and a also contains
- * a pointer to 'arg'.  On return, '*transp' is set to an opaque transaction
- * ID so that the caller can cancel this resolution process.
- *
  * Requires:
  *
  *\li  'client' is a valid client.