X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=http_functions.c;h=bf376ac479b46b3a7d54cdf267b1801a9cd47581;hb=a0098fdbfef71be0fab417b5bc624dc884bd4549;hp=d205ea26567f10a5106f68b054fe21bb0df26d57;hpb=3f47fc4cd2911b718b155de4e37752db9fa4f8c8;p=m6w6%2Fext-http diff --git a/http_functions.c b/http_functions.c index d205ea2..bf376ac 100644 --- a/http_functions.c +++ b/http_functions.c @@ -1028,6 +1028,7 @@ PHP_FUNCTION(http_get) if (SUCCESS == http_get(URL, options ? Z_ARRVAL_P(options) : NULL, info ? Z_ARRVAL_P(info) : NULL, &response)) { RETURN_PHPSTR_VAL(&response); } else { + phpstr_dtor(&response); RETURN_FALSE; } } @@ -1061,6 +1062,7 @@ PHP_FUNCTION(http_head) if (SUCCESS == http_head(URL, options ? Z_ARRVAL_P(options) : NULL, info ? Z_ARRVAL_P(info) : NULL, &response)) { RETURN_PHPSTR_VAL(&response); } else { + phpstr_dtor(&response); RETURN_FALSE; } } @@ -1100,6 +1102,7 @@ PHP_FUNCTION(http_post_data) if (SUCCESS == http_post(URL, &body, options ? Z_ARRVAL_P(options) : NULL, info ? Z_ARRVAL_P(info) : NULL, &response)) { RETVAL_PHPSTR_VAL(&response); } else { + phpstr_dtor(&response); RETVAL_FALSE; } } @@ -1139,6 +1142,7 @@ PHP_FUNCTION(http_post_fields) if (SUCCESS == http_post(URL, &body, options ? Z_ARRVAL_P(options) : NULL, info ? Z_ARRVAL_P(info) : NULL, &response)) { RETVAL_PHPSTR_VAL(&response); } else { + phpstr_dtor(&response); RETVAL_FALSE; } http_request_body_dtor(&body); @@ -1189,6 +1193,7 @@ PHP_FUNCTION(http_put_file) if (SUCCESS == http_put(URL, &body, options ? Z_ARRVAL_P(options) : NULL, info ? Z_ARRVAL_P(info) : NULL, &response)) { RETVAL_PHPSTR_VAL(&response); } else { + phpstr_dtor(&response); RETVAL_FALSE; } http_request_body_dtor(&body); @@ -1237,6 +1242,7 @@ PHP_FUNCTION(http_put_stream) if (SUCCESS == http_put(URL, &body, options ? Z_ARRVAL_P(options) : NULL, info ? Z_ARRVAL_P(info) : NULL, &response)) { RETURN_PHPSTR_VAL(&response); } else { + phpstr_dtor(&response); RETURN_NULL(); } } @@ -1544,7 +1550,7 @@ PHP_FUNCTION(http_compress) { char *data; int data_len; - long level; + long level = -1; RETVAL_NULL(); @@ -1582,7 +1588,7 @@ PHP_FUNCTION(http_uncompress) size_t decoded_len; if (SUCCESS == http_encoding_uncompress(data, data_len, &decoded, &decoded_len)) { - RETURN_STRINGL(decoded, decoded_len, 0); + RETURN_STRINGL(decoded, (int) decoded_len, 0); } } } @@ -1590,6 +1596,44 @@ PHP_FUNCTION(http_uncompress) #endif /* HTTP_HAVE_ZLIB */ /* }}} */ +/* {{{ proto int http_support([int feature = 0]) + * + * Check for feature that require external libraries. + * + * Accpepts an optional in parameter specifying which feature to probe for. + * If the parameter is 0 or omitted, the return value contains a bitmask of + * all supported featuers that depend on external libraries. + * + * Available features to probe for are: + * + * + * Returns int, whether requested feature is supported, or a bitmask with + * all supported features. + */ +PHP_FUNCTION(http_support) +{ + long feature = 0; + + RETVAL_LONG(0L); + + if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &feature)) { + RETVAL_LONG(http_support(feature)); + } +} +/* }}} */ + PHP_FUNCTION(http_test) { }