+
+ lc->cred.bv_len = 0;
+ lc->cred.bv_val = NULL;
+
+#ifdef ENABLE_REWRITE
+ /*
+ * Sets a cookie for the rewrite session
+ */
+ ( void )rewrite_session_init( li->rwinfo, conn );
+#endif /* ENABLE_REWRITE */
+
+ if ( lc->conn->c_dn.bv_len != 0 ) {
+
+ /*
+ * Rewrite the bind dn if needed
+ */
+#ifdef ENABLE_REWRITE
+ lc->bound_dn.bv_val = NULL;
+ lc->bound_dn.bv_len = 0;
+ switch ( rewrite_session( li->rwinfo, "bindDn",
+ lc->conn->c_dn.bv_val, conn,
+ &lc->bound_dn.bv_val ) ) {
+ case REWRITE_REGEXEC_OK:
+ if ( lc->bound_dn.bv_val == NULL ) {
+ ber_dupbv( &lc->bound_dn, &lc->conn->c_dn );
+ }
+#ifdef NEW_LOGGING
+ LDAP_LOG( BACK_LDAP, DETAIL1,
+ "[rw] bindDn: \"%s\" ->"
+ " \"%s\"\n%s",
+ lc->conn->c_dn.bv_val,
+ lc->bound_dn.bv_val, "" );
+#else /* !NEW_LOGGING */
+ Debug( LDAP_DEBUG_ARGS,
+ "rw> bindDn: \"%s\" ->"
+ " \"%s\"\n%s",
+ lc->conn->c_dn.bv_val,
+ lc->bound_dn.bv_val, "" );
+#endif /* !NEW_LOGGING */
+ break;
+
+ case REWRITE_REGEXEC_UNWILLING:
+ send_ldap_result( conn, op,
+ LDAP_UNWILLING_TO_PERFORM,
+ NULL, "Unwilling to perform",
+ NULL, NULL );
+ return( NULL );
+
+ case REWRITE_REGEXEC_ERR:
+ send_ldap_result( conn, op,
+ LDAP_OTHER,
+ NULL, "Operations error",
+ NULL, NULL );
+ return( NULL );
+ }
+#else /* !ENABLE_REWRITE */
+ struct berval bv;
+ ldap_back_dn_massage( li, &lc->conn->c_dn, &bv, 0, 1 );
+ if ( bv.bv_val == lc->conn->c_dn.bv_val )
+ ber_dupbv( &lc->bound_dn, &bv );
+ else
+ lc->bound_dn = bv;
+#endif /* !ENABLE_REWRITE */
+ } else {
+ lc->bound_dn.bv_val = NULL;
+ lc->bound_dn.bv_len = 0;
+ }