Sure Thanks a lot for the investigation!
On Mon, Apr 3, 2017 at 9:58 PM, Emmanuel Lécharny <elecha...@gmail.com> wrote: > > > Le 03/04/2017 à 14:22, Maxim Solodovnik a écrit : >> Yes, >> Search for the user from OM (via directory API) fails with >> "DecoderException: The length of controls must not be null" >> (The full stack trace is in the first message of this thread) > > > > Sorry that it took me so understand what was going on. The stack trace > is clear a control should not be null. We do have a null control in the > SearcResultDone : > > 0000 30 0e 02 01 02 65 07 0a 01 00 04 00 04 00 a0 00 > > which is : > > 30 0e LdapMessage > 02 01 02 Message ID : 02 > 65 07 ProtocolOp : SearchResultDone > 0a 01 00 LDAPResult.resultCode : LDAP_SUCCESS > 04 00 LDAPResult.matchedDN : "" > 04 00 LDAPResult.errorMessage : "" > a0 00 Controls : empty > > > Going back to RFC 4511 : > > LDAPMessage ::= SEQUENCE { > messageID MessageID, > protocolOp CHOICE { > ... > searchResDone SearchResultDone, > ..., > intermediateResponse IntermediateResponse }, > controls [0] Controls OPTIONAL } > > We may have no controls, as it's optional. In this case, the 0xA0 ... > part at the end will simply not exist. Let's see what is Controls > structure : > > Controls ::= SEQUENCE OF control Control > > > Here, if the SEQUENCE is empty, the encoded bytes for the length wll be > 0x00, so we will have 0xA0 0x00. > > The Controls code in the API is : > > public void action( LdapMessageContainer<MessageDecorator<? extends > Message>> container ) throws DecoderException > { > TLV tlv = container.getCurrentTLV(); > int expectedLength = tlv.getLength(); > > // The Length should be null > if ( expectedLength == 0 ) > { > LOG.error( "The length of controls must not be null" ); > > // This will generate a PROTOCOL_ERROR > throw new DecoderException( "The length of controls must not > be null" ); > } > > if ( IS_DEBUG ) > { > LOG.debug( "A new list of controls has been initialized" ); > } > } > > > As you can see, there are two errors : > - the comment is wrong and should read : "The Length should *not* be null > - the length could actually be null > > Bottom line, this is a bug that need to be fixed, and I'll do that ASAP. > > May I ask you to filla JIRA with your first mail ad the stack trace for > clarity ? > > Thanks ! > > -- > Emmanuel Lecharny > > Symas.com > directory.apache.org > -- WBR Maxim aka solomax