File 4212-inets-Remove-legacy-code-and-correct-request-queue-h.patch of Package erlang

From 2711ae29ec6f969a39880ef80804377662648b01 Mon Sep 17 00:00:00 2001
From: Ingela Anderton Andin <ingela@erlang.org>
Date: Tue, 31 Jan 2023 17:29:31 +0100
Subject: [PATCH] inets: Remove legacy code and correct request queue handling

Legacy essl option and even older ssl option handling (that no
longer worked or made sense) has been removed. This uncovered a
bug in pipeline and keepalive queue handling that could result  in
incorrect response of {error, socket_remotly_closed}, this has
now been fixed. The bug was that retry code missed retring the
first pipelined or keeplive request that was currently being processed.

Also cuddle httpd max_clients test case to that have timeouts that makes
sense. It is surprising that this test case was just a little unstable before!

Closes #6380
---
 lib/inets/src/http_client/httpc.erl           |  13 +-
 lib/inets/src/http_client/httpc_handler.erl   |  55 ++---
 lib/inets/src/http_lib/http_internal.hrl      |   5 -
 lib/inets/src/http_lib/http_transport.erl     | 207 ++----------------
 lib/inets/src/http_server/httpd.erl           |   2 -
 lib/inets/src/http_server/httpd_conf.erl      | 162 +-------------
 lib/inets/src/http_server/httpd_example.erl   |   2 +-
 .../src/http_server/httpd_request_handler.erl |  14 +-
 .../src/http_server/httpd_script_env.erl      |   5 +-
 lib/inets/src/http_server/httpd_sup.erl       |  91 +-------
 lib/inets/src/http_server/mod_alias.erl       |   5 +-
 lib/inets/test/httpc_SUITE.erl                |   2 +
 lib/inets/test/httpd_SUITE.erl                |   2 +-
 lib/inets/test/httpd_bench_SUITE.erl          |   2 +-
 lib/inets/test/httpd_time_test.erl            |   2 +-
 lib/inets/test/inets_test_lib.erl             |  26 +--
 16 files changed, 92 insertions(+), 503 deletions(-)

diff --git a/lib/inets/src/http_client/httpc.erl b/lib/inets/src/http_client/httpc.erl
index 48d8a3c6ac..b4315f4ba3 100644
--- a/lib/inets/src/http_client/httpc.erl
+++ b/lib/inets/src/http_client/httpc.erl
@@ -983,11 +983,12 @@ http_options_default() ->
     AutoRedirectPost =  boolfun(),
 
     SslPost = fun(Value) when is_list(Value) ->
-		      {ok, {?HTTP_DEFAULT_SSL_KIND, Value}};
-		 ({ssl, SslOptions}) when is_list(SslOptions) ->
-		      {ok, {?HTTP_DEFAULT_SSL_KIND, SslOptions}};
+                      {ok, {ssl, Value}};
+                 ({ssl, SslOptions}) when is_list(SslOptions) ->
+		      {ok, {ssl, SslOptions}};
+                 %% backwards compat
 		 ({essl, SslOptions}) when is_list(SslOptions) ->
-		      {ok, {essl, SslOptions}};
+		      {ok, {ssl, SslOptions}};
 		 (_) ->
 		      error
 	      end,
@@ -1008,14 +1009,12 @@ http_options_default() ->
 		error
 	end,
 
-    Ssl = ssl_verify_host_options(true),
-
     UrlDecodePost =  boolfun(),
     [
      {version,         {value, "HTTP/1.1"},            #http_options.version,         VersionPost}, 
      {timeout,         {value, ?HTTP_REQUEST_TIMEOUT}, #http_options.timeout,         TimeoutPost},
      {autoredirect,    {value, true},                  #http_options.autoredirect,    AutoRedirectPost},
-     {ssl,             {value, {?HTTP_DEFAULT_SSL_KIND, Ssl}}, #http_options.ssl,     SslPost},
+     {ssl,             {value, {ssl, []}},             #http_options.ssl,             SslPost},
      {proxy_auth,      {value, undefined},             #http_options.proxy_auth,      ProxyAuthPost},
      {relaxed,         {value, false},                 #http_options.relaxed,         RelaxedPost},
      {url_encode,      {value, false},                 #http_options.url_encode,      UrlDecodePost},
diff --git a/lib/inets/src/http_client/httpc_handler.erl b/lib/inets/src/http_client/httpc_handler.erl
index 6012c747c4..143df29bff 100644
--- a/lib/inets/src/http_client/httpc_handler.erl
+++ b/lib/inets/src/http_client/httpc_handler.erl
@@ -50,23 +50,23 @@
 
 -record(state, 
         {
-          request                   :: request() | undefined,
-          session                   :: session() | undefined,
-          status_line               :: tuple()   | undefined,     % {Version, StatusCode, ReasonPharse}
-          headers                   :: http_response_h() | undefined,
-          body                      :: binary() | undefined,
-          mfa                       :: {atom(), atom(), term()} | undefined, % {Module, Function, Args}
-          pipeline = queue:new()    :: queue:queue(),
-          keep_alive = queue:new()  :: queue:queue(),
-          status                    :: undefined | new | pipeline | keep_alive | close | {ssl_tunnel, request()},
-          canceled = [],             % [RequestId]
-          max_header_size = nolimit :: nolimit | integer(),
-          max_body_size = nolimit   :: nolimit | integer(),
-          options                   :: options(),
-          timers = #timers{}        :: #timers{},
-          profile_name              :: atom(), % id of httpc_manager process.
-          once = inactive           :: inactive | once
-         }).
+         request                   :: request() | undefined,
+         session                   :: session() | undefined,
+         status_line               :: tuple()   | undefined,     % {Version, StatusCode, ReasonPharse}
+         headers                   :: http_response_h() | undefined,
+         body                      :: binary() | undefined,
+         mfa                       :: {atom(), atom(), term()} | undefined, % {Module, Function, Args}
+         pipeline = queue:new()    :: queue:queue(),
+         keep_alive = queue:new()  :: queue:queue(),
+         status                    :: undefined | new | pipeline | keep_alive | close | {ssl_tunnel, request()},
+         canceled = []             :: [RequestId::reference()],
+         max_header_size = nolimit :: nolimit | integer(),
+         max_body_size = nolimit   :: nolimit | integer(),
+         options                   :: options(),
+         timers = #timers{}        :: #timers{},
+         profile_name              :: atom(), % id of httpc_manager process.
+         once = inactive           :: inactive | once
+        }).
 
 
 %%====================================================================
@@ -321,8 +321,7 @@ terminate(normal,
     %% Cancel timers
     cancel_timers(Timers),
 
-    %% Maybe deliver answers to requests
-    deliver_answer(Request),
+    maybe_deliver_answer(Request, State),
 
     %% And, just in case, close our side (**really** overkill)
     http_transport:close(SocketType, Socket);
@@ -711,24 +710,26 @@ call(Msg, Pid) ->
 cast(Msg, Pid) ->
     gen_server:cast(Pid, Msg).
 
-maybe_retry_queue(Q, State) ->
-    case queue:is_empty(Q) of 
-        false ->
+maybe_retry_queue(Q, #state{status = new} = State) ->
+    retry_pipeline(queue:to_list(Q), State);
+maybe_retry_queue(Q, #state{request = Request} = State) ->
+    case Request of
+        undefined ->
             retry_pipeline(queue:to_list(Q), State);
-        true ->
-            ok
+        _ ->
+            retry_pipeline(queue:to_list(queue:cons(Request, Q)), State)
     end.
-    
+
 maybe_send_answer(#request{from = answer_sent}, _Reason, State) ->
     State;
 maybe_send_answer(Request, Answer, State) ->
     answer_request(Request, Answer, State).
 
-deliver_answer(#request{from = From} = Request) 
+maybe_deliver_answer(#request{from = From} = Request, #state{status = new})
   when From =/= answer_sent ->
     Response = httpc_response:error(Request, socket_closed_remotely),
     httpc_response:send(From, Response);
-deliver_answer(_Request) ->
+maybe_deliver_answer(_,_) ->
     ok.
 
 %%%--------------------------------------------------------------------
diff --git a/lib/inets/src/http_lib/http_internal.hrl b/lib/inets/src/http_lib/http_internal.hrl
index ca1dad07cd..77e6e58521 100644
--- a/lib/inets/src/http_lib/http_internal.hrl
+++ b/lib/inets/src/http_lib/http_internal.hrl
@@ -31,11 +31,6 @@
 -define(HTTP_MAX_METHOD_STRING, 20).
 -define(HTTP_MAX_CONTENT_LENGTH, 100000000).
 
--ifndef(HTTP_DEFAULT_SSL_KIND).
--define(HTTP_DEFAULT_SSL_KIND, essl).
--endif. % -ifdef(HTTP_DEFAULT_SSL_KIND).
-
-
 %%% Response headers
 -record(http_response_h,{
 %%% --- Standard "General" headers
diff --git a/lib/inets/src/http_lib/http_transport.erl b/lib/inets/src/http_lib/http_transport.erl
index 0eb0cc2684..9b76acfc12 100644
--- a/lib/inets/src/http_lib/http_transport.erl
+++ b/lib/inets/src/http_lib/http_transport.erl
@@ -46,19 +46,11 @@
 %%%  Internal application API
 %%%=========================================================================
 
-%%-------------------------------------------------------------------------
-%% start(SocketType) -> ok | {error, Reason}
-%%      SocketType = ip_comm | {ssl, _}  
-%%                                   
-%% Description: Makes sure ssl is started. 
-%%-------------------------------------------------------------------------
 start(ip_comm) ->
     ok;
 start({ip_comm, _}) ->
     ok;
 start({ssl, _}) ->
-    do_start_ssl();
-start({essl, _}) ->
     do_start_ssl().
 
 do_start_ssl() ->
@@ -70,25 +62,11 @@ do_start_ssl() ->
 	_:Reason ->
 	    {error, Reason}
     end.
-	 
-
-%%-------------------------------------------------------------------------
-%% connect(SocketType, Address, Options, Timeout) ->
-%%                                            {ok, Socket} | {error, Reason}
-%%      SocketType = ip_comm | {ssl, SslConfig}  
-%%      Address = {Host, Port}
-%%      Options = [option()]
-%%      Socket = socket()
-%%      option() = ipfamily() | {ip, ip_address()} | {port, integer()}
-%%      ipfamily() = inet | inet6 
-%%                                   
-%% Description: Connects to the Host and Port specified in HTTPRequest.
-%%-------------------------------------------------------------------------
 
 connect(SocketType, Address, Opts) ->
     connect(SocketType, Address, Opts, infinity).
 connect(ip_comm, {Host, Port}, Opts0, Timeout) ->
-    Opts = [binary, {packet, 0}, {active, false}, {reuseaddr, true} | Opts0 ],
+    Opts = [binary, {packet, 0}, {active, false} | Opts0],
     try gen_tcp:connect(Host, Port, Opts, Timeout) of
 	{ok, _} = OK ->
 	    OK;
@@ -101,12 +79,8 @@ connect(ip_comm, {Host, Port}, Opts0, Timeout) ->
 	    {error, {eoptions, Opts}}
     end;
 
-%% Wrapper for backaward compatibillity
-connect({ssl, SslConfig}, Address, Opts, Timeout) ->
-    connect({?HTTP_DEFAULT_SSL_KIND, SslConfig}, Address, Opts, Timeout);
-
-connect({essl, SslConfig}, {Host, Port}, Opts0, Timeout) -> 
-    Opts = [binary, {active, false}, {ssl_imp, new} | Opts0] ++ SslConfig,
+connect({ssl, SslConfig}, {Host, Port}, Opts0, Timeout) -> 
+    Opts = [binary,  {packet, 0}, {active, false} | Opts0] ++ SslConfig,
     case (catch ssl:connect(Host, Port, Opts, Timeout)) of
 	{'EXIT', Reason} ->
 	    {error, {eoptions, Reason}};
@@ -116,38 +90,19 @@ connect({essl, SslConfig}, {Host, Port}, Opts0, Timeout) ->
 	    ERROR
     end.
 
-
-%%-------------------------------------------------------------------------
-%% listen(SocketType, Addr, Port, Fd) -> {ok, Socket} | {error, Reason}
-%%      SocketType = ip_comm | {ssl, SSLConfig}  
-%%      Port = integer() 
-%%      Socket = socket()
-%%      Fd = undefined | fd()
-%%
-%% Description: Sets up socket to listen on the port Port on the local
-%% host using either gen_tcp or ssl. In the gen_tcp case the port
-%% might already have been initiated by a wrapper-program and is
-%% given as an Fd that can be retrieved by init:get_argument. The
-%% reason for this to enable a HTTP-server not running as root to use
-%% port 80.
-%%-------------------------------------------------------------------------
 listen(ip_comm, Addr, Port, Fd, IpFamily) ->
     listen_ip_comm(Addr, Port, [], Fd, IpFamily);
 
 listen({ip_comm, SockOpts}, Addr, Port, Fd, IpFamily) ->
     listen_ip_comm(Addr, Port, SockOpts, Fd, IpFamily);
 
-listen({essl, SSLConfig}, Addr, Port, Fd, IpFamily) ->
+listen({ssl, SSLConfig}, Addr, Port, Fd, IpFamily) ->
     listen_ssl(Addr, Port, Fd, SSLConfig, IpFamily, []).
 
 listen(ip_comm, Addr, Port, IpFamily) ->
     listen_ip_comm(Addr, Port, [], undefined, IpFamily);
 
-%% Wrapper for backaward compatibillity
 listen({ssl, SSLConfig}, Addr, Port, IpFamily) ->
-    listen({?HTTP_DEFAULT_SSL_KIND, SSLConfig}, Addr, Port, IpFamily);
-
-listen({essl, SSLConfig}, Addr, Port, IpFamily) ->
     {SSLConfig2, ExtraOpts} = case proplists:get_value(log_alert, SSLConfig, undefined) of
 		    undefined ->
 			{SSLConfig, []};
@@ -187,18 +142,7 @@ get_socket_info(Addr, Port, Fd, BaseOpts) ->
 	Fd -> 
 	    {0, sock_opts([{fd, Fd} | BaseOpts])}
     end.
-	    
-%%-------------------------------------------------------------------------
-%% accept(SocketType, ListenSocket) -> {ok, Socket} | {error, Reason}
-%% accept(SocketType, ListenSocket, Timeout) -> ok | {error, Reason}
-%%   SocketType = ip_comm | {ssl, SSLConfig}  
-%%   ListenSocket = socket()    
-%%   Timeout = infinity | integer() >= 0
-%%   Socket = socket()
-%%                                   
-%% Description: Accepts an incoming connection request on a listen socket,
-%% using either gen_tcp or ssl.
-%%-------------------------------------------------------------------------
+
 -spec accept(SocketType, ListenSocket) -> {ok, Socket} | {error, Reason} when
       SocketType   :: ip_comm | {ssl, SSLConfig},
       SSLConfig    :: term(),
@@ -209,7 +153,7 @@ accept(SocketType, ListenSocket) ->
     accept(SocketType, ListenSocket, infinity).
 
 -spec accept(SocketType, ListenSocket, Timeout) -> {ok, Socket} | {error, Reason} when
-      SocketType   :: ip_comm | {ssl | essl, SSLConfig},
+      SocketType   :: ip_comm | {ssl, SSLConfig},
       SSLConfig    :: term(),
       Timeout      :: timeout(),
       ListenSocket :: gen_tcp:socket(),
@@ -220,19 +164,14 @@ accept(ip_comm, ListenSocket, Timeout) ->
 accept({ip_comm, _}, ListenSocket, Timeout) ->
     gen_tcp:accept(ListenSocket, Timeout);
 
-%% Wrapper for backaward compatibillity
-accept({ssl, SSLConfig}, ListenSocket, Timeout) ->
-    accept({?HTTP_DEFAULT_SSL_KIND, SSLConfig}, ListenSocket, Timeout);
-
-accept({essl, _SSLConfig}, ListenSocket, Timeout) ->
+accept({ssl, _SSLConfig}, ListenSocket, Timeout) ->
     ssl:transport_accept(ListenSocket, Timeout).
 
-
 %%-------------------------------------------------------------------------
 %% Description: Assigns a new controlling process to Socket.
 %%-------------------------------------------------------------------------
 -spec controlling_process(SocketType, Socket, NewOwner) -> Object when
-      SocketType :: ip_comm | {ip_comm | ssl | essl, _SSLConfig},
+      SocketType :: ip_comm | {ip_comm | ssl, _Config},
       Socket     :: gen_tcp:socket(),
       NewOwner   :: pid(),
       Object     :: ok | {error, Reason},
@@ -242,11 +181,7 @@ controlling_process(ip_comm, Socket, NewOwner) ->
 controlling_process({ip_comm, _}, Socket, NewOwner) ->
     gen_tcp:controlling_process(Socket, NewOwner);
 
-%% Wrapper for backaward compatibillity
-controlling_process({ssl, SSLConfig}, Socket, NewOwner) ->
-    controlling_process({?HTTP_DEFAULT_SSL_KIND, SSLConfig}, Socket, NewOwner);
-
-controlling_process({essl, _}, Socket, NewOwner) ->
+controlling_process({ssl, _}, Socket, NewOwner) ->
     ssl:controlling_process(Socket, NewOwner).
 
 
@@ -255,7 +190,7 @@ controlling_process({essl, _}, Socket, NewOwner) ->
 %% gen_tcp or ssl.
 %%-------------------------------------------------------------------------
 -spec setopts(SocketType, Socket, Options) -> ok | {error, inet:posix()} when
-      SocketType :: ip_comm | {ip_comm | ssl | essl, _SSLConfig},
+      SocketType :: ip_comm | {ip_comm | ssl, _Config},
       Socket     :: inet:socket() | ssl:sslsocket(),
       Options    :: [inet:socket_setopt()] |  [gen_tcp:option()].
 setopts(ip_comm, Socket, Options) ->
@@ -263,11 +198,7 @@ setopts(ip_comm, Socket, Options) ->
 setopts({ip_comm, _}, Socket, Options) ->
     inet:setopts(Socket, Options);
 
-%% Wrapper for backaward compatibillity
-setopts({ssl, SSLConfig}, Socket, Options) ->
-    setopts({?HTTP_DEFAULT_SSL_KIND, SSLConfig}, Socket, Options);
-
-setopts({essl, _}, Socket, Options) ->
+setopts({ssl, _}, Socket, Options) ->
     (catch ssl:setopts(Socket, Options)).
 
 
@@ -275,7 +206,7 @@ setopts({essl, _}, Socket, Options) ->
 %% Description: Gets the values for some options.
 %%-------------------------------------------------------------------------
 -spec getopts(SocketType, Socket) -> Object when
-      SocketType :: ip_comm | {ip_comm | ssl | essl, _SSLConfig},
+      SocketType :: ip_comm | {ip_comm | ssl, _Conf},
       Socket     :: ssl:sslsocket() | inet:socket(),
       Object     :: [gen_tcp:option()] | [inet:socket_setopt() | gen_tcp:pktoptions_value()] | [].
 getopts(SocketType, Socket) ->
@@ -283,13 +214,10 @@ getopts(SocketType, Socket) ->
     getopts(SocketType, Socket, Opts).
 
 -spec getopts(SocketType, Socket, Options) -> Object when
-      SocketType :: ip_comm | {ip_comm | ssl | essl, _SSLConfig},
+      SocketType :: ip_comm | {ip_comm | ssl, _Conf},
       Socket     :: ssl:sslsocket() | inet:socket(),
       Options    :: [gen_tcp:option_name()],
       Object     :: [gen_tcp:option()] | [inet:socket_setopt() | gen_tcp:pktoptions_value()] | [].
-getopts({ip_comm, _}, Socket, Options) ->
-    getopts(ip_comm, Socket, Options);
-
 getopts(ip_comm, Socket, Options) ->
     case inet:getopts(Socket, Options) of
 	{ok, SocketOpts} ->
@@ -297,12 +225,9 @@ getopts(ip_comm, Socket, Options) ->
 	{error, _} -> 
 	    []
     end;
-
-%% Wrapper for backaward compatibillity
-getopts({ssl, SSLConfig}, Socket, Options) ->
-    getopts({?HTTP_DEFAULT_SSL_KIND, SSLConfig}, Socket, Options);
-
-getopts({essl, _}, Socket, Options) ->
+getopts({ip_comm, _}, Socket, Options) ->
+    getopts(ip_comm, Socket, Options);
+getopts({ssl, _}, Socket, Options) ->
     getopts_ssl(Socket, Options).
 
 -spec getopts_ssl(SslSocket, Options) ->
@@ -316,15 +241,7 @@ getopts_ssl(Socket, Options) ->
 	{error, _} -> 
 	    []
     end.
-    
 
-%%-------------------------------------------------------------------------
-%% getstat(SocketType, Socket) -> socket_stats()
-%%     SocketType = ip_comm | {ssl, _}
-%%     Socket = socket()
-%%     socket_stats() = list()
-%% Description: Gets the socket stats values for the socket
-%%-------------------------------------------------------------------------
 getstat(ip_comm = _SocketType, Socket) ->
     case inet:getstat(Socket) of
 	{ok, Stats} ->
@@ -333,73 +250,30 @@ getstat(ip_comm = _SocketType, Socket) ->
 	    []
     end;
 
-%% Wrapper for backaward compatibillity
-getstat({ssl, SSLConfig}, Socket) ->
-    getstat({?HTTP_DEFAULT_SSL_KIND, SSLConfig}, Socket);
-
-getstat({essl, _} = _SocketType, _Socket) ->
+getstat({ssl, _} = _SocketType, _Socket) ->
     [].
 
 
-%%-------------------------------------------------------------------------
-%% send(RequestOrSocketType, Socket, Message) -> ok | {error, Reason}
-%%     SocketType = ip_comm | {ssl, _}
-%%     Socket = socket()
-%%     Message = list() | binary()                           
-%% Description: Sends a packet on a socket, using either gen_tcp or ssl.
-%%-------------------------------------------------------------------------
 send(ip_comm, Socket, Message) ->
     gen_tcp:send(Socket, Message);
 send({ip_comm, _}, Socket, Message) ->
     gen_tcp:send(Socket, Message);
 
-%% Wrapper for backaward compatibillity
-send({ssl, SSLConfig}, Socket, Message) ->
-    send({?HTTP_DEFAULT_SSL_KIND, SSLConfig}, Socket, Message);
-
-send({essl, _}, Socket, Message) ->
+send({ssl, _}, Socket, Message) ->
     ssl:send(Socket, Message).
 
-%%-------------------------------------------------------------------------
-%% close(SocketType, Socket) -> ok | {error, Reason}
-%%     SocketType = ip_comm | {ssl, _}
-%%     Socket = socket()  
-%%                                   
-%% Description: Closes a socket, using either gen_tcp or ssl.
-%%-------------------------------------------------------------------------
 close(ip_comm, Socket) ->
     gen_tcp:close(Socket);
 close({ip_comm, []}, Socket) ->
     gen_tcp:close(Socket);
-
-%% Wrapper for backaward compatibillity
-close({ssl, SSLConfig}, Socket) ->
-    close({?HTTP_DEFAULT_SSL_KIND, SSLConfig}, Socket);
-
-close({essl, _}, Socket) ->
+close({ssl, _}, Socket) ->
     ssl:close(Socket).
 
-
-%%-------------------------------------------------------------------------
-%% peername(SocketType, Socket) -> {Port, SockName}
-%%     SocketType = ip_comm | {ssl, _}
-%%     Socket = socket() 
-%%     Port = integer()  (-1 if error occurred)
-%%     PeerName = string()
-%%                          
-%% Description: Returns the address and port for the other end of a
-%% connection, usning either gen_tcp or ssl.
-%%-------------------------------------------------------------------------
 peername(ip_comm, Socket) ->
     do_peername(inet:peername(Socket));
-peername({ip_comm, _}, Socket) ->
+peername({ip_comm,_}, Socket) ->
     do_peername(inet:peername(Socket));
-
-%% Wrapper for backaward compatibillity
-peername({ssl, SSLConfig}, Socket) ->
-    peername({?HTTP_DEFAULT_SSL_KIND, SSLConfig}, Socket);
-
-peername({essl, _}, Socket) ->
+peername({ssl, _}, Socket) ->
     do_peername(ssl:peername(Socket)).
 
 do_peername({ok, {Addr, Port}}) 
@@ -413,26 +287,11 @@ do_peername({ok, {Addr, Port}})
 do_peername({error, _}) ->
     {-1, "unknown"}.
 
-
-%%-------------------------------------------------------------------------
-%% sockname(SocketType, Socket) -> {Port, SockName}
-%%     SocketType = ip_comm | {ssl, _}
-%%     Socket = socket() 
-%%     Port = integer()  (-1 if error occurred)
-%%     SockName = string()
-%%                          
-%% Description: Returns the address and port for the local (our) end 
-%% other end of connection, using either gen_tcp or ssl.
-%%-------------------------------------------------------------------------
 sockname(ip_comm, Socket) ->
     do_sockname(inet:sockname(Socket));
-sockname({ip_comm, _}, Socket) ->
+sockname({ip_comm,_}, Socket) ->
     do_sockname(inet:sockname(Socket));
-%% Wrapper for backaward compatibillity
-sockname({ssl, SSLConfig}, Socket) ->
-    sockname({?HTTP_DEFAULT_SSL_KIND, SSLConfig}, Socket);
-
-sockname({essl, _}, Socket) ->
+sockname({ssl, _}, Socket) ->
     do_sockname(ssl:sockname(Socket)).
 
 do_sockname({ok, {Addr, Port}}) 
@@ -446,26 +305,10 @@ do_sockname({ok, {Addr, Port}})
 do_sockname({error, _}) ->
     {-1, "unknown"}.
 
-
-%%-------------------------------------------------------------------------
-%% resolve() -> HostName
-%%     HostName = string()
-%%     
-%% Description: Returns the local hostname. 
-%%-------------------------------------------------------------------------
 resolve() ->
     {ok, Name} = inet:gethostname(),
     Name.
 
-
-%%-------------------------------------------------------------------------
-%% ipv4_name(Ipv4Addr) -> string()
-%% ipv6_name(Ipv6Addr) -> string()
-%%     Ipv4Addr = ip4_address()
-%%     Ipv6Addr = ip6_address()
-%%     
-%% Description: Returns the local hostname. 
-%%-------------------------------------------------------------------------
 ipv4_name({A, B, C, D}) ->
     integer_to_list(A) ++ "." ++
 	integer_to_list(B) ++ "." ++
@@ -510,9 +353,7 @@ negotiate(ip_comm,_,_) ->
     ok;
 negotiate({ip_comm, _},_,_) ->
     ok;
-negotiate({ssl, SSLConfig}, Socket, Timeout) ->
-    negotiate({?HTTP_DEFAULT_SSL_KIND, SSLConfig}, Socket, Timeout);
-negotiate({essl, _}, Socket, Timeout) ->
+negotiate({ssl, _}, Socket, Timeout) ->
     negotiate_ssl(Socket, Timeout).
 
 negotiate_ssl(Socket, Timeout) ->
diff --git a/lib/inets/src/http_server/httpd.erl b/lib/inets/src/http_server/httpd.erl
index 54d699f500..375d12a768 100644
--- a/lib/inets/src/http_server/httpd.erl
+++ b/lib/inets/src/http_server/httpd.erl
@@ -351,8 +351,6 @@ httpd_ssl_wrapper(Config0) ->
     case proplists:get_value(socket_type, Config0) of
         {essl, Value} ->
             lists:keyreplace(socket_type, 1, Config0, {socket_type, {ssl, Value}});
-        {ssl, Value} ->
-            lists:keyreplace(socket_type, 1, Config0, {socket_type, {essl, Value}});
         _ -> Config0
     end.
 
diff --git a/lib/inets/src/http_server/httpd_conf.erl b/lib/inets/src/http_server/httpd_conf.erl
index 91f2020f77..2454398074 100644
--- a/lib/inets/src/http_server/httpd_conf.erl
+++ b/lib/inets/src/http_server/httpd_conf.erl
@@ -206,8 +206,7 @@ validate_config_params([{socket_type, ip_comm} | Rest]) ->
     validate_config_params(Rest);
 
 validate_config_params([{socket_type, {Value, Opts}} | Rest]) when Value == ip_comm; 
-								   Value == ssl; 
-								   Value == essl ->
+								   Value == ssl ->
     %% Make sure not to set socket values used internally
     validate_config_params(Opts), 
     validate_config_params(Rest);
@@ -293,51 +292,6 @@ validate_config_params([{logger, Value} | Rest]) when is_list(Value) ->
 validate_config_params([{logger, Value} | _]) ->
     throw({logger, Value});
 
-validate_config_params([{ssl_certificate_file = Key, Value} | Rest]) ->
-    ok = httpd_util:file_validate(Key, Value),
-    validate_config_params(Rest);
-
-validate_config_params([{ssl_certificate_key_file = Key, Value} | Rest]) ->
-    ok = httpd_util:file_validate(Key, Value),
-    validate_config_params(Rest);
-
-validate_config_params([{ssl_verify_client, Value} | Rest]) 
-  when (Value =:= 0) orelse (Value =:= 1) orelse (Value =:= 2) ->
-    validate_config_params(Rest);
-
-validate_config_params([{ssl_verify_client_depth, Value} | Rest]) 
-  when is_integer(Value) andalso (Value >= 0) ->
-    validate_config_params(Rest);
-validate_config_params([{ssl_verify_client_depth, Value} | _]) ->
-    throw({ssl_verify_client_depth, Value});
-
-validate_config_params([{ssl_ciphers, Value} | Rest]) when is_list(Value) ->
-    validate_config_params(Rest);
-validate_config_params([{ssl_ciphers, Value} | _]) ->
-    throw({ssl_ciphers, Value});
-
-validate_config_params([{ssl_ca_certificate_file = Key, Value} | Rest]) ->
-    ok = httpd_util:file_validate(Key, Value),
-    validate_config_params(Rest);
-
-validate_config_params([{ssl_password_callback_module, Value} | Rest]) 
-  when is_atom(Value) ->
-    validate_config_params(Rest);
-validate_config_params([{ssl_password_callback_module, Value} | _]) ->
-    throw({ssl_password_callback_module, Value});
-
-validate_config_params([{ssl_password_callback_function, Value} | Rest]) 
-  when is_atom(Value) ->
-    validate_config_params(Rest);
-validate_config_params([{ssl_password_callback_function, Value} | _]) ->
-    throw({ssl_password_callback_function, Value});
-
-validate_config_params([{ssl_password_callback_arguments, Value} | Rest]) 
-  when is_list(Value) ->
-    validate_config_params(Rest);
-validate_config_params([{ssl_password_callback_arguments, Value} | _]) ->
-    throw({ssl_password_callback_arguments, Value});
-
 validate_config_params([{disable_chunked_transfer_encoding_send, Value} |
 			Rest])  
   when (Value =:= true) orelse (Value =:= false) ->
@@ -574,34 +528,9 @@ lookup_socket_type(ConfigDB) ->
 	{ip_comm, _} = Type ->
 	    Type;
 	{Tag, Conf} ->
-	    {Tag, Conf};
-	SSL when (SSL =:= ssl) orelse (SSL =:= essl) ->
-	    SSLTag = 
-		if
-		    (SSL =:= ssl) ->
-			?HTTP_DEFAULT_SSL_KIND;
-		    true ->
-			SSL
-		end,
-	    case ssl_certificate_file(ConfigDB) of
-		undefined ->
-		    Reason = "Directive SSLCertificateFile "
-			"not found in the config file", 
-		    throw({error, Reason}); 
-		SSLCertificateFile ->
-		    {SSLTag, SSLCertificateFile ++ ssl_config(ConfigDB)}
-	    end
+	    {Tag, Conf}
     end.
 
-ssl_config(ConfigDB) ->
-    ssl_certificate_key_file(ConfigDB) ++
-	ssl_verify_client(ConfigDB) ++
-	ssl_ciphers(ConfigDB) ++
-	ssl_password(ConfigDB) ++
-	ssl_verify_depth(ConfigDB) ++
-	ssl_ca_certificate_file(ConfigDB) ++
-	ssl_log_level(ConfigDB).
-	    
 %%%========================================================================
 %%% Internal functions
 %%%========================================================================
@@ -703,96 +632,9 @@ remove_traverse(ConfigDB,[Module|Rest]) ->
 	    remove_traverse(ConfigDB,Rest)
     end.
 
-ssl_certificate_file(ConfigDB) ->
-    case httpd_util:lookup(ConfigDB,ssl_certificate_file) of
-	undefined ->
-	    undefined;
-	SSLCertificateFile ->
-	    [{certfile,SSLCertificateFile}]
-    end.
-
-ssl_certificate_key_file(ConfigDB) ->
-    case httpd_util:lookup(ConfigDB,ssl_certificate_key_file) of
-	undefined ->
-	    [];
-	SSLCertificateKeyFile ->
-	    [{keyfile,SSLCertificateKeyFile}]
-    end.
-
-ssl_log_level(ConfigDB) ->
-    case httpd_util:lookup(ConfigDB,ssl_log_alert) of
-	undefined ->
-	    [];
-	SSLLogLevel ->
-	    [{log_alert,SSLLogLevel}]
-    end.
-
-ssl_verify_client(ConfigDB) ->
-    case httpd_util:lookup(ConfigDB,ssl_verify_client) of
-	undefined ->
-	    [];
-	SSLVerifyClient ->
-	    [{verify,SSLVerifyClient}]
-    end.
-
-ssl_ciphers(ConfigDB) ->
-    case httpd_util:lookup(ConfigDB,ssl_ciphers) of
-	undefined ->
-	    [];
-	Ciphers ->
-	    [{ciphers, Ciphers}]
-    end.
-
-ssl_password(ConfigDB) ->
-    case httpd_util:lookup(ConfigDB,ssl_password_callback_module) of
-	undefined ->
-	    [];
-	Module ->
-	    case httpd_util:lookup(ConfigDB, 
-				   ssl_password_callback_function) of
-		undefined ->
-		    [];
-		Function ->
-		    Args = case httpd_util:lookup(ConfigDB, 
-					   ssl_password_callback_arguments) of
-			       undefined ->
-				   [];
-			       Arguments  ->
-				   [Arguments]
-			   end,
-	       
-		    case catch apply(Module, Function, Args) of
-			Password when is_list(Password) ->
-			    [{password, Password}];
-			Error ->
-			    error_report(ssl_password,Module,Function,Error),
-			    []
-		    end
-	    end
-    end.
-
-ssl_verify_depth(ConfigDB) ->
-    case httpd_util:lookup(ConfigDB, ssl_verify_client_depth) of
-	undefined ->
-	    [];
-	Depth ->
-	    [{depth, Depth}]
-    end.
-
-ssl_ca_certificate_file(ConfigDB) ->
-    case httpd_util:lookup(ConfigDB, ssl_ca_certificate_file) of
-	undefined ->
-	    [];
-	File ->
-	    [{cacertfile, File}]
-    end.
-
 plain_server_tokens() ->
     [none, prod, major, minor, minimum, os, full].
 
-error_report(Where,M,F,Error) ->
-    error_logger:error_report([{?MODULE, Where}, 
-			       {apply, {M, F, []}}, Error]).
 white_space_clean(String) ->
     re:replace(String, "^[ \t\n\r\f]*|[ \t\n\r\f]*\$","", 
 	       [{return,list}, global]).
diff --git a/lib/inets/src/http_server/httpd_example.erl b/lib/inets/src/http_server/httpd_example.erl
index 8097918e36..5474b0b7fd 100644
--- a/lib/inets/src/http_server/httpd_example.erl
+++ b/lib/inets/src/http_server/httpd_example.erl
@@ -225,7 +225,7 @@ newformat(SessionID,_,_) ->
 %% ------------------------------------------------------
 
 delay(SessionID,_, _) ->
-    sleep(10000),
+    sleep(2000),
     Reply = delay_reply("delay ok"),
     mod_esi:deliver(SessionID, Reply).
 
diff --git a/lib/inets/src/http_server/httpd_request_handler.erl b/lib/inets/src/http_server/httpd_request_handler.erl
index 26327a2567..3d3191fc7b 100644
--- a/lib/inets/src/http_server/httpd_request_handler.erl
+++ b/lib/inets/src/http_server/httpd_request_handler.erl
@@ -327,16 +327,16 @@ do_terminate(#state{mod = ModData} = State) ->
     httpd_socket:close(ModData#mod.socket_type, ModData#mod.socket).
 
 format_status(normal, [_, State]) ->
-    [{data, [{"StateData", State}]}];  
+    [{data, [{"StateData", State}]}];
 format_status(terminate, [_, State]) ->
     Mod = (State#state.mod),
     case Mod#mod.socket_type of
-	ip_comm ->
-	    [{data, [{"StateData", State}]}];  
-	{essl, _} ->
-	    %% Do not print ssl options in superviosr reports
-	    [{data, [{"StateData", 
-		      State#state{mod = Mod#mod{socket_type = 'TLS'}}}]}]
+	{ssl, _} ->
+	    %% Do not print ssl options in supervisor reports
+	    [{data, [{"StateData",
+		      State#state{mod = Mod#mod{socket_type = 'TLS'}}}]}];
+        _  ->
+            [{data, [{"StateData", State}]}]
     end.
 
 %%--------------------------------------------------------------------
diff --git a/lib/inets/src/http_server/httpd_script_env.erl b/lib/inets/src/http_server/httpd_script_env.erl
index d3c7b5e1c6..11e074af00 100644
--- a/lib/inets/src/http_server/httpd_script_env.erl
+++ b/lib/inets/src/http_server/httpd_script_env.erl
@@ -61,12 +61,11 @@ which_port(#mod{config_db = ConfigDb}) ->
 which_peername(#mod{init_data = #init_data{peername = {_, RemoteAddr}}}) ->
     RemoteAddr.
 
-which_peercert(#mod{socket_type = {Type, _}, socket = Socket}) when Type == essl;
-								    Type == ssl ->
+which_peercert(#mod{socket_type = {ssl, _}, socket = Socket}) ->
     case ssl:peercert(Socket) of
 	{ok, Cert} ->
 	    Cert;
-	{error, no_peercert} -> 
+	{error, no_peercert} ->
 	    no_peercert;
 	_  ->
 	    undefined
diff --git a/lib/inets/src/http_server/httpd_sup.erl b/lib/inets/src/http_server/httpd_sup.erl
index 0d4ad772d4..34ffb0bbf4 100644
--- a/lib/inets/src/http_server/httpd_sup.erl
+++ b/lib/inets/src/http_server/httpd_sup.erl
@@ -63,7 +63,6 @@ start_child(Config) ->
 	    Error
     end.
     
-
 restart_child(Address, Port, Profile) ->
     Name = id(Address, Port, Profile),
     case supervisor:terminate_child(?MODULE, Name) of
@@ -254,90 +253,12 @@ listen_loop() ->
     end.
 
 socket_type(Config) ->
-    SocketType = proplists:get_value(socket_type, Config, ip_comm), 
-    socket_type(SocketType, Config).
-
--spec socket_type(SocketType | Term) -> SocketType when
-      Term       :: term(),
-      SocketType :: ip_comm | {ip_comm, _Value} | {ssl, _Value}.
-socket_type(ip_comm = SocketType, _) ->
-    SocketType;
-socket_type({ip_comm, _} = SocketType, _) ->
-    SocketType;
-socket_type({essl, _} = SocketType, _) ->
-    SocketType;
-socket_type(_, Config) ->
-    {essl, ssl_config(Config)}.
-
-%%% Backwards compatibility    
-ssl_config(Config) ->
-    ssl_certificate_key_file(Config) ++
-	ssl_verify_client(Config) ++
-	ssl_ciphers(Config) ++
-	ssl_password(Config) ++
-	ssl_verify_depth(Config) ++
-	ssl_ca_certificate_file(Config).
-
-ssl_certificate_key_file(Config) ->
-    case proplists:get_value(ssl_certificate_key_file, Config) of
-	undefined ->
-	    [];
-	SSLCertificateKeyFile ->
-	    [{keyfile,SSLCertificateKeyFile}]
-    end.
-
-ssl_verify_client(Config) ->
-    case proplists:get_value(ssl_verify_client, Config) of
-	undefined ->
-	    [];
-	SSLVerifyClient ->
-	    [{verify,SSLVerifyClient}]
-    end.
-
-ssl_ciphers(Config) ->
-    case proplists:get_value(ssl_ciphers, Config) of
-	undefined ->
-	    [];
-	Ciphers ->
-	    [{ciphers, Ciphers}]
-    end.
-
-ssl_password(Config) ->
-    case  proplists:get_value(ssl_password_callback_module, Config) of
-	undefined ->
-	    [];
-	Module ->
-	    case proplists:get_value(ssl_password_callback_function, Config) of
-		undefined ->
-		    [];
-		Function ->
-		    Args = case  proplists:get_value(ssl_password_callback_arguments, Config) of
-			       undefined ->
-				   [];
-			       Arguments  ->
-				   [Arguments]
-			   end,
-		    Password = apply(Module, Function, Args),
-		    [{password, Password}]
-	    end
-    end.
-
-ssl_verify_depth(Config) ->
-    case proplists:get_value(ssl_verify_client_depth, Config) of
-	undefined ->
-	    [];
-	Depth ->
-	    [{depth, Depth}]
-    end.
-
-ssl_ca_certificate_file(Config) ->
-    case proplists:get_value(ssl_ca_certificate_file, Config) of
-	undefined ->
-	    [];
-	File ->
-	    [{cacertfile, File}]
-    end.
-
+   case proplists:get_value(socket_type, Config, ip_comm) of
+       {essl, Value} ->
+           {ssl, Value};
+       Other ->
+            Other
+   end.   
 -spec get_fd(Port) -> Object when
       Port :: integer(),
       Object :: {ok, integer() | undefined} | {error, {bad_descriptor, term()}}.
diff --git a/lib/inets/src/http_server/mod_alias.erl b/lib/inets/src/http_server/mod_alias.erl
index 94607e705a..b5c4087ab4 100644
--- a/lib/inets/src/http_server/mod_alias.erl
+++ b/lib/inets/src/http_server/mod_alias.erl
@@ -91,8 +91,9 @@ port_string(Port) ->
 
 get_protocol(ip_comm) ->
     "http://";
-get_protocol(_) ->
-    %% Should clean up to have only one ssl type essl vs ssl is not relevant any more
+get_protocol({ip_comm, _}) ->
+    "http://";
+get_protocol({ssl, _}) ->
     "https://".
 
 %% real_name
diff --git a/lib/inets/test/httpc_SUITE.erl b/lib/inets/test/httpc_SUITE.erl
index 1375f083fe..9e43deb598 100644
--- a/lib/inets/test/httpc_SUITE.erl
+++ b/lib/inets/test/httpc_SUITE.erl
@@ -249,6 +249,8 @@ init_per_group(Group, Config0) when Group =:= sim_https; Group =:= https;
     try crypto:start() of
         ok ->
             start_apps(Group),
+             httpc:set_options([{keep_alive_timeout, 50000},
+                                {max_keep_alive_length, 5}]),
             do_init_per_group(Group, Config0)
     catch
         _:_ ->
diff --git a/lib/inets/test/httpd_SUITE.erl b/lib/inets/test/httpd_SUITE.erl
index a811d49c02..dc93812d00 100644
--- a/lib/inets/test/httpd_SUITE.erl
+++ b/lib/inets/test/httpd_SUITE.erl
@@ -1924,7 +1924,7 @@ do_max_clients(Config) ->
 	    ok
     end,
     inets_test_lib:close(Type, Socket),
-    ct:sleep(100), %% Avoid possible timing issues
+    ct:sleep(5000), %% Avoid possible timing issues
     ok = httpd_test_lib:verify_request(Type, Host, 
 				       Port,
 				       transport_opts(Type, Config),
diff --git a/lib/inets/test/httpd_bench_SUITE.erl b/lib/inets/test/httpd_bench_SUITE.erl
index 65897176a4..85cd67f18e 100644
--- a/lib/inets/test/httpd_bench_SUITE.erl
+++ b/lib/inets/test/httpd_bench_SUITE.erl
@@ -449,7 +449,7 @@ start_web_server(Group, Config) when Group == https_inets;
 				     Group == https_inets_keep_alive ->
     Opts = proplists:get_value(server_verification_opts, cert_opts(Config)),
     ReuseSessions = ?config(reuse_sessions, Config),
-    SSLConfHttpd = [{socket_type, {essl,
+    SSLConfHttpd = [{socket_type, {ssl,
 				   [{nodelay, true}, {reuse_sessions, ReuseSessions} | Opts]}}],
     start_inets("https", SSLConfHttpd, Config);
 
diff --git a/lib/inets/test/httpd_time_test.erl b/lib/inets/test/httpd_time_test.erl
index a31f40ce63..c03ef6c588 100644
--- a/lib/inets/test/httpd_time_test.erl
+++ b/lib/inets/test/httpd_time_test.erl
@@ -47,7 +47,7 @@ t2(Host, Port) ->
 
 
 t4(Host, Port) ->
-    t(essl, Host, Port).
+    t(ssl, Host, Port).
 
 
 t(SocketType, Host, Port) ->
diff --git a/lib/inets/test/inets_test_lib.erl b/lib/inets/test/inets_test_lib.erl
index 1cc4e11e45..01793714fd 100644
--- a/lib/inets/test/inets_test_lib.erl
+++ b/lib/inets/test/inets_test_lib.erl
@@ -207,12 +207,12 @@ ensure_loaded(App) ->
 %%
 
 start_http_server(Conf) ->
-    start_http_server(Conf, ?HTTP_DEFAULT_SSL_KIND).
+    start_http_server(Conf, ssl).
 
-start_http_server(Conf, essl = _SslTag) ->
-    tsp("start_http_server(essl) -> try start crypto"),
+start_http_server(Conf, ssl = _SslTag) ->
+    tsp("start_http_server(ssl) -> try start crypto"),
     application:start(crypto), 
-    tsp("start_http_server(essl) -> try start public_key"),
+    tsp("start_http_server(ssl) -> try start public_key"),
     application:start(public_key), 
     do_start_http_server(Conf);
 start_http_server(Conf, SslTag) ->
@@ -252,9 +252,9 @@ do_start_http_server(Conf) ->
     end.
 	    
 start_http_server_ssl(FileName) ->
-    start_http_server_ssl(FileName, ?HTTP_DEFAULT_SSL_KIND).
+    start_http_server_ssl(FileName, ssl).
 
-start_http_server_ssl(FileName, essl = _SslTag) ->
+start_http_server_ssl(FileName, ssl = _SslTag) ->
     application:start(crypto), 
     do_start_http_server_ssl(FileName);
 start_http_server_ssl(FileName, _SslTag) ->
@@ -459,9 +459,6 @@ connect_bin(SockType, Host, Port) ->
 connect_bin(ssl, Host, Port, Opts0) ->
     Opts = [binary, {packet,0} | Opts0], 
     connect(ssl, Host, Port, Opts);
-connect_bin(essl, Host, Port, Opts0) ->
-    Opts = [{ssl_imp, new}, binary, {packet,0}| Opts0], 
-    connect(ssl, Host, Port, Opts);
 connect_bin(ip_comm, Host, Port, Opts0) ->
     Opts = [binary, {packet, 0} | Opts0],
     connect(ip_comm, Host, Port, Opts);
@@ -472,13 +469,10 @@ connect_byte(SockType, Host, Port) ->
     connect_byte(SockType, Host, Port, []).
     
 connect_byte(ssl, Host, Port, Opts0) ->
-    Opts = [{packet,0} | Opts0], 
-    connect(ssl, Host, Port, Opts);
-connect_byte(essl, Host, Port, Opts0) ->
-    Opts = [{ssl_imp, new}, {packet,0} | Opts0], 
+    Opts = [list, {packet,0} | Opts0], 
     connect(ssl, Host, Port, Opts);
 connect_byte(ip_comm, Host, Port, Opts0) ->
-    Opts = [{packet,0} | Opts0],
+    Opts = [list, {packet,0} | Opts0],
     connect(ip_comm, Host, Port, Opts);
 connect_byte(Type, Host, Port, Opts) ->
     connect(Type, Host, Port, Opts).
@@ -498,8 +492,6 @@ connect(openssl_port, Host, Port, Opts) ->
 
 send(ssl, Socket, Data) ->
     ssl:send(Socket, Data);
-send(essl, Socket, Data) ->
-    ssl:send(Socket, Data);
 send(ip_comm,Socket,Data) ->
     gen_tcp:send(Socket,Data);
 send(openssl_port, Port, Data) ->
@@ -507,8 +499,6 @@ send(openssl_port, Port, Data) ->
     ok.
 close(ssl,Socket) ->
     catch ssl:close(Socket);
-close(essl,Socket) ->
-    catch ssl:close(Socket);
 close(ip_comm,Socket) ->
     catch gen_tcp:close(Socket);
 close(openssl_port, Port) ->
-- 
2.35.3

openSUSE Build Service is sponsored by