I've written my Curl_handler.connecting callback so it returns
CURLE_AGAIN if the socket would block. However this causes the whole
connection to fail (see debug trace at end).
If I change the callback so it loops until *done == TRUE then it
works, but I think this is just blocking behaviour.
I can see the PROTOCONNECT case in lib/multi.c doesn't deal with
CURLE_AGAIN at all.
Should I return CURLE_OK (and *done == FALSE) in the blocking case?
What is the point of CURLE_AGAIN?
Rich.
----------------------------------------------------------------------
* STATE: INIT => CONNECT handle 0x1c620a8; line 1447 (connection #-5000)
* Rebuilt URL to: nbd://localhost/
* Added connection 0. The cache now contains 1 members
* STATE: CONNECT => WAITRESOLVE handle 0x1c620a8; line 1483 (connection #0)
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0*
Trying ::1...
* TCP_NODELAY set
* STATE: WAITRESOLVE => WAITCONNECT handle 0x1c620a8; line 1564 (connection #0)
* Connected to localhost (::1) port 10809 (#0)
* STATE: WAITCONNECT => SENDPROTOCONNECT handle 0x1c620a8; line 1616
(connection #0)
* NBD 0x1c56bb0 state change from STOP to EXPECTING_MAGIC
* Marked for [keep alive]: NBD default
* STATE: SENDPROTOCONNECT => PROTOCONNECT handle 0x1c620a8; line 1630
(connection #0)
* NBD 0x1c56bb0 connecting state is EXPECTING_MAGIC
* multi_done
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
* Closing connection 0
* The cache now contains 0 members
* Expire cleared
curl: (81) Socket not ready for send/recv
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
libguestfs lets you edit virtual machines. Supports shell scripting,
bindings from many languages. http://libguestfs.org
-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette: https://curl.haxx.se/mail/etiquette.html