aboutsummaryrefslogtreecommitdiffstats
path: root/lib/ssh/src/ssh_connection.erl
diff options
context:
space:
mode:
authorIngela Anderton Andin <[email protected]>2012-04-25 14:09:40 +0200
committerIngela Anderton Andin <[email protected]>2012-05-04 11:25:02 +0200
commit02fa402909ede20b75f1aa6e4c133d866ddc506b (patch)
treeb4ac39e49075f8564897e08c9756f31bef78ab71 /lib/ssh/src/ssh_connection.erl
parentc5d6ce6a07478c5ac19fdf2df244c4b837888d08 (diff)
downloadotp-02fa402909ede20b75f1aa6e4c133d866ddc506b.tar.gz
otp-02fa402909ede20b75f1aa6e4c133d866ddc506b.tar.bz2
otp-02fa402909ede20b75f1aa6e4c133d866ddc506b.zip
The channel id in a channel failure message, sent to the peer, is now in all cases the remote channel id
Diffstat (limited to 'lib/ssh/src/ssh_connection.erl')
-rw-r--r--lib/ssh/src/ssh_connection.erl13
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/ssh/src/ssh_connection.erl b/lib/ssh/src/ssh_connection.erl
index 46f0c7e688..c46f799b6d 100644
--- a/lib/ssh/src/ssh_connection.erl
+++ b/lib/ssh/src/ssh_connection.erl
@@ -720,12 +720,17 @@ handle_msg(#ssh_msg_channel_request{request_type = "env"},
handle_msg(#ssh_msg_channel_request{recipient_channel = ChannelId,
request_type = _Other,
- want_reply = WantReply}, Connection,
+ want_reply = WantReply}, #connection{channel_cache = Cache} = Connection,
ConnectionPid, _) ->
if WantReply == true ->
- FailMsg = channel_failure_msg(ChannelId),
- {{replies, [{connection_reply, ConnectionPid, FailMsg}]},
- Connection};
+ case ssh_channel:cache_lookup(Cache, ChannelId) of
+ #channel{remote_id = RemoteId} ->
+ FailMsg = channel_failure_msg(RemoteId),
+ {{replies, [{connection_reply, ConnectionPid, FailMsg}]},
+ Connection};
+ undefined -> %% Chanel has been closed
+ {noreply, Connection}
+ end;
true ->
{noreply, Connection}
end;