diff options
author | Daniel Stenberg <daniel@haxx.se> | 2020-06-11 10:16:32 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2020-06-12 09:42:52 +0200 |
commit | 8b4e79677508a1119bcd2463f549aa97b7442f48 (patch) | |
tree | d9635c21b8d2e71131ed8d940134062bbce1f6ec | |
parent | 38d4abf5103c1abbe0f409d342ebb4e71404b7e9 (diff) |
share: don't set the share flag it something fails
When asking for a specific feature to be shared in the share object,
that bit was previously set unconditionally even if the shared feature
failed or otherwise wouldn't work.
Closes #5554
-rw-r--r-- | lib/share.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/share.c b/lib/share.c index 3d5108610..a2d896042 100644 --- a/lib/share.c +++ b/lib/share.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al. + * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -70,7 +70,7 @@ curl_share_setopt(struct Curl_share *share, CURLSHoption option, ...) case CURLSHOPT_SHARE: /* this is a type this share will share */ type = va_arg(param, int); - share->specifier |= (1<<type); + switch(type) { case CURL_LOCK_DATA_DNS: break; @@ -102,7 +102,7 @@ curl_share_setopt(struct Curl_share *share, CURLSHoption option, ...) #endif break; - case CURL_LOCK_DATA_CONNECT: /* not supported (yet) */ + case CURL_LOCK_DATA_CONNECT: if(Curl_conncache_init(&share->conn_cache, 103)) res = CURLSHE_NOMEM; break; @@ -116,6 +116,8 @@ curl_share_setopt(struct Curl_share *share, CURLSHoption option, ...) default: res = CURLSHE_BAD_OPTION; } + if(!res) + share->specifier |= (1<<type); break; case CURLSHOPT_UNSHARE: |