Le 10/25/13 10:11 AM, Julien Vermillard a écrit : > Hi, > > I'm writing some security IoFilters and I'm having a recurring issue. > > Each time I write a security negotiation filter, I stumble in a quite > annoying problem. > > > I have a filter chain like : > > SecurityCodec -> SecurityLogic -> CodecA -> CodecB -> Business code > > The security logic filter is first negociating some security keys and auth : > > pseudo code: > > void messageReceived(session, msg, nextFilter) { > > if (session is not authenticated) { > session.write( new SecurityNegociationMessage()); > } else { > nextFilter.messageReceive(decipher(msg)); > } > } > > > So the security filter call session.write, but when you do that the > message is processed by the whole IoFilter chain, the two codec filter > will try to process it. > > So most of time I need to add workaround in the upper fitlers to skip > the low level security filters. > > IMO when a session.write(..) is called from a IoFilter message > reception event, we should process the filter chain partially.
Can't you call the messageWriting() method in this case ? -- Regards, Cordialement, Emmanuel Lécharny www.iktek.com