From 56322bfb4448ffbe99264b98dd327d49ed766486 Mon Sep 17 00:00:00 2001 From: Emir Aganovic Date: Thu, 5 Dec 2024 22:55:40 +0100 Subject: [PATCH] feat: expose TransportBufferSize for more control how much buffering should be used when reading from connection #145 --- sip/transport.go | 5 +++-- sip/transport_tcp.go | 2 +- sip/transport_udp.go | 2 +- sip/transport_ws.go | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/sip/transport.go b/sip/transport.go index c93d9ac..ffe621b 100644 --- a/sip/transport.go +++ b/sip/transport.go @@ -13,6 +13,9 @@ var ( // 0 - close connection immediatelly after transaction terminate // 1 - keep connection idle after transaction termination IdleConnection int = 1 + + // TransportBufferSize sets this buffer size to use on reading SIP messages. + TransportBufferSize uint16 = 65535 ) const ( @@ -34,8 +37,6 @@ const ( TransportWS = "WS" TransportWSS = "WSS" - transportBufferSize uint16 = 65535 - // TransportFixedLengthMessage sets message size limit for parsing and avoids stream parsing TransportFixedLengthMessage uint16 = 0 ) diff --git a/sip/transport_tcp.go b/sip/transport_tcp.go index ed8660f..48c6f53 100644 --- a/sip/transport_tcp.go +++ b/sip/transport_tcp.go @@ -131,7 +131,7 @@ func (t *transportTCP) initConnection(conn net.Conn, raddr string, handler Messa // This should performe better to avoid any interface allocation func (t *transportTCP) readConnection(conn *TCPConnection, laddr string, raddr string, handler MessageHandler) { - buf := make([]byte, transportBufferSize) + buf := make([]byte, TransportBufferSize) defer t.pool.Delete(laddr) defer t.pool.CloseAndDelete(conn, raddr) diff --git a/sip/transport_udp.go b/sip/transport_udp.go index f2ded95..9d7269b 100644 --- a/sip/transport_udp.go +++ b/sip/transport_udp.go @@ -180,7 +180,7 @@ func (t *transportUDP) readUDPConnection(conn *UDPConnection, raddr string, ladd } */ func (t *transportUDP) readListenerConnection(conn *UDPConnection, laddr string, handler MessageHandler) { - buf := make([]byte, transportBufferSize) + buf := make([]byte, TransportBufferSize) defer t.pool.CloseAndDelete(conn, laddr) defer t.log.Debug().Str("addr", laddr).Msg("Read listener connection stopped") diff --git a/sip/transport_ws.go b/sip/transport_ws.go index 5af6241..5c880b3 100644 --- a/sip/transport_ws.go +++ b/sip/transport_ws.go @@ -126,7 +126,7 @@ func (t *transportWS) initConnection(conn net.Conn, raddr string, clientSide boo // This should performe better to avoid any interface allocation func (t *transportWS) readConnection(conn *WSConnection, laddr string, raddr string, handler MessageHandler) { - buf := make([]byte, transportBufferSize) + buf := make([]byte, TransportBufferSize) // defer conn.Close() // defer t.pool.Del(raddr) defer t.pool.Delete(laddr)