diff options
author | Martin Nagy <mnagy@redhat.com> | 2009-04-07 18:47:23 +0200 |
---|---|---|
committer | Martin Nagy <mnagy@redhat.com> | 2009-04-23 16:45:53 +0200 |
commit | f221f70dfe242e56743fc1c5814de9bdcb7ee527 (patch) | |
tree | 620b5faf882f619e80d6674ae2c30e7ae7dd35cc | |
parent | fa6b0eac58ca1aac81b538095bec5522ce3388a2 (diff) | |
download | ldap_driver_testing-f221f70dfe242e56743fc1c5814de9bdcb7ee527.tar.gz ldap_driver_testing-f221f70dfe242e56743fc1c5814de9bdcb7ee527.tar.xz ldap_driver_testing-f221f70dfe242e56743fc1c5814de9bdcb7ee527.zip |
Fix rdata parsing.
-rw-r--r-- | src/cache.c | 8 | ||||
-rw-r--r-- | src/cache.h | 2 | ||||
-rw-r--r-- | src/ldap_driver.c | 6 | ||||
-rw-r--r-- | src/ldap_helper.c | 16 | ||||
-rw-r--r-- | src/ldap_helper.h | 2 |
5 files changed, 19 insertions, 15 deletions
diff --git a/src/cache.c b/src/cache.c index 683f3fd..40a2289 100644 --- a/src/cache.c +++ b/src/cache.c @@ -165,7 +165,7 @@ destroy_ldap_cache(ldap_cache_t **cachep) isc_result_t cached_ldap_rdatalist_get(isc_mem_t *mctx, ldap_cache_t *cache, ldap_db_t *ldap_db, dns_name_t *name, - ldapdb_rdatalist_t *rdatalist) + dns_name_t *origin, ldapdb_rdatalist_t *rdatalist) { isc_result_t result; ldapdb_rdatalist_t rdlist; @@ -176,7 +176,8 @@ cached_ldap_rdatalist_get(isc_mem_t *mctx, ldap_cache_t *cache, REQUIRE(cache != NULL); if (cache->rbt == NULL) - return ldapdb_rdatalist_get(mctx, ldap_db, name, rdatalist); + return ldapdb_rdatalist_get(mctx, ldap_db, name, origin, + rdatalist); CONTROLED_LOCK(&cache->mutex); result = dns_rbt_findname(cache->rbt, name, 0, NULL, (void *)&node); @@ -200,7 +201,8 @@ cached_ldap_rdatalist_get(isc_mem_t *mctx, ldap_cache_t *cache, if (!in_cache) { INIT_LIST(rdlist); - result = ldapdb_rdatalist_get(mctx, ldap_db, name, &rdlist); + result = ldapdb_rdatalist_get(mctx, ldap_db, name, origin, + &rdlist); /* TODO: Cache entries that are not found. */ if (result != ISC_R_SUCCESS) goto cleanup; diff --git a/src/cache.h b/src/cache.h index a8f0558..74e4937 100644 --- a/src/cache.h +++ b/src/cache.h @@ -46,7 +46,7 @@ destroy_ldap_cache(ldap_cache_t **cachep); isc_result_t cached_ldap_rdatalist_get(isc_mem_t *mctx, ldap_cache_t *cache, ldap_db_t *ldap_db, dns_name_t *name, - ldapdb_rdatalist_t *rdatalist); + dns_name_t *origin, ldapdb_rdatalist_t *rdatalist); /* * Discard 'name' from the cache. If caching is not really turned on or 'name' diff --git a/src/ldap_driver.c b/src/ldap_driver.c index faa0b95..b27c6f4 100644 --- a/src/ldap_driver.c +++ b/src/ldap_driver.c @@ -315,7 +315,8 @@ findnode(dns_db_t *db, dns_name_t *name, isc_boolean_t create, result = cached_ldap_rdatalist_get(ldapdb->common.mctx, ldapdb->ldap_cache, ldapdb->ldap_db, - name, &rdatalist); + name, &ldapdb->common.origin, + &rdatalist); if (result == ISC_R_NOMEMORY) return ISC_R_NOMEMORY; @@ -372,7 +373,8 @@ find(dns_db_t *db, dns_name_t *name, dns_dbversion_t *version, result = cached_ldap_rdatalist_get(ldapdb->common.mctx, ldapdb->ldap_cache, ldapdb->ldap_db, - name, &rdatalist); + name, &ldapdb->common.origin, + &rdatalist); INSIST(result != DNS_R_PARTIALMATCH); /* XXX Not yet implemented */ if (result != ISC_R_SUCCESS && result != DNS_R_PARTIALMATCH) diff --git a/src/ldap_helper.c b/src/ldap_helper.c index aaa593d..60b2675 100644 --- a/src/ldap_helper.c +++ b/src/ldap_helper.c @@ -192,7 +192,7 @@ static isc_result_t findrdatatype_or_create(isc_mem_t *mctx, ldapdb_rdatalist_t *rdatalist, ldap_entry_t *entry, dns_rdatatype_t rdtype, dns_rdatalist_t **rdlistp); static isc_result_t add_soa_record(isc_mem_t *mctx, ldap_instance_t *ldap_inst, - dns_name_t *name, ldap_entry_t *entry, + dns_name_t *origin, ldap_entry_t *entry, ldapdb_rdatalist_t *rdatalist); static dns_rdataclass_t get_rdataclass(ldap_entry_t *ldap_entry); static dns_ttl_t get_ttl(ldap_entry_t *ldap_entry); @@ -751,7 +751,7 @@ free_rdatalist(isc_mem_t *mctx, dns_rdatalist_t *rdlist) isc_result_t ldapdb_rdatalist_get(isc_mem_t *mctx, ldap_db_t *ldap_db, dns_name_t *name, - ldapdb_rdatalist_t *rdatalist) + dns_name_t *origin, ldapdb_rdatalist_t *rdatalist) { isc_result_t result; ldap_instance_t *ldap_inst; @@ -789,7 +789,7 @@ ldapdb_rdatalist_get(isc_mem_t *mctx, ldap_db_t *ldap_db, dns_name_t *name, entry != NULL; entry = NEXT(entry, link)) { - result = add_soa_record(mctx, ldap_inst, name, entry, + result = add_soa_record(mctx, ldap_inst, origin, entry, rdatalist); if (result != ISC_R_SUCCESS && result != ISC_R_NOTFOUND) goto cleanup; @@ -807,8 +807,8 @@ ldapdb_rdatalist_get(isc_mem_t *mctx, ldap_db_t *ldap_db, dns_name_t *name, result == ISC_R_SUCCESS; result = get_next_rdatatext(attr, string)) { CHECK(parse_rdata(mctx, ldap_inst, rdclass, - rdtype, name, str_buf(string), - &rdata)); + rdtype, origin, + str_buf(string), &rdata)); APPEND(rdlist->rdata, rdata, link); rdata = NULL; } @@ -867,7 +867,7 @@ get_ttl(ldap_entry_t *ldap_entry) static isc_result_t get_soa_record(ldap_entry_t *entry, ld_string_t *target) { - isc_result_t result; + isc_result_t result = ISC_R_NOTFOUND; ldap_value_list_t values; const char *soa_attrs[] = { @@ -891,7 +891,7 @@ cleanup: } static isc_result_t -add_soa_record(isc_mem_t *mctx, ldap_instance_t *ldap_inst, dns_name_t *name, +add_soa_record(isc_mem_t *mctx, ldap_instance_t *ldap_inst, dns_name_t *origin, ldap_entry_t *entry, ldapdb_rdatalist_t *rdatalist) { isc_result_t result; @@ -906,7 +906,7 @@ add_soa_record(isc_mem_t *mctx, ldap_instance_t *ldap_inst, dns_name_t *name, rdclass = get_rdataclass(entry); CHECK(get_soa_record(entry, string)); - CHECK(parse_rdata(mctx, ldap_inst, rdclass, dns_rdatatype_soa, name, + CHECK(parse_rdata(mctx, ldap_inst, rdclass, dns_rdatatype_soa, origin, str_buf(string), &rdata)); CHECK(findrdatatype_or_create(mctx, rdatalist, entry, dns_rdatatype_soa, diff --git a/src/ldap_helper.h b/src/ldap_helper.h index a0e4aea..84d1885 100644 --- a/src/ldap_helper.h +++ b/src/ldap_helper.h @@ -67,7 +67,7 @@ void free_rdatalist(isc_mem_t *mctx, dns_rdatalist_t *rdlist); */ isc_result_t ldapdb_rdatalist_get(isc_mem_t *mctx, ldap_db_t *ldap_db, - dns_name_t *name, + dns_name_t *name, dns_name_t *origin, ldapdb_rdatalist_t *rdatalist); /* * ldapdb_rdatalist_get |