forked from quic-go/quic-go
@@ -4,7 +4,6 @@ import (
|
||||
"crypto/tls"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net"
|
||||
"net/http"
|
||||
"runtime"
|
||||
@@ -155,13 +154,14 @@ func (s *Server) handleRequest(session streamCreator, headerStream utils.Stream,
|
||||
return err
|
||||
}
|
||||
|
||||
var streamEnded bool
|
||||
if h2headersFrame.StreamEnded() {
|
||||
dataStream.CloseRemote(0)
|
||||
streamEnded = true
|
||||
_, _ = dataStream.Read([]byte{0}) // read the eof
|
||||
}
|
||||
|
||||
// stream's Close() closes the write side, not the read side
|
||||
req.Body = ioutil.NopCloser(dataStream)
|
||||
req.Body = newRequestBody(dataStream)
|
||||
|
||||
responseWriter := newResponseWriter(headerStream, headerStreamMutex, dataStream, protocol.StreamID(h2headersFrame.StreamID))
|
||||
|
||||
@@ -190,6 +190,9 @@ func (s *Server) handleRequest(session streamCreator, headerStream utils.Stream,
|
||||
responseWriter.WriteHeader(200)
|
||||
}
|
||||
if responseWriter.dataStream != nil {
|
||||
if !streamEnded && !req.Body.(*requestBody).requestRead {
|
||||
responseWriter.dataStream.Reset(nil)
|
||||
}
|
||||
responseWriter.dataStream.Close()
|
||||
}
|
||||
if s.CloseAfterFirstRequest {
|
||||
|
||||
Reference in New Issue
Block a user