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]