-#ifdef ZTS
-static void *php_http_request_datashare_locks_init(void);
-static void php_http_request_datashare_locks_dtor(void *l);
-static void php_http_request_datashare_lock_func(CURL *handle, curl_lock_data data, curl_lock_access locktype, void *userptr);
-static void php_http_request_datashare_unlock_func(CURL *handle, curl_lock_data data, void *userptr);
-static MUTEX_T php_http_request_datashare_global_shares_lock;
-#endif
-static HashTable php_http_request_datashare_global_shares;
-php_http_request_datashare_t *php_http_request_datashare_global_get(const char *driver_str, size_t driver_len TSRMLS_DC)
-{
- php_http_request_datashare_t *s = NULL, **s_ptr;
- char *lower_str = php_strtolower(estrndup(driver_str, driver_len), driver_len);
-
-#ifdef ZTS
- tsrm_mutex_lock(php_http_request_datashare_global_shares_lock);
-#endif
- if (zend_hash_find(&php_http_request_datashare_global_shares, lower_str, driver_len + 1, (void *) &s_ptr)) {
- s = *s_ptr;
- } else {
- php_http_request_factory_driver_t driver;
-
- if ((SUCCESS == php_http_request_factory_get_driver(driver_str, driver_len, &driver)) && driver.request_datashare_ops) {
- s = php_http_request_datashare_init(NULL, driver.request_datashare_ops, NULL, NULL, 1 TSRMLS_CC);
- zend_hash_add(&php_http_request_datashare_global_shares, lower_str, driver_len + 1, &s, sizeof(php_http_request_datashare_t *), NULL);
- }
- }
-#ifdef ZTS
- tsrm_mutex_unlock(php_http_request_datashare_global_shares_lock);
-#endif
-
- efree(lower_str);
- return s;
-}
-
-PHP_HTTP_API php_http_request_datashare_t *php_http_request_datashare_init(php_http_request_datashare_t *h, php_http_request_datashare_ops_t *ops, php_http_resource_factory_t *rf, void *init_arg, zend_bool persistent TSRMLS_DC)