@@ -36,8 +36,8 @@ type TransportLayer struct {
3636
3737 log * slog.Logger
3838
39- // ConnectionReuse will force connection reuse when passing request
40- ConnectionReuse bool
39+ // connectionReuse will force connection reuse when passing request
40+ connectionReuse bool
4141
4242 // PreferSRV does always SRV lookup first
4343 DNSPreferSRV bool
@@ -53,6 +53,12 @@ func WithTransportLayerLogger(logger *slog.Logger) TransportLayerOption {
5353 }
5454}
5555
56+ func WithTransportLayerConnectionReuse (f bool ) TransportLayerOption {
57+ return func (l * TransportLayer ) {
58+ l .connectionReuse = f
59+ }
60+ }
61+
5662// NewLayer creates transport layer.
5763// dns Resolver
5864// sip parser
@@ -67,7 +73,7 @@ func NewTransportLayer(
6773 transports : make (map [string ]Transport ),
6874 listenPorts : make (map [string ][]int ),
6975 dnsResolver : dnsResolver ,
70- ConnectionReuse : true ,
76+ connectionReuse : true ,
7177 log : slog .With ("caller" , "TransportLayer" ),
7278 }
7379
@@ -83,21 +89,24 @@ func NewTransportLayer(
8389 // Exporting transport configuration
8490 // UDP
8591 l .udp = & transportUDP {
86- log : l .log .With ("caller" , "Transport<UDP>" ),
92+ log : l .log .With ("caller" , "Transport<UDP>" ),
93+ connectionReuse : l .connectionReuse ,
8794 }
8895 l .udp .init (sipparser )
8996
9097 // TCP
9198 l .tcp = & transportTCP {
92- log : l .log .With ("caller" , "Transport<TCP>" ),
99+ log : l .log .With ("caller" , "Transport<TCP>" ),
100+ connectionReuse : l .connectionReuse ,
93101 }
94102 l .tcp .init (sipparser )
95103
96104 // TLS
97105 // TODO. Using default dial tls, but it needs to configurable via client
98106 l .tls = & transportTLS {
99107 transportTCP : & transportTCP {
100- log : l .log .With ("caller" , "Transport<TLS>" ),
108+ log : l .log .With ("caller" , "Transport<TLS>" ),
109+ connectionReuse : l .connectionReuse ,
101110 },
102111 }
103112 l .tls .init (sipparser , tlsConfig )
@@ -112,7 +121,8 @@ func NewTransportLayer(
112121 // TODO. Using default dial tls, but it needs to configurable via client
113122 l .wss = & transportWSS {
114123 transportWS : & transportWS {
115- log : l .log .With ("caller" , "Transport<WSS>" ),
124+ log : l .log .With ("caller" , "Transport<WSS>" ),
125+ connectionReuse : l .connectionReuse ,
116126 },
117127 }
118128 l .wss .init (sipparser , tlsConfig )
@@ -389,7 +399,7 @@ func (l *TransportLayer) ClientRequestConnection(ctx context.Context, req *Reque
389399 // This is probably client forcing host:port
390400 if laddr .IP != nil && laddr .Port > 0 {
391401 c = transport .GetConnection (laddr .String ())
392- } else if l .ConnectionReuse {
402+ } else if l .connectionReuse {
393403 // viaHop.Params.Add("alias", "")
394404 addr := raddr .String ()
395405 c = transport .GetConnection (addr )
0 commit comments