Fixed EOF read error

This commit is contained in:
Ice3man543 2021-06-09 11:15:21 +05:30
parent be776fb5dd
commit 2ec27d4466
2 changed files with 32 additions and 20 deletions

View File

@ -117,7 +117,7 @@ func (r *Request) executeParallelHTTP(reqURL string, dynamicValues, previous out
return requestErr return requestErr
} }
// executeRaceRequest executes turbo http request for a URL // executeTurboHTTP executes turbo http request for a URL
func (r *Request) executeTurboHTTP(reqURL string, dynamicValues, previous output.InternalEvent, callback protocols.OutputEventCallback) error { func (r *Request) executeTurboHTTP(reqURL string, dynamicValues, previous output.InternalEvent, callback protocols.OutputEventCallback) error {
generator := r.newGenerator() generator := r.newGenerator()
@ -277,11 +277,15 @@ func (r *Request) executeRequest(reqURL string, request *generatedRequest, previ
var hostname string var hostname string
timeStart := time.Now() timeStart := time.Now()
if request.original.Pipeline { if request.original.Pipeline {
if request.rawRequest != nil {
formedURL = request.rawRequest.FullURL formedURL = request.rawRequest.FullURL
if parsed, parseErr := url.Parse(formedURL); parseErr == nil { if parsed, parseErr := url.Parse(formedURL); parseErr == nil {
hostname = parsed.Host hostname = parsed.Host
} }
resp, err = request.pipelinedClient.DoRaw(request.rawRequest.Method, reqURL, request.rawRequest.Path, generators.ExpandMapValues(request.rawRequest.Headers), ioutil.NopCloser(strings.NewReader(request.rawRequest.Data))) resp, err = request.pipelinedClient.DoRaw(request.rawRequest.Method, reqURL, request.rawRequest.Path, generators.ExpandMapValues(request.rawRequest.Headers), ioutil.NopCloser(strings.NewReader(request.rawRequest.Data)))
} else if request.request != nil {
resp, err = request.pipelinedClient.Dor(request.request)
}
} else if request.original.Unsafe && request.rawRequest != nil { } else if request.original.Unsafe && request.rawRequest != nil {
formedURL = request.rawRequest.FullURL formedURL = request.rawRequest.FullURL
if parsed, parseErr := url.Parse(formedURL); parseErr == nil { if parsed, parseErr := url.Parse(formedURL); parseErr == nil {
@ -343,8 +347,10 @@ func (r *Request) executeRequest(reqURL string, request *generatedRequest, previ
} }
data, err := ioutil.ReadAll(bodyReader) data, err := ioutil.ReadAll(bodyReader)
if err != nil { if err != nil {
if !strings.Contains(err.Error(), "unexpected EOF") { // ignore EOF error
return errors.Wrap(err, "could not read http body") return errors.Wrap(err, "could not read http body")
} }
}
resp.Body.Close() resp.Body.Close()
redirectedResponse, err := dumpResponseWithRedirectChain(resp, data) redirectedResponse, err := dumpResponseWithRedirectChain(resp, data)

View File

@ -3,6 +3,8 @@ package http
import ( import (
"bytes" "bytes"
"compress/gzip" "compress/gzip"
"compress/zlib"
"io"
"io/ioutil" "io/ioutil"
"net/http" "net/http"
"net/http/httputil" "net/http/httputil"
@ -100,19 +102,23 @@ func handleDecompression(resp *http.Response, bodyOrig []byte) (bodyDec []byte,
return bodyOrig, nil return bodyOrig, nil
} }
encodingHeader := strings.TrimSpace(strings.ToLower(resp.Header.Get("Content-Encoding"))) var reader io.ReadCloser
if strings.Contains(encodingHeader, "gzip") { switch resp.Header.Get("Content-Encoding") {
gzipreader, err := gzip.NewReader(bytes.NewReader(bodyOrig)) case "gzip":
if err != nil { reader, err = gzip.NewReader(resp.Body)
return bodyOrig, err case "deflate":
reader, err = zlib.NewReader(resp.Body)
default:
reader = resp.Body
} }
defer gzipreader.Close() if err != nil {
return nil, err
}
defer reader.Close()
bodyDec, err = ioutil.ReadAll(gzipreader) bodyDec, err = ioutil.ReadAll(reader)
if err != nil { if err != nil {
return bodyOrig, err return bodyOrig, err
} }
return bodyDec, nil return bodyDec, nil
} }
return bodyOrig, nil
}