cURL / Mailing Lists / curl-library / Single Mail

curl-library

Re: Multi handle connection pool (Re: max download/upload speed setting)

From: Daniel Stenberg <daniel_at_haxx.se>
Date: Mon, 6 Jul 2009 20:07:55 +0200 (CEST)

On Mon, 6 Jul 2009, Ragnar Lonn wrote:

> I have another question regarding the max upload/download speed setting -
> does it work when you are using the multi interface and external I/O
> libraries?
>
> I.e. from what I have understood, the feature is implemented through libcurl
> avoiding to select on sockets that have used up their bandwidth quota for
> the time being. This means that if you're using e.g. libevent to select on
> sockets, curl will not be able to control the bandwidth usage of a socket.

It works fine anyway. This is because when the speed limit is reached, libcurl
takes away the socket of that too-fast-transfer from the list of sockets the
app will wait for until the speed is again below the threshold and then it
gets reinstated.

> Also, but I'm not sure about this one - as the multi handle has a pool of
> sockets that it uses for all its easy handles, you have no real control over
> individual sockets when using the multi interface. You don't know which
> socket is being used by which easy handle, and this means there is no way to
> limit bandwidth for an individual easy handle.

libcurl knows exactly which socket is used so it can do this.

> Would it be possible to implement a feature that would let a multi user
> switch off the connetion pool feature of the multi interface, and so to get
> access to more detailed control over easy handles even in multi mode?

While I figure it would be possible to somehow run connetion-pool-less, I
don't understand the reasoning. What benefits would such an ability provide to
apps?

-- 
  / daniel.haxx.se
Received on 2009-07-06