summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavel P <pavlov.pavel@gmail.com>2017-09-18 15:50:16 -0700
committerDaniel Stenberg <daniel@haxx.se>2017-09-19 23:48:48 +0200
commit5fe85587ccd2d3365540cd652e6a3bb1b0393f3a (patch)
tree16542a5d4bc59aa4604f3b99d2851b8535e1ea86
parentc73ebb85374164515eb9df6d619a5822b6568599 (diff)
downloadcurl-5fe85587ccd2d3365540cd652e6a3bb1b0393f3a.tar.gz
cookies: use lock when using CURLINFO_COOKIELIST
Closes #1896
-rw-r--r--lib/cookie.c11
-rw-r--r--tests/data/test50616
2 files changed, 19 insertions, 8 deletions
diff --git a/lib/cookie.c b/lib/cookie.c
index 1231882ed..0374f94c1 100644
--- a/lib/cookie.c
+++ b/lib/cookie.c
@@ -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]) {
diff --git a/tests/data/test506 b/tests/data/test506
index 40eee2532..70d2daada 100644
--- a/tests/data/test506
+++ b/tests/data/test506
@@ -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>