You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
3.0 KiB
74 lines
3.0 KiB
6 years ago
|
http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/ldap/util_ldap.c?r1=1517388&r2=1517387&pathrev=1517388&view=patch
|
||
|
|
||
|
--- trunk/modules/ldap/util_ldap.c 2013/08/25 21:46:27 1517387
|
||
|
+++ trunk/modules/ldap/util_ldap.c 2013/08/25 22:42:29 1517388
|
||
|
@@ -60,6 +60,7 @@
|
||
|
#endif
|
||
|
|
||
|
#define AP_LDAP_HOPLIMIT_UNSET -1
|
||
|
+#define AP_LDAP_CHASEREFERRALS_SDKDEFAULT -1
|
||
|
#define AP_LDAP_CHASEREFERRALS_OFF 0
|
||
|
#define AP_LDAP_CHASEREFERRALS_ON 1
|
||
|
|
||
|
@@ -371,7 +372,7 @@
|
||
|
ldap_option = ldc->deref;
|
||
|
ldap_set_option(ldc->ldap, LDAP_OPT_DEREF, &ldap_option);
|
||
|
|
||
|
- if (ldc->ChaseReferrals == AP_LDAP_CHASEREFERRALS_ON) {
|
||
|
+ if (ldc->ChaseReferrals != AP_LDAP_CHASEREFERRALS_SDKDEFAULT) {
|
||
|
/* Set options for rebind and referrals. */
|
||
|
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server, APLOGNO(01278)
|
||
|
"LDAP: Setting referrals to %s.",
|
||
|
@@ -391,7 +392,9 @@
|
||
|
uldap_connection_unbind(ldc);
|
||
|
return(result->rc);
|
||
|
}
|
||
|
+ }
|
||
|
|
||
|
+ if (ldc->ChaseReferrals == AP_LDAP_CHASEREFERRALS_ON) {
|
||
|
if ((ldc->ReferralHopLimit != AP_LDAP_HOPLIMIT_UNSET) && ldc->ChaseReferrals == AP_LDAP_CHASEREFERRALS_ON) {
|
||
|
/* Referral hop limit - only if referrals are enabled and a hop limit is explicitly requested */
|
||
|
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server, APLOGNO(01280)
|
||
|
@@ -2584,15 +2587,25 @@
|
||
|
|
||
|
static const char *util_ldap_set_chase_referrals(cmd_parms *cmd,
|
||
|
void *config,
|
||
|
- int mode)
|
||
|
+ const char *arg)
|
||
|
{
|
||
|
util_ldap_config_t *dc = config;
|
||
|
|
||
|
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, cmd->server, APLOGNO(01311)
|
||
|
- "LDAP: Setting referral chasing %s",
|
||
|
- (mode == AP_LDAP_CHASEREFERRALS_ON) ? "ON" : "OFF");
|
||
|
+ "LDAP: Setting referral chasing %s", arg);
|
||
|
|
||
|
- dc->ChaseReferrals = mode;
|
||
|
+ if (0 == strcasecmp(arg, "on")) {
|
||
|
+ dc->ChaseReferrals = AP_LDAP_CHASEREFERRALS_ON;
|
||
|
+ }
|
||
|
+ else if (0 == strcasecmp(arg, "off")) {
|
||
|
+ dc->ChaseReferrals = AP_LDAP_CHASEREFERRALS_OFF;
|
||
|
+ }
|
||
|
+ else if (0 == strcasecmp(arg, "default")) {
|
||
|
+ dc->ChaseReferrals = AP_LDAP_CHASEREFERRALS_SDKDEFAULT;
|
||
|
+ }
|
||
|
+ else {
|
||
|
+ return "LDAPReferrals must be 'on', 'off', or 'default'";
|
||
|
+ }
|
||
|
|
||
|
return(NULL);
|
||
|
}
|
||
|
@@ -3116,9 +3129,9 @@
|
||
|
"Specify the LDAP socket connection timeout in seconds "
|
||
|
"(default: 10)"),
|
||
|
|
||
|
- AP_INIT_FLAG("LDAPReferrals", util_ldap_set_chase_referrals,
|
||
|
+ AP_INIT_TAKE1("LDAPReferrals", util_ldap_set_chase_referrals,
|
||
|
NULL, OR_AUTHCFG,
|
||
|
- "Choose whether referrals are chased ['ON'|'OFF']. Default 'ON'"),
|
||
|
+ "Choose whether referrals are chased ['ON'|'OFF'|'DEFAULT']. Default 'ON'"),
|
||
|
|
||
|
AP_INIT_TAKE1("LDAPReferralHopLimit", util_ldap_set_referral_hop_limit,
|
||
|
NULL, OR_AUTHCFG,
|