From c1fe4ce53f2df2c10078de2abae712d49fd6a633 Mon Sep 17 00:00:00 2001 From: Micael Karlberg Date: Fri, 16 Dec 2011 10:02:01 +0100 Subject: [ftp] Fails to open IPv6 connection Fails to open IPv6 connection due to badly formatted IPv6 address in EPRT command. The address part of the command incorrectly contained decimal elements instead of hexadecimal. Attila Rajmund Nohl OTP-9827 --- lib/inets/doc/src/notes.xml | 36 +++++++++++++++++++++++++++++++++ lib/inets/src/ftp/ftp.erl | 7 ++----- lib/inets/src/inets_app/inets.appup.src | 18 ++++++++++++++++- lib/inets/vsn.mk | 2 +- 4 files changed, 56 insertions(+), 7 deletions(-) (limited to 'lib') diff --git a/lib/inets/doc/src/notes.xml b/lib/inets/doc/src/notes.xml index de934b91ea..ae2557b44e 100644 --- a/lib/inets/doc/src/notes.xml +++ b/lib/inets/doc/src/notes.xml @@ -32,6 +32,42 @@ notes.xml +
Inets 5.7.3 +
Improvements and New Features +

-

+ + + +
+ +
Fixed Bugs and Malfunctions + + + + +

[ftp] Fails to open IPv6 connection due to badly formatted + IPv6 address in EPRT command. The address part of the command + incorrectly contained decimal elements instead of hexadecimal.

+

Own Id: OTP-9827

+

Aux Id: Seq 11970

+
+ +
+
+ +
+ +
Inets 5.7.2
Improvements and New Features

-

diff --git a/lib/inets/src/ftp/ftp.erl b/lib/inets/src/ftp/ftp.erl index ac72963347..3028cd800f 100644 --- a/lib/inets/src/ftp/ftp.erl +++ b/lib/inets/src/ftp/ftp.erl @@ -1912,17 +1912,14 @@ setup_ctrl_connection(Host, Port, Timeout, State) -> setup_data_connection(#state{mode = active, caller = Caller, csock = CSock} = State) -> - IntToString = fun(Element) -> integer_to_list(Element) end, - case (catch inet:sockname(CSock)) of {ok, {{_, _, _, _, _, _, _, _} = IP, _}} -> {ok, LSock} = gen_tcp:listen(0, [{ip, IP}, {active, false}, inet6, binary, {packet, 0}]), {ok, Port} = inet:port(LSock), - Cmd = mk_cmd("EPRT |2|~s:~s:~s:~s:~s:~s:~s:~s|~s|", - lists:map(IntToString, - tuple_to_list(IP) ++ [Port])), + IpAddress = inet_parse:ntoa(IP), + Cmd = mk_cmd("EPRT |2|~s|~p|", [IpAddress, Port]), send_ctrl_message(State, Cmd), activate_ctrl_connection(State), {noreply, State#state{caller = {setup_data_connection, diff --git a/lib/inets/src/inets_app/inets.appup.src b/lib/inets/src/inets_app/inets.appup.src index fb605351b4..a9ffd89568 100644 --- a/lib/inets/src/inets_app/inets.appup.src +++ b/lib/inets/src/inets_app/inets.appup.src @@ -18,8 +18,14 @@ {"%VSN%", [ + {"5.7.2", + [ + {load_module, ftp, soft_purge, soft_purge, []} + ] + }, {"5.7.1", [ + {load_module, ftp, soft_purge, soft_purge, []}, {load_module, http_uri, soft_purge, soft_purge, []}, {load_module, http_util, soft_purge, soft_purge, []}, {load_module, httpd_util, soft_purge, soft_purge, [http_util]}, @@ -31,6 +37,7 @@ }, {"5.7", [ + {load_module, ftp, soft_purge, soft_purge, []}, {load_module, http_uri, soft_purge, soft_purge, []}, {load_module, httpd_util, soft_purge, soft_purge, [http_util]}, {load_module, httpd_file, soft_purge, soft_purge, []}, @@ -43,6 +50,7 @@ }, {"5.6", [ + {load_module, ftp, soft_purge, soft_purge, []}, {load_module, http_uri, soft_purge, soft_purge, []}, {load_module, httpd_util, soft_purge, soft_purge, [http_util]}, {load_module, httpd_file, soft_purge, soft_purge, []}, @@ -80,8 +88,14 @@ } ], [ + {"5.7.2", + [ + {load_module, ftp, soft_purge, soft_purge, []} + ] + }, {"5.7.1", [ + {load_module, ftp, soft_purge, soft_purge, []}, {load_module, http_uri, soft_purge, soft_purge, []}, {load_module, http_util, soft_purge, soft_purge, []}, {load_module, httpd_util, soft_purge, soft_purge, [http_util]}, @@ -92,7 +106,8 @@ ] }, {"5.7", - [ + [ + {load_module, ftp, soft_purge, soft_purge, []}, {load_module, http_uri, soft_purge, soft_purge, []}, {load_module, httpd_util, soft_purge, soft_purge, [http_util]}, {load_module, httpd_file, soft_purge, soft_purge, []}, @@ -105,6 +120,7 @@ }, {"5.6", [ + {load_module, ftp, soft_purge, soft_purge, []}, {load_module, http_uri, soft_purge, soft_purge, []}, {load_module, httpd_util, soft_purge, soft_purge, [http_util]}, {load_module, httpd_file, soft_purge, soft_purge, []}, diff --git a/lib/inets/vsn.mk b/lib/inets/vsn.mk index d294d0006e..e34500b3ab 100644 --- a/lib/inets/vsn.mk +++ b/lib/inets/vsn.mk @@ -18,7 +18,7 @@ # %CopyrightEnd% APPLICATION = inets -INETS_VSN = 5.7.2 +INETS_VSN = 5.7.3 PRE_VSN = APP_VSN = "$(APPLICATION)-$(INETS_VSN)$(PRE_VSN)" -- cgit v1.2.3