diff --git a/clients/tools/common.c b/clients/tools/common.c
index 0f0c6ab940ea577a3e78a21bb04524def21a3ac9..5617d49c1e53a9bd09fc324e8c686a2f7dffe635 100644
--- a/clients/tools/common.c
+++ b/clients/tools/common.c
@@ -709,8 +709,8 @@ tool_conn_setup( int not, void (*private_setup)( LDAP * ) )
 		rc = ldap_initialize( &ld, ldapuri );
 		if( rc != LDAP_SUCCESS ) {
 			fprintf( stderr,
-				"Could not create LDAP session handle (%d): %s\n",
-				rc, ldap_err2string(rc) );
+				"Could not create LDAP session handle for URI=%s %d): %s\n",
+				ldapuri, rc, ldap_err2string(rc) );
 			exit( EXIT_FAILURE );
 		}
 
diff --git a/libraries/libldap/options.c b/libraries/libldap/options.c
index c8b2ac286a1b8bcd8a084588219ecb966cab801f..f191cb8161c4d3b34e58e5f104aee74ae392cf27 100644
--- a/libraries/libldap/options.c
+++ b/libraries/libldap/options.c
@@ -529,7 +529,6 @@ ldap_set_option(
 
 			if(urls != NULL) {
 				rc = ldap_url_parselist(&ludlist, urls);
-
 			} else if(ld == NULL) {
 				/*
 				 * must want global default returned
@@ -548,6 +547,28 @@ ldap_set_option(
 					rc = LDAP_NO_MEMORY;
 			}
 
+			switch (rc) {
+			case LDAP_URL_SUCCESS:		/* Success */
+				rc = LDAP_SUCCESS;
+				break;
+
+			case LDAP_URL_ERR_MEM:		/* can't allocate memory space */
+				rc = LDAP_NO_MEMORY;
+				break;
+
+			case LDAP_URL_ERR_PARAM:	/* parameter is bad */
+			case LDAP_URL_ERR_BADSCHEME:	/* URL doesn't begin with "ldap[si]://" */
+			case LDAP_URL_ERR_BADENCLOSURE:	/* URL is missing trailing ">" */
+			case LDAP_URL_ERR_BADURL:	/* URL is bad */
+			case LDAP_URL_ERR_BADHOST:	/* host port is bad */
+			case LDAP_URL_ERR_BADATTRS:	/* bad (or missing) attributes */
+			case LDAP_URL_ERR_BADSCOPE:	/* scope string is invalid (or missing) */
+			case LDAP_URL_ERR_BADFILTER:	/* bad or missing filter */
+			case LDAP_URL_ERR_BADEXTS:	/* bad or missing extensions */
+				rc = LDAP_PARAM_ERROR;
+				break;
+			}
+
 			if (rc == LDAP_OPT_SUCCESS) {
 				if (lo->ldo_defludp != NULL)
 					ldap_free_urllist(lo->ldo_defludp);