Upgrade to version 17.5.2.
This commit is contained in:
parent
a782dc1123
commit
6f841e0a10
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=384570
4 changed files with 435 additions and 4 deletions
|
@ -1,7 +1,7 @@
|
|||
# $FreeBSD$
|
||||
|
||||
PORTNAME= erlang
|
||||
PORTVERSION= 17.5.1
|
||||
PORTVERSION= 17.5.2
|
||||
CATEGORIES= lang parallel java
|
||||
MASTER_SITES= http://www.erlang.org/download/:erlangorg \
|
||||
http://erlang.stacken.kth.se/download/:erlangorg \
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# $FreeBSD$
|
||||
|
||||
PORTNAME= erlang
|
||||
PORTVERSION= 17.5.1
|
||||
PORTVERSION= 17.5.2
|
||||
CATEGORIES= lang parallel
|
||||
MASTER_SITES= http://www.erlang.org/download/:erlangorg \
|
||||
http://erlang.stacken.kth.se/download/:erlangorg \
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# $FreeBSD$
|
||||
|
||||
PORTNAME= erlang
|
||||
PORTVERSION= 17.5.1
|
||||
PORTVERSION= 17.5.2
|
||||
PORTEPOCH= 3
|
||||
CATEGORIES= lang parallel java
|
||||
MASTER_SITES= http://www.erlang.org/download/:erlangorg \
|
||||
|
@ -207,8 +207,12 @@ post-install:
|
|||
${TAR} --unlink -xzpf ${DISTDIR}/${DIST_SUBDIR}/${ERLANG_DOCS} \
|
||||
-C ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}
|
||||
|
||||
${MV} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/inets-5.10.6/* \
|
||||
${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/inets-5.10.7
|
||||
${RMDIR} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/inets-5.10.6
|
||||
|
||||
${MV} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/ssh-3.2/* \
|
||||
${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/ssh-3.2.1
|
||||
${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/ssh-3.2.2
|
||||
${RMDIR} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/ssh-3.2
|
||||
|
||||
${INSTALL_DATA} ${WRKSRC}/lib/dialyzer/doc/*.txt \
|
||||
|
|
427
lang/erlang/files/patch-otp-17.5.2
Normal file
427
lang/erlang/files/patch-otp-17.5.2
Normal file
|
@ -0,0 +1,427 @@
|
|||
diff --git OTP_VERSION OTP_VERSION
|
||||
index 9cbaf23..808ab16 100644
|
||||
--- OTP_VERSION
|
||||
+++ OTP_VERSION
|
||||
@@ -1 +1 @@
|
||||
-17.5.1
|
||||
+17.5.2
|
||||
diff --git lib/inets/doc/src/httpd.xml lib/inets/doc/src/httpd.xml
|
||||
index 20c8a6b..e40660a 100644
|
||||
--- lib/inets/doc/src/httpd.xml
|
||||
+++ lib/inets/doc/src/httpd.xml
|
||||
@@ -315,7 +315,7 @@ text/plain asc txt
|
||||
</item>
|
||||
|
||||
<marker id="prop_server_tokens"></marker>
|
||||
- <tag>{server_tokens, prod|major|minor|minimal|os|full|{private, string()}}</tag>
|
||||
+ <tag>{server_tokens, none|prod|major|minor|minimal|os|full|{private, string()}}</tag>
|
||||
<item>
|
||||
<p>ServerTokens defines how the value of the server header
|
||||
should look. </p>
|
||||
@@ -323,6 +323,7 @@ text/plain asc txt
|
||||
here is what the server header string could look like for
|
||||
the different values of server-tokens: </p>
|
||||
<pre>
|
||||
+none "" % A Server: header will not be generated
|
||||
prod "inets"
|
||||
major "inets/5"
|
||||
minor "inets/5.8"
|
||||
diff --git lib/inets/doc/src/notes.xml lib/inets/doc/src/notes.xml
|
||||
index 2c3ee79..12bbc2b 100644
|
||||
--- lib/inets/doc/src/notes.xml
|
||||
+++ lib/inets/doc/src/notes.xml
|
||||
@@ -32,7 +32,28 @@
|
||||
<file>notes.xml</file>
|
||||
</header>
|
||||
|
||||
- <section><title>Inets 5.10.6</title>
|
||||
+ <section><title>Inets 5.10.7</title>
|
||||
+
|
||||
+ <section><title>Improvements and New Features</title>
|
||||
+ <list>
|
||||
+ <item>
|
||||
+ <p>
|
||||
+ New value in <c>server_tokens</c> config for limiting
|
||||
+ banner grabbing attempts. </p>
|
||||
+ <p>
|
||||
+ By setting <c>{server_tokens, none}</c> in
|
||||
+ <c>ServiceConfig</c> for <c>inets:start(httpd,
|
||||
+ ServiceConfig)</c>, the "Server:" header will not be set
|
||||
+ in messages from the server.</p>
|
||||
+ <p>
|
||||
+ Own Id: OTP-12661 Aux Id: seq12840 </p>
|
||||
+ </item>
|
||||
+ </list>
|
||||
+ </section>
|
||||
+
|
||||
+</section>
|
||||
+
|
||||
+<section><title>Inets 5.10.6</title>
|
||||
|
||||
<section><title>Fixed Bugs and Malfunctions</title>
|
||||
<list>
|
||||
diff --git lib/inets/src/http_server/httpd_conf.erl lib/inets/src/http_server/httpd_conf.erl
|
||||
index 78dda79..dbdc1be 100644
|
||||
--- lib/inets/src/http_server/httpd_conf.erl
|
||||
+++ lib/inets/src/http_server/httpd_conf.erl
|
||||
@@ -219,14 +219,14 @@ load("ServerName " ++ ServerName, []) ->
|
||||
|
||||
load("ServerTokens " ++ ServerTokens, []) ->
|
||||
%% These are the valid *plain* server tokens:
|
||||
- %% sprod, major, minor, minimum, os, full
|
||||
+ %% none, prod, major, minor, minimum, os, full
|
||||
%% It can also be a "private" server token: private:<any string>
|
||||
case string:tokens(ServerTokens, [$:]) of
|
||||
["private", Private] ->
|
||||
{ok,[], {server_tokens, clean(Private)}};
|
||||
[TokStr] ->
|
||||
Tok = list_to_atom(clean(TokStr)),
|
||||
- case lists:member(Tok, [prod, major, minor, minimum, os, full]) of
|
||||
+ case lists:member(Tok, [none, prod, major, minor, minimum, os, full]) of
|
||||
true ->
|
||||
{ok,[], {server_tokens, Tok}};
|
||||
false ->
|
||||
@@ -850,6 +850,8 @@ server(full = _ServerTokens) ->
|
||||
OS = os_info(full),
|
||||
lists:flatten(
|
||||
io_lib:format("~s ~s OTP/~s", [?SERVER_SOFTWARE, OS, OTPRelease]));
|
||||
+server(none = _ServerTokens) ->
|
||||
+ "";
|
||||
server({private, Server} = _ServerTokens) when is_list(Server) ->
|
||||
%% The user provide its own
|
||||
Server;
|
||||
@@ -1299,7 +1301,7 @@ ssl_ca_certificate_file(ConfigDB) ->
|
||||
end.
|
||||
|
||||
plain_server_tokens() ->
|
||||
- [prod, major, minor, minimum, os, full].
|
||||
+ [none, prod, major, minor, minimum, os, full].
|
||||
|
||||
error_report(Where,M,F,Error) ->
|
||||
error_logger:error_report([{?MODULE, Where},
|
||||
diff --git lib/inets/src/http_server/httpd_response.erl lib/inets/src/http_server/httpd_response.erl
|
||||
index 0895729..2fa91d4 100644
|
||||
--- lib/inets/src/http_server/httpd_response.erl
|
||||
+++ lib/inets/src/http_server/httpd_response.erl
|
||||
@@ -287,8 +287,11 @@ create_header(ConfigDb, KeyValueTupleHeaders) ->
|
||||
ContentType = "text/html",
|
||||
Server = server(ConfigDb),
|
||||
NewHeaders = add_default_headers([{"date", Date},
|
||||
- {"content-type", ContentType},
|
||||
- {"server", Server}],
|
||||
+ {"content-type", ContentType}
|
||||
+ | if Server=="" -> [];
|
||||
+ true -> [{"server", Server}]
|
||||
+ end
|
||||
+ ],
|
||||
KeyValueTupleHeaders),
|
||||
lists:map(fun fix_header/1, NewHeaders).
|
||||
|
||||
diff --git lib/inets/vsn.mk lib/inets/vsn.mk
|
||||
index e5b63a6..e9ecb26 100644
|
||||
--- lib/inets/vsn.mk
|
||||
+++ lib/inets/vsn.mk
|
||||
@@ -18,6 +18,6 @@
|
||||
# %CopyrightEnd%
|
||||
|
||||
APPLICATION = inets
|
||||
-INETS_VSN = 5.10.6
|
||||
+INETS_VSN = 5.10.7
|
||||
PRE_VSN =
|
||||
APP_VSN = "$(APPLICATION)-$(INETS_VSN)$(PRE_VSN)"
|
||||
diff --git lib/ssh/doc/src/notes.xml lib/ssh/doc/src/notes.xml
|
||||
index acbf312..41885c6 100644
|
||||
--- lib/ssh/doc/src/notes.xml
|
||||
+++ lib/ssh/doc/src/notes.xml
|
||||
@@ -29,6 +29,27 @@
|
||||
<file>notes.xml</file>
|
||||
</header>
|
||||
|
||||
+<section><title>Ssh 3.2.2</title>
|
||||
+
|
||||
+ <section><title>Improvements and New Features</title>
|
||||
+ <list>
|
||||
+ <item>
|
||||
+ <p>
|
||||
+ New option <c>id_string</c> for <c>ssh:daemon</c> and
|
||||
+ <c>ssh:connect</c> for limiting banner grabbing attempts.</p>
|
||||
+ <p>
|
||||
+ The possible values are: <c>{id_string,string()}</c> and
|
||||
+ <c>{id_string,random}</c>. The latter will make ssh
|
||||
+ generate a random nonsence id-string for each new
|
||||
+ connection.</p>
|
||||
+ <p>
|
||||
+ Own Id: OTP-12659</p>
|
||||
+ </item>
|
||||
+ </list>
|
||||
+ </section>
|
||||
+
|
||||
+</section>
|
||||
+
|
||||
<section><title>Ssh 3.2.1</title>
|
||||
|
||||
<section><title>Fixed Bugs and Malfunctions</title>
|
||||
diff --git lib/ssh/doc/src/ssh.xml lib/ssh/doc/src/ssh.xml
|
||||
index 0e7e384..72dafc0 100644
|
||||
--- lib/ssh/doc/src/ssh.xml
|
||||
+++ lib/ssh/doc/src/ssh.xml
|
||||
@@ -180,6 +180,15 @@
|
||||
<item>
|
||||
<p>If true, the client will not print out anything on authorization.</p>
|
||||
</item>
|
||||
+
|
||||
+ <tag><c><![CDATA[{id_string, random | string()}]]></c></tag>
|
||||
+ <item>
|
||||
+ <p>The string that the client presents to a connected server initially. The default value is "Erlang/VSN" where VSN is the ssh application version number.
|
||||
+ </p>
|
||||
+ <p>The value <c>random</c> will cause a random string to be created at each connection attempt. This is to make it a bit more difficult for a malicious peer to find the ssh software brand and version.
|
||||
+ </p>
|
||||
+ </item>
|
||||
+
|
||||
<tag><c><![CDATA[{fd, file_descriptor()}]]></c></tag>
|
||||
<item>
|
||||
<p>Allow an existing file descriptor to be used
|
||||
@@ -344,6 +353,14 @@
|
||||
</p>
|
||||
</item>
|
||||
|
||||
+ <tag><c><![CDATA[{id_string, random | string()}]]></c></tag>
|
||||
+ <item>
|
||||
+ <p>The string the daemon will present to a connecting peer initially. The default value is "Erlang/VSN" where VSN is the ssh application version number.
|
||||
+ </p>
|
||||
+ <p>The value <c>random</c> will cause a random string to be created at each connection attempt. This is to make it a bit more difficult for a malicious peer to find the ssh software brand and version.
|
||||
+ </p>
|
||||
+ </item>
|
||||
+
|
||||
<tag><c><![CDATA[{key_cb, atom()}]]></c></tag>
|
||||
<item>
|
||||
<p>Module implementing the behaviour <seealso marker="ssh_server_key_api">ssh_server_key_api</seealso>.
|
||||
diff --git lib/ssh/src/ssh.erl lib/ssh/src/ssh.erl
|
||||
index 51ad691..d4b02a0 100644
|
||||
--- lib/ssh/src/ssh.erl
|
||||
+++ lib/ssh/src/ssh.erl
|
||||
@@ -347,6 +347,8 @@ handle_option([parallel_login|Rest], SocketOptions, SshOptions) ->
|
||||
handle_option(Rest, SocketOptions, [handle_ssh_option({parallel_login,true}) | SshOptions]);
|
||||
handle_option([{minimal_remote_max_packet_size, _} = Opt|Rest], SocketOptions, SshOptions) ->
|
||||
handle_option(Rest, SocketOptions, [handle_ssh_option(Opt) | SshOptions]);
|
||||
+handle_option([{id_string, _ID} = Opt|Rest], SocketOptions, SshOptions) ->
|
||||
+ handle_option(Rest, SocketOptions, [handle_ssh_option(Opt) | SshOptions]);
|
||||
handle_option([Opt | Rest], SocketOptions, SshOptions) ->
|
||||
handle_option(Rest, [handle_inet_option(Opt) | SocketOptions], SshOptions).
|
||||
|
||||
@@ -439,6 +441,10 @@ handle_ssh_option({idle_time, Value} = Opt) when is_integer(Value), Value > 0 ->
|
||||
Opt;
|
||||
handle_ssh_option({rekey_limit, Value} = Opt) when is_integer(Value) ->
|
||||
Opt;
|
||||
+handle_ssh_option({id_string, random}) ->
|
||||
+ {id_string, {random,2,5}}; %% 2 - 5 random characters
|
||||
+handle_ssh_option({id_string, ID} = Opt) when is_list(ID) ->
|
||||
+ Opt;
|
||||
handle_ssh_option(Opt) ->
|
||||
throw({error, {eoptions, Opt}}).
|
||||
|
||||
diff --git lib/ssh/src/ssh_transport.erl lib/ssh/src/ssh_transport.erl
|
||||
index 76fa776..8669be5 100644
|
||||
--- lib/ssh/src/ssh_transport.erl
|
||||
+++ lib/ssh/src/ssh_transport.erl
|
||||
@@ -44,12 +44,34 @@
|
||||
|
||||
versions(client, Options)->
|
||||
Vsn = proplists:get_value(vsn, Options, ?DEFAULT_CLIENT_VERSION),
|
||||
- Version = format_version(Vsn),
|
||||
- {Vsn, Version};
|
||||
+ {Vsn, format_version(Vsn, software_version(Options))};
|
||||
versions(server, Options) ->
|
||||
Vsn = proplists:get_value(vsn, Options, ?DEFAULT_SERVER_VERSION),
|
||||
- Version = format_version(Vsn),
|
||||
- {Vsn, Version}.
|
||||
+ {Vsn, format_version(Vsn, software_version(Options))}.
|
||||
+
|
||||
+software_version(Options) ->
|
||||
+ case proplists:get_value(id_string, Options) of
|
||||
+ undefined ->
|
||||
+ "Erlang"++ssh_vsn();
|
||||
+ {random,Nlo,Nup} ->
|
||||
+ random_id(Nlo,Nup);
|
||||
+ ID ->
|
||||
+ ID
|
||||
+ end.
|
||||
+
|
||||
+ssh_vsn() ->
|
||||
+ try {ok,L} = application:get_all_key(ssh),
|
||||
+ proplists:get_value(vsn,L,"")
|
||||
+ of
|
||||
+ "" -> "";
|
||||
+ VSN when is_list(VSN) -> "/" ++ VSN;
|
||||
+ _ -> ""
|
||||
+ catch
|
||||
+ _:_ -> ""
|
||||
+ end.
|
||||
+
|
||||
+random_id(Nlo, Nup) ->
|
||||
+ [crypto:rand_uniform($a,$z+1) || _<- lists:duplicate(crypto:rand_uniform(Nlo,Nup+1),x) ].
|
||||
|
||||
hello_version_msg(Data) ->
|
||||
[Data,"\r\n"].
|
||||
@@ -77,9 +99,9 @@ is_valid_mac(Mac, Data, #ssh{recv_mac = Algorithm,
|
||||
yes_no(Ssh, Prompt) ->
|
||||
(Ssh#ssh.io_cb):yes_no(Prompt, Ssh).
|
||||
|
||||
-format_version({Major,Minor}) ->
|
||||
+format_version({Major,Minor}, SoftwareVersion) ->
|
||||
"SSH-" ++ integer_to_list(Major) ++ "." ++
|
||||
- integer_to_list(Minor) ++ "-Erlang".
|
||||
+ integer_to_list(Minor) ++ "-" ++ SoftwareVersion.
|
||||
|
||||
handle_hello_version(Version) ->
|
||||
try
|
||||
diff --git lib/ssh/test/ssh_basic_SUITE.erl lib/ssh/test/ssh_basic_SUITE.erl
|
||||
index 81c7b5c..f5f8991 100644
|
||||
--- lib/ssh/test/ssh_basic_SUITE.erl
|
||||
+++ lib/ssh/test/ssh_basic_SUITE.erl
|
||||
@@ -52,6 +52,12 @@ all() ->
|
||||
ssh_connect_arg4_timeout,
|
||||
packet_size_zero,
|
||||
ssh_daemon_minimal_remote_max_packet_size_option,
|
||||
+ id_string_no_opt_client,
|
||||
+ id_string_own_string_client,
|
||||
+ id_string_random_client,
|
||||
+ id_string_no_opt_server,
|
||||
+ id_string_own_string_server,
|
||||
+ id_string_random_server,
|
||||
{group, hardening_tests}
|
||||
].
|
||||
|
||||
@@ -817,6 +823,66 @@ ssh_daemon_minimal_remote_max_packet_size_option(Config) ->
|
||||
ssh:stop_daemon(Server).
|
||||
|
||||
%%--------------------------------------------------------------------
|
||||
+id_string_no_opt_client(Config) ->
|
||||
+ {Server, Host, Port} = fake_daemon(Config),
|
||||
+ {error,_} = ssh:connect(Host, Port, []),
|
||||
+ receive
|
||||
+ {id,Server,"SSH-2.0-Erlang/"++Vsn} ->
|
||||
+ true = expected_ssh_vsn(Vsn);
|
||||
+ {id,Server,Other} ->
|
||||
+ ct:fail("Unexpected id: ~s.",[Other])
|
||||
+ end.
|
||||
+
|
||||
+%%--------------------------------------------------------------------
|
||||
+id_string_own_string_client(Config) ->
|
||||
+ {Server, Host, Port} = fake_daemon(Config),
|
||||
+ {error,_} = ssh:connect(Host, Port, [{id_string,"Pelle"}]),
|
||||
+ receive
|
||||
+ {id,Server,"SSH-2.0-Pelle\r\n"} ->
|
||||
+ ok;
|
||||
+ {id,Server,Other} ->
|
||||
+ ct:fail("Unexpected id: ~s.",[Other])
|
||||
+ end.
|
||||
+
|
||||
+%%--------------------------------------------------------------------
|
||||
+id_string_random_client(Config) ->
|
||||
+ {Server, Host, Port} = fake_daemon(Config),
|
||||
+ {error,_} = ssh:connect(Host, Port, [{id_string,random}]),
|
||||
+ receive
|
||||
+ {id,Server,Id="SSH-2.0-Erlang"++_} ->
|
||||
+ ct:fail("Unexpected id: ~s.",[Id]);
|
||||
+ {id,Server,Rnd="SSH-2.0-"++_} ->
|
||||
+ ct:log("Got ~s.",[Rnd]);
|
||||
+ {id,Server,Id} ->
|
||||
+ ct:fail("Unexpected id: ~s.",[Id])
|
||||
+ end.
|
||||
+
|
||||
+%%--------------------------------------------------------------------
|
||||
+id_string_no_opt_server(Config) ->
|
||||
+ {_Server, Host, Port} = std_daemon(Config, []),
|
||||
+ {ok,S1}=gen_tcp:connect(Host,Port,[{active,false}]),
|
||||
+ {ok,"SSH-2.0-Erlang/"++Vsn} = gen_tcp:recv(S1, 0, 2000),
|
||||
+ true = expected_ssh_vsn(Vsn).
|
||||
+
|
||||
+%%--------------------------------------------------------------------
|
||||
+id_string_own_string_server(Config) ->
|
||||
+ {_Server, Host, Port} = std_daemon(Config, [{id_string,"Olle"}]),
|
||||
+ {ok,S1}=gen_tcp:connect(Host,Port,[{active,false}]),
|
||||
+ {ok,"SSH-2.0-Olle\r\n"} = gen_tcp:recv(S1, 0, 2000).
|
||||
+
|
||||
+%%--------------------------------------------------------------------
|
||||
+id_string_random_server(Config) ->
|
||||
+ {_Server, Host, Port} = std_daemon(Config, [{id_string,random}]),
|
||||
+ {ok,S1}=gen_tcp:connect(Host,Port,[{active,false}]),
|
||||
+ {ok,"SSH-2.0-"++Rnd} = gen_tcp:recv(S1, 0, 2000),
|
||||
+ case Rnd of
|
||||
+ "Erlang"++_ -> ct:log("Id=~p",[Rnd]),
|
||||
+ {fail,got_default_id};
|
||||
+ "Olle\r\n" -> {fail,got_previous_tests_value};
|
||||
+ _ -> ct:log("Got ~s.",[Rnd])
|
||||
+ end.
|
||||
+
|
||||
+%%--------------------------------------------------------------------
|
||||
ssh_connect_negtimeout_parallel(Config) -> ssh_connect_negtimeout(Config,true).
|
||||
ssh_connect_negtimeout_sequential(Config) -> ssh_connect_negtimeout(Config,false).
|
||||
|
||||
@@ -1095,3 +1161,46 @@ do_shell(IO, Shell) ->
|
||||
%% {'EXIT', Shell, killed} ->
|
||||
%% ok
|
||||
%% end.
|
||||
+
|
||||
+
|
||||
+std_daemon(Config, ExtraOpts) ->
|
||||
+ SystemDir = ?config(data_dir, Config),
|
||||
+ PrivDir = ?config(priv_dir, Config),
|
||||
+ UserDir = filename:join(PrivDir, nopubkey), % to make sure we don't use public-key-auth
|
||||
+ file:make_dir(UserDir),
|
||||
+ {_Server, _Host, _Port} = ssh_test_lib:daemon([{system_dir, SystemDir},
|
||||
+ {user_dir, UserDir},
|
||||
+ {failfun, fun ssh_test_lib:failfun/2} | ExtraOpts]).
|
||||
+
|
||||
+expected_ssh_vsn(Str) ->
|
||||
+ try
|
||||
+ {ok,L} = application:get_all_key(ssh),
|
||||
+ proplists:get_value(vsn,L,"")++"\r\n"
|
||||
+ of
|
||||
+ Str -> true;
|
||||
+ "\r\n" -> true;
|
||||
+ _ -> false
|
||||
+ catch
|
||||
+ _:_ -> true %% ssh not started so we dont't know
|
||||
+ end.
|
||||
+
|
||||
+
|
||||
+fake_daemon(_Config) ->
|
||||
+ Parent = self(),
|
||||
+ %% start the server
|
||||
+ Server = spawn(fun() ->
|
||||
+ {ok,Sl} = gen_tcp:listen(0,[]),
|
||||
+ {ok,{Host,Port}} = inet:sockname(Sl),
|
||||
+ Parent ! {sockname,self(),Host,Port},
|
||||
+ Rsa = gen_tcp:accept(Sl),
|
||||
+ ct:log("Server gen_tcp:accept got ~p",[Rsa]),
|
||||
+ {ok,S} = Rsa,
|
||||
+ receive
|
||||
+ {tcp, S, Id} -> Parent ! {id,self(),Id}
|
||||
+ end
|
||||
+ end),
|
||||
+ %% Get listening host and port
|
||||
+ receive
|
||||
+ {sockname,Server,ServerHost,ServerPort} -> {Server, ServerHost, ServerPort}
|
||||
+ end.
|
||||
+
|
||||
diff --git lib/ssh/vsn.mk lib/ssh/vsn.mk
|
||||
index fec8dac..b2b85a7 100644
|
||||
--- lib/ssh/vsn.mk
|
||||
+++ lib/ssh/vsn.mk
|
||||
@@ -1,4 +1,4 @@
|
||||
#-*-makefile-*- ; force emacs to enter makefile-mode
|
||||
|
||||
-SSH_VSN = 3.2.1
|
||||
+SSH_VSN = 3.2.2
|
||||
APP_VSN = "ssh-$(SSH_VSN)"
|
||||
diff --git otp_versions.table otp_versions.table
|
||||
index a82f535..4bf6cb9 100644
|
||||
--- otp_versions.table
|
||||
+++ otp_versions.table
|
||||
@@ -1,3 +1,4 @@
|
||||
+OTP-17.5.2 : inets-5.10.7 ssh-3.2.2 # asn1-3.0.4 common_test-1.10 compiler-5.0.4 cosEvent-2.1.15 cosEventDomain-1.1.14 cosFileTransfer-1.1.16 cosNotification-1.1.21 cosProperty-1.1.17 cosTime-1.1.14 cosTransactions-1.2.14 crypto-3.5 debugger-4.0.3 dialyzer-2.7.4 diameter-1.9 edoc-0.7.16 eldap-1.1.1 erl_docgen-0.3.7 erl_interface-3.7.20 erts-6.4 et-1.5 eunit-2.2.9 gs-1.5.16 hipe-3.11.3 ic-4.3.6 jinterface-1.5.12 kernel-3.2 megaco-3.17.3 mnesia-4.12.5 observer-2.0.4 odbc-2.10.22 orber-3.7.1 os_mon-2.3.1 ose-1.0.2 otp_mibs-1.0.10 parsetools-2.0.12 percept-0.8.10 public_key-0.23 reltool-0.6.6 runtime_tools-1.8.16 sasl-2.4.1 snmp-5.1.1 ssl-6.0 stdlib-2.4 syntax_tools-1.6.18 test_server-3.8 tools-2.7.2 typer-0.9.8 webtool-0.8.10 wx-1.3.3 xmerl-1.3.7 :
|
||||
OTP-17.5.1 : ssh-3.2.1 # asn1-3.0.4 common_test-1.10 compiler-5.0.4 cosEvent-2.1.15 cosEventDomain-1.1.14 cosFileTransfer-1.1.16 cosNotification-1.1.21 cosProperty-1.1.17 cosTime-1.1.14 cosTransactions-1.2.14 crypto-3.5 debugger-4.0.3 dialyzer-2.7.4 diameter-1.9 edoc-0.7.16 eldap-1.1.1 erl_docgen-0.3.7 erl_interface-3.7.20 erts-6.4 et-1.5 eunit-2.2.9 gs-1.5.16 hipe-3.11.3 ic-4.3.6 inets-5.10.6 jinterface-1.5.12 kernel-3.2 megaco-3.17.3 mnesia-4.12.5 observer-2.0.4 odbc-2.10.22 orber-3.7.1 os_mon-2.3.1 ose-1.0.2 otp_mibs-1.0.10 parsetools-2.0.12 percept-0.8.10 public_key-0.23 reltool-0.6.6 runtime_tools-1.8.16 sasl-2.4.1 snmp-5.1.1 ssl-6.0 stdlib-2.4 syntax_tools-1.6.18 test_server-3.8 tools-2.7.2 typer-0.9.8 webtool-0.8.10 wx-1.3.3 xmerl-1.3.7 :
|
||||
OTP-17.5 : asn1-3.0.4 common_test-1.10 compiler-5.0.4 crypto-3.5 debugger-4.0.3 dialyzer-2.7.4 diameter-1.9 eldap-1.1.1 erts-6.4 hipe-3.11.3 inets-5.10.6 kernel-3.2 mnesia-4.12.5 observer-2.0.4 os_mon-2.3.1 public_key-0.23 runtime_tools-1.8.16 ssh-3.2 ssl-6.0 stdlib-2.4 syntax_tools-1.6.18 test_server-3.8 tools-2.7.2 wx-1.3.3 # cosEvent-2.1.15 cosEventDomain-1.1.14 cosFileTransfer-1.1.16 cosNotification-1.1.21 cosProperty-1.1.17 cosTime-1.1.14 cosTransactions-1.2.14 edoc-0.7.16 erl_docgen-0.3.7 erl_interface-3.7.20 et-1.5 eunit-2.2.9 gs-1.5.16 ic-4.3.6 jinterface-1.5.12 megaco-3.17.3 odbc-2.10.22 orber-3.7.1 ose-1.0.2 otp_mibs-1.0.10 parsetools-2.0.12 percept-0.8.10 reltool-0.6.6 sasl-2.4.1 snmp-5.1.1 typer-0.9.8 webtool-0.8.10 xmerl-1.3.7 :
|
||||
OTP-17.4.1 : erts-6.3.1 inets-5.10.5 # asn1-3.0.3 common_test-1.9 compiler-5.0.3 cosEvent-2.1.15 cosEventDomain-1.1.14 cosFileTransfer-1.1.16 cosNotification-1.1.21 cosProperty-1.1.17 cosTime-1.1.14 cosTransactions-1.2.14 crypto-3.4.2 debugger-4.0.2 dialyzer-2.7.3 diameter-1.8 edoc-0.7.16 eldap-1.1 erl_docgen-0.3.7 erl_interface-3.7.20 et-1.5 eunit-2.2.9 gs-1.5.16 hipe-3.11.2 ic-4.3.6 jinterface-1.5.12 kernel-3.1 megaco-3.17.3 mnesia-4.12.4 observer-2.0.3 odbc-2.10.22 orber-3.7.1 os_mon-2.3 ose-1.0.2 otp_mibs-1.0.10 parsetools-2.0.12 percept-0.8.10 public_key-0.22.1 reltool-0.6.6 runtime_tools-1.8.15 sasl-2.4.1 snmp-5.1.1 ssh-3.1 ssl-5.3.8 stdlib-2.3 syntax_tools-1.6.17 test_server-3.7.2 tools-2.7.1 typer-0.9.8 webtool-0.8.10 wx-1.3.2 xmerl-1.3.7 :
|
Loading…
Reference in a new issue