gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnurl] 68/282: multi_done: if multiplexed, make conn->data point to ano


From: gnunet
Subject: [gnurl] 68/282: multi_done: if multiplexed, make conn->data point to another transfer
Date: Wed, 01 Apr 2020 14:28:53 +0200

This is an automated email from the git hooks/post-receive script.

ng0 pushed a commit to branch master
in repository gnurl.

commit db9af34634e36d34067fff506915dcf7a783a1e2
Author: Daniel Stenberg <address@hidden>
AuthorDate: Mon Jan 27 22:50:33 2020 +0100

    multi_done: if multiplexed, make conn->data point to another transfer
    
    ... since the current transfer is being killed. Setting to NULL is
    wrong, leaving it pointing to 'data' is wrong since that handle might be
    about to get freed.
    
    Fixes #4845
    Closes #4858
    Reported-by: dmitrmax on github
---
 lib/multi.c | 3 +++
 lib/url.c   | 2 ++
 2 files changed, 5 insertions(+)

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",
diff --git a/lib/url.c b/lib/url.c
index 689668e04..837e62a09 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -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 */

-- 
To stop receiving notification emails like this one, please contact
address@hidden.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]