X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_functions.c;h=f42fccba9b28c02eadb76488aed0f8607194ab7e;hp=2e72ab853dafcf82ebfab327ff56703b9f059adf;hb=7038c951485d1b2afa79c9a84b8dcdcb57c9bc54;hpb=a12e8ddfaa5a94e76261f165b0c0299c87b886b1 diff --git a/http_functions.c b/http_functions.c index 2e72ab8..f42fccb 100644 --- a/http_functions.c +++ b/http_functions.c @@ -15,9 +15,6 @@ /* $Id$ */ -#define _WINSOCKAPI_ -#define ZEND_INCLUDE_FULL_WINDOWS_HEADERS - #ifdef HAVE_CONFIG_H # include "config.h" #endif @@ -61,7 +58,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 +77,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); } /* }}} */ @@ -375,7 +373,7 @@ PHP_FUNCTION(http_cache_last_modified) */ PHP_FUNCTION(http_cache_etag) { - char *etag; + char *etag = NULL; int etag_len = 0; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", &etag, &etag_len) != SUCCESS) { @@ -467,7 +465,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); @@ -596,7 +595,7 @@ PHP_FUNCTION(http_split_response) RETURN_FALSE; } - convert_to_string_ex(&zresponse); + convert_to_string(zresponse); MAKE_STD_ZVAL(zbody); MAKE_STD_ZVAL(zheaders); @@ -631,7 +630,7 @@ PHP_FUNCTION(http_parse_headers) header_len = rnrn - header + 2; } if (SUCCESS != http_parse_headers(header, header_len, return_value)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not parse HTTP header"); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not parse HTTP headers"); zval_dtor(return_value); RETURN_FALSE; }