I figured out the root cause of the misbehavior I was observing.

In short, neither curl nor asio has a bug, but the sample integration code
that I worked from did. Perhaps I would have been better off following
mm.w's original suggestion to start from scratch; the sample sent me down a
pretty deep rat hole. Until I post a patch for the sample, I recommend that
we put a disclaimer on asiohiper.cpp. Where it calls
curl_multi_socket_action() in event_cb(), that call needs to be followed by
something like tcp_socket->async_read_some() to be correct. Without this
extra line, the code will hang if the initial read of a response doesn't
complete the transfer. The whole edge-triggered vs. level-triggered issue
was a red herring, although it was a theory that matched my symptoms pretty
well for a while. Modifying looping behavior or polling configuration does
eliminate the problem, but the right fix is something simpler.

Thanks for your patience and suggestions.

--Daniel
-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette:  http://curl.haxx.se/mail/etiquette.html

Reply via email to