From eee23e6718b0115479c61769927da35bf3aa0d96 Mon Sep 17 00:00:00 2001 From: Darien Raymond Date: Sun, 11 Dec 2016 21:43:16 +0100 Subject: [PATCH] fix api usage --- app/dns/nameserver.go | 9 ++++++--- proxy/socks/protocol/socks.go | 4 ++-- transport/internet/headers/http/http.go | 6 ++++-- transport/internet/kcp/dialer.go | 3 +-- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/app/dns/nameserver.go b/app/dns/nameserver.go index 3ea1610a..01ff4c78 100644 --- a/app/dns/nameserver.go +++ b/app/dns/nameserver.go @@ -145,7 +145,7 @@ func (v *UDPNameServer) HandleResponse(dest v2net.Destination, payload *buf.Buff } func (v *UDPNameServer) BuildQueryA(domain string, id uint16) *buf.Buffer { - buffer := buf.New() + msg := new(dns.Msg) msg.Id = id msg.RecursionDesired = true @@ -156,8 +156,11 @@ func (v *UDPNameServer) BuildQueryA(domain string, id uint16) *buf.Buffer { Qclass: dns.ClassINET, }} - writtenBuffer, _ := msg.PackBuffer(buffer.Bytes()) - buffer.Append(writtenBuffer) + buffer := buf.New() + buffer.AppendSupplier(func(b []byte) (int, error) { + writtenBuffer, err := msg.PackBuffer(b) + return len(writtenBuffer), err + }) return buffer } diff --git a/proxy/socks/protocol/socks.go b/proxy/socks/protocol/socks.go index 4f59c3dc..0a17d381 100644 --- a/proxy/socks/protocol/socks.go +++ b/proxy/socks/protocol/socks.go @@ -136,7 +136,7 @@ func ReadUserPassRequest(reader io.Reader) (request Socks5UserPassRequest, err e if err != nil { return } - request.username = string(buffer.Bytes()) + request.username = buffer.String() err = buffer.AppendSupplier(buf.ReadFullFrom(reader, 1)) if err != nil { @@ -147,7 +147,7 @@ func ReadUserPassRequest(reader io.Reader) (request Socks5UserPassRequest, err e if err != nil { return } - request.password = string(buffer.Bytes()) + request.password = buffer.String() return } diff --git a/transport/internet/headers/http/http.go b/transport/internet/headers/http/http.go index cd66d456..d0ce52ad 100644 --- a/transport/internet/headers/http/http.go +++ b/transport/internet/headers/http/http.go @@ -58,8 +58,10 @@ func (*HeaderReader) Read(reader io.Reader) (*buf.Buffer, error) { break } if buffer.Len() >= len(ENDING) { - copy(buffer.Bytes(), buffer.BytesFrom(buffer.Len()-len(ENDING))) - buffer.Slice(0, len(ENDING)) + leftover := buffer.BytesFrom(buffer.Len() - len(ENDING)) + buffer.Reset(func(b []byte) (int, error) { + return copy(b, leftover), nil + }) } } if buffer.IsEmpty() { diff --git a/transport/internet/kcp/dialer.go b/transport/internet/kcp/dialer.go index 301dddfe..cb8a74c8 100644 --- a/transport/internet/kcp/dialer.go +++ b/transport/internet/kcp/dialer.go @@ -92,8 +92,7 @@ func (o *ClientConnection) Run() { defer payload.Release() for { - payload.Clear() - err := payload.AppendSupplier(buf.ReadFrom(o.Conn)) + err := payload.Reset(buf.ReadFrom(o.Conn)) if err != nil { payload.Release() return