You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "Lyor Goldstein (Jira)" <ji...@apache.org> on 2019/12/23 18:09:00 UTC
[jira] [Work started] (SSHD-961) Not all messages are correctly
handled in port forwarding mode
[ https://issues.apache.org/jira/browse/SSHD-961?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Work on SSHD-961 started by Lyor Goldstein.
-------------------------------------------
> Not all messages are 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
> Assignee: Lyor Goldstein
> Priority: Major
> Time Spent: 10m
> Remaining Estimate: 0h
>
> There are some race conditions so that in port forwarding mode, not all messages are correctly managed during connections phase, leading to _NullPointerException_
>
> 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}
> Since the _ClientChannelPendingMessagesQueue_ is a listener of the channel's OpenFuture, this latter can be in open state but the ClientChannelPendingMessagesQueue's completed feature could be not, so that messages won't be correctly handled and a _null_ _errHandler_ is passed to _ClientChannelPendingMessagesQueue.handleIncomingMessage_
>
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@mina.apache.org
For additional commands, e-mail: dev-help@mina.apache.org