X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_functions.c;h=3ed49b22f6e8b8261a9737cba6c3d80793e31055;hp=6afde9455f8773e917d8403afb1cd068865ad33c;hb=f6e558f7886fff36d239ae2fae69d955ac6925ee;hpb=6dd728f3faa5dcedf81f3f9a6cfe2e41993efc0b diff --git a/http_functions.c b/http_functions.c index 6afde94..3ed49b2 100644 --- a/http_functions.c +++ b/http_functions.c @@ -61,7 +61,7 @@ PHP_FUNCTION(http_date) } /* }}} */ -/* {{{ proto string http_absolute_uri(string url[, string proto]) +/* {{{ proto string http_absolute_uri(string url[, string proto[, string host[, int port]]]) * * This function returns an absolute URI constructed from url. * If the url is already abolute but a different proto was supplied, @@ -80,14 +80,15 @@ PHP_FUNCTION(http_date) */ PHP_FUNCTION(http_absolute_uri) { - char *url = NULL, *proto = NULL; - int url_len = 0, proto_len = 0; + char *url = NULL, *proto = NULL, *host = NULL; + int url_len = 0, proto_len = 0, host_len = 0; + long port = 0; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s", &url, &url_len, &proto, &proto_len) != SUCCESS) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ssl", &url, &url_len, &proto, &proto_len, &host, &host_len, &port) != SUCCESS) { RETURN_FALSE; } - RETURN_STRING(http_absolute_uri(url, proto), 0); + RETURN_STRING(http_absolute_uri_ex(url, url_len, proto, proto_len, host, host_len, port), 0); } /* }}} */ @@ -467,7 +468,8 @@ PHP_FUNCTION(http_redirect) } } - URI = http_absolute_uri(url, NULL); + URI = http_absolute_uri(url); + if (query_len) { snprintf(LOC, HTTP_URI_MAXLEN + sizeof("Location: "), "Location: %s?%s", URI, query); sprintf(RED, "Redirecting to %s?%s.\n", URI, query, URI, query); @@ -630,7 +632,7 @@ PHP_FUNCTION(http_parse_headers) if (rnrn = strstr(header, HTTP_CRLF HTTP_CRLF)) { header_len = rnrn - header + 2; } - if (SUCCESS != http_parse_headers(header, header_len, return_value)) { + if (SUCCESS != http_parse_headers(header, header_len, Z_ARRVAL_P(return_value))) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not parse HTTP header"); zval_dtor(return_value); RETURN_FALSE; @@ -643,9 +645,7 @@ PHP_FUNCTION(http_parse_headers) */ PHP_FUNCTION(http_get_request_headers) { - if (ZEND_NUM_ARGS()) { - WRONG_PARAM_COUNT; - } + NO_ARGS; array_init(return_value); http_get_request_headers(return_value); @@ -682,6 +682,13 @@ PHP_FUNCTION(http_get_request_headers) * - cookies: array, list of cookies as associative array * like array("cookie" => "value") * - cookiestore: string, path to a file where cookies are/will be stored + * - resume: int, byte offset to start the download from; + * if the server supports ranges + * - maxfilesize: int, maximum file size that should be downloaded; + * has no effect, if the size of the requested entity is not known + * - lastmodified: int, timestamp for If-(Un)Modified-Since header + * - timeout: int, seconds the request may take + * - connecttimeout: int, seconds the connect may take * * * The optional third parameter will be filled with some additional information @@ -892,7 +899,6 @@ PHP_FUNCTION(http_auth_basic) * } * return false; * } - * * if (!http_auth_basic_cb('auth_cb')) { * die('

Authorization failed

'); * } @@ -993,3 +999,4 @@ PHP_FUNCTION(http_build_query) * vim600: noet sw=4 ts=4 fdm=marker * vim<600: noet sw=4 ts=4 */ +