PHP_RINIT_FUNCTION(http_env)
{
- PHP_HTTP_G->env.request.time = sapi_get_request_time(TSRMLS_C);
-
/* populate form data on non-POST requests */
if (SG(request_info).request_method && strcasecmp(SG(request_info).request_method, "POST") && SG(request_info).content_type && *SG(request_info).content_type) {
uint ct_len = strlen(SG(request_info).content_type);
}
}
- STR_SET(SG(request_info).content_type_dup, NULL);
+ PTR_SET(SG(request_info).content_type_dup, NULL);
return SUCCESS;
}
return PHP_HTTP_RANGE_NO;
}
if (strncmp(range, "bytes=", lenof("bytes="))) {
- STR_FREE(range);
+ PTR_FREE(range);
return PHP_HTTP_RANGE_NO;
}
switch (end) {
/* "0-" */
case -1:
- STR_FREE(range);
+ PTR_FREE(range);
return PHP_HTTP_RANGE_NO;
/* "0-0" */
case -1:
/* "-", "-0" */
if (end == -1 || end == -10) {
- STR_FREE(range);
+ PTR_FREE(range);
return PHP_HTTP_RANGE_ERR;
}
begin = length - end;
/* "12345-(NNN)" */
default:
if (length <= (size_t) begin) {
- STR_FREE(range);
+ PTR_FREE(range);
return PHP_HTTP_RANGE_ERR;
}
switch (end) {
/* "12345-0" */
case -10:
- STR_FREE(range);
+ PTR_FREE(range);
return PHP_HTTP_RANGE_ERR;
/* "12345-" */
if (length <= (size_t) end) {
end = length - 1;
} else if (end < begin) {
- STR_FREE(range);
+ PTR_FREE(range);
return PHP_HTTP_RANGE_ERR;
}
break;
break;
default:
- STR_FREE(range);
+ PTR_FREE(range);
return PHP_HTTP_RANGE_NO;
}
} while (c != 0);
- STR_FREE(range);
+ PTR_FREE(range);
return PHP_HTTP_RANGE_OK;
}
php_http_buffer_appends(PHP_HTTP_BUFFER(arg), PHP_HTTP_CRLF);
}
-STATUS php_http_env_get_response_headers(HashTable *headers_ht TSRMLS_DC)
+ZEND_RESULT_CODE php_http_env_get_response_headers(HashTable *headers_ht TSRMLS_DC)
{
- STATUS status;
+ ZEND_RESULT_CODE status;
php_http_buffer_t headers;
php_http_buffer_init(&headers);
return code ? code : 200;
}
-STATUS php_http_env_set_response_code(long http_code TSRMLS_DC)
+ZEND_RESULT_CODE php_http_env_set_response_code(long http_code TSRMLS_DC)
{
return sapi_header_op(SAPI_HEADER_SET_STATUS, (void *) http_code TSRMLS_CC);
}
-STATUS php_http_env_set_response_status_line(long code, php_http_version_t *v TSRMLS_DC)
+ZEND_RESULT_CODE php_http_env_set_response_status_line(long code, php_http_version_t *v TSRMLS_DC)
{
sapi_header_line h = {NULL, 0, 0};
- STATUS ret;
+ ZEND_RESULT_CODE ret;
h.line_len = spprintf(&h.line, 0, "HTTP/%u.%u %ld %s", v->major, v->minor, code, php_http_env_get_response_status_for_code(code));
ret = sapi_header_op(SAPI_HEADER_REPLACE, (void *) &h TSRMLS_CC);
return ret;
}
-STATUS php_http_env_set_response_protocol_version(php_http_version_t *v TSRMLS_DC)
+ZEND_RESULT_CODE php_http_env_set_response_protocol_version(php_http_version_t *v TSRMLS_DC)
{
return php_http_env_set_response_status_line(php_http_env_get_response_code(TSRMLS_C), v TSRMLS_CC);
}
-STATUS php_http_env_set_response_header(long http_code, const char *header_str, size_t header_len, zend_bool replace TSRMLS_DC)
+ZEND_RESULT_CODE php_http_env_set_response_header(long http_code, const char *header_str, size_t header_len, zend_bool replace TSRMLS_DC)
{
sapi_header_line h = {estrndup(header_str, header_len), header_len, http_code};
- STATUS ret = sapi_header_op(replace ? SAPI_HEADER_REPLACE : SAPI_HEADER_ADD, (void *) &h TSRMLS_CC);
+ ZEND_RESULT_CODE ret = sapi_header_op(replace ? SAPI_HEADER_REPLACE : SAPI_HEADER_ADD, (void *) &h TSRMLS_CC);
efree(h.line);
return ret;
}
-STATUS php_http_env_set_response_header_va(long http_code, zend_bool replace, const char *fmt, va_list argv TSRMLS_DC)
+ZEND_RESULT_CODE php_http_env_set_response_header_va(long http_code, zend_bool replace, const char *fmt, va_list argv TSRMLS_DC)
{
- STATUS ret = FAILURE;
+ ZEND_RESULT_CODE ret = FAILURE;
sapi_header_line h = {NULL, 0, http_code};
h.line_len = vspprintf(&h.line, 0, fmt, argv);
return ret;
}
-STATUS php_http_env_set_response_header_format(long http_code, zend_bool replace TSRMLS_DC, const char *fmt, ...)
+ZEND_RESULT_CODE php_http_env_set_response_header_format(long http_code, zend_bool replace TSRMLS_DC, const char *fmt, ...)
{
- STATUS ret;
+ ZEND_RESULT_CODE ret;
va_list args;
va_start(args, fmt);
return ret;
}
-STATUS php_http_env_set_response_header_value(long http_code, const char *name_str, size_t name_len, zval *value, zend_bool replace TSRMLS_DC)
+ZEND_RESULT_CODE php_http_env_set_response_header_value(long http_code, const char *name_str, size_t name_len, zval *value, zend_bool replace TSRMLS_DC)
{
if (!value) {
sapi_header_line h = {(char *) name_str, name_len, http_code};
return php_http_env_set_response_header_value(http_code, name_str, name_len, NULL, replace TSRMLS_CC);
} else {
sapi_header_line h;
- STATUS ret;
+ ZEND_RESULT_CODE ret;
if (name_len > INT_MAX) {
name_len = INT_MAX;
ret = sapi_header_op(replace ? SAPI_HEADER_REPLACE : SAPI_HEADER_ADD, (void *) &h TSRMLS_CC);
zval_ptr_dtor(&data);
- STR_FREE(h.line);
+ PTR_FREE(h.line);
return ret;
}
#endif
if (json_len) {
- zval_dtor(zarg);
- ZVAL_NULL(zarg);
- php_json_decode(zarg, json_str, json_len, 1, PG(max_input_nesting_level) TSRMLS_CC);
+ zval zjson;
+
+ INIT_ZVAL(zjson);
+ php_json_decode(&zjson, json_str, json_len, 1, PG(max_input_nesting_level) TSRMLS_CC);
+ if (Z_TYPE(zjson) != IS_NULL) {
+ zval_dtor(zarg);
+ ZVAL_COPY_VALUE(zarg, (&zjson));
+ }
}
#if PHP_VERSION_ID >= 50600
- STR_FREE(json_str);
+ PTR_FREE(json_str);
#endif
-
- /* always let $_POST be array() */
- if (Z_TYPE_P(zarg) == IS_NULL) {
- array_init(zarg);
- }
}
static void php_http_env_register_json_handler(TSRMLS_D)