summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Nilsson <hans@erlang.org>2019-12-20 13:21:11 +0100
committerHans Nilsson <hans@erlang.org>2019-12-20 15:08:25 +0100
commitca4ce23031b95ec178a1beaabc3a4dc5e738dbbe (patch)
tree57e9420e5767b54ca8c8888afd08da9dd815ffee
parent040bdce67f88d833bfb59adae130a4ffb4c180f0 (diff)
downloaderlang-ca4ce23031b95ec178a1beaabc3a4dc5e738dbbe.tar.gz
ssh: Change ssh_connection:send to take iodata()
-rw-r--r--lib/ssh/doc/src/ssh_connection.xml2
-rw-r--r--lib/ssh/src/ssh_connection.erl29
2 files changed, 8 insertions, 23 deletions
diff --git a/lib/ssh/doc/src/ssh_connection.xml b/lib/ssh/doc/src/ssh_connection.xml
index 150d46a9a2..f9ba5c5af9 100644
--- a/lib/ssh/doc/src/ssh_connection.xml
+++ b/lib/ssh/doc/src/ssh_connection.xml
@@ -366,7 +366,7 @@
<type>
<v>ConnectionRef = ssh_connection_ref()</v>
<v>ChannelId = ssh_channel_id()</v>
- <v>Data = binary()</v>
+ <v>Data = iodata()</v>
<v>Type = ssh_data_type_code()</v>
<v>Timeout = timeout()</v>
</type>
diff --git a/lib/ssh/src/ssh_connection.erl b/lib/ssh/src/ssh_connection.erl
index 7e9ee78fd2..ff4603e477 100644
--- a/lib/ssh/src/ssh_connection.erl
+++ b/lib/ssh/src/ssh_connection.erl
@@ -234,32 +234,17 @@ exit_status(ConnectionHandler, Channel, Status) ->
%%--------------------------------------------------------------------
%%% Internal API
%%--------------------------------------------------------------------
-l2b(L) when is_integer(hd(L)) ->
- try list_to_binary(L)
- of
- B -> B
- catch
- _:_ ->
- unicode:characters_to_binary(L)
- end;
-l2b([H|T]) ->
- << (l2b(H))/binary, (l2b(T))/binary >>;
-l2b(B) when is_binary(B) ->
- B;
-l2b([]) ->
- <<>>.
-
-
-
-channel_data(ChannelId, DataType, Data, Connection, From)
- when is_list(Data)->
- channel_data(ChannelId, DataType, l2b(Data), Connection, From);
-
-channel_data(ChannelId, DataType, Data,
+channel_data(ChannelId, DataType, Data0,
#connection{channel_cache = Cache} = Connection,
From) ->
case ssh_channel:cache_lookup(Cache, ChannelId) of
#channel{remote_id = Id, sent_close = false} = Channel0 ->
+ Data =
+ try iolist_to_binary(Data0)
+ catch
+ _:_ ->
+ unicode:characters_to_binary(Data0)
+ end,
{SendList, Channel} =
update_send_window(Channel0#channel{flow_control = From}, DataType,
Data, Connection),