On Thu, 26 Jun 2014, Richard W.M. Jones wrote:
A curl handle can be re-used for any amount of requests so a read
(download) request can very well be followed by a write (upload) request.
But they are then two subsequent requests and you can't just switch at will
at a random point in time.
Sorry, I'm confused by this paragraph. The sentences seem contradictory.
I can or I cannot switch between download and upload on the same handle?
Sorry, that was a bit weirdly put by me. Let me try again:
A handle can be used for uploading or downloading and some requests even do
both. A handle can be re-used for any number of subsequent requests.
But a handle that is in use and with which you've already initiated a transfer
in either direction, would need some special care in case you'd suddenly like
to change it to a transfer in the other direction.
pread (offset=0, count=512)
pread (offset=512, count=1024)
pwrite (offset=0, count=512)
pread (offset=1024, count=512)
pwrite (offset=0, count=512)
pwrite (offset=1024, count=512)
pread (offset=512, count=2048)
The question is, how best to turn that lot into cURL API requests?
Also what actual API calls do I need to use to switch the cURL handle
into download and upload modes (assuming this is allowed)?
My initial patch used this to switch to download mode:
curl_easy_setopt (h->c, CURLOPT_NOBODY, 0);
curl_easy_setopt (h->c, CURLOPT_HTTPGET, 1);
and this to switch to upload mode:
curl_easy_setopt (h->c, CURLOPT_UPLOAD, 1);
Is that correct?
That seems correct. You can even skip setting the *NOBODY option there since
*HTTPGET implies that.
Speaking in HTTP terms, this will alter between GET requests and PUT requests.
--
/ daniel.haxx.se
-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette: http://curl.haxx.se/mail/etiquette.html