mirror of https://github.com/v2ray/v2ray-core
make sure writer not buffered
parent
5a6022d1ed
commit
f3c5df8798
|
@ -121,6 +121,7 @@ func (w *BufferedWriter) SetBuffered(f bool) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ReadFrom implements io.ReaderFrom.
|
||||||
func (w *BufferedWriter) ReadFrom(reader io.Reader) (int64, error) {
|
func (w *BufferedWriter) ReadFrom(reader io.Reader) (int64, error) {
|
||||||
var sc SizeCounter
|
var sc SizeCounter
|
||||||
if !w.buffer.IsEmpty() {
|
if !w.buffer.IsEmpty() {
|
||||||
|
@ -130,11 +131,12 @@ func (w *BufferedWriter) ReadFrom(reader io.Reader) (int64, error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.buffered = false
|
||||||
|
|
||||||
if readerFrom, ok := w.writer.(io.ReaderFrom); ok {
|
if readerFrom, ok := w.writer.(io.ReaderFrom); ok {
|
||||||
return readerFrom.ReadFrom(reader)
|
return readerFrom.ReadFrom(reader)
|
||||||
}
|
}
|
||||||
|
|
||||||
w.buffered = false
|
|
||||||
err := Copy(NewReader(reader), w, CountSize(&sc))
|
err := Copy(NewReader(reader), w, CountSize(&sc))
|
||||||
return sc.Size, err
|
return sc.Size, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -257,13 +257,8 @@ func (s *Server) handlePlainHTTP(ctx context.Context, request *http.Request, rea
|
||||||
request.Header.Set("Connection", "close")
|
request.Header.Set("Connection", "close")
|
||||||
|
|
||||||
requestWriter := buf.NewBufferedWriter(ray.InboundInput())
|
requestWriter := buf.NewBufferedWriter(ray.InboundInput())
|
||||||
if err := request.Write(requestWriter); err != nil {
|
common.Must(requestWriter.SetBuffered(false))
|
||||||
return err
|
return request.Write(requestWriter)
|
||||||
}
|
|
||||||
if err := requestWriter.Flush(); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
})
|
})
|
||||||
|
|
||||||
responseDone := signal.ExecuteAsync(func() error {
|
responseDone := signal.ExecuteAsync(func() error {
|
||||||
|
|
Loading…
Reference in New Issue