Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.
Already on GitHub?
to your account
curl_multi_poll delegates to Curl_multi_wait, which checks multi->wakeup_pair for POLLIN activity then attempts to read from it.
Unfortunately, waking an iPad breaks the wakeup socket pair, triggering a POLLIN event and resulting in SOCKERRNO being set to ENOTCONN in Curl_multi_wait's final #ifdef ENABLE_WAKEUP block.
This condition, and other possible error conditions on the wakeup socket, are not handled, so the condition remains on the FD and curl_multi_poll will never block again.
Even if the iOS wake scenario is to be considered an edge case, it seems to me we'd be best off looking for and handling any wakeup socket errors anyway.
The text was updated successfully, but these errors were encountered:
If the wakeup socket fails, attempt to recreate it or mark it as bad …
multi: use a pipe instead of a socketpair on apple platforms
Sockets may be shut down by the kernel when the app is moved to the
background, but pipes are not.
Removed from KNOWN_BUGS
Successfully merging a pull request may close this issue.