X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_functions.c;h=3ec05777fc273bbdacb68533fa97545a2403547c;hp=bf376ac479b46b3a7d54cdf267b1801a9cd47581;hb=8d25696948ed61d50c417275222117f43069ddd1;hpb=a0098fdbfef71be0fab417b5bc624dc884bd4549 diff --git a/http_functions.c b/http_functions.c index bf376ac..3ec0577 100644 --- a/http_functions.c +++ b/http_functions.c @@ -1,16 +1,13 @@ /* - +----------------------------------------------------------------------+ - | PECL :: http | - +----------------------------------------------------------------------+ - | This source file is subject to version 3.0 of the PHP license, that | - | is bundled with this package in the file LICENSE, and is available | - | through the world-wide-web at http://www.php.net/license/3_0.txt. | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Copyright (c) 2004-2005 Michael Wallner | - +----------------------------------------------------------------------+ + +--------------------------------------------------------------------+ + | PECL :: http | + +--------------------------------------------------------------------+ + | Redistribution and use in source and binary forms, with or without | + | modification, are permitted provided that the conditions mentioned | + | in the accompanying LICENSE file are met. | + +--------------------------------------------------------------------+ + | Copyright (c) 2004-2005, Michael Wallner | + +--------------------------------------------------------------------+ */ /* $Id$ */ @@ -140,9 +137,10 @@ PHP_FUNCTION(http_build_uri) } \ \ if (rs_array) { \ + HashPosition pos; \ zval **value; \ \ - FOREACH_VAL(supported, value) { \ + FOREACH_VAL(pos, supported, value) { \ convert_to_string_ex(value); \ add_assoc_double(rs_array, Z_STRVAL_PP(value), 1.0); \ } \ @@ -441,6 +439,8 @@ PHP_FUNCTION(http_cache_last_modified) if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &last_modified) != SUCCESS) { RETURN_FALSE; } + + HTTP_CHECK_HEADERS_SENT(RETURN_FALSE); t = (long) time(NULL); @@ -488,6 +488,8 @@ PHP_FUNCTION(http_cache_etag) if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", &etag, &etag_len) != SUCCESS) { RETURN_FALSE; } + + HTTP_CHECK_HEADERS_SENT(RETURN_FALSE); RETURN_SUCCESS(http_cache_etag(etag, etag_len, HTTP_DEFAULT_CACHECONTROL, lenof(HTTP_DEFAULT_CACHECONTROL))); } @@ -513,7 +515,7 @@ PHP_FUNCTION(ob_etaghandler) } /* }}} */ -/* {{{ proto void http_throttle(double sec[, int bytes = 2097152]) +/* {{{ proto void http_throttle(double sec[, int bytes = 40960]) * * Sets the throttle delay and send buffer size for use with http_send() API. * Provides a basic throttling mechanism, which will yield the current process @@ -956,7 +958,7 @@ PHP_FUNCTION(http_match_request_header) * - compress: bool, whether to allow gzip/deflate content encoding * (defaults to true) * - port: int, use another port as specified in the url - * - referer: string, the referer to sends + * - referer: string, the referer to send * - useragent: string, the user agent to send * (defaults to PECL::HTTP/version (PHP/version))) * - headers: array, list of custom headers as associative array @@ -1262,7 +1264,7 @@ PHP_FUNCTION(http_request_method_register) { char *method; int method_len; - unsigned long existing; + ulong existing; if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &method, &method_len)) { RETURN_FALSE; @@ -1299,7 +1301,7 @@ PHP_FUNCTION(http_request_method_unregister) if (is_numeric_string(Z_STRVAL_P(method), Z_STRLEN_P(method), NULL, NULL, 1)) { convert_to_long(method); } else { - unsigned long mn; + ulong mn; if (!(mn = http_request_method_exists(1, 0, Z_STRVAL_P(method)))) { RETURN_FALSE; } @@ -1367,7 +1369,7 @@ PHP_FUNCTION(http_request_method_name) RETURN_FALSE; } - RETURN_STRING(estrdup(http_request_method_name((unsigned long) method)), 0); + RETURN_STRING(estrdup(http_request_method_name((ulong) method)), 0); } } /* }}} */ @@ -1384,21 +1386,17 @@ PHP_FUNCTION(http_build_query) int prefix_len = 0, arg_sep_len = strlen(arg_sep); phpstr *formstr; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|ss", &formdata, &prefix, &prefix_len, &arg_sep, &arg_sep_len) != SUCCESS) { - RETURN_FALSE; - } - - if (Z_TYPE_P(formdata) != IS_ARRAY && Z_TYPE_P(formdata) != IS_OBJECT) { - http_error(HE_WARNING, HTTP_E_INVALID_PARAM, "Parameter 1 expected to be Array or Object. Incorrect value given."); + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a|ss", &formdata, &prefix, &prefix_len, &arg_sep, &arg_sep_len) != SUCCESS) { RETURN_FALSE; } if (!arg_sep_len) { arg_sep = HTTP_URL_ARGSEP; + arg_sep_len = lenof(HTTP_URL_ARGSEP); } formstr = phpstr_new(); - if (SUCCESS != http_urlencode_hash_implementation_ex(HASH_OF(formdata), formstr, arg_sep, prefix, prefix_len, NULL, 0, NULL, 0, (Z_TYPE_P(formdata) == IS_OBJECT ? formdata : NULL))) { + if (SUCCESS != http_urlencode_hash_recursive(HASH_OF(formdata), formstr, arg_sep, arg_sep_len, prefix, prefix_len)) { phpstr_free(&formstr); RETURN_FALSE; } @@ -1602,7 +1600,7 @@ PHP_FUNCTION(http_uncompress) * * 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. + * all supported features that depend on external libraries. * * Available features to probe for are: *