TUN-6035: Reduce buffer size when proxying data
This commit is contained in:
parent
0dc3428424
commit
d1a4710aa2
|
@ -0,0 +1,27 @@
|
||||||
|
package cfio
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
"sync"
|
||||||
|
)
|
||||||
|
|
||||||
|
const defaultBufferSize = 16 * 1024
|
||||||
|
|
||||||
|
var bufferPool = sync.Pool{
|
||||||
|
New: func() interface{} {
|
||||||
|
return make([]byte, defaultBufferSize)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
func Copy(dst io.Writer, src io.Reader) (written int64, err error) {
|
||||||
|
_, okWriteTo := src.(io.WriterTo)
|
||||||
|
_, okReadFrom := dst.(io.ReaderFrom)
|
||||||
|
var buffer []byte = nil
|
||||||
|
|
||||||
|
if !(okWriteTo || okReadFrom) {
|
||||||
|
buffer = bufferPool.Get().([]byte)
|
||||||
|
defer bufferPool.Put(buffer)
|
||||||
|
}
|
||||||
|
|
||||||
|
return io.CopyBuffer(dst, src, buffer)
|
||||||
|
}
|
|
@ -15,6 +15,8 @@ import (
|
||||||
"github.com/getsentry/raven-go"
|
"github.com/getsentry/raven-go"
|
||||||
"github.com/gorilla/websocket"
|
"github.com/gorilla/websocket"
|
||||||
"github.com/rs/zerolog"
|
"github.com/rs/zerolog"
|
||||||
|
|
||||||
|
"github.com/cloudflare/cloudflared/cfio"
|
||||||
)
|
)
|
||||||
|
|
||||||
// IsWebSocketUpgrade checks to see if the request is a WebSocket connection.
|
// IsWebSocketUpgrade checks to see if the request is a WebSocket connection.
|
||||||
|
@ -146,7 +148,7 @@ func copyData(dst io.Writer, src io.Reader, dir string) (written int64, err erro
|
||||||
}
|
}
|
||||||
return copyBuffer(dst, src, dir)
|
return copyBuffer(dst, src, dir)
|
||||||
} else {
|
} else {
|
||||||
return io.Copy(dst, src)
|
return cfio.Copy(dst, src)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue