cURL / Mailing Lists / curl-library / Single Mail


Re: libcurl multi interface interleave GET and POST calls

From: Andrei Ionescu <>
Date: Tue, 1 Feb 2011 10:26:26 -0500

On Tue, Feb 1, 2011 at 9:54 AM, Andrei Ionescu <> wrote:
> On Tue, Feb 1, 2011 at 5:35 AM, Dirk Manske <> wrote:
>> On Tuesday 01 February 2011 01:17:59 Andrei Ionescu wrote:
>>> My question here may be a very basic HTTP/libcurl
>>> question but here is my situation:
>>> - the client connects to the server and it can send data to it by issuing a POST
>>> - the server will send data to the client in a POST
>> What?
>> The server cannot do a post to the client, unless you include
>> a http-client in the server and a http-server in the client.
>> I guess you mean s.t. different.
> I was under the impression that the server can do a POST in response
> to a GET from the client, which I mentioned below. If I'm wrong in
> this assumption please let me know.

My mistake here, there is no POST from the server it's simply a
response to the GET.

>>> , but only if the
>>> client performed a GET to the server (if no data is available then it
>>> will not respond immediately)
>> And what is the trigger for the GET request?
> After the client connects to the server it will send a GET request in
> order to allow the server to send data to the client in a POST. The
> server doesn't need to send the POST to the client right away, but
> when data is available. Also, after a POST is sent by the server and
> the client process the data it will then issue another GET.

Same mistake here, please ignore what I said regarding the server
sending the POST, it's simply a response to the GET.

>>> Can I use a single handle and pass it to libcurl's multi interface to
>>> do all the above?
>> If your client makes the GET and POST operations in serial (send one request
>> and wait for answer before sending next request), then you don't need multi
>> interface.
> The GET and POST operations are not serial. The client will issue a
> POST whenever it has data to send to the server, which could be at any
> time. The GET is sent to the server just to allow the server to send
> data to the client, and so there can be POSTs sent by the client at
> any time before or after the GET, they're not related.
> With the multi interface, it seems like you set up your easy handles
> with the data that you want to send out, add it to the multi handle
> then do a multi_perform on the multi handle. After this is done, how
> do you send more data through the handles? Can you simply do a
> curl_easy_setopt on the handles that have been added to the multi
> handle? My impression is that I shouldn't modify the handles directly
> after they've been added to the multi handle, but from looking at the
> interface I don't see how you can send multiple commands on one
> handle, without possibly first removing it from the multi handle.
>> Greetings,
>> Dirk.
>> -------------------------------------------------------------------
>> List admin:
>> Etiquette:
List admin:
Received on 2011-02-01