File 5803-Add-new-api-eldap-info-1.patch of Package erlang

From b72877ff5ffe61c39d9fa804ffb32b3864f0c132 Mon Sep 17 00:00:00 2001
From: anupamasingh10 <anupamasingh31@gmail.com>
Date: Thu, 9 Mar 2023 12:17:27 +0100
Subject: [PATCH 3/8] Add new api eldap:info/1

---
 lib/eldap/doc/src/eldap.xml          | 25 ++++--------------
 lib/eldap/src/eldap.erl              | 23 +++++-----------
 lib/eldap/test/eldap_basic_SUITE.erl | 39 ++++++++--------------------
 lib/ssl/src/ssl.erl                  |  4 +--
 4 files changed, 24 insertions(+), 67 deletions(-)

diff --git a/lib/eldap/doc/src/eldap.xml b/lib/eldap/doc/src/eldap.xml
index 5efcbd4c86..edc308ba52 100644
--- a/lib/eldap/doc/src/eldap.xml
+++ b/lib/eldap/doc/src/eldap.xml
@@ -549,29 +549,14 @@ Control2 = eldap:paged_result_control(PageSize, Cookie1),
       </desc>
     </func>
     <func>
-      <name since="OTP 26.0">conn_info(Handle) -> {ok, Data} | {error, Reason}</name>
-      <fsummary>When LDAP is run over TLS, returns information about the TLS connection.
+      <name since="OTP 26.0">info(Handle) -> #{socket := Socket, socket_type := tcp | ssl}</name>
+      <fsummary>Returns the SSL or TCP socket for LDAP connection.
       </fsummary>
       <type>
-	<v>Handle = handle()</v>
-	<v>Data = ssl:connection_info()</v>
-      </type>
-      <desc><p>Returns the most relevant information for SSL connection to an LDAP server.
-      See also ssl:connection_information/1.</p>
-      </desc>
-    </func>
-    <func>
-      <name since="OTP 26.0">conn_info(Handle, Items) -> {ok, Data} | {error, Reason}</name>
-      <fsummary>When LDAP is run over TLS, returns requested information items about the TLS
-      connection.
-      </fsummary>
-      <type>
-	<v>Handle = handle()</v>
-	<v>Items = ssl:connection_info_items()</v>
-	<v>Data = ssl:connection_info()</v>
+	<v>Socket = ssl:sslsocket() | gen_tcp:socket()</v>
       </type>
-      <desc><p>Returns the requested information items about the SSL connection to LDAP server,
-      if they are defined. See also ssl:connection_information/2.</p>
+      <desc><p>Returns the socket type and socket for a TCP/SSL connection
+      to an LDAP server</p>
       </desc>
     </func>
 
diff --git a/lib/eldap/src/eldap.erl b/lib/eldap/src/eldap.erl
index cc27a31966..ab6363a28b 100644
--- a/lib/eldap/src/eldap.erl
+++ b/lib/eldap/src/eldap.erl
@@ -31,8 +31,7 @@
 	 paged_result_control/1,
 	 paged_result_control/2,
 	 paged_result_cookie/1,
-         conn_info/1,
-         conn_info/2]).
+         info/1]).
 
 -export([neverDerefAliases/0, derefInSearching/0,
          derefFindingBaseObj/0, derefAlways/0]).
@@ -157,13 +156,10 @@ controlling_process(Handle, Pid) when is_pid(Handle), is_pid(Pid)  ->
     recv(Handle).
 
 %%% --------------------------------------------------------------------
-%%% Return LDAP connection information
+%%% Return LDAP socket information
 %%% --------------------------------------------------------------------
-conn_info(Handle) when is_pid(Handle) ->
-    conn_info(Handle, []).
-
-conn_info(Handle, Items) when is_pid(Handle) ->
-    send(Handle, {conn_info, Items}),
+info(Handle) when is_pid(Handle) ->
+    send(Handle, info),
     recv(Handle).
 
 %%% --------------------------------------------------------------------
@@ -620,13 +616,13 @@ loop(Cpid, Data) ->
 	    send(From, Result),
 	    ?MODULE:loop(Cpid, Data);
 
-        {From, {conn_info, Items}} ->
+        {From, info} ->
             Res =
                 case Data#eldap.ldaps of
                     true ->
-                        get_ssl_conn_info(Data#eldap.fd, Items);
+                        #{socket => Data#eldap.fd, socket_type => ssl};
                     false ->
-                        {error, "Not an SSL connection"} 
+                        #{socket => Data#eldap.fd, socket_type => tcp} 
                 end,
             send(From, Res),
             ?MODULE:loop(Cpid, Data);
@@ -641,11 +637,6 @@ loop(Cpid, Data) ->
 
     end.
 
-get_ssl_conn_info(SockFd, []) ->
-    ssl:connection_information(SockFd);
-get_ssl_conn_info(SockFd, Items) ->
-    ssl:connection_information(SockFd, Items).
-
 %%% --------------------------------------------------------------------
 %%% startTLS Request
 %%% --------------------------------------------------------------------
diff --git a/lib/eldap/test/eldap_basic_SUITE.erl b/lib/eldap/test/eldap_basic_SUITE.erl
index 1c283a1f82..2b26ed52bd 100644
--- a/lib/eldap/test/eldap_basic_SUITE.erl
+++ b/lib/eldap/test/eldap_basic_SUITE.erl
@@ -46,7 +46,7 @@
          more_add/1,
          open_ret_val_error/1,
          open_ret_val_success/1,
-         plain_ldap_conn_info_error/1,
+         plain_ldap_socket_info/1,
          search_filter_and/1,
          search_filter_and_not/1,
          search_filter_equalityMatch/1,
@@ -64,8 +64,7 @@
          search_extensible_match_without_dn/1,
          search_paged_results/1,
          ssl_connection/1,
-         ssl_conn_info/1,
-         ssl_conn_info_items/1,
+         ssl_conn_socket_info/1,
          start_tls_on_ssl_should_fail/1,
          start_tls_twice_should_fail/1,
          tcp_connection/1,
@@ -163,9 +162,8 @@ connection_tests() ->
      client_side_add_timeout,
      client_side_search_timeout,
      close_after_tcp_error,
-     ssl_conn_info,
-     ssl_conn_info_items,
-     plain_ldap_conn_info_error
+     ssl_conn_socket_info,
+     plain_ldap_socket_info
     ].
 
 
@@ -265,7 +263,7 @@ end_per_group(start_tls_api, Config) -> clear_db(Config);
 end_per_group(_Group, Config) -> Config.
 
 
-init_per_testcase(TC, Config) when TC == ssl_connection; TC == ssl_conn_info; TC == ssl_conn_info_items ->
+init_per_testcase(TC, Config) when TC == ssl_connection; TC == ssl_conn_socket_info ->
     case proplists:get_value(ssl_available,Config) of
 	true ->
 	    SSL_Port = 9999,
@@ -429,7 +427,7 @@ ssl_connection(Config) ->
     end.
 
 %%%----------------------------------------------------------------
-ssl_conn_info(Config) ->
+ssl_conn_socket_info(Config) ->
     Host = proplists:get_value(listen_host, Config),
     Port = proplists:get_value(ssl_listen_port, Config),
     Opts = proplists:get_value(tcp_connect_opts, Config),
@@ -439,36 +437,21 @@ ssl_conn_info(Config) ->
 			     {timeout,5000},
 			     {sslopts,SSLOpts}|Opts]) of
 	{ok,H} ->
-            ?assertMatch({ok, _Data}, eldap:conn_info(H));
+            #{socket := Socket, socket_type := ssl} = eldap:info(H),
+            ?assertMatch({ok, _Data}, ssl:connection_information(Socket));
 	Other -> ct:fail("eldap:open failed: ~p",[Other])
     end.
 
 %%%----------------------------------------------------------------
-ssl_conn_info_items(Config) ->
-    Host = proplists:get_value(listen_host, Config),
-    Port = proplists:get_value(ssl_listen_port, Config),
-    Opts = proplists:get_value(tcp_connect_opts, Config),
-    SSLOpts = proplists:get_value(ssl_connect_opts, Config),
-    case eldap:open([Host], [{port,Port},
-			     {ssl,true},
-			     {timeout,5000},
-			     {sslopts,SSLOpts}|Opts]) of
-	{ok,H} ->
-            ?assertEqual({ok, [{protocol, 'tlsv1.3'}, {session_resumption, false}]},
-                          eldap:conn_info(H, [protocol, session_resumption]));
-	Other -> ct:fail("eldap:open failed: ~p",[Other])
-    end.
-
-%%%----------------------------------------------------------------
-plain_ldap_conn_info_error(Config) ->
+plain_ldap_socket_info(Config) ->
     Host = proplists:get_value(listen_host, Config),
     Port = proplists:get_value(listen_port, Config),
     Opts = proplists:get_value(tcp_connect_opts, Config),
     T = 1000,
     case eldap:open([Host], [{timeout,T},{port,Port}|Opts]) of
         {ok,H} ->
-            ?assertMatch({error, "Not an SSL connection"},
-                          eldap:conn_info(H));
+            ?assertMatch(#{socket := _, socket_type := tcp},
+                          eldap:info(H));
         Other -> ct:fail("eldap:open failed: ~p",[Other])
     end.
 
diff --git a/lib/ssl/src/ssl.erl b/lib/ssl/src/ssl.erl
index d46b09cff7..8050b354bd 100644
--- a/lib/ssl/src/ssl.erl
+++ b/lib/ssl/src/ssl.erl
@@ -141,8 +141,7 @@
               named_curve/0,
               sign_scheme/0,
               group/0,
-              connection_info/0,
-              connection_info_items/0
+              connection_info/0
              ]).
 
 %% -------------------------------------------------------------------------------------------------------
-- 
2.35.3

openSUSE Build Service is sponsored by