]> git.sur5r.net Git - openldap/blobdiff - libraries/libldap/cyrus.c
Add LDAP_DEPRECATED macro
[openldap] / libraries / libldap / cyrus.c
index d687c4cec6ae9ea5adfafcfdc6376b52ca749aee..339d21dc8720d94d1e82fc8942bd7627cbd900a0 100644 (file)
@@ -1,7 +1,16 @@
 /* $OpenLDAP$ */
-/*
- * Copyright 1999-2003 The OpenLDAP Foundation, All Rights Reserved.
- * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
+ *
+ * Copyright 1998-2003 The OpenLDAP Foundation.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted only as authorized by the OpenLDAP
+ * Public License.
+ *
+ * A copy of this license is available in the file LICENSE in the
+ * top-level directory of the distribution or, alternatively, at
+ * <http://www.OpenLDAP.org/license.html>.
  */
 
 #include "portable.h"
@@ -14,6 +23,7 @@
 #include <ac/time.h>
 #include <ac/errno.h>
 #include <ac/ctype.h>
+#include <ac/unistd.h>
 
 #include "ldap-int.h"
 
@@ -184,7 +194,7 @@ sb_sasl_remove( Sockbuf_IO_Desc *sbiod )
 }
 
 static ber_len_t
-sb_sasl_pkt_length( const unsigned char *buf, unsigned max, int debuglevel )
+sb_sasl_pkt_length( const unsigned char *buf, int debuglevel )
 {
        ber_len_t               size;
 
@@ -208,7 +218,7 @@ sb_sasl_pkt_length( const unsigned char *buf, unsigned max, int debuglevel )
 
 /* Drop a processed packet from the input buffer */
 static void
-sb_sasl_drop_packet ( Sockbuf_Buf *sec_buf_in, unsigned max, int debuglevel )
+sb_sasl_drop_packet ( Sockbuf_Buf *sec_buf_in, int debuglevel )
 {
        ber_slen_t                      len;
 
@@ -219,7 +229,7 @@ sb_sasl_drop_packet ( Sockbuf_Buf *sec_buf_in, unsigned max, int debuglevel )
    
        if ( len >= 4 ) {
                sec_buf_in->buf_end = sb_sasl_pkt_length(
-                       (unsigned char *) sec_buf_in->buf_base, max, debuglevel);
+                       (unsigned char *) sec_buf_in->buf_base, debuglevel);
        }
        else {
                sec_buf_in->buf_end = 0;
@@ -268,7 +278,7 @@ sb_sasl_read( Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len)
 
        /* The new packet always starts at p->sec_buf_in.buf_base */
        ret = sb_sasl_pkt_length( (unsigned char *) p->sec_buf_in.buf_base,
-               *p->sasl_maxbuf, sbiod->sbiod_sb->sb_debug );
+               sbiod->sbiod_sb->sb_debug );
 
        /* Grow the packet buffer if neccessary */
        if ( ( p->sec_buf_in.buf_size < (ber_len_t) ret ) && 
@@ -303,8 +313,7 @@ sb_sasl_read( Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len)
                (unsigned *)&p->buf_in.buf_end );
 
        /* Drop the packet from the input buffer */
-       sb_sasl_drop_packet( &p->sec_buf_in,
-                       *p->sasl_maxbuf, sbiod->sbiod_sb->sb_debug );
+       sb_sasl_drop_packet( &p->sec_buf_in, sbiod->sbiod_sb->sb_debug );
 
        if ( ret != SASL_OK ) {
                ber_log_printf( LDAP_DEBUG_ANY, sbiod->sbiod_sb->sb_debug,
@@ -490,6 +499,11 @@ ldap_int_sasl_open(
                return ld->ld_errno;
        }
 
+       if ( ldap_int_sasl_init() ) {
+               ld->ld_errno = LDAP_LOCAL_ERROR;
+               return ld->ld_errno;
+       }
+
 #if SASL_VERSION_MAJOR >= 2
        rc = sasl_client_new( "ldap", host, NULL, NULL,
                NULL, 0, &ctx );
@@ -598,9 +612,10 @@ ldap_int_sasl_bind(
                ld->ld_defconn->lconn_sasl_authctx = NULL;
        }
 
-       rc = ldap_int_sasl_open( ld, ld->ld_defconn,
-               ld->ld_defconn->lconn_server->lud_host ?
-               ld->ld_defconn->lconn_server->lud_host : "localhost" );
+       { char *saslhost = ldap_host_connected_to( ld->ld_sb, "localhost" );
+       rc = ldap_int_sasl_open( ld, ld->ld_defconn, saslhost );
+       LDAP_FREE( saslhost );
+       }
 
        if ( rc != LDAP_SUCCESS ) return rc;