- finalize persistent handle support (probably)
[m6w6/ext-http] / http_functions.c
index c4e358d2fe2939501fcde5c8fad0b3cf4b3898ff..737cce82561ce2a0b9189d558808371a66ccb296 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>            |
     +--------------------------------------------------------------------+
 */
 
@@ -56,10 +56,6 @@ PHP_FUNCTION(http_date)
 }
 /* }}} */
 
-#if PHP_MAJOR_VERSION == 4 && PHP_MINOR_VERSION == 3 && PHP_RELEASE_VERSION < 10
-#      define php_url_parse_ex(u, l) php_url_parse(u)
-#endif
-
 /* {{{ proto string http_build_url([mixed url[, mixed parts[, int flags = HTTP_URL_REPLACE[, array &new_url]]]])
        Build an URL. */
 PHP_FUNCTION(http_build_url)
@@ -806,27 +802,14 @@ PHP_FUNCTION(http_match_request_header)
 }
 /* }}} */
 
-/* {{{ HAVE_CURL */
-#ifdef HTTP_HAVE_CURL
-#ifdef HTTP_HAVE_PERSISTENT_HANDLES
-
 /* {{{ proto object http_persistent_handles_count() */
 PHP_FUNCTION(http_persistent_handles_count)
 {
-       char **names;
-       int *counts;
-       int i, n;
-       
        NO_ARGS;
-       
-       if ((n = http_persistent_handle_statall(&names, &counts))) {
-               object_init(return_value);
-               for (i = 0; i < n; ++i) {
-                       add_property_long(return_value, names[i], counts[i]);
-                       efree(names[i]);
-               }
-               efree(names);
-               efree(counts);
+       object_init(return_value);
+       if (!http_persistent_handle_statall_ex(HASH_OF(return_value))) {
+               zval_dtor(return_value);
+               RETURN_NULL();
        }
 }
 /* }}} */
@@ -838,12 +821,28 @@ PHP_FUNCTION(http_persistent_handles_clean)
        int name_len = 0;
        
        if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", &name_str, &name_len)) {
-               http_persistent_handle_cleanup_ex(name_str, name_len);
+               http_persistent_handle_cleanup_ex(name_str, name_len, 1);
+       }
+}
+/* }}} */
+
+/* {{{ proto string http_persistent_handles_ident([string ident]) */
+PHP_FUNCTION(http_persistent_handles_ident)
+{
+       char *ident_str = NULL;
+       int ident_len = 0;
+       
+       if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", &ident_str, &ident_len)) {
+               RETVAL_STRING(zend_ini_string(ZEND_STRS("http.persistent.handles.ident"), 0), 1);
+               if (ident_str && ident_len) {
+                       zend_alter_ini_entry(ZEND_STRS("http.persistent.handles.ident"), ident_str, ident_len, ZEND_INI_USER, PHP_INI_STAGE_RUNTIME);
+               }
        }
 }
 /* }}} */
 
-#endif /* HTTP_HAVE_PERSISTENT_HANDLES */
+/* {{{ HAVE_CURL */
+#ifdef HTTP_HAVE_CURL
 
 #define RETVAL_RESPONSE_OR_BODY(request) \
        { \