aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/multi.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/multi.c b/lib/multi.c
index 2a4f1a16c..ec9fd3309 100644
--- a/lib/multi.c
+++ b/lib/multi.c
@@ -680,7 +680,14 @@ static int multi_getsock(struct Curl_one_easy *easy,
of sockets */
int numsocks)
{
- if (easy->easy_handle->state.pipe_broke) {
+ /* If the pipe broke, or if there's no connection left for this easy handle,
+ then we MUST bail out now with no bitmask set. The no connection case can
+ happen when this is called from curl_multi_remove_handle() =>
+ singlesocket() => multi_getsock().
+ */
+
+ if (easy->easy_handle->state.pipe_broke ||
+ !easy->easy_conn) {
return 0;
}