Daniel Stenberg wrote:
On Tue, 7 Jul 2009, Mohun Biswas wrote:
The libcurl-multi doc says things like "libcurl will then transfer data if there is anything available to transfer". Since I'm doing uploads I read this, as I think any native speaker of English would, to mean "if there's anything ready *on the input side*". I'm guessing you really mean "libcurl will then transfer data if any socket is ready". Or maybe even "... if doing so would not cause the program to sleep". Or something - since I don't actually _know_ what it does, it's hard to suggest language.

Upload is callback based (too). libcurl calls your callback function to get data when it already knows that the server socket is ready to receive. It doesn't know any file descriptor or similar for reading that data when uploading. Your app provides the data when libcurl asks for it.

I still think this would be improved by saying "libcurl will then transfer any data the handles in the stack are ready to deal with without blocking". Or something to make clear that curl_multi_perform is designed not to block. As I understand it avoiding blocking is the entire point of the multi API, so I can't see any harm in mentioning it even if you don't want to talk about sockets per se. Currently the only mention libcurl-multi.3 makes of "blocking" at all is down at the bottom in the caveats where it lists a few things that may block. But nothing is said to clarify that outside of these corner conditions, it will not. This is the central cause of my confusion.

I'll let the other points go as they are either sufficiently explained
now or you've made your beliefs clear. Thanks.

MB

Reply via email to