diff options
author | Hans Nilsson <hans@erlang.org> | 2019-08-16 13:13:40 +0200 |
---|---|---|
committer | Hans Nilsson <hans@erlang.org> | 2019-09-20 10:31:47 +0200 |
commit | a9050738f80a588e75742842fb64fa4bdc4ab448 (patch) | |
tree | f7dac16a20d6d3c3420f12b6f767696680740d53 | |
parent | 01085d27142e96bf3ae6f76caa072ace041e64ca (diff) | |
download | erlang-a9050738f80a588e75742842fb64fa4bdc4ab448.tar.gz |
ssh: Add global_requests to ssh_connection_handler
-rw-r--r-- | lib/ssh/src/ssh_connection_handler.erl | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/ssh/src/ssh_connection_handler.erl b/lib/ssh/src/ssh_connection_handler.erl index 69d3c3b18f..76479fffe3 100644 --- a/lib/ssh/src/ssh_connection_handler.erl +++ b/lib/ssh/src/ssh_connection_handler.erl @@ -51,6 +51,7 @@ start_channel/5, request/6, request/7, reply_request/3, + global_request/5, send/5, send_eof/2, info/1, info/2, @@ -242,6 +243,12 @@ reply_request(ConnectionHandler, Status, ChannelId) -> cast(ConnectionHandler, {reply_request, Status, ChannelId}). %%-------------------------------------------------------------------- +global_request(ConnectionHandler, Type, true, Data, Timeout) -> + call(ConnectionHandler, {global_request, Type, Data, Timeout}); +global_request(ConnectionHandler, Type, false, Data, _) -> + cast(ConnectionHandler, {global_request, Type, Data}). + +%%-------------------------------------------------------------------- -spec send(connection_ref(), channel_id(), non_neg_integer(), @@ -1178,6 +1185,10 @@ handle_event(cast, {unknown,Data}, StateName, D) when ?CONNECTED(StateName) -> Msg = #ssh_msg_unimplemented{sequence = Data}, {keep_state, send_msg(Msg,D)}; +handle_event(cast, {global_request, Type, Data}, StateName, D) when ?CONNECTED(StateName) -> + {keep_state, send_msg(ssh_connection:request_global_msg(Type,false,Data), D)}; + + %%% Previously handle_sync_event began here handle_event({call,From}, get_print_info, StateName, D) -> Reply = @@ -1255,6 +1266,13 @@ handle_event({call,From}, {request, ChannelId, Type, Data, Timeout}, StateName, {keep_state, D, cond_set_idle_timer(D)} end; +handle_event({call,From}, {global_request, Type, Data, Timeout}, StateName, D) when ?CONNECTED(StateName) -> + Id = make_ref(), + D = send_msg(ssh_connection:request_global_msg(Type, true, Data), + add_request(true, Id, From, D)), + start_channel_request_timer(Id, From, Timeout), + {keep_state, D, cond_set_idle_timer(D)}; + handle_event({call,From}, {data, ChannelId, Type, Data, Timeout}, StateName, D0) when ?CONNECTED(StateName) -> {Repls,D} = send_replies(ssh_connection:channel_data(ChannelId, Type, Data, D0#data.connection_state, From), |