From: Ilia Alshanetsky Date: Thu, 22 Dec 2005 21:25:26 +0000 (+0000) Subject: Allow cookie array to contain multiple dimensions and ensure that values X-Git-Tag: RELEASE_0_21_0~38 X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=commitdiff_plain;h=93aa7af92ce932423daef6e4831979561d621919 Allow cookie array to contain multiple dimensions and ensure that values are urlencoded. --- diff --git a/http_request_api.c b/http_request_api.c index 26b4b09..15b101f 100644 --- a/http_request_api.c +++ b/http_request_api.c @@ -495,34 +495,8 @@ PHP_HTTP_API STATUS _http_request_prepare(http_request *request, HashTable *opti /* cookies, array('name' => 'value') */ if ((zoption = http_request_option(request, options, "cookies", IS_ARRAY))) { - char *cookie_key = NULL; - ulong cookie_idx = 0; - HashPosition pos; - phpstr_dtor(&request->_cache.cookies); - - FOREACH_KEY(pos, zoption, cookie_key, cookie_idx) { - if (cookie_key) { - zval **cookie_val; - if (SUCCESS == zend_hash_get_current_data_ex(Z_ARRVAL_P(zoption), (void **) &cookie_val, &pos)) { - zval val; - - val = **cookie_val; - INIT_PZVAL(&val); - zval_copy_ctor(&val); - convert_to_string(&val); - - phpstr_appendf(&request->_cache.cookies, "%s=%s; ", cookie_key, Z_STRVAL(val)); - - zval_dtor(&val); - } - - /* reset */ - cookie_key = NULL; - } - } - - if (request->_cache.cookies.used) { + if (SUCCESS == http_urlencode_hash_recursive(HASH_OF(zoption), &request->_cache.cookies, "; ", sizeof("; ")-1, NULL, 0)) { phpstr_fix(&request->_cache.cookies); HTTP_CURL_OPT(COOKIE, request->_cache.cookies.data); }