[ 
https://issues.apache.org/jira/browse/DIRMINA-1062?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15851658#comment-15851658
 ] 

Oleksii Osypov commented on DIRMINA-1062:
-----------------------------------------

Same filters chain works OK if messageReceived is not on the stack of write 
operation, i.e. 99% of time. Please note that ProtocolCodecFilter is not 
present on messageReceived processing after SslHandler.flushScheduledEvents

public class RemoteAccessProtocolFactory implements ProtocolCodecFactory {
    private ProtobufEncoder encoder;
    private ProtobufDecoder decoder;

    public RemoteAccessProtocolFactory() {
        this.encoder = new ProtobufEncoder();
        this.decoder = new ProtobufDecoder();
    }

    @Override
    public ProtocolEncoder getEncoder(IoSession session) throws Exception {
        return encoder;
    }

    @Override
    public ProtocolDecoder getDecoder(IoSession session) throws Exception {
        return decoder;
    }
}

> Sometimes ProtocolCodecFilter is not invoked on messageReceived processing
> --------------------------------------------------------------------------
>
>                 Key: DIRMINA-1062
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-1062
>             Project: MINA
>          Issue Type: Bug
>    Affects Versions: 2.0.16
>            Reporter: Oleksii Osypov
>
> Clean connection to service on same host via external IP (not loopback) with 
> 3 filters in the chain:
> DefaultIoFilterChainBuilder chain = connector.getFilterChain();
> chain.addFirst("sslFilter", sslFilter);
> chain.addLast("codec", new ProtocolCodecFilter(new 
> RemoteAccessProtocolFactory()));
> chain.addLast("logger", new LoggingFilter())
> On first message write, instead of decoded protocol message object we receive 
> buffer object with "seems to be correct" binary data.
> Session "cc330198-bf1a-49a4-84aa-b5da2e49621e-3" invalid message: 
> HeapBuffer[pos=0 lim=43 cap=103: 2A 0A 26 63 63 33 33 30 31 39 38 2D 62 66 31 
> 61...]
> Stack:
> controller.remote.ExtendedIoHandler.messageReceived(ExtendedIoHandler.java:138)
>  ~[controller-common-1.9.0.jar:1.9.0]
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:858)
>  ~[mina-core-2.0.16.jar:?]
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:542)
>  ~[mina-core-2.0.16.jar:?]
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1300(DefaultIoFilterChain.java:48)
>  ~[mina-core-2.0.16.jar:?]
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:947)
>  ~[mina-core-2.0.16.jar:?]
>       at 
> org.apache.mina.filter.logging.LoggingFilter.messageReceived(LoggingFilter.java:208)
>  ~[mina-core-2.0.16.jar:?]
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:542)
>  ~[mina-core-2.0.16.jar:?]
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1300(DefaultIoFilterChain.java:48)
>  ~[mina-core-2.0.16.jar:?]
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:947)
>  ~[mina-core-2.0.16.jar:?]
>       at 
> org.apache.mina.filter.ssl.SslHandler.flushScheduledEvents(SslHandler.java:326)
>  ~[mina-core-2.0.16.jar:?]
>       at org.apache.mina.filter.ssl.SslFilter.filterWrite(SslFilter.java:653) 
> ~[mina-core-2.0.16.jar:?]
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:629)
>  ~[mina-core-2.0.16.jar:?]
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1500(DefaultIoFilterChain.java:48)
>  ~[mina-core-2.0.16.jar:?]
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(DefaultIoFilterChain.java:957)
>  ~[mina-core-2.0.16.jar:?]
>       at 
> org.apache.mina.filter.codec.ProtocolCodecFilter.filterWrite(ProtocolCodecFilter.java:317)
>  ~[mina-core-2.0.16.jar:?]
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:629)
>  ~[mina-core-2.0.16.jar:?]
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1500(DefaultIoFilterChain.java:48)
>  ~[mina-core-2.0.16.jar:?]
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(DefaultIoFilterChain.java:957)
>  ~[mina-core-2.0.16.jar:?]
>       at 
> org.apache.mina.core.filterchain.IoFilterAdapter.filterWrite(IoFilterAdapter.java:123)
>  ~[mina-core-2.0.16.jar:?]
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:629)
>  ~[mina-core-2.0.16.jar:?]
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1500(DefaultIoFilterChain.java:48)
>  ~[mina-core-2.0.16.jar:?]
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(DefaultIoFilterChain.java:957)
>  ~[mina-core-2.0.16.jar:?]
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.filterWrite(DefaultIoFilterChain.java:881)
>  ~[mina-core-2.0.16.jar:?]
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:629)
>  ~[mina-core-2.0.16.jar:?]
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.fireFilterWrite(DefaultIoFilterChain.java:622)
>  ~[mina-core-2.0.16.jar:?]
>       at 
> org.apache.mina.core.session.AbstractIoSession.write(AbstractIoSession.java:574)
>  ~[mina-core-2.0.16.jar:?]
>       at 
> org.apache.mina.core.session.AbstractIoSession.write(AbstractIoSession.java:519)
>  ~[mina-core-2.0.16.jar:?]
>       at controller.remote.RemoteConnection.send(RemoteConnection.java:232)



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to