From c40cc02c334a7a91506cb290799d26efe6ebce41 Mon Sep 17 00:00:00 2001 From: zak Date: Wed, 7 Sep 2022 01:29:25 +0800 Subject: [PATCH] proxyproto listener handle conn without header --- common/proxyproto/listener.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/common/proxyproto/listener.go b/common/proxyproto/listener.go index e70e097e..df41cbfe 100644 --- a/common/proxyproto/listener.go +++ b/common/proxyproto/listener.go @@ -22,7 +22,7 @@ func (l *Listener) Accept() (net.Conn, error) { } bufReader := std_bufio.NewReader(conn) header, err := proxyproto.Read(bufReader) - if err != nil { + if err != nil && err != proxyproto.ErrNoProxyProtocol { return nil, err } if bufReader.Buffered() > 0 { @@ -33,8 +33,11 @@ func (l *Listener) Accept() (net.Conn, error) { } conn = bufio.NewCachedConn(conn, cache) } - return &bufio.AddrConn{Conn: conn, Metadata: M.Metadata{ - Source: M.SocksaddrFromNet(header.SourceAddr), - Destination: M.SocksaddrFromNet(header.DestinationAddr), - }}, nil + if header != nil { + return &bufio.AddrConn{Conn: conn, Metadata: M.Metadata{ + Source: M.SocksaddrFromNet(header.SourceAddr), + Destination: M.SocksaddrFromNet(header.DestinationAddr), + }}, nil + } + return conn, nil }