From 4fd9a96f049e4066a6ff8aa169cdc75aec92b449 Mon Sep 17 00:00:00 2001 From: Emir Aganovic Date: Mon, 25 Nov 2024 09:36:18 +0100 Subject: [PATCH] fix: udp listen connection should be based on remote --- sip/transport_udp.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/sip/transport_udp.go b/sip/transport_udp.go index 91d0f6c..f2ded95 100644 --- a/sip/transport_udp.go +++ b/sip/transport_udp.go @@ -99,7 +99,14 @@ func (t *transportUDP) CreateConnection(ctx context.Context, laddr Addr, raddr A func (t *transportUDP) createConnection(ctx context.Context, laddr Addr, raddr Addr, handler MessageHandler) (Connection, error) { laddrStr := laddr.String() lc := &net.ListenConfig{} - udpconn, err := lc.ListenPacket(ctx, "udp", laddrStr) + + protocol := "udp" + if laddr.IP == nil && raddr.IP.To4() != nil { + // Use IPV4 if remote is same + protocol = "udp4" + } + + udpconn, err := lc.ListenPacket(ctx, protocol, laddrStr) if err != nil { return nil, err }