mirror of
https://github.com/caddyserver/caddy.git
synced 2025-03-11 02:18:21 -05:00
treat first write and flush for encode response writer to CONNECT request as success if status is not set explicitly
This commit is contained in:
parent
17982787ae
commit
c928096c99
1 changed files with 12 additions and 0 deletions
|
@ -270,6 +270,12 @@ func (enc *Encode) Match(rw *responseWriter) bool {
|
|||
// FlushError is an alternative Flush returning an error. It delays the actual Flush of the underlying
|
||||
// ResponseWriterWrapper until headers were written.
|
||||
func (rw *responseWriter) FlushError() error {
|
||||
// WriteHeader wasn't called and is a CONNECT request, treat it as a success.
|
||||
// otherwise, wait until header is written.
|
||||
if rw.isConnect && !rw.wroteHeader && rw.statusCode == 0 {
|
||||
rw.WriteHeader(http.StatusOK)
|
||||
}
|
||||
|
||||
if !rw.wroteHeader {
|
||||
// flushing the underlying ResponseWriter will write header and status code,
|
||||
// but we need to delay that until we can determine if we must encode and
|
||||
|
@ -298,6 +304,12 @@ func (rw *responseWriter) Write(p []byte) (int, error) {
|
|||
return 0, nil
|
||||
}
|
||||
|
||||
// WriteHeader wasn't called and is a CONNECT request, treat it as a success.
|
||||
// otherwise, determine if the response should be compressed.
|
||||
if rw.isConnect && !rw.wroteHeader && rw.statusCode == 0 {
|
||||
rw.WriteHeader(http.StatusOK)
|
||||
}
|
||||
|
||||
// sniff content-type and determine content-length
|
||||
if !rw.wroteHeader && rw.config.MinLength > 0 {
|
||||
var gtMinLength bool
|
||||
|
|
Loading…
Add table
Reference in a new issue