Issue Details (XML | Word | Printable)

Key: DIRSERVER-711
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Emmanuel Lecharny
Reporter: Emmanuel Lecharny
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Directory ApacheDS

Propagate the errors to the client if we get a DecoderException (was DIRSERVER-634)

Created: 22/Aug/06 11:41 PM   Updated: 30/Aug/06 02:59 PM
Return to search "FOR-urgency-blocker"
Component/s: None
Affects Version/s: None
Fix Version/s: None

Time Tracking:
Not Specified

Issue Links:
Duplicate

Resolution Date: 30/Aug/06 02:59 PM


 Description  « Hide
In codec grammars, when we have a decoderException, we should generate the correct LdapMessage response so the client can get the correct error instead of a protocol error.

 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Emmanuel Lecharny made changes - 22/Aug/06 11:49 PM
Field Original Value New Value
Link This issue duplicates DIRSERVER-309 [ DIRSERVER-309 ]
Repository Revision Date User Message
ASF #436848 Fri Aug 25 16:39:48 UTC 2006 elecharny Fixed the potentiol hang if a clien send an invalid DN. Now a
correct Response is send, with an error in LdapResult. This will fix
DIRSERVER-711, at least partially
Files Changed
MODIFY /directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/add/AddRequestGrammar.java
MODIFY /directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/modify/ModifyRequestGrammar.java
MODIFY /directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/modifyDn/ModifyDNRequestGrammar.java
MODIFY /directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/bind/BindRequestGrammar.java
MODIFY /directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/SearchRequestGrammar.java
MODIFY /directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapResultGrammar.java
MODIFY /directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/compare/CompareRequestGrammar.java
MODIFY /directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/SearchResultEntryGrammar.java
MODIFY /directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/del/DelRequestGrammar.java

Emmanuel Lecharny added a comment - 26/Aug/06 10:50 AM
All the DN exception have been trapped. Now we need to do the same thing for other exceptions.

Emmanuel Lecharny added a comment - 26/Aug/06 10:51 AM
And we need to add test coverage for those exceptions !!!

Emmanuel Lecharny made changes - 26/Aug/06 10:51 AM
Assignee Emmanuel Lecharny [ elecharny ]
Emmanuel Lecharny made changes - 26/Aug/06 10:51 AM
Status Open [ 1 ] In Progress [ 3 ]
Alex Karasulu made changes - 27/Aug/06 06:05 PM
Link This issue is duplicated by DIRSERVER-309 [ DIRSERVER-309 ]
Repository Revision Date User Message
ASF #437580 Mon Aug 28 07:14:29 UTC 2006 elecharny Added a test to check that the correct exception is returned
instead of a DecoderException (DIRSERVER-711)
Files Changed
MODIFY /directory/branches/shared/0.9.5/ldap/src/test/java/org/apache/directory/shared/ldap/codec/bind/BindRequestTest.java

Repository Revision Date User Message
ASF #437586 Mon Aug 28 07:18:49 UTC 2006 elecharny Fixed DIRSERVER-711 for BindRequest. We now return a INVALID_DN_SYNTAX
 or a INVALID_CREDENTIAL instead of a PROTOCOL_ERROR in some
error conditions.
Files Changed
MODIFY /directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/bind/BindRequestGrammar.java

Repository Revision Date User Message
ASF #437695 Mon Aug 28 13:10:30 UTC 2006 elecharny Fixed the throwed excpetions to fix DIRSERVER-711
Files Changed
MODIFY /directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/add/AddRequestGrammar.java

Emmanuel Lecharny added a comment - 28/Aug/06 01:22 PM
11 out of 79 cases are already fixed, and tested. This is only 14% :(

But it will go faster as at least 20 of all the exceptions are PROTOCOL_ERRORS, for which nothig has to be done.

Repository Revision Date User Message
ASF #437713 Mon Aug 28 14:06:55 UTC 2006 elecharny Fixed the throwed exceptions to fix DIRSERVER-711
Files Changed
MODIFY /directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/compare/CompareRequestGrammar.java

Repository Revision Date User Message
ASF #437727 Mon Aug 28 15:28:34 UTC 2006 elecharny Fixed the throwed exceptions to fix DIRSERVER-711
Files Changed
MODIFY /directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/modify/ModifyRequestGrammar.java

Repository Revision Date User Message
ASF #437758 Mon Aug 28 17:21:50 UTC 2006 elecharny Fixed the throwed exceptions to fix DIRSERVER-711
Files Changed
MODIFY /directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/modifyDn/ModifyDNRequestGrammar.java

Emmanuel Lecharny added a comment - 28/Aug/06 05:24 PM
25/79 ... 32%...

It's *boring* !!! But there is a progression !

Emmanuel Lecharny added a comment - 28/Aug/06 11:04 PM
31/56 : 45%

We have more PROTOCOL_ERROR (the default) than I thought, and we don't really care about PSearches, SubEntry, EntryChange and Gracefull/Shutdown

Emmanuel Lecharny added a comment - 29/Aug/06 11:52 PM
57% done. This is 38/66 (reevaluation of the number of case is being done).

Here is the status for current done cases :

UnbindRequest (1) :
-------------------
125 : PROTOCOL_ERROR : DONE : Tested

LdapControl (4) :
-----------------
186 : PROTOCOL_ERROR : DONE : Tested
195 : PROTOCOL_ERROR : DONE : Tested
214 : PROTOCOL_ERROR : DONE : Tested
275 : PROTOCOL_ERROR : DONE : Tested

LdapMessage (3) :
-----------------
103 : PROTOCOL_ERROR : DONE : Tested
148 : PROTOCOL_ERROR : DONE : Tested
170 : PROTOCOL_ERROR : DONE : Tested


AbandonRequest (2) :
--------------------
118 : Null messageId : PROTOCOL_ERROR : DONE : Tested
149 : Bad messageId : PROTOCOL_ERROR : DONE : Tested

AddRequest (5) :
----------------
117 : Empty addRequest : PROTOCOL_ERROR : DONE : Tested
160 : The entry is null : NAMING_VIOLATION : DONE : Tested
179 : Invalid entry : INVALID_DN_SYNTAX : DONE : Tested
270 : Empty attribute : INVALID_ATTRIBUTE_SYNTAX : DONE : Tested
284 : Invalid attribute : NAMING_EXCEPTION : DONE : not testable

BindRequest (5) :
-----------------
135 : Empty request : PROTOCOL_ERROR : DONE : Tested
183 : Invalid Ldap version : PROTOCOL_ERROR : DONE : Tested
236 : Bad DN : INVALID_DN_SYNTAX : DONE : Tested
364 : Empty SASL : INVALID_CREDENTIALS : DONE : Tested
437 : Bad mechanism : INAPPROPRIATE_AUTHENTICATION : DONE : not testable

CompareRequest (4) :
--------------------
145 : Empty entry : PROTOCOL_ERROR : DONE : Tested
163 : Bad entry : INVALID_DN_SYNTAX : DONE : Tested
228 : Empty attributeDesc : INVALID_ATTRIBUTE_SYNTAX : DONE : Tested
241 : Bad attributeDesc : NAMING_VIOLATION : DONE : not testable

DelRequest (2) :
----------------
114 : Empty DN : PROTOCOL_ERROR : DONE : Tested
132 : Bad DN : INVALID_DN_SYNTAX : DONE : Tested

ExtendedRequest (2) :
---------------------
135 : Empty request name : PROTOCOL_ERROR : DONE : Tested
158 : Invalid OID : PROTOCOL_ERROR : DONE : Tested

ModifyRequest (4) :
-------------------
163 : Bad object : INVALID_DN_SYNTAX : DONE : Tested
280 : Bad operation : PROTOCOL_ERROR : DONE : Tested
356 : Empty type : INVALID_ATTRIBUTE_SYNTAX : DONE : Tested
371 : Bad type : INVALID_ATTRIBUTE_SYNTAX : DONE : Not testable

ModifyDNRequest (6) :
---------------------
147 : Empty entry : PROTOCOL_ERROR : DONE : Tested
165 : Bad entry : INVALID_DN_SYNTAX : DONE : Tested
221 : Empty newRDN : PROTOCOL_ERROR : DONE : Tested : <---- Is this the correct error ? Or should we produce a INVALID_DN_SYNTAX
240 : Bad newRDN : INVALID_DN_SYNTAX : DONE : Tested
300 : Invalid oldRDN : PROTOCOL_ERROR : DONE : tested
389 : Invalid newSuperior : INVALID_DN_SYNTAX : DONE : Tested

Emmanuel Lecharny added a comment - 30/Aug/06 02:44 PM
DONE !!!!!!


Here is the list of generated errors :

UnbindRequest (1) :
-------------------
125 : PROTOCOL_ERROR : DONE : Tested

LdapControl (4) :
-----------------
186 : PROTOCOL_ERROR : DONE : Tested
195 : PROTOCOL_ERROR : DONE : Tested
214 : PROTOCOL_ERROR : DONE : Tested
275 : PROTOCOL_ERROR : DONE : Tested

LdapMessage (3) :
-----------------
103 : PROTOCOL_ERROR : DONE : Tested
148 : PROTOCOL_ERROR : DONE : Tested
170 : PROTOCOL_ERROR : DONE : Tested


AbandonRequest (2) :
--------------------
118 : Null messageId : PROTOCOL_ERROR : DONE : Tested
149 : Bad messageId : PROTOCOL_ERROR : DONE : Tested

AddRequest (5) :
----------------
117 : Empty addRequest : PROTOCOL_ERROR : DONE : Tested
160 : The entry is null : NAMING_VIOLATION : DONE : Tested
179 : Invalid entry : INVALID_DN_SYNTAX : DONE : Tested
270 : Empty attribute : INVALID_ATTRIBUTE_SYNTAX : DONE : Tested
284 : Invalid attribute : NAMING_EXCEPTION : DONE : not testable

BindRequest (5) :
-----------------
135 : Empty request : PROTOCOL_ERROR : DONE : Tested
183 : Invalid Ldap version : PROTOCOL_ERROR : DONE : Tested
236 : Bad DN : INVALID_DN_SYNTAX : DONE : Tested
364 : Empty SASL : INVALID_CREDENTIALS : DONE : Tested
437 : Bad mechanism : INAPPROPRIATE_AUTHENTICATION : DONE : not testable

CompareRequest (4) :
--------------------
145 : Empty entry : PROTOCOL_ERROR : DONE : Tested
163 : Bad entry : INVALID_DN_SYNTAX : DONE : Tested
228 : Empty attributeDesc : INVALID_ATTRIBUTE_SYNTAX : DONE : Tested
241 : Bad attributeDesc : NAMING_VIOLATION : DONE : not testable

DelRequest (2) :
----------------
114 : Empty DN : PROTOCOL_ERROR : DONE : Tested
132 : Bad DN : INVALID_DN_SYNTAX : DONE : Tested

ExtendedRequest (2) :
---------------------
135 : Empty request name : PROTOCOL_ERROR : DONE : Tested
158 : Invalid OID : PROTOCOL_ERROR : DONE : Tested

ModifyRequest (4) :
-------------------
163 : Bad object : INVALID_DN_SYNTAX : DONE : Tested
280 : Bad operation : PROTOCOL_ERROR : DONE : Tested
356 : Empty type : INVALID_ATTRIBUTE_SYNTAX : DONE : Tested
371 : Bad type : INVALID_ATTRIBUTE_SYNTAX : DONE : Not testable

ModifyDNRequest (6) :
---------------------
147 : Empty entry : PROTOCOL_ERROR : DONE : Tested
165 : Bad entry : INVALID_DN_SYNTAX : DONE : Tested
221 : Empty newRDN : PROTOCOL_ERROR : DONE : Tested : <---- Is this the correct error ? Or should we produce a INVALID_DN_SYNTAX
240 : Bad newRDN : INVALID_DN_SYNTAX : DONE : Tested
300 : Invalid oldRDN : PROTOCOL_ERROR : DONE : tested
389 : Invalid newSuperior : INVALID_DN_SYNTAX : DONE : Tested

SearchRequest ( 7 ) :
-------------------
166 : Bad DN : INVALID_DN_SYNTAX : DONE : Tested
222 : Bad scope : PROTOCOL_ERROR : DONE : Tested
295 : Bad derefAlias : PROTOCOL_ERROR : DONE : Tested
363 : Bad size limit : PROTOCOL_ERROR : DONE : Tested
416 : Bad time limit : PROTOCOL_ERROR : DONE : Tested
476 : Bad or empty types only : PROTOCOL_ERROR : DONE : Tested
691 : Bad attribute description : PROTOCOL_ERROR : DONE : Not testable

SubstringFilter (10) :
----------------------
109 : Empty Substring filter : PROTOCOL_ERROR : DONE : Tested
154 : Empty attributeDesc : PROTOCOL_ERROR : DONE : Tested
167 : Invalid attributeDesc : PROTOCOL_ERROR : DONE : Not testable
210 : Empty substring : PROTOCOL_ERROR : DONE : Tested
252 : Empty initial : PROTOCOL_ERROR : DONE : Tested
263 : Bad initial : PROTOCOL_ERROR : DONE : Not testable
327 : Empty any : PROTOCOL_ERROR : DONE : Tested
338 : Bad any : PROTOCOL_ERROR : DONE : Not testable
403 : Empty final : PROTOCOL_ERROR : DONE : Tested
414 : Bad final : PROTOCOL_ERROR : DONE : Not testable


MatchingRuleAssertion (5) :
---------------------------
145 : Empty matching rule : PROTOCOL_ERROR : DONE : Tested
161 : Bad matching rule : PROTOCOL_ERROR : DONE : Not testable
206 : Empty type : PROTOCOL_ERROR : DONE : Tested
223 : Bad type : PROTOCOL_ERROR : DONE : Not testable
325 : Bad DN Attributes : PROTOCOL_ERROR : Done : Tested

Filter (6) :
------------
250 : Empty And filter : PROTOCOL_ERROR : DONE : Tested
282 : Empty Or filter : PROTOCOL_ERROR : DONE : Tested
314 : Empty Not filter : PROTOCOL_ERROR : DONE : Tested
421 : Empty attributeDesc : PROTOCOL_ERROR : DONE : Tested
434 : Invalid attributeDesc : PROTOCOL_ERROR : DONE : Not testable
593 : Invalid present attributeDesc : PROTOCOL_ERROR : DONE : Not testable


Emmanuel Lecharny added a comment - 30/Aug/06 02:59 PM
All the 66 cases have been fixed and tested.

Emmanuel Lecharny made changes - 30/Aug/06 02:59 PM
Resolution Fixed [ 1 ]
Status In Progress [ 3 ] Closed [ 6 ]
Repository Revision Date User Message
ASF #438508 Wed Aug 30 15:00:01 UTC 2006 elecharny - Formated the PDUs comments
 - Added tests for DIRSERVER-711
Files Changed
MODIFY /directory/branches/shared/0.9.5/ldap/src/test/java/org/apache/directory/shared/ldap/codec/search/SearchRequestSubstringTest.java
MODIFY /directory/branches/shared/0.9.5/ldap/src/test/java/org/apache/directory/shared/ldap/codec/search/SearchRequestTest.java

Repository Revision Date User Message
ASF #438859 Thu Aug 31 10:33:43 UTC 2006 elecharny - Merged the code with 1.0 modification done to fix DIRSERVER-711
- Removed the RDN bad hashcode() method
- Merged the modification of EMPTY_BYTES done in 1.0
Files Changed
MODIFY /directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/name/Rdn.java
MODIFY /directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/del/DelRequestGrammar.java
MODIFY /directory/trunks/shared/ldap/src/test/java/org/apache/directory/shared/ldap/codec/search/SearchRequestSubstringTest.java
MODIFY /directory/trunks/shared/ldap/src/test/java/org/apache/directory/shared/ldap/codec/search/SearchRequestTest.java
MODIFY /directory/trunks/shared/ldap/src/test/java/org/apache/directory/shared/ldap/codec/modify/ModifyRequestTest.java
MODIFY /directory/trunks/shared/ldap/src/test/java/org/apache/directory/shared/ldap/codec/add/AddRequestTest.java
MODIFY /directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/message/ManageDsaITControl.java
MODIFY /directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/compare/CompareRequestGrammar.java
MODIFY /directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapControlGrammar.java
MODIFY /directory/trunks/shared/ldap/src/test/java/org/apache/directory/shared/ldap/codec/compare/CompareRequestTest.java
MODIFY /directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/add/AddRequestGrammar.java
MODIFY /directory/trunks/shared/ldap/src/test/java/org/apache/directory/shared/ldap/codec/LdapMessageTest.java
MODIFY /directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/FilterGrammar.java
MODIFY /directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/SearchRequestGrammar.java
MODIFY /directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/modify/ModifyRequestGrammar.java
MODIFY /directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/ResponseCarryingException.java
MODIFY /directory/trunks/shared/ldap/src/test/java/org/apache/directory/shared/ldap/codec/del/DelRequestTest.java
MODIFY /directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/SearchRequest.java
MODIFY /directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/Control.java
MODIFY /directory/trunks/shared/ldap/src/test/java/org/apache/directory/shared/ldap/codec/modifyDn/ModifyDNRequestTest.java
MODIFY /directory/trunks/shared/ldap/src/test/java/org/apache/directory/shared/ldap/codec/bind/BindRequestTest.java
MODIFY /directory/trunks/shared/ldap/src/test/java/org/apache/directory/shared/ldap/codec/unbind/UnBindRequestTest.java
MODIFY /directory/trunks/shared/ldap/src/test/java/org/apache/directory/shared/ldap/codec/extended/ExtendedRequestTest.java
MODIFY /directory/trunks/shared/ldap/src/test/java/org/apache/directory/shared/ldap/codec/search/SearchRequestMatchingRuleAssertionTest.java
MODIFY /directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/abandon/AbandonRequestGrammar.java
MODIFY /directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/controls/SubEntryControlGrammar.java
MODIFY /directory/trunks/shared/ldap/src/test/java/org/apache/directory/shared/ldap/codec/abandon/AbandonRequestTest.java
MODIFY /directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageGrammar.java
MODIFY /directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/extended/ExtendedRequestGrammar.java
MODIFY /directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/modifyDn/ModifyDNRequestGrammar.java
MODIFY /directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/bind/BindRequestGrammar.java
MODIFY /directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/unbind/UnBindRequestGrammar.java
MODIFY /directory/trunks/shared/ldap/pom.xml
MODIFY /directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/SubstringFilterGrammar.java
MODIFY /directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/MatchingRuleAssertionGrammar.java
MODIFY /directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/util/LdapString.java
ADD /directory/trunks/shared/ldap/src/test/java/org/apache/directory/shared/ldap/codec/LdapControlTest.java (from /directory/branches/shared/0.9.5/ldap/src/test/java/org/apache/directory/shared/ldap/codec/LdapControlTest.java)