Browsing LDAP-related RFCs suggests that LDAP referrals are
communicated only in LDAP_RES_SEARCH_RESULT messages, not via
LDAP_RES_SEARCH_REFERENCE messages.  I doubt we will ever see a
SEARCH_REFERENCE message.

As a clean up, remove nsdb_parse_reference().
LDAP_RES_SEARCH_RESULT is now handled as an unsupported message
type.

Signed-off-by: Chuck Lever <[email protected]>
---

 src/libnsdb/administrator.c |    6 ------
 src/libnsdb/fileserver.c    |   16 ----------------
 src/libnsdb/ldap.c          |   44 -------------------------------------------
 src/libnsdb/nsdb-internal.h |    2 --
 4 files changed, 0 insertions(+), 68 deletions(-)

diff --git a/src/libnsdb/administrator.c b/src/libnsdb/administrator.c
index aa4aad3..0565caa 100644
--- a/src/libnsdb/administrator.c
+++ b/src/libnsdb/administrator.c
@@ -470,9 +470,6 @@ again:
                        retval = nsdb_parse_delete_fsn_fsls_entry_s(ld, message,
                                                                ldap_err);
                        break;
-               case LDAP_RES_SEARCH_REFERENCE:
-                       retval = nsdb_parse_reference(ld, message, ldap_err);
-                       break;
                case LDAP_RES_SEARCH_RESULT:
                        retval = nsdb_parse_result(ld, message, NULL, ldap_err);
                        break;
@@ -1654,9 +1651,6 @@ again:
                        retval = nsdb_parse_delete_nsdb_fsns_entry_s(ld, 
message,
                                                                ldap_err);
                        break;
-               case LDAP_RES_SEARCH_REFERENCE:
-                       retval = nsdb_parse_reference(ld, message, ldap_err);
-                       break;
                case LDAP_RES_SEARCH_RESULT:
                        retval = nsdb_parse_result(ld, message, NULL, ldap_err);
                        break;
diff --git a/src/libnsdb/fileserver.c b/src/libnsdb/fileserver.c
index d4519d6..cdceb37 100644
--- a/src/libnsdb/fileserver.c
+++ b/src/libnsdb/fileserver.c
@@ -439,9 +439,6 @@ nsdb_get_ncedn_s(nsdb_t host, const char *naming_context, 
char **dn,
                case LDAP_RES_SEARCH_ENTRY:
                        retval = nsdb_parse_ncedn_entry(ld, message, &tmp);
                        break;
-               case LDAP_RES_SEARCH_REFERENCE:
-                       retval = nsdb_parse_reference(ld, message, ldap_err);
-                       break;
                case LDAP_RES_SEARCH_RESULT:
                        retval = nsdb_parse_result(ld, message, NULL, ldap_err);
                        break;
@@ -627,10 +624,6 @@ nsdb_get_naming_contexts_s(nsdb_t host, char ***contexts,
                        retval = nsdb_parse_naming_contexts_entry(ld,
                                                        message, &tmp);
                        break;
-               case LDAP_RES_SEARCH_REFERENCE:
-                       retval = nsdb_parse_reference(ld,
-                                                       message, ldap_err);
-                       break;
                case LDAP_RES_SEARCH_RESULT:
                        retval = nsdb_parse_result(ld, message, NULL, ldap_err);
                        break;
@@ -1087,9 +1080,6 @@ nsdb_resolve_fsn_find_entry_s(LDAP *ld, const char *nce, 
const char *fsn_uuid,
                        retval = nsdb_resolve_fsn_parse_entry(ld,
                                                        message, &tmp);
                        break;
-               case LDAP_RES_SEARCH_REFERENCE:
-                       retval = nsdb_parse_reference(ld, message, ldap_err);
-                       break;
                case LDAP_RES_SEARCH_RESULT:
                        retval = nsdb_parse_result(ld, message, NULL, ldap_err);
                        break;
@@ -1400,9 +1390,6 @@ nsdb_get_fsn_find_entry_s(LDAP *ld, const char *nce, 
const char *fsn_uuid,
                case LDAP_RES_SEARCH_ENTRY:
                        retval = nsdb_get_fsn_parse_entry(ld, message, &tmp);
                        break;
-               case LDAP_RES_SEARCH_REFERENCE:
-                       retval = nsdb_parse_reference(ld, message, ldap_err);
-                       break;
                case LDAP_RES_SEARCH_RESULT:
                        retval = nsdb_parse_result(ld, message, NULL, ldap_err);
                        break;
@@ -1659,9 +1646,6 @@ nsdb_list_find_entries_s(LDAP *ld, const char *nce, char 
***fsns,
                case LDAP_RES_SEARCH_ENTRY:
                        retval = nsdb_parse_fsn_entry(ld, message, &tmp);
                        break;
-               case LDAP_RES_SEARCH_REFERENCE:
-                       retval = nsdb_parse_reference(ld, message, ldap_err);
-                       break;
                case LDAP_RES_SEARCH_RESULT:
                        retval = nsdb_parse_result(ld, message, NULL, ldap_err);
                        break;
diff --git a/src/libnsdb/ldap.c b/src/libnsdb/ldap.c
index 0abbdd2..d1170d2 100644
--- a/src/libnsdb/ldap.c
+++ b/src/libnsdb/ldap.c
@@ -766,50 +766,6 @@ nsdb_delete_attribute_all_s(LDAP *ld, const char *dn,
 }
 
 /**
- * Handle an LDAP referral message
- *
- * @param ld an initialized LDAP server descriptor
- * @param reference an LDAP_RES_SEARCH_REFERENCE message
- * @param ldap_err OUT: possibly an LDAP error code
- * @return a FedFsStatus code
- *
- * @todo
- *     Implement LDAP referral handling
- */
-FedFsStatus
-nsdb_parse_reference(LDAP *ld, LDAPMessage *reference,
-               unsigned int *ldap_err)
-{
-       char **referrals = NULL;
-       int i, rc;
-
-       if (ld == NULL || reference == NULL || ldap_err == NULL) {
-               xlog(L_ERROR, "%s: Invalid parameter", __func__);
-               return FEDFS_ERR_INVAL;
-       }
-
-       xlog(L_ERROR, "%s: Received referral from NSDB", __func__);
-
-       rc = ldap_parse_reference(ld, reference, &referrals, NULL, 0);
-       if (rc != LDAP_SUCCESS) {
-               xlog(D_GENERAL, "%s: Failed to parse result: %s",
-                       __func__, ldap_err2string(rc));
-               *ldap_err = rc;
-               return FEDFS_ERR_NSDB_LDAP_VAL;
-       }
-
-       if (referrals != NULL) {
-               for (i = 0; referrals[i] != NULL; i++)
-                       xlog(L_ERROR, "%s: Search reference: %s\n",
-                               __func__, referrals[i]);
-               ber_memvfree((void **)referrals);
-       }
-
-       /* Haven't implemented LDAP referral support yet */
-       return FEDFS_ERR_NSDB_LDAP_REFERRAL_NOTFOLLOWED;
-}
-
-/**
  * Duplicate an array of referral URIs
  *
  * @param refs an array of NUL-terminated C strings containing LDAP URIs
diff --git a/src/libnsdb/nsdb-internal.h b/src/libnsdb/nsdb-internal.h
index c2283ed..55b146f 100644
--- a/src/libnsdb/nsdb-internal.h
+++ b/src/libnsdb/nsdb-internal.h
@@ -99,8 +99,6 @@ FedFsStatus    nsdb_delete_attribute_s(LDAP *ld, const char 
*dn,
 FedFsStatus     nsdb_delete_attribute_all_s(LDAP *ld, const char *dn,
                                const char *attribute,
                                unsigned int *ldap_err);
-FedFsStatus     nsdb_parse_reference(LDAP *ld, LDAPMessage *reference,
-                               unsigned int *ldap_err);
 FedFsStatus     nsdb_parse_result(LDAP *ld, LDAPMessage *result,
                                char ***referrals, unsigned int *ldap_err);
 _Bool           nsdb_compare_dns(LDAPDN dn1, LDAPDN dn2);


_______________________________________________
fedfs-utils-devel mailing list
[email protected]
https://oss.oracle.com/mailman/listinfo/fedfs-utils-devel

Reply via email to