diff options
author | Erlang/OTP <[email protected]> | 2015-07-01 15:54:12 +0200 |
---|---|---|
committer | Erlang/OTP <[email protected]> | 2015-07-01 15:54:12 +0200 |
commit | fb794658ae54b304219c907648f230decf10d622 (patch) | |
tree | 1c6a10b4f956b70a6d3db9540be0fe9f055d5e05 /lib/inets/src/http_server | |
parent | 0f3f8f5871a1ea503cc80ae17adc8dec96c79445 (diff) | |
parent | 77d6dfd57e87daf7d0f2a02f7c592574241ad2d2 (diff) | |
download | otp-fb794658ae54b304219c907648f230decf10d622.tar.gz otp-fb794658ae54b304219c907648f230decf10d622.tar.bz2 otp-fb794658ae54b304219c907648f230decf10d622.zip |
Merge branch 'ia/inets/maint-15/fd/OTP-12874' into maint-r15
* ia/inets/maint-15/fd/OTP-12874:
ssl: Fix appup
inets: Prepare for release
inets: Fix broken fd feature
Diffstat (limited to 'lib/inets/src/http_server')
-rw-r--r-- | lib/inets/src/http_server/httpd_sup.erl | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/lib/inets/src/http_server/httpd_sup.erl b/lib/inets/src/http_server/httpd_sup.erl index da641cf533..75a65fd576 100644 --- a/lib/inets/src/http_server/httpd_sup.erl +++ b/lib/inets/src/http_server/httpd_sup.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2014. All Rights Reserved. +%% Copyright Ericsson AB 2004-2015. 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 @@ -196,12 +196,16 @@ httpd_child_spec(ConfigFile, AcceptTimeoutDef, DebugDef) -> end. httpd_child_spec(Config, AcceptTimeout, Debug, Addr, Port) -> - Fd = proplists:get_value(fd, Config, undefined), - case Port == 0 orelse Fd =/= undefined of - true -> - httpd_child_spec_listen(Config, AcceptTimeout, Debug, Addr, Port); - false -> - httpd_child_spec_nolisten(Config, AcceptTimeout, Debug, Addr, Port) + case get_fd(Port) of + {ok, Fd} -> + case Port == 0 orelse Fd =/= undefined of + true -> + httpd_child_spec_listen(Config, AcceptTimeout, Debug, Addr, Port); + false -> + httpd_child_spec_nolisten(Config, AcceptTimeout, Debug, Addr, Port) + end; + Error -> + Error end. httpd_child_spec_listen(Config, AcceptTimeout, Debug, Addr, Port) -> @@ -247,7 +251,7 @@ listen(Address, Port, Config) -> SocketType -> case http_transport:start(SocketType) of ok -> - Fd = proplists:get_value(fd, Config), + {ok, Fd} = get_fd(Port), IpFamily = proplists:get_value(ipfamily, Config, inet6fb4), case http_transport:listen(SocketType, Address, Port, Fd, IpFamily) of {ok, ListenSocket} -> @@ -366,3 +370,19 @@ ssl_ca_certificate_file(Config) -> File -> [{cacertfile, File}] end. + +get_fd(0) -> + {ok, undefined}; +get_fd(Port) -> + FdKey = list_to_atom("httpd_" ++ integer_to_list(Port)), + case init:get_argument(FdKey) of + {ok, [[Value]]} -> + case (catch list_to_integer(Value)) of + N when is_integer(N) -> + {ok, N}; + _ -> + {error, {bad_descriptor, Value}} + end; + _ -> + {ok, undefined} + end. |