From: Matt Joiner Date: Thu, 15 Oct 2020 01:42:27 +0000 (+1100) Subject: webseed: Handle http response status codes X-Git-Tag: v1.18.0~4 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=30d0b5b9c776c16dd8208dab957baf0aed83c0af;p=btrtrc.git webseed: Handle http response status codes --- diff --git a/webseed/client.go b/webseed/client.go index 19153dc7..420901ea 100644 --- a/webseed/client.go +++ b/webseed/client.go @@ -3,6 +3,7 @@ package webseed import ( "bytes" "context" + "errors" "fmt" "io" "net/http" @@ -91,8 +92,14 @@ func recvPartResult(buf io.Writer, part requestPart) error { return result.err } defer result.resp.Body.Close() - if part.e.Start != 0 && result.resp.StatusCode != http.StatusPartialContent { - return fmt.Errorf("expected partial content response got %v", result.resp.StatusCode) + switch result.resp.StatusCode { + case http.StatusPartialContent: + case http.StatusOK: + if part.e.Start != 0 { + return errors.New("got status ok but request was at offset") + } + default: + return fmt.Errorf("unhandled response status code (%v)", result.resp.StatusCode) } copied, err := io.Copy(buf, result.resp.Body) if err != nil {