]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/connection.c
merge fixes for ITS#4419,ITS#4429
[openldap] / servers / slapd / connection.c
index a83739966d68a597ca37aa11c35ca8bd77d73477..5f01a04362be6de6a37e8394da886225ccbd92f0 100644 (file)
@@ -1,7 +1,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1998-2005 The OpenLDAP Foundation.
+ * Copyright 1998-2006 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -1995,6 +1995,13 @@ connection_init_log_prefix( Operation *op )
        }
 }
 
+static int connection_bind_cleanup_cb( Operation *op, SlapReply *rs )
+{
+       op->o_conn->c_sasl_bindop = NULL;
+
+       return SLAP_CB_CONTINUE;
+}
+
 static int connection_bind_cb( Operation *op, SlapReply *rs )
 {
        slap_callback *cb = op->o_callback;
@@ -2065,6 +2072,7 @@ static void connection_op_queue( Operation *op )
        if (tag == LDAP_REQ_BIND) {
                slap_callback *sc = ch_calloc( 1, sizeof( slap_callback ));
                sc->sc_response = connection_bind_cb;
+               sc->sc_cleanup = connection_bind_cleanup_cb;
                sc->sc_next = op->o_callback;
                op->o_callback = sc;
                op->o_conn->c_conn_state = SLAP_C_BINDING;
@@ -2238,6 +2246,11 @@ connection_fake_init(
        op->o_connid = op->o_conn->c_connid;
        connection_init_log_prefix( op );
 
+#ifdef LDAP_SLAPI
+       slapi_int_create_object_extensions( SLAPI_X_EXT_CONNECTION, conn );
+       slapi_int_create_object_extensions( SLAPI_X_EXT_OPERATION, op );
+#endif /* LDAP_SLAPI */
+
        slap_op_time( &op->o_time, &op->o_tincr );
 }