@@ -52,7 +52,6 @@ type Conn struct {
5252 readErr error
5353 conn net.Conn
5454 bufReader * bufio.Reader
55- reader io.Reader
5655 header * Header
5756 ProxyHeaderPolicy Policy
5857 Validate Validator
@@ -155,11 +154,9 @@ func NewConn(conn net.Conn, opts ...func(*Conn)) *Conn {
155154 // For v2 the header length is at most 52 bytes plus the length of the TLVs.
156155 // We use 256 bytes to be safe.
157156 const bufSize = 256
158- br := bufio .NewReaderSize (conn , bufSize )
159157
160158 pConn := & Conn {
161- bufReader : br ,
162- reader : io .MultiReader (br , conn ),
159+ bufReader : bufio .NewReaderSize (conn , bufSize ),
163160 conn : conn ,
164161 }
165162
@@ -181,7 +178,7 @@ func (p *Conn) Read(b []byte) (int, error) {
181178 return 0 , p .readErr
182179 }
183180
184- return p .reader .Read (b )
181+ return p .bufReader .Read (b )
185182}
186183
187184// Write wraps original conn.Write
@@ -363,27 +360,5 @@ func (p *Conn) WriteTo(w io.Writer) (int64, error) {
363360 if p .readErr != nil {
364361 return 0 , p .readErr
365362 }
366-
367- b := make ([]byte , p .bufReader .Buffered ())
368- if _ , err := p .bufReader .Read (b ); err != nil {
369- return 0 , err // this should never as we read buffered data
370- }
371-
372- var n int64
373- {
374- nn , err := w .Write (b )
375- n += int64 (nn )
376- if err != nil {
377- return n , err
378- }
379- }
380- {
381- nn , err := io .Copy (w , p .conn )
382- n += nn
383- if err != nil {
384- return n , err
385- }
386- }
387-
388- return n , nil
363+ return p .bufReader .WriteTo (w )
389364}
0 commit comments