From 1e07ca77a095d219428efeb917422a7460a224a3 Mon Sep 17 00:00:00 2001 From: Sina Ghaderi <32870524+Sina-Ghaderi@users.noreply.github.com> Date: Sat, 5 Feb 2022 00:13:57 +0330 Subject: [PATCH] Fix Google Panic issue #2 Fixing issue #2 .. and performance improvement... --- ntcp/ntcp.go | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/ntcp/ntcp.go b/ntcp/ntcp.go index 9defe4a..57f99b6 100644 --- a/ntcp/ntcp.go +++ b/ntcp/ntcp.go @@ -81,17 +81,12 @@ func (rc *httpHostRead) setIoWriter(wr io.Writer) { rc.te = io.TeeReader(rc.re, func (rc *sniTLSLoadHs) setIoWriter(wr io.Writer) { rc.te = io.TeeReader(rc.re, wr) } type forgeReader struct { - reader io.Reader - missing []byte + reader io.Reader + missig io.Reader } func (p *forgeReader) Read(b []byte) (int, error) { - n, err := p.reader.Read(b) - if err != nil { - return n, err - } - copy(b, append(p.missing, b...)) - return n + len(p.missing), err + return io.MultiReader(p.missig, p.reader).Read(b) } func NewProxy() *proxyTLS { @@ -153,7 +148,8 @@ func (str *proxyTLS) handleTLSConn(inConn net.Conn, miss []byte) { } header, fread, err := peekClientHost( - &sniTLSLoadHs{re: &forgeReader{reader: inConn, missing: miss}}) + &sniTLSLoadHs{re: &forgeReader{ + reader: inConn, missig: bytes.NewReader(miss)}}) if err != nil { opts.CONNEC(err, inConn.RemoteAddr().String()) return @@ -218,7 +214,9 @@ func (str *proxyTLS) handleHTTPConn(inConn net.Conn, miss []byte) { } header, fread, err := peekClientHost( - &httpHostRead{re: &forgeReader{reader: inConn, missing: miss}}) + &httpHostRead{re: &forgeReader{ + reader: inConn, missig: bytes.NewReader(miss), + }}) if err != nil { opts.CONNEC(err, inConn.RemoteAddr().String()) return