curl / Mailing Lists / curl-library / Single Mail


Re: Asynchronous ordered sends

From: Richard Gray <>
Date: Thu, 23 Mar 2017 08:09:58 -0400

Daniel Stenberg wrote:
> On Tue, 21 Mar 2017, Emir Kamber wrote:
>> I have successfully implemented async sends via 'multi-functionality',
>> but I have a problem where messages are sent in no particular order. So,
>> when I send 3 messages, I get this on the wire: MSG3, MSG1, MSG2.
>> I need to send messages in the order that I add them via
>> 'curl_multi_add_handle', so that I get MSG1, MSG2, MSG3 on the wire. In
>> essence I just need to send an X number of messages in sequence as
>> quickly as possible, and then will worry about reading the response from
>> the server.
> The multi API handles many transfers in parallel, but it will do them all
> independent and as fast as possible. If you add three easy handles, libcurl
> will try to perform those three transfers as quickly as it can.
> If you need the transfers done serially, you need to wait until transfer one
> is done before you add the easy handle for transfer two and so on.

If one wants to have messages transmit in order, but with overlap, like


I wonder if a suitable callback from msg1 transfer could be used to fire off
msg2 once msg1 is underway (first read callback?) A callback from msg2 could
launch msg3 once msg2 is going...

Is it safe to add a new easy handle to a multi handle in a read or write
callback or would some other technique have to be used? Connection re-use
could complicate things...

Received on 2017-03-23