diff --git a/peer.go b/peer.go index 4173de8..2dc5ef3 100644 --- a/peer.go +++ b/peer.go @@ -89,6 +89,8 @@ type Peer struct { writerWg *sync.WaitGroup reconnectingWg *sync.WaitGroup healthMonitorWg *sync.WaitGroup + + buffSize int } // NewPeer returns a new bitcoin peer for the provided address and configuration. @@ -121,6 +123,7 @@ func NewPeer(logger *slog.Logger, address string, peerHandler PeerHandlerI, netw readerWg: &sync.WaitGroup{}, reconnectingWg: &sync.WaitGroup{}, healthMonitorWg: &sync.WaitGroup{}, + buffSize: 4096, } var err error @@ -405,7 +408,7 @@ func (p *Peer) startReadHandler(ctx context.Context) { return } - reader := bufio.NewReader(&io.LimitedReader{R: readConn, N: p.maximumMessageSize}) + reader := bufio.NewReaderSize(&io.LimitedReader{R: readConn, N: p.maximumMessageSize}, p.buffSize) for { select { case <-ctx.Done(): diff --git a/peer_options.go b/peer_options.go index 6b8d739..e8e05ed 100644 --- a/peer_options.go +++ b/peer_options.go @@ -72,3 +72,10 @@ func WithPingInterval(pingInterval time.Duration, connectionHealthThreshold time return nil } } + +func WithReadBufferSize(size int) PeerOptions { + return func(p *Peer) error { + p.buffSize = size + return nil + } +}