Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
There is a race condition that occurs due to filter handling in AbstractIoFilterChain. The bug manifested itself when using the client side of the SSLFilter impl. In the register method below -
private void register( Entry prevEntry, String name, IoFilter filter ) throws Exception
{ Entry newEntry = new Entry( prevEntry, prevEntry.nextEntry, name, filter ); filter.init( this, newEntry.nextFilter ); prevEntry.nextEntry.prevEntry = newEntry; prevEntry.nextEntry = newEntry; name2entry.put( name, newEntry ); filter2entry.put( filter, newEntry ); }filter.init causes the ssl client HELLO to be sent to the server. If the client and server are on a fast network, the server response comes before the filter has been "put", causing it to be handed to the IoHandler.
Solution is to init the filter after putting it on the session.