]> git.sur5r.net Git - openldap/commitdiff
Return more appropriate result codes than LDAP_UNAVAILABLE
authorKurt Zeilenga <kurt@openldap.org>
Mon, 9 Oct 2000 22:11:34 +0000 (22:11 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Mon, 9 Oct 2000 22:11:34 +0000 (22:11 +0000)
upon failures.

libraries/libldap/cyrus.c
libraries/libldap/sasl.c

index 6560eeebb3d64ae4f0a2aede340dbbbd8775e7f2..1924d764ad3a5daa21c83b1cbf89aad6c8e4924f 100644 (file)
@@ -404,7 +404,7 @@ ldap_int_sasl_open(
        assert( lc->lconn_sasl_ctx == NULL );
 
        if ( host == NULL ) {
-               ld->ld_errno = LDAP_UNAVAILABLE;
+               ld->ld_errno = LDAP_LOCAL_ERROR;
                return ld->ld_errno;
        }
 
@@ -483,13 +483,15 @@ ldap_int_sasl_bind(
 
        if ( sd == AC_SOCKET_INVALID ) {
                /* not connected yet */
-               int rc = ldap_open_defconn( ld );
-  
+               int rc;
+
+               rc = ldap_open_defconn( ld );
                if( rc < 0 ) return ld->ld_errno;
+
                ber_sockbuf_ctrl( ld->ld_sb, LBER_SB_OPT_GET_FD, &sd );
 
                if( sd == AC_SOCKET_INVALID ) {
-                       ld->ld_errno = LDAP_UNAVAILABLE;
+                       ld->ld_errno = LDAP_LOCAL_ERROR;
                        return ld->ld_errno;
                }
        }   
@@ -497,7 +499,7 @@ ldap_int_sasl_bind(
        ctx = ld->ld_defconn->lconn_sasl_ctx;
 
        if( ctx == NULL ) {
-               ld->ld_errno = LDAP_UNAVAILABLE;
+               ld->ld_errno = LDAP_LOCAL_ERROR;
                return ld->ld_errno;
        }
 
index a17ca56c9eda4b4e05778c1696a90d276aee583f..e22b11ce96fa47f9859a9e20705a0b37471f5a5e 100644 (file)
@@ -366,24 +366,25 @@ ldap_pvt_sasl_getmechs ( LDAP *ld, char **pmechlist )
                
        e = ldap_first_entry( ld, res );
        if ( e == NULL ) {
+               ldap_msgfree( res );
                if ( ld->ld_errno == LDAP_SUCCESS ) {
-                       ld->ld_errno = LDAP_UNAVAILABLE;
+                       ld->ld_errno = LDAP_NO_SUCH_OBJECT;
                }
                return ld->ld_errno;
        }
 
        values = ldap_get_values( ld, e, "supportedSASLMechanisms" );
        if ( values == NULL ) {
-               ld->ld_errno = LDAP_NO_SUCH_ATTRIBUTE;
                ldap_msgfree( res );
+               ld->ld_errno = LDAP_NO_SUCH_ATTRIBUTE;
                return ld->ld_errno;
        }
 
        mechlist = ldap_charray2str( values, " " );
        if ( mechlist == NULL ) {
-               ld->ld_errno = LDAP_NO_MEMORY;
                LDAP_VFREE( values );
                ldap_msgfree( res );
+               ld->ld_errno = LDAP_NO_MEMORY;
                return ld->ld_errno;
        }