package handler import ( "io" "github.com/go-gost/gost/pkg/internal/bufpool" ) func Transport(rw1, rw2 io.ReadWriter) error { errc := make(chan error, 1) go func() { errc <- copyBuffer(rw1, rw2) }() go func() { errc <- copyBuffer(rw2, rw1) }() err := <-errc if err != nil && err == io.EOF { err = nil } return err } func copyBuffer(dst io.Writer, src io.Reader) error { buf := bufpool.Get(16 * 1024) defer bufpool.Put(buf) _, err := io.CopyBuffer(dst, src, buf) return err }