File 1029-Fix-dtls-listen-on-ipv6-with-default-ip.patch of Package erlang

From 8025f891bc3940dea2420c49861d323b0d765d5d Mon Sep 17 00:00:00 2001
From: Dan Gudmundsson <dgud@erlang.org>
Date: Wed, 20 Mar 2024 10:47:26 +0100
Subject: [PATCH 1/3] Fix dtls listen on ipv6 with default ip

IP adress always defaulted to {0,0,0,0} even for ipv6 connections,
which caused a single entry if you where listening on both stacks.

Fixes #7955
---
 lib/ssl/src/dtls_socket.erl | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/lib/ssl/src/dtls_socket.erl b/lib/ssl/src/dtls_socket.erl
index 7122aa0252..fbb72f59ef 100644
--- a/lib/ssl/src/dtls_socket.erl
+++ b/lib/ssl/src/dtls_socket.erl
@@ -50,7 +50,7 @@ listen(Port, #config{inet_ssl = SockOpts,
                      ssl = SslOpts,
                      emulated = EmOpts,
                      inet_user = Options} = Config) ->
-    IP = proplists:get_value(ip, SockOpts, {0,0,0,0}),
+    IP = proplists:get_value(ip, SockOpts, default_ip(SockOpts)),
     case dtls_listener_sup:lookup_listener(IP, Port) of
         undefined ->
             start_new_listener(IP, Port, Config);
@@ -95,13 +95,17 @@ connect(Address, Port, #config{transport_info = {Transport, _, _, _, _} = CbInfo
 
 close(#sslsocket{pid = {dtls, #config{dtls_handler = {Pid, Port0},
                                       inet_ssl = SockOpts}}}) ->
-    IP = proplists:get_value(ip, SockOpts, {0,0,0,0}),
+    IP = proplists:get_value(ip, SockOpts, default_ip(SockOpts)),
     Port = get_real_port(Pid, Port0),
     dtls_listener_sup:register_listener({undefined, Pid}, IP, Port),
-    dtls_packet_demux:close(Pid).   
+    dtls_packet_demux:close(Pid).
+
+default_ip(SockOpts) ->
+    case proplists:get_value(inet6, SockOpts, false) of
+                false -> {0,0,0,0};
+                true  -> {0,0,0,0, 0,0,0,0}
+    end.
 
-close(_, dtls) ->
-    ok;
 close(gen_udp, {_Client, _Socket}) ->
     ok;
 close(Transport, {_Client, Socket}) ->
-- 
2.35.3

openSUSE Build Service is sponsored by