/* $OpenLDAP$ */
/*
- * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved.
* COPYING RESTRICTIONS APPLY, see COPYRIGHT file
*/
/*
Operation *op
)
{
- char *dn, *ndn, *text;
+ char *dn, *ndn = NULL;
+ const char *text;
Backend *be;
int rc;
}
if( ( rc = get_ctrls( conn, op, 1 ) ) != LDAP_SUCCESS ) {
- Debug( LDAP_DEBUG_ANY, "do_add: get_ctrls failed\n", 0, 0, 0 );
+ Debug( LDAP_DEBUG_ANY, "do_delete: get_ctrls failed\n", 0, 0, 0 );
goto cleanup;
}
/* make sure this backend recongizes critical controls */
rc = backend_check_controls( be, conn, op, &text ) ;
-
if( rc != LDAP_SUCCESS ) {
send_ldap_result( conn, op, rc,
NULL, text, NULL, NULL );
goto cleanup;
}
+ /* check for referrals */
+ rc = backend_check_referrals( be, conn, op, dn, ndn );
+ if ( rc != LDAP_SUCCESS ) {
+ goto cleanup;
+ }
+
if ( global_readonly || be->be_readonly ) {
Debug( LDAP_DEBUG_ANY, "do_delete: database is read-only\n",
0, 0, 0 );
- send_ldap_result( conn, op, LDAP_UNWILLING_TO_PERFORM,
- NULL, "database is read-only", NULL, NULL );
- rc = LDAP_UNWILLING_TO_PERFORM;
+ send_ldap_result( conn, op, rc = LDAP_UNWILLING_TO_PERFORM,
+ NULL, "directory is read-only", NULL, NULL );
goto cleanup;
}
} else {
send_ldap_result( conn, op, rc = LDAP_UNWILLING_TO_PERFORM,
- NULL, "Function not implemented", NULL, NULL );
+ NULL, "operation not supported within namingContext", NULL, NULL );
}
cleanup:
- free( ndn );
+ if( ndn != NULL ) free( ndn );
free( dn );
return rc;
}