Wrong error messages for some operations
----------------------------------------

         Key: DIREVE-215
         URL: http://issues.apache.org/jira/browse/DIREVE-215
     Project: Directory Server
        Type: Bug
  Components: protocol  
    Versions: 0.9.1    
    Reporter: Stefan Zoerner
 Assigned to: Alex Karasulu 
    Priority: Minor


If a client tries to remove an entry, and the deletion fails because the entry 
is not a leaf (error code 66), the LDAP message is wrong.
Status code and Exception type within the server are correct (as detected by 
the corresponding test case). But the message text itself contains the words 
"failed to add entry". This information is sent to the client, which may 
display it, e.g.
    * JNDI includes it during creation of appropriate Exception 
(com.sun.jndi.ldap.LdapCtx.mapErrorCode(66, "failed to add entry ...").
    * Command line tools like ldapmodify display it on the console.

Example: If the following LDIF is applied to ApacheDS

---

# create entry
dn: ou=noLeaf,ou=system
changetype: add
ou: noLeaf
objectclass: top
objectclass: organizationalUnit

# create entry below the first
dn: ou=leaf,ou=noLeaf,ou=system
changetype: add
ou: leaf
objectclass: top
objectclass: organizationalUnit

# delete subtree
dn: ou=noLeaf,ou=system
changetype: delete

---

it goes

$ ldapmodify -h magritte -p 10389 -D uid=admin,ou=system -w **** -f 
deleteSubtree.ldif

adding new entry ou=noLeaf,ou=system

adding new entry ou=leaf,ou=noLeaf,ou=system

deleting entry ou=noLeaf,ou=system
ldap_delete: Operation not allowed on nonleaf
ldap_delete: additional info: failed to add entry ou=noLeaf,ou=system:
... (very long Stack trace deleted) ...
$

I modified the error message within class 
org.apache.ldap.server.protocol.DeleteHandler to "failed to delete entry ..." 
(attached), although I would prefer a more detailed message (like "Not Allowed 
On Non-leaf", as Sun Directory does). But this is not possible at that general 
place without an ugly switch or so.

The same "defect" (probably a cut/copy/paste of error message from AddHandler) 
is present in CompareHandler, ModifyDnHandler, and ModifyHandler.

I would also suggest not to send the complete stack trace back to the client. I 
have removed it in the attached version of the DeleteHandler and had a better 
command line experience with ApacheDS (the stack traces should go in a server 
log only from my point of view). This applies to other handlers (e.g. Add) as 
well.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to