mirror of
https://github.com/gospider007/requests.git
synced 2025-12-24 13:57:52 +08:00
sync
This commit is contained in:
2
body.go
2
body.go
@@ -110,7 +110,7 @@ func formWrite(writer *multipart.Writer, key string, val any) (err error) {
|
||||
case string:
|
||||
_, err = wp.Write(tools.StringToBytes(content))
|
||||
case io.Reader:
|
||||
_, err = io.Copy(wp, content)
|
||||
_, err = tools.Copy(wp, content)
|
||||
default:
|
||||
con, err := gson.Encode(content)
|
||||
if err != nil {
|
||||
|
||||
@@ -12,10 +12,11 @@ import (
|
||||
)
|
||||
|
||||
type CompressionConn struct {
|
||||
conn net.Conn
|
||||
w io.WriteCloser
|
||||
r io.ReadCloser
|
||||
f interface{ Flush() error }
|
||||
conn net.Conn
|
||||
oneFunc func()
|
||||
w io.WriteCloser
|
||||
r io.ReadCloser
|
||||
f interface{ Flush() error }
|
||||
}
|
||||
type Compression interface {
|
||||
OpenReader(r io.Reader) (io.ReadCloser, error)
|
||||
@@ -93,7 +94,7 @@ func NewCompression(decode string, leval CompressionLevel) (Compression, error)
|
||||
if n != 1 {
|
||||
return nil, errors.New("invalid response")
|
||||
}
|
||||
return flate.NewWriter(w, flate.BestCompression)
|
||||
return flate.NewWriter(w, flate.DefaultCompression)
|
||||
},
|
||||
}
|
||||
default:
|
||||
@@ -111,7 +112,16 @@ func NewCompressionConn(conn net.Conn, arch Compression) (net.Conn, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
ccon := &CompressionConn{conn: conn, r: r, w: w}
|
||||
|
||||
ccon := &CompressionConn{
|
||||
conn: conn,
|
||||
r: r,
|
||||
w: w,
|
||||
// oneFunc: sync.OnceFunc(func() {
|
||||
// defer recover()
|
||||
// w.Close()
|
||||
// }),
|
||||
}
|
||||
if f, ok := w.(interface{ Flush() error }); ok {
|
||||
ccon.f = f
|
||||
}
|
||||
@@ -132,7 +142,11 @@ func (obj *CompressionConn) Write(b []byte) (n int, err error) {
|
||||
return
|
||||
}
|
||||
func (obj *CompressionConn) Close() error {
|
||||
return obj.conn.Close()
|
||||
err := obj.conn.Close()
|
||||
if obj.oneFunc != nil {
|
||||
obj.oneFunc()
|
||||
}
|
||||
return err
|
||||
}
|
||||
func (obj *CompressionConn) LocalAddr() net.Addr {
|
||||
return obj.conn.LocalAddr()
|
||||
|
||||
2
dial.go
2
dial.go
@@ -392,7 +392,7 @@ func (obj *Dialer) verifyUDPSocks5(ctx *Response, conn net.Conn, proxyAddr Addre
|
||||
udpCtx, cnl := context.WithCancel(context.TODO())
|
||||
wrapConn = NewUDPConn(udpCtx, wrapConn, &net.UDPAddr{IP: proxyAddress.IP, Port: proxyAddress.Port}, remoteAddr)
|
||||
go func() {
|
||||
io.Copy(io.Discard, conn)
|
||||
tools.Copy(io.Discard, conn)
|
||||
cnl()
|
||||
}()
|
||||
return
|
||||
|
||||
8
http.go
8
http.go
@@ -52,7 +52,7 @@ func NewClientConn(con net.Conn, closeFunc func(error)) *clientConn {
|
||||
w: bufio.NewWriter(con),
|
||||
}
|
||||
go func() {
|
||||
_, err := io.Copy(writer, con)
|
||||
_, err := tools.Copy(writer, con)
|
||||
writer.CloseWithError(err)
|
||||
c.CloseWithError(err)
|
||||
}()
|
||||
@@ -83,7 +83,7 @@ func (obj *clientConn) send(req *http.Request, orderHeaders []interface {
|
||||
obj.readWriteCtx.readCnl(readErr)
|
||||
}()
|
||||
if res.Body != nil {
|
||||
_, readErr = io.Copy(pw, rawBody)
|
||||
_, readErr = tools.Copy(pw, rawBody)
|
||||
}
|
||||
if readErr != nil && readErr != io.EOF && readErr != io.ErrUnexpectedEOF {
|
||||
err = tools.WrapError(readErr, "failed to read response body")
|
||||
@@ -255,14 +255,14 @@ func (obj *clientConn) httpWrite(req *http.Request, rawHeaders http.Header, orde
|
||||
}
|
||||
if chunked {
|
||||
chunkedWriter := newChunkedWriter(obj.w)
|
||||
if _, err = io.Copy(chunkedWriter, req.Body); err != nil {
|
||||
if _, err = tools.Copy(chunkedWriter, req.Body); err != nil {
|
||||
return
|
||||
}
|
||||
if err = chunkedWriter.Close(); err != nil {
|
||||
return
|
||||
}
|
||||
} else {
|
||||
if _, err = io.Copy(obj.w, req.Body); err != nil {
|
||||
if _, err = tools.Copy(obj.w, req.Body); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
@@ -329,12 +329,12 @@ func (obj *Response) ReadBody() (err error) {
|
||||
go func() {
|
||||
defer close(done)
|
||||
if obj.option.Bar && obj.ContentLength() > 0 {
|
||||
_, readErr = io.Copy(&barBody{
|
||||
_, readErr = tools.Copy(&barBody{
|
||||
bar: bar.NewClient(obj.response.ContentLength),
|
||||
body: bBody,
|
||||
}, obj.Body())
|
||||
} else {
|
||||
_, readErr = io.Copy(bBody, obj.Body())
|
||||
_, readErr = tools.Copy(bBody, obj.Body())
|
||||
}
|
||||
if readErr == io.ErrUnexpectedEOF {
|
||||
readErr = nil
|
||||
|
||||
Reference in New Issue
Block a user