X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=http_request_object.c;h=7567b96d342edeaa482423b378369dca9ad9d9a7;hb=bbb3e0cfaf7e884c82fc42e873e47d0e6024e1b6;hp=4b85676f3e47a5fbec98c2f2964795d9aac6c600;hpb=960586b99568624a207faa24fe56233582b6d0dc;p=m6w6%2Fext-http diff --git a/http_request_object.c b/http_request_object.c index 4b85676..7567b96 100644 --- a/http_request_object.c +++ b/http_request_object.c @@ -446,7 +446,7 @@ STATUS _http_request_object_requesthandler(http_request_object *obj, zval *this_ php_stream *stream = php_stream_open_wrapper(Z_STRVAL_P(GET_PROP(obj, putFile)), "rb", REPORT_ERRORS|ENFORCE_SAFE_MODE, NULL); if (stream && !php_stream_stat(stream, &ssb)) { - http_request_body_init_ex(obj->request->body, HTTP_REQUEST_BODY_UPLOADFILE, stream, ssb.sb.st_size, 1); + obj->request->body = http_request_body_init_ex(obj->request->body, HTTP_REQUEST_BODY_UPLOADFILE, stream, ssb.sb.st_size, 1); } else { status = FAILURE; } @@ -465,7 +465,9 @@ STATUS _http_request_object_requesthandler(http_request_object *obj, zval *this_ if (Z_STRLEN_P(ctype)) { zval **headers, *opts = GET_PROP(obj, options); - if ((SUCCESS == zend_hash_find(Z_ARRVAL_P(opts), "headers", sizeof("headers"), (void **) &headers)) && (Z_TYPE_PP(headers) == IS_ARRAY)) { + if ( (Z_TYPE_P(opts) == IS_ARRAY) && + (SUCCESS == zend_hash_find(Z_ARRVAL_P(opts), "headers", sizeof("headers"), (void **) &headers)) && + (Z_TYPE_PP(headers) == IS_ARRAY)) { zval **ct_header; /* only override if not already set */ @@ -478,7 +480,8 @@ STATUS _http_request_object_requesthandler(http_request_object *obj, zval *this_ MAKE_STD_ZVAL(headers); array_init(headers); add_assoc_stringl(headers, "Content-Type", Z_STRVAL_P(ctype), Z_STRLEN_P(ctype), 1); - add_assoc_zval(opts, "headers", headers); + zend_call_method_with_1_params(&getThis(), Z_OBJCE_P(getThis()), NULL, "addheaders", NULL, headers); + zval_ptr_dtor(&headers); } } @@ -643,7 +646,8 @@ static inline void _http_request_get_options_subr(INTERNAL_FUNCTION_PARAMETERS, array_init(return_value); - if (SUCCESS == zend_hash_find(Z_ARRVAL_P(opts), key, len, (void **) &options)) { + if ( (Z_TYPE_P(opts) == IS_ARRAY) && + (SUCCESS == zend_hash_find(Z_ARRVAL_P(opts), key, len, (void **) &options))) { convert_to_array(*options); array_copy(*options, return_value); } @@ -715,6 +719,7 @@ PHP_METHOD(HttpRequest, setOptions) if (!opts || !zend_hash_num_elements(Z_ARRVAL_P(opts))) { SET_PROP(obj, options, new_opts); + zval_ptr_dtor(&new_opts); RETURN_TRUE; } @@ -1369,6 +1374,7 @@ PHP_METHOD(HttpRequest, setPostFiles) array_copy(files, post); } SET_PROP(obj, postFiles, post); + zval_ptr_dtor(&post); RETURN_TRUE; } @@ -1386,9 +1392,9 @@ PHP_METHOD(HttpRequest, getPostFiles) IF_RETVAL_USED { getObject(http_request_object, obj); - - array_init(return_value); - array_copy(GET_PROP(obj, postFiles), return_value); + zval *files = GET_PROP(obj, postFiles); + + RETURN_ZVAL(files, 1, 0); } } /* }}} */ @@ -1453,9 +1459,9 @@ PHP_METHOD(HttpRequest, getResponseData) IF_RETVAL_USED { getObject(http_request_object, obj); + zval *data = GET_PROP(obj, responseData); - array_init(return_value); - array_copy(GET_PROP(obj, responseData), return_value); + RETURN_ZVAL(data, 1, 0); } } /* }}} */