diff options
author | Ingela Anderton Andin <[email protected]> | 2012-04-24 09:42:48 +0200 |
---|---|---|
committer | Ingela Anderton Andin <[email protected]> | 2012-04-24 09:42:48 +0200 |
commit | 732a553a0e651880b04c55e0767a651c37bf58cd (patch) | |
tree | a973d63f741bfb85ba428d1ab6430e3af99ec67b | |
parent | d3aa3e8ae556f80c181d3460965c8f78401f740e (diff) | |
parent | e3c9c6a9f006bdef159781e1823c248c731419e5 (diff) | |
download | otp-732a553a0e651880b04c55e0767a651c37bf58cd.tar.gz otp-732a553a0e651880b04c55e0767a651c37bf58cd.tar.bz2 otp-732a553a0e651880b04c55e0767a651c37bf58cd.zip |
Merge branch 'maint'
* maint:
Avoid sending two ssh close messages
-rw-r--r-- | lib/ssh/src/ssh_channel.erl | 4 | ||||
-rw-r--r-- | lib/ssh/src/ssh_connection_manager.erl | 3 |
2 files changed, 4 insertions, 3 deletions
diff --git a/lib/ssh/src/ssh_channel.erl b/lib/ssh/src/ssh_channel.erl index 7b600ed8b2..1938858420 100644 --- a/lib/ssh/src/ssh_channel.erl +++ b/lib/ssh/src/ssh_channel.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2011. All Rights Reserved. +%% Copyright Ericsson AB 2008-2012. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -215,7 +215,7 @@ handle_info({ssh_cm, ConnectionManager, {closed, ChannelId}}, close_sent = false} = State) -> %% To be on the safe side, i.e. the manager has already been terminated. (catch ssh_connection:close(ConnectionManager, ChannelId)), - {stop, normal, State}; + {stop, normal, State#state{close_sent = true}}; handle_info({ssh_cm, _, _} = Msg, #state{cm = ConnectionManager, channel_cb = Module, diff --git a/lib/ssh/src/ssh_connection_manager.erl b/lib/ssh/src/ssh_connection_manager.erl index e993f597a5..8c1f88e572 100644 --- a/lib/ssh/src/ssh_connection_manager.erl +++ b/lib/ssh/src/ssh_connection_manager.erl @@ -384,9 +384,10 @@ handle_call({close, ChannelId}, _, #state{connection = Pid, connection_state = #connection{channel_cache = Cache}} = State) -> case ssh_channel:cache_lookup(Cache, ChannelId) of - #channel{remote_id = Id} -> + #channel{remote_id = Id} = Channel -> send_msg({connection_reply, Pid, ssh_connection:channel_close_msg(Id)}), + ssh_channel:cache_update(Cache, Channel#channel{sent_close = true}), {reply, ok, State}; undefined -> {reply, ok, State} |