diff options
-rw-r--r-- | lib/multi.c | 3 | ||||
-rw-r--r-- | lib/url.c | 2 |
2 files changed, 5 insertions, 0 deletions
diff --git a/lib/multi.c b/lib/multi.c index b641074d4..6c9d06b0b 100644 --- a/lib/multi.c +++ b/lib/multi.c @@ -592,6 +592,9 @@ static CURLcode multi_done(struct Curl_easy *data, detach_connnection(data); if(CONN_INUSE(conn)) { /* Stop if still used. */ + /* conn->data must not remain pointing to this transfer since it is going + away! Find another to own it! */ + conn->data = conn->easyq.head->ptr; CONN_UNLOCK(data); DEBUGF(infof(data, "Connection still in use %zu, " "no more multi_done now!\n", @@ -1213,6 +1213,8 @@ ConnectionExists(struct Curl_easy *data, } } + DEBUGASSERT(!check->data || GOOD_EASY_HANDLE(check->data)); + if(!canmultiplex && check->data) /* this request can't be multiplexed but the checked connection is already in use so we skip it */ |