]> granicus.if.org Git - curl/commitdiff
cookies: use lock when using CURLINFO_COOKIELIST
authorPavel P <pavlov.pavel@gmail.com>
Mon, 18 Sep 2017 22:50:16 +0000 (15:50 -0700)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 19 Sep 2017 21:48:48 +0000 (23:48 +0200)
Closes #1896

lib/cookie.c
tests/data/test506

index 1231882ed65242f521f8e15c9c2eea2bac5c9d5a..0374f94c16fd7a0e67ec6372c6c5892ee08bc4e8 100644 (file)
@@ -1402,7 +1402,7 @@ static int cookie_output(struct CookieInfo *c, const char *dumphere)
   return 0;
 }
 
-struct curl_slist *Curl_cookie_list(struct Curl_easy *data)
+static struct curl_slist *cookie_list(struct Curl_easy *data)
 {
   struct curl_slist *list = NULL;
   struct curl_slist *beg;
@@ -1433,6 +1433,15 @@ struct curl_slist *Curl_cookie_list(struct Curl_easy *data)
   return list;
 }
 
+struct curl_slist *Curl_cookie_list(struct Curl_easy *data)
+{
+  struct curl_slist *list;
+  Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
+  list = cookie_list(data);
+  Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE);
+  return list;
+}
+
 void Curl_flush_cookies(struct Curl_easy *data, int cleanup)
 {
   if(data->set.str[STRING_COOKIEJAR]) {
index 40eee25321675d70335cd094a8a56368ff7b1f9d..70d2daadafa81ca6e5b28f466a1d6018d4c8ee86 100644 (file)
@@ -195,6 +195,8 @@ CURLOPT_COOKIEJAR
 CURLOPT_COOKIELIST RELOAD
 lock:   cookie [Pigs in space]: 78
 unlock: cookie [Pigs in space]: 79
+lock:   cookie [Pigs in space]: 80
+unlock: cookie [Pigs in space]: 81
 loaded cookies:
 -----------------
   .host.foo.com        TRUE    /       FALSE   1896263787      injected        yes
@@ -207,17 +209,17 @@ loaded cookies:
   www.host.foo.com     FALSE   /       FALSE   1993463787      test6   six_more
 -----------------
 try SHARE_CLEANUP...
-lock:   share  [Pigs in space]: 80
-unlock: share  [Pigs in space]: 81
+lock:   share  [Pigs in space]: 82
+unlock: share  [Pigs in space]: 83
 SHARE_CLEANUP failed, correct
 CLEANUP
-lock:   cookie [Pigs in space]: 82
-unlock: cookie [Pigs in space]: 83
-lock:   share  [Pigs in space]: 84
-unlock: share  [Pigs in space]: 85
-SHARE_CLEANUP
+lock:   cookie [Pigs in space]: 84
+unlock: cookie [Pigs in space]: 85
 lock:   share  [Pigs in space]: 86
 unlock: share  [Pigs in space]: 87
+SHARE_CLEANUP
+lock:   share  [Pigs in space]: 88
+unlock: share  [Pigs in space]: 89
 GLOBAL_CLEANUP
 </stdout>
 <stderr>