[Freeipa-devel] [PATCH 0053] Use richer set of return codes for LDAP connection error handling code

Adam Tkac atkac at redhat.com
Wed Sep 5 11:33:01 UTC 2012


On Wed, Aug 15, 2012 at 01:23:45PM +0200, Petr Spacek wrote:
> Hello,
> 
> current code return very generic ISC_R_FAILURE code in nearly all (error) cases.
> 
> This patch distinguishes between different LDAP errors and returns
> richer set of return codes from LDAP connection error handling code.
> 
> It should lead to clearer log messages.
> 
> Petr^2 Spacek

Ack

> From 15d6b38c9eda5b05d799c145ede8341f359e8633 Mon Sep 17 00:00:00 2001
> From: Petr Spacek <pspacek at redhat.com>
> Date: Wed, 15 Aug 2012 13:01:48 +0200
> Subject: [PATCH] Use richer set of return codes for LDAP connection error
>  handling code.
> 
> It should lead to clear log messages.
> 
> Signed-off-by: Petr Spacek <pspacek at redhat.com>
> ---
>  src/ldap_helper.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/src/ldap_helper.c b/src/ldap_helper.c
> index 798aeadfef27d7071a1dd4133b7f08a21918ef78..da083d2e65032e650cfbbeb863262e0141403407 100644
> --- a/src/ldap_helper.c
> +++ b/src/ldap_helper.c
> @@ -1971,7 +1971,7 @@ ldap_reconnect(ldap_instance_t *ldap_inst, ldap_connection_t *ldap_conn,
>  		result = isc_time_now(&now);
>  		time_cmp = isc_time_compare(&now, &ldap_conn->next_reconnect);
>  		if (result == ISC_R_SUCCESS && time_cmp < 0)
> -			return ISC_R_FAILURE;
> +			return ISC_R_SOFTQUOTA;
>  	}
>  
>  	/* If either bind_dn or the password is not set, we will use
> @@ -2050,6 +2050,8 @@ force_reconnect:
>  			return ISC_R_NOPERM;
>  		case LDAP_SERVER_DOWN:
>  			return ISC_R_NOTCONNECTED;
> +		case LDAP_TIMEOUT:
> +			return ISC_R_TIMEDOUT;
>  		default:
>  			return ISC_R_FAILURE;
>  		}
> @@ -2085,13 +2087,16 @@ handle_connection_error(ldap_instance_t *ldap_inst, ldap_connection_t *ldap_conn
>  	switch (err_code) {
>  	case LDAP_NO_SUCH_OBJECT:
>  		ldap_conn->tries = 0;
> -		return ISC_R_SUCCESS;
> +		result = ISC_R_SUCCESS;
> +		break;
>  	case LDAP_TIMEOUT:
>  		log_error("LDAP query timed out. Try to adjust \"timeout\" parameter");
> +		result = ISC_R_TIMEDOUT;
>  		break;
>  	case LDAP_INVALID_DN_SYNTAX:
>  	case LDAP_INVALID_SYNTAX:
>  		log_bug("Invalid syntax in handle_connection_error indicates a bug");
> +		result = ISC_R_UNEXPECTEDTOKEN;
>  		break;
>  	default:
>  		/* Try to reconnect on other errors. */
> -- 
> 1.7.11.2
> 


-- 
Adam Tkac, Red Hat, Inc.




More information about the Freeipa-devel mailing list