- Fixed build on php-trunk
[m6w6/ext-http] / http_functions.c
index 4527c25388f0f8b16a0d215513e7d52649a76a14..079996986697c361a73f6c6a9e6ce520d24db4cc 100644 (file)
@@ -6,7 +6,7 @@
     | modification, are permitted provided that the conditions mentioned |
     | in the accompanying LICENSE file are met.                          |
     +--------------------------------------------------------------------+
-    | Copyright (c) 2004-2007, Michael Wallner <mike@php.net>            |
+    | Copyright (c) 2004-2010, Michael Wallner <mike@php.net>            |
     +--------------------------------------------------------------------+
 */
 
@@ -43,6 +43,7 @@
 PHP_FUNCTION(http_date)
 {
        long t = -1;
+       char *date;
 
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &t) != SUCCESS) {
                RETURN_FALSE;
@@ -52,7 +53,12 @@ PHP_FUNCTION(http_date)
                t = HTTP_G->request.time;
        }
 
-       RETURN_STRING(http_date(t), 0);
+       if (!(date = http_date(t))) {
+               http_error_ex(HE_WARNING, HTTP_E_INVALID_PARAM, "Could not compose date of timestamp %ld", t);
+               RETURN_FALSE;
+       }
+       
+       RETURN_STRING(date, 0);
 }
 /* }}} */
 
@@ -185,11 +191,12 @@ PHP_FUNCTION(http_build_str)
                \
                if (rs_array) { \
                        HashPosition pos; \
-                       zval **value; \
+                       zval **value_ptr; \
                         \
-                       FOREACH_VAL(pos, supported, value) { \
-                               convert_to_string_ex(value); \
-                               add_assoc_double(rs_array, Z_STRVAL_PP(value), 1.0); \
+                       FOREACH_VAL(pos, supported, value_ptr) { \
+                               zval *value = http_zsep(IS_STRING, *value_ptr); \
+                               add_assoc_double(rs_array, Z_STRVAL_P(value), 1.0); \
+                               zval_ptr_dtor(&value); \
                        } \
                } \
        } \
@@ -256,7 +263,7 @@ PHP_FUNCTION(http_negotiate_content_type)
        Send HTTP status code. */
 PHP_FUNCTION(http_send_status)
 {
-       int status = 0;
+       long status = 0;
 
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &status) != SUCCESS) {
                RETURN_FALSE;
@@ -675,10 +682,9 @@ PHP_FUNCTION(http_parse_cookie)
        if (allowed_extras_array) {
                allowed_extras = ecalloc(zend_hash_num_elements(Z_ARRVAL_P(allowed_extras_array)) + 1, sizeof(char *));
                FOREACH_VAL(pos, allowed_extras_array, entry) {
-                       ZVAL_ADDREF(*entry);
-                       convert_to_string_ex(entry);
-                       allowed_extras[i++] = estrndup(Z_STRVAL_PP(entry), Z_STRLEN_PP(entry));
-                       zval_ptr_dtor(entry);
+                       zval *data = http_zsep(IS_STRING, *entry);
+                       allowed_extras[i++] = estrndup(Z_STRVAL_P(data), Z_STRLEN_P(data));
+                       zval_ptr_dtor(&data);
                }
        }
        
@@ -856,7 +862,7 @@ PHP_FUNCTION(http_persistent_handles_ident)
                zval **bodyonly; \
                 \
                /* check if only the body should be returned */ \
-               if (options && (SUCCESS == zend_hash_find(Z_ARRVAL_P(options), "bodyonly", sizeof("bodyonly"), (void *) &bodyonly)) && zval_is_true(*bodyonly)) { \
+               if (options && (SUCCESS == zend_hash_find(Z_ARRVAL_P(options), "bodyonly", sizeof("bodyonly"), (void *) &bodyonly)) && i_zend_is_true(*bodyonly)) { \
                        http_message *msg = http_message_parse(PHPSTR_VAL(&request.conv.response), PHPSTR_LEN(&request.conv.response)); \
                         \
                        if (msg) { \