curl-library
Re: [PATCH] multi: return CURLM_CALL_MULTI_PERFORM in PERFORM phase
Date: Mon, 7 Oct 2013 22:19:19 +0200 (CEST)
On Mon, 7 Oct 2013, Kamil Dudka wrote:
> ... if there is nothing to wait for. This fixes a regression introduced by
> commit 0feeab78 limiting the speed of SCP upload to 16384 B/s on a fast
> connection (such as localhost).
Thanks for the patch. I'm just a little concerned that this fix corrects the
symptom rather than actually addresses the underlying problem.
Let me explain what I suspect and once given some research we can decide on
how to act on it.
The change 0feeab78 you mention was a change that would prevent libcurl from
busy-looping like crazy when it found nothing to wait on. (That code was later
adjusted by d529f3882b.)
The key here is the "nothing to wait on" part. When there's a transfer going
on, even SCP, there should be a file descriptor to wait for[*] and the
previously mentioned logic should not kick in. If that logic works, I don't
think this patch is necessary.
Since your patch clearly helps your case (as otherwise you wouldn't have
posted it) I can only deduct that curl_multi_wait() in this case returns a
zero in its fifth argument to signal that there's no file descriptor to wait
for, and yet there should be as there's a transfer in progress!
Did I understand this correctly?
If so, we need to dig further why libcurl wrongly drops the file descriptor,
right?
[*] = it will also return faster when there's a timeout that has expired but
that shouldn't happen in multiple fast invokes so I don't think that's what
you see happening.
-- / daniel.haxx.se ------------------------------------------------------------------- List admin: http://cool.haxx.se/list/listinfo/curl-library Etiquette: http://curl.haxx.se/mail/etiquette.htmlReceived on 2013-10-07