X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_url_api.c;h=30db604274ca4b3a7b8d9ef62998c6e6a4d17e20;hp=9068378fcaebb17302cd81504a76139eeb3155dd;hb=3837de728f09505d2bed811d0b26819ee719c3d9;hpb=6e0f8b58a679ce54bbe274e936056551066df7af diff --git a/http_url_api.c b/http_url_api.c index 9068378..30db604 100644 --- a/http_url_api.c +++ b/http_url_api.c @@ -6,7 +6,7 @@ | modification, are permitted provided that the conditions mentioned | | in the accompanying LICENSE file are met. | +--------------------------------------------------------------------+ - | Copyright (c) 2004-2006, Michael Wallner | + | Copyright (c) 2004-2007, Michael Wallner | +--------------------------------------------------------------------+ */ @@ -161,7 +161,7 @@ PHP_HTTP_API void _http_build_url(int flags, const php_url *old_url, const php_u } if (!url->scheme) { - zval *https = http_get_server_var("HTTPS"); + zval *https = http_get_server_var("HTTPS", 1); if (https && !strcasecmp(Z_STRVAL_P(https), "ON")) { url->scheme = estrndup("https", lenof("https")); } else switch (url->port) { @@ -191,8 +191,8 @@ PHP_HTTP_API void _http_build_url(int flags, const php_url *old_url, const php_u if (!url->host) { zval *zhost; - if ((((zhost = http_get_server_var("HTTP_HOST")) || - (zhost = http_get_server_var("SERVER_NAME")))) && Z_STRLEN_P(zhost)) { + if ((((zhost = http_get_server_var("HTTP_HOST", 1)) || + (zhost = http_get_server_var("SERVER_NAME", 1)))) && Z_STRLEN_P(zhost)) { url->host = estrndup(Z_STRVAL_P(zhost), Z_STRLEN_P(zhost)); } else { url->host = localhostname(); @@ -306,9 +306,9 @@ PHP_HTTP_API void _http_build_url(int flags, const php_url *old_url, const php_u strlcat(*url_str, url->host, HTTP_URL_MAXLEN); if (url->port) { - char port_str[8] = {0}; + char port_str[8]; - snprintf(port_str, lenof(port_str), "%d", (int) url->port); + snprintf(port_str, sizeof(port_str), "%d", (int) url->port); strlcat(*url_str, ":", HTTP_URL_MAXLEN); strlcat(*url_str, port_str, HTTP_URL_MAXLEN); } @@ -374,9 +374,7 @@ PHP_HTTP_API STATUS _http_urlencode_hash_ex(HashTable *hash, zend_bool override_ /* {{{ http_urlencode_hash_recursive */ PHP_HTTP_API STATUS _http_urlencode_hash_recursive(HashTable *ht, phpstr *str, const char *arg_sep, size_t arg_sep_len, const char *prefix, size_t prefix_len TSRMLS_DC) { - char *key = NULL; - uint len = 0; - ulong idx = 0; + HashKey key = initHashKey(0); zval **data = NULL; HashPosition pos; @@ -388,7 +386,7 @@ PHP_HTTP_API STATUS _http_urlencode_hash_recursive(HashTable *ht, phpstr *str, c return SUCCESS; } - FOREACH_HASH_KEYLENVAL(pos, ht, key, len, idx, data) { + FOREACH_HASH_KEYVAL(pos, ht, key, data) { char *encoded_key; int encoded_len; phpstr new_prefix; @@ -398,18 +396,17 @@ PHP_HTTP_API STATUS _http_urlencode_hash_recursive(HashTable *ht, phpstr *str, c return FAILURE; } - if (key) { - if (!*key) { + if (key.type == HASH_KEY_IS_STRING) { + if (!*key.str) { /* only public properties */ continue; } - if (len && key[len - 1] == '\0') { - --len; + if (key.len && key.str[key.len - 1] == '\0') { + --key.len; } - encoded_key = php_url_encode(key, len, &encoded_len); - key = NULL; + encoded_key = php_url_encode(key.str, key.len, &encoded_len); } else { - encoded_len = spprintf(&encoded_key, 0, "%ld", idx); + encoded_len = spprintf(&encoded_key, 0, "%ld", key.num); } {