Browse Source

TUN-6035: Reduce buffer size when proxying data

pull/627/head
João Oliveirinha 2 months ago
parent
commit
d1a4710aa2
  1. 27
      cfio/copy.go
  2. 4
      websocket/websocket.go

27
cfio/copy.go

@ -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)
}

4
websocket/websocket.go

@ -15,6 +15,8 @@ import (
"github.com/getsentry/raven-go"
"github.com/gorilla/websocket"
"github.com/rs/zerolog"
"github.com/cloudflare/cloudflared/cfio"
)
// 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)
} else {
return io.Copy(dst, src)
return cfio.Copy(dst, src)
}
}

Loading…
Cancel
Save