summaryrefslogtreecommitdiff
path: root/libs/libcurl/src/share.c
diff options
context:
space:
mode:
Diffstat (limited to 'libs/libcurl/src/share.c')
-rw-r--r--libs/libcurl/src/share.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/libs/libcurl/src/share.c b/libs/libcurl/src/share.c
index 917a315628..0dc2b146a6 100644
--- a/libs/libcurl/src/share.c
+++ b/libs/libcurl/src/share.c
@@ -47,6 +47,16 @@ curl_share_init(void)
share->magic = CURL_GOOD_SHARE;
share->specifier |= (1 << CURL_LOCK_DATA_SHARE);
Curl_init_dnscache(&share->hostcache, 23);
+ share->admin = curl_easy_init();
+ if(!share->admin) {
+ free(share);
+ return NULL;
+ }
+ share->admin->state.internal = TRUE;
+#ifdef DEBUGBUILD
+ if(getenv("CURL_DEBUG"))
+ share->admin->set.verbose = TRUE;
+#endif
}
return share;
@@ -125,9 +135,8 @@ curl_share_setopt(CURLSH *sh, CURLSHoption option, ...)
case CURL_LOCK_DATA_CONNECT:
/* It is safe to set this option several times on a share. */
- if(!share->cpool.idata) {
- if(Curl_cpool_init(&share->cpool, Curl_on_disconnect,
- NULL, share, 103))
+ if(!share->cpool.initialised) {
+ if(Curl_cpool_init(&share->cpool, share->admin, share, 103))
res = CURLSHE_NOMEM;
}
break;
@@ -257,6 +266,7 @@ curl_share_cleanup(CURLSH *sh)
#endif
Curl_psl_destroy(&share->psl);
+ Curl_close(&share->admin);
if(share->unlockfunc)
share->unlockfunc(NULL, CURL_LOCK_DATA_SHARE, share->clientdata);