addref
[m6w6/ext-http] / php_http_env.c
index 632562c38a91dc0d1cff50e613824e7d44c27c9b..99ea0e00f4d8732c8ac7261e480d2d8c1f54b5f8 100644 (file)
@@ -415,6 +415,9 @@ static void grab_header(void *data, void *arg)
        && !strncmp(header->header, args->name_str, args->name_len)
        ) {
                args->value_ptr = &header->header[args->name_len + 1];
+               while (PHP_HTTP_IS_CTYPE(space, *args->value_ptr)) {
+                       ++args->value_ptr;
+               }
        }
 }
 
@@ -777,15 +780,15 @@ ZEND_END_ARG_INFO();
 static PHP_METHOD(HttpEnv, setResponseHeader)
 {
        char *header_name_str;
-       int header_name_len;
+       size_t header_name_len;
        zval *header_value = NULL;
-       long code = 0;
+       zend_long code = 0;
        zend_bool replace_header = 1;
 
        if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS(), "s|z!lb", &header_name_str, &header_name_len, &header_value, &code, &replace_header)) {
                return;
        }
-       RETURN_BOOL(SUCCESS == php_http_env_set_response_header_value(code, header_name_str, header_name_len, header_value, replace_header TSRMLS_CC));
+       RETURN_BOOL(SUCCESS == php_http_env_set_response_header_value(code, header_name_str, header_name_len, header_value, replace_header));
 }
 
 ZEND_BEGIN_ARG_INFO_EX(ai_HttpEnv_setResponseCode, 0, 0, 1)
@@ -949,14 +952,15 @@ static SAPI_POST_HANDLER_FUNC(php_http_json_post_handler)
 
        if (json) {
                if (json->len) {
-                       zval zjson;
+                       zval tmp;
+
+                       ZVAL_NULL(&tmp);
+                       php_json_decode(&tmp, json->val, json->len, 1, PG(max_input_nesting_level));
 
-                       ZVAL_NULL(&zjson);
-                       php_json_decode(&zjson, json->val, json->len, 1, PG(max_input_nesting_level));
-                       if (Z_TYPE(zjson) != IS_NULL) {
-                               zval_dtor(zarg);
-                               ZVAL_COPY_VALUE(zarg, (&zjson));
+                       if (Z_TYPE(tmp) == IS_ARRAY) {
+                               array_copy(Z_ARRVAL(tmp), Z_ARRVAL_P(zarg));
                        }
+                       zval_ptr_dtor(&tmp);
                }
                zend_string_release(json);
        }