CURLMcode rs;
TSRMLS_FETCH_FROM_CTX(h->ts);
+ if (r->ops != php_http_curl_client_get_ops()) {
+ php_http_error(HE_WARNING, PHP_HTTP_E_CLIENT_POOL, "Cannot attach a non-curl client to this pool");
+ return FAILURE;
+ }
+
if (SUCCESS != php_http_curl_client_prepare(r, m)) {
return FAILURE;
}
{
php_http_curl_client_pool_t *curl = h->ctx;
php_http_curl_client_t *recurl = r->ctx;
- CURLMcode rs = curl_multi_remove_handle(curl->handle, recurl->handle);
+ CURLMcode rs;
TSRMLS_FETCH_FROM_CTX(h->ts);
- if (CURLM_OK == rs) {
+ if (r->ops != php_http_curl_client_get_ops()) {
+ php_http_error(HE_WARNING, PHP_HTTP_E_CLIENT_POOL, "Cannot attach a non-curl client to this pool");
+ return FAILURE;
+ }
+
+ if (CURLM_OK == (rs = curl_multi_remove_handle(curl->handle, recurl->handle))) {
return SUCCESS;
} else {
php_http_error(HE_WARNING, PHP_HTTP_E_CLIENT_POOL, "Could not detach request from pool: %s", curl_multi_strerror(rs));
php_http_curlm_dtor
};
-static zend_class_entry *get_class_entry(void)
-{
- return php_http_curl_client_pool_class_entry;
-}
-
static php_http_client_pool_ops_t php_http_curl_client_pool_ops = {
&php_http_curlm_resource_factory_ops,
php_http_curl_client_pool_init,
php_http_curl_client_pool_detach,
php_http_curl_client_pool_setopt,
(php_http_new_t) php_http_curl_client_pool_object_new_ex,
- get_class_entry
+ php_http_curl_client_pool_get_class_entry
};
PHP_HTTP_API php_http_client_pool_ops_t *php_http_curl_client_pool_get_ops(void)
#define PHP_HTTP_CURL_ALIAS(method, func) PHP_HTTP_STATIC_ME_ALIAS(method, func, PHP_HTTP_ARGS(HttpClientCURL, method))
#define PHP_HTTP_CURL_MALIAS(me, al, vis) ZEND_FENTRY(me, ZEND_MN(HttpClientCURL_##al), PHP_HTTP_ARGS(HttpClientCURL, al), vis)
-zend_class_entry *php_http_curl_client_pool_class_entry;
-zend_function_entry php_http_curl_client_pool_method_entry[] = {
+static zend_class_entry *php_http_curl_client_pool_class_entry;
+
+zend_class_entry *php_http_curl_client_pool_get_class_entry(void)
+{
+ return php_http_curl_client_pool_class_entry;
+}
+
+static zend_function_entry php_http_curl_client_pool_method_entry[] = {
EMPTY_FUNCTION_ENTRY
};
o = ecalloc(1, sizeof(php_http_client_pool_object_t));
zend_object_std_init((zend_object *) o, ce TSRMLS_CC);
+#if PHP_VERSION_ID < 50339
+ zend_hash_copy(((zend_object *) o)->properties, &(ce->default_properties), (copy_ctor_func_t) zval_add_ref, NULL, sizeof(zval*));
+#else
object_properties_init((zend_object *) o, ce);
+#endif
if (!(o->pool = p)) {
o->pool = php_http_client_pool_init(NULL, &php_http_curl_client_pool_ops, NULL, NULL TSRMLS_CC);