diff --git a/libvirt/volume_image.go b/libvirt/volume_image.go index 34259476a..cab6a0ac3 100644 --- a/libvirt/volume_image.go +++ b/libvirt/volume_image.go @@ -137,23 +137,24 @@ func (i *httpImage) IsQCOW2() (bool, error) { } defer response.Body.Close() - if response.StatusCode != http.StatusPartialContent { + if response.StatusCode != http.StatusPartialContent && response.StatusCode != http.StatusOK { return false, fmt.Errorf( "can't retrieve partial header of resource to determine file type: %s - %s", i.url.String(), response.Status) } - header, err := io.ReadAll(response.Body) + header := make([]byte, 8) + n, err := io.ReadFull(response.Body, header) if err != nil { return false, err } - if len(header) < 8 { + if n < 8 { return false, fmt.Errorf( "can't retrieve read header of resource to determine file type: %s - %d bytes read", i.url.String(), - len(header)) + n) } return isQCOW2Header(header)