mirror of
https://github.com/netbirdio/netbird.git
synced 2025-06-21 18:22:37 +02:00
Remove sync.pool
This commit is contained in:
parent
9ac5a1ed3f
commit
1c9c9ae47e
@ -5,12 +5,11 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"net"
|
"net"
|
||||||
"sync"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
"github.com/netbirdio/netbird/relay/client/dialer/udp"
|
"github.com/netbirdio/netbird/relay/client/dialer/ws"
|
||||||
"github.com/netbirdio/netbird/relay/messages"
|
"github.com/netbirdio/netbird/relay/messages"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -31,7 +30,6 @@ type Client struct {
|
|||||||
|
|
||||||
channelsPending map[string]chan net.Conn // todo: protect map with mutex
|
channelsPending map[string]chan net.Conn // todo: protect map with mutex
|
||||||
channels map[uint16]*connContainer
|
channels map[uint16]*connContainer
|
||||||
msgPool sync.Pool
|
|
||||||
|
|
||||||
relayConn net.Conn
|
relayConn net.Conn
|
||||||
relayConnState bool
|
relayConnState bool
|
||||||
@ -43,16 +41,11 @@ func NewClient(serverAddress, peerID string) *Client {
|
|||||||
peerID: peerID,
|
peerID: peerID,
|
||||||
channelsPending: make(map[string]chan net.Conn),
|
channelsPending: make(map[string]chan net.Conn),
|
||||||
channels: make(map[uint16]*connContainer),
|
channels: make(map[uint16]*connContainer),
|
||||||
msgPool: sync.Pool{
|
|
||||||
New: func() any {
|
|
||||||
return make([]byte, bufferSize)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) Connect() error {
|
func (c *Client) Connect() error {
|
||||||
conn, err := udp.Dial(c.serverAddress)
|
conn, err := ws.Dial(c.serverAddress)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -125,7 +118,7 @@ func (c *Client) readLoop() {
|
|||||||
var errExit error
|
var errExit error
|
||||||
var n int
|
var n int
|
||||||
for {
|
for {
|
||||||
buf := c.msgPool.Get().([]byte)
|
buf := make([]byte, bufferSize) // todo optimise buffer size, use pool
|
||||||
n, errExit = c.relayConn.Read(buf)
|
n, errExit = c.relayConn.Read(buf)
|
||||||
if errExit != nil {
|
if errExit != nil {
|
||||||
log.Debugf("failed to read message from relay server: %s", errExit)
|
log.Debugf("failed to read message from relay server: %s", errExit)
|
||||||
@ -135,7 +128,6 @@ func (c *Client) readLoop() {
|
|||||||
msgType, err := messages.DetermineServerMsgType(buf[:n])
|
msgType, err := messages.DetermineServerMsgType(buf[:n])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf("failed to determine message type: %s", err)
|
log.Errorf("failed to determine message type: %s", err)
|
||||||
c.msgPool.Put(buf)
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -147,13 +139,11 @@ func (c *Client) readLoop() {
|
|||||||
} else {
|
} else {
|
||||||
c.handleBindResponse(channelId, peerId)
|
c.handleBindResponse(channelId, peerId)
|
||||||
}
|
}
|
||||||
c.msgPool.Put(buf)
|
|
||||||
continue
|
continue
|
||||||
case messages.MsgTypeTransport:
|
case messages.MsgTypeTransport:
|
||||||
channelId, err := messages.UnmarshalTransportID(buf[:n])
|
channelId, err := messages.UnmarshalTransportID(buf[:n])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf("failed to parse transport message: %v", err)
|
log.Errorf("failed to parse transport message: %v", err)
|
||||||
c.msgPool.Put(buf)
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
go c.handleTransport(channelId, buf[:n])
|
go c.handleTransport(channelId, buf[:n])
|
||||||
@ -212,7 +202,6 @@ func (c *Client) writeTo(channelID uint16, payload []byte) (int, error) {
|
|||||||
|
|
||||||
func (c *Client) generateConnReaderFN(messageBufferChan chan []byte) func(b []byte) (n int, err error) {
|
func (c *Client) generateConnReaderFN(messageBufferChan chan []byte) func(b []byte) (n int, err error) {
|
||||||
return func(b []byte) (n int, err error) {
|
return func(b []byte) (n int, err error) {
|
||||||
defer c.msgPool.Put(b)
|
|
||||||
select {
|
select {
|
||||||
case msg, ok := <-messageBufferChan:
|
case msg, ok := <-messageBufferChan:
|
||||||
if !ok {
|
if !ok {
|
||||||
|
@ -124,7 +124,7 @@ func transportTo(conn net.Conn, channelID uint16, msg []byte) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func handShake(conn net.Conn) (*Peer, error) {
|
func handShake(conn net.Conn) (*Peer, error) {
|
||||||
buf := make([]byte, 65535) // todo: reduce the buffer size
|
buf := make([]byte, 1500)
|
||||||
n, err := conn.Read(buf)
|
n, err := conn.Read(buf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf("failed to read message: %s", err)
|
log.Errorf("failed to read message: %s", err)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user