- no pecl/event for ya
[m6w6/ext-http] / http_url_api.c
index 9068378fcaebb17302cd81504a76139eeb3155dd..30db604274ca4b3a7b8d9ef62998c6e6a4d17e20 100644 (file)
@@ -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 <mike@php.net>            |
+    | Copyright (c) 2004-2007, Michael Wallner <mike@php.net>            |
     +--------------------------------------------------------------------+
 */
 
@@ -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);
                }
                
                {