From: John Snow <jsnow@redhat.com>
To: Boris Schrijver <boris@pcextreme.nl>,
qemu-devel@nongnu.org, jcody@redhat.com, kwolf@redhat.com,
qemu-block@nongnu.org
Cc: Wido Hollander <wido@pcextreme.nl>
Subject: Re: [Qemu-devel] [Qemu-block] [PATCH] qemu-img / curl: When fetching Content-Size use GET instead of HEAD.
Date: Tue, 8 Dec 2015 14:40:25 -0500 [thread overview]
Message-ID: <56673229.2050005@redhat.com> (raw)
In-Reply-To: <110120539.4133.de5ac8a5-69d1-4f59-9540-4a679771a547.open-xchange@ox.pcextreme.nl>
On 12/07/2015 04:23 PM, Boris Schrijver wrote:
> Hi all,
>
Hi!
> I was testing out the "qemu-img info/convert" options in combination with
> "http/https" when I stumbled upon this issue. When "qemu-img info/convert" tries
> to collect the file info it will first try to fetch the Content-Size of the
> remote file. It does a HEAD request and after a GET request for the correct
> range.
>
> The HEAD request is an issue. Because when you've got a pre-signed url, for
> example from S3, which INCLUDES the REQUEST METHOD in it's signature, you'll get
> a 403 Forbidden.
>
> It's is therefore better to use only the GET request method, and discard the
> body at the first call.
>
How big is the body? Won't this introduce a really large overhead?
> Please review! I'll be ready for answers!
>
Please use the git format-patch format for sending patch emails; see
http://qemu-project.org/Contribute/SubmitAPatch#Use_git_format-patch --
and remember to include a Signed-off-by line.
> [PATCH] qemu-img / curl: When fetching Content-Size use GET instead of HEAD.
>
> A server can respond different to both methods, or can block one of the two.
> ---
> block/curl.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/block/curl.c b/block/curl.c
> index 8994182..2e74c32 100644
> --- a/block/curl.c
> +++ b/block/curl.c
> @@ -594,11 +594,11 @@ static int curl_open(BlockDriverState *bs, QDict *options,
> int flags,
> // Get file size
>
> s->accept_range = false;
> - curl_easy_setopt(state->curl, CURLOPT_NOBODY, 1);
> + curl_easy_setopt(state->curl, CURLOPT_HTTPGET, 1);
> curl_easy_setopt(state->curl, CURLOPT_HEADERFUNCTION,
> curl_header_cb);
> curl_easy_setopt(state->curl, CURLOPT_HEADERDATA, s);
> - if (curl_easy_perform(state->curl))
> + if (curl_easy_perform(state->curl) != 23)
We go from making sure there were no errors to enforcing that we *do*
get CURLE_WRITE_ERROR? Can you explain why this change doesn't break
error handling scenarios for all other cases?
> goto out;
> curl_easy_getinfo(state->curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &d);
> if (d)
>
next prev parent reply other threads:[~2015-12-08 19:40 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-07 21:23 [Qemu-devel] [PATCH] qemu-img / curl: When fetching Content-Size use GET instead of HEAD Boris Schrijver
2015-12-08 19:40 ` John Snow [this message]
2015-12-08 20:49 ` [Qemu-devel] [Qemu-block] " Boris Schrijver
2015-12-10 21:26 ` John Snow
2015-12-10 21:29 ` Boris Schrijver
2015-12-08 19:56 ` [Qemu-devel] " Michael Tokarev
2015-12-08 20:39 ` Boris Schrijver
2015-12-09 22:37 ` [Qemu-devel] [PATCH v2] " Boris Schrijver
2015-12-10 22:21 ` [Qemu-devel] [Qemu-block] " John Snow
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56673229.2050005@redhat.com \
--to=jsnow@redhat.com \
--cc=boris@pcextreme.nl \
--cc=jcody@redhat.com \
--cc=kwolf@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=wido@pcextreme.nl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.