Fulvio Cavarretta created SSHD-961:
--------------------------------------

             Summary: Not alla messages correctly handled in port forwarding 
mode
                 Key: SSHD-961
                 URL: https://issues.apache.org/jira/browse/SSHD-961
             Project: MINA SSHD
          Issue Type: Bug
    Affects Versions: 2.3.1
            Reporter: Fulvio Cavarretta


There are some race conditions so that in port forwarding mode, not all 
messages are correctly managed during connections phase, leading to starvation.

 

The problem is caused in 
{noformat}
DefaultForwardingFilter.messageReceived{noformat}
 where
{code:java}
            OpenFuture future = channel.getOpenFuture();
            Consumer<Throwable> errHandler = future.isOpened() ? null : e -> {
                try {
                    exceptionCaught(session, e);
                } catch (Exception err) {
                    log.warn("messageReceived({}) failed ({}) to signal {}[{}] 
on channel={}: {}",
                        session, err.getClass().getSimpleName(), 
e.getClass().getSimpleName(),
                        e.getMessage(), channel, err.getMessage());
                }
            };
            ClientChannelPendingMessagesQueue messagesQueue = 
channel.getPendingMessagesQueue();

{code}
should be 
{code:java}
            ClientChannelPendingMessagesQueue messagesQueue = 
channel.getPendingMessagesQueue();
            
            OpenFuture future = messagesQueue.getCompletedFuture();
            Consumer<Throwable> errHandler = future.isOpened() ? null : e -> {
                try {
                    exceptionCaught(session, e);
                } catch (Exception err) {
                    log.warn("messageReceived({}) failed ({}) to signal {}[{}] 
on channel={}: {}",
                        session, err.getClass().getSimpleName(), 
e.getClass().getSimpleName(),
                        e.getMessage(), channel, err.getMessage());
                }
            };

{code}
Because since the ClientChannelPendingMessagesQueue is a listener of the 
channel's OpenFuture, this latter can be in open state but the 
ClientChannelPendingMessagesQueue's completed feature still not, so that 
messages won't be correctly handled 

 

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to