diff options
author | Pavel P <pavlov.pavel@gmail.com> | 2017-09-18 15:50:16 -0700 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2017-09-19 23:48:48 +0200 |
commit | 5fe85587ccd2d3365540cd652e6a3bb1b0393f3a (patch) | |
tree | 16542a5d4bc59aa4604f3b99d2851b8535e1ea86 | |
parent | c73ebb85374164515eb9df6d619a5822b6568599 (diff) |
cookies: use lock when using CURLINFO_COOKIELIST
Closes #1896
-rw-r--r-- | lib/cookie.c | 11 | ||||
-rw-r--r-- | tests/data/test506 | 16 |
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> |