diff options
Diffstat (limited to 'libs/libcurl/src/share.c')
| -rw-r--r-- | libs/libcurl/src/share.c | 16 |
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);
|
