- no need to check for COMPILE_DL_SESSION
[m6w6/ext-http] / http_request_object.c
index 4b85676f3e47a5fbec98c2f2964795d9aac6c600..7567b96d342edeaa482423b378369dca9ad9d9a7 100644 (file)
@@ -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);
        }
 }
 /* }}} */