#230 Build fails against Bind 9.18.25 / 9.16.49
Closed: fixed by abbra. Opened by slev.

ldap_driver.c: In function 'settask':
ldap_driver.c:696:9: error: too few arguments to function 'dns_db_settask'
  696 |         dns_db_settask(ldapdb->rbtdb, task);
      |         ^~~~~~~~~~~~~~
In file included from ldap_driver.c:22:
/usr/include/bind9/dns/db.h:1392:1: note: declared here
 1392 | dns_db_settask(dns_db_t *db, isc_task_t *task, isc_task_t *prunetask);
      | ^~~~~~~~~~~~~~
ldap_driver.c: At top level:
ldap_driver.c:943:9: error: initialization of 'void (*)(dns_db_t *, isc_task_t *, isc_task_t *)' {aka 'void (*)(struct dns_db *, struct isc_task *, struct isc_task *)'} from incompatible pointer type 'void (*)(dns_db_t *, isc_task_t *)' {aka 'void (*)(struct dns_db *, struct isc_task *)'} [-Werror=incompatible-pointer-types]
  943 |         settask,
      |         ^~~~~~~
ldap_driver.c:943:9: note: (near initialization for 'ldapdb_methods.settask')
cc1: all warnings being treated as errors
make[2]: *** [Makefile:599: ldap_la-ldap_driver.lo] Error 1

Bind's change:
https://gitlab.isc.org/isc-projects/bind9/-/issues/4621

An example of upstream's fix:
https://gitlab.isc.org/isc-projects/bind9/-/merge_requests/8830/diffs#diff-content-4f841ec3a95d815037cebc6400782072c0a39008


@slev thanks for the report.
It looks like in the https://gitlab.isc.org/isc-projects/bind9/-/merge_requests/8825/diffs most of the calls are passing the same task reference to both task and prunetask:

... 
lib/dns/zone.c
...
-   dns_db_settask(db, zone->task);
+   dns_db_settask(db, zone->task, zone->task);

same in other places.

So may be we can do the same? Can you try this in your setup?

I checked

--- a/src/ldap_driver.c
+++ b/src/ldap_driver.c
@@ -687,13 +687,13 @@ overmem(dns_db_t *db, bool overmem)
 }

 static void
-settask(dns_db_t *db, isc_task_t *task)
+settask(dns_db_t *db, isc_task_t *task, isc_task_t *prunetask)
 {
        ldapdb_t *ldapdb = (ldapdb_t *) db;

        REQUIRE(VALID_LDAPDB(ldapdb));

-       dns_db_settask(ldapdb->rbtdb, task);
+       dns_db_settask(ldapdb->rbtdb, task, prunetask);
 }

 static isc_result_t

rndc flush seems to work as expected.

Thank you. Could you please wrap it with a signature checks and submit upstream PR?

Ideally, we want to support both old and newer versions of bind API.

Closing as PR was merged.

Metadata Update from @abbra:
- Issue close_status updated to: fixed
- Issue status updated to: Closed (was: Open)

Log in to comment on this ticket.

Metadata
Related Pull Requests