X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_functions.c;h=41afd28e3733664ab0d7ad22e3f47fd2420002a1;hp=39327d10f4fa76f8292b0457a989f001ec42a466;hb=7b88d9022c90eb12e5fe195af8644935141c9d68;hpb=bae1d9bccd93257b15065f1b51579b2d0b5cc1e4 diff --git a/http_functions.c b/http_functions.c index 39327d1..41afd28 100644 --- a/http_functions.c +++ b/http_functions.c @@ -41,8 +41,6 @@ #include "php_http_send_api.h" #include "php_http_url_api.h" -ZEND_EXTERN_MODULE_GLOBALS(http) - /* {{{ proto string http_date([int timestamp]) * * Compose a valid HTTP date regarding RFC 822/1123 @@ -1596,13 +1594,11 @@ PHP_FUNCTION(http_deflate) RETVAL_NULL(); if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &data, &data_len, &flags)) { - { - char *encoded; - size_t encoded_len; - - if (SUCCESS == http_encoding_deflate(flags, data, data_len, &encoded, &encoded_len)) { - RETURN_STRINGL(encoded, (int) encoded_len, 0); - } + char *encoded; + size_t encoded_len; + + if (SUCCESS == http_encoding_deflate(flags, data, data_len, &encoded, &encoded_len)) { + RETURN_STRINGL(encoded, (int) encoded_len, 0); } } } @@ -1635,6 +1631,47 @@ PHP_FUNCTION(http_inflate) } /* }}} */ +/* {{{ proto string ob_deflatehandler(string data, int mode) + * + * For use with ob_start(). The deflate output buffer handler can only be used once. + * It conflicts with ob_gzhanlder and zlib.output_compression as well and should + * not be used after ext/mbstrings mb_output_handler and ext/sessions URL-Rewriter (AKA + * session.use_trans_sid). + */ +PHP_FUNCTION(ob_deflatehandler) +{ + char *data; + int data_len; + long mode; + + if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sl", &data, &data_len, &mode)) { + RETURN_FALSE; + } + + http_ob_deflatehandler(data, data_len, &Z_STRVAL_P(return_value), (uint *) &Z_STRLEN_P(return_value), mode); + Z_TYPE_P(return_value) = Z_STRVAL_P(return_value) ? IS_STRING : IS_NULL; +} +/* }}} */ + +/* {{{ proto string ob_inflatehandler(string data, int mode) + * + * For use with ob_start(). Same restrictions as with ob_deflatehandler apply. + */ +PHP_FUNCTION(ob_inflatehandler) +{ + char *data; + int data_len; + long mode; + + if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sl", &data, &data_len, &mode)) { + RETURN_FALSE; + } + + http_ob_inflatehandler(data, data_len, &Z_STRVAL_P(return_value), (uint *) &Z_STRLEN_P(return_value), mode); + Z_TYPE_P(return_value) = Z_STRVAL_P(return_value) ? IS_STRING : IS_NULL; +} +/* }}} */ + #endif /* HTTP_HAVE_ZLIB */ /* }}} */