Merge branch 'R_2_3'
authorMichael Wallner <mike@php.net>
Thu, 12 Mar 2015 07:11:02 +0000 (08:11 +0100)
committerMichael Wallner <mike@php.net>
Thu, 12 Mar 2015 07:11:02 +0000 (08:11 +0100)
35 files changed:
config9.m4
package.xml
php_http.c
php_http.h
php_http_api.h
php_http_client.c
php_http_client.h
php_http_client_curl.c
php_http_encoding.c
php_http_encoding.h
php_http_env.c
php_http_env.h
php_http_env_response.c
php_http_env_response.h
php_http_header.c
php_http_header.h
php_http_header_parser.c
php_http_message.c
php_http_message.h
php_http_message_body.c
php_http_message_body.h
php_http_misc.h
php_http_object.c
php_http_object.h
php_http_options.c
php_http_options.h
php_http_querystring.c
php_http_querystring.h
php_http_url.c
php_http_url.h
php_http_utf8.h
tests/envrequestbody002.phpt [deleted file]
tests/envrequestbody003.phpt [deleted file]
tests/envrequestjson001.phpt [deleted file]
tests/envrequestjson002.phpt [deleted file]

index af3d55fd25531df5b77f6a1f8ecc07cf759f06d8..02075136667636706976d8274c2af7eefe5099b0 100644 (file)
@@ -122,6 +122,11 @@ dnl ----
        done
        if test "x$IDNA_DIR" = "x"; then
                AC_MSG_RESULT([not found])
+               case $host_os in
+               darwin*)
+                       AC_CHECK_HEADERS(unicode/uidna.h)
+                       PHP_CHECK_FUNC(uidna_IDNToASCII, icucore);;
+               esac
        else
                AC_MSG_RESULT([found in $IDNA_DIR])
                AC_DEFINE([PHP_HTTP_HAVE_IDN], [1], [Have libidn support])
@@ -505,12 +510,6 @@ dnl ----
                fi
        ])
 
-dnl ----
-dnl JSON
-dnl ----
-       HTTP_HAVE_PHP_EXT([json])
-
-
 dnl ----
 dnl ICONV
 dnl ----
@@ -555,11 +554,10 @@ dnl ----
        dnl shared extension deps
        HTTP_SHARED_DEP([hash])
        HTTP_SHARED_DEP([iconv])
-       HTTP_SHARED_DEP([json])
        
        dnl extension deps
        PHP_ADD_EXTENSION_DEP([http], [raphf], true)
-       PHP_ADD_EXTENSION_DEP([http], [propo], true)
+       PHP_ADD_EXTENSION_DEP([http], [propro], true)
        
        PHP_SUBST([HTTP_SHARED_LIBADD])
 
index 2b09133649e19275701e854b07f593223edf18c2..40a72274f9f2a9232a3451681c4386aca2266690 100644 (file)
@@ -35,14 +35,14 @@ http://dev.iworks.at/ext-http/lcov/ext/http/
   <email>mike@php.net</email>
   <active>yes</active>
  </lead>
- <date>2015-03-12</date>
+ <date>2015-03-01</date>
  <version>
-  <release>2.3.3dev</release>
-  <api>2.3.0</api>
+  <release>2.4.0dev</release>
+  <api>2.4.0</api>
  </version>
  <stability>
-  <release>stable</release>
-  <api>stable</api>
+  <release>beta</release>
+  <api>beta</api>
  </stability>
  <license>BSD, revised</license>
  <notes><![CDATA[
@@ -203,15 +203,11 @@ http://dev.iworks.at/ext-http/lcov/ext/http/
      <file role="test" name="encstream008.phpt"/>
      <file role="test" name="encstream009.phpt"/>
      <file role="test" name="envrequestbody001.phpt"/>
-     <file role="test" name="envrequestbody002.phpt"/>
-     <file role="test" name="envrequestbody003.phpt"/>
      <file role="test" name="envrequestcookie001.phpt"/>
      <file role="test" name="envrequestfiles001.phpt"/>
      <file role="test" name="envrequestfiles002.phpt"/>
      <file role="test" name="envrequestform.phpt"/>
      <file role="test" name="envrequestheader001.phpt"/>
-     <file role="test" name="envrequestjson001.phpt"/>
-     <file role="test" name="envrequestjson002.phpt"/>
      <file role="test" name="envrequestquery.phpt"/>
      <file role="test" name="envresponse001.phpt"/>
      <file role="test" name="envresponse002.phpt"/>
@@ -302,7 +298,6 @@ http://dev.iworks.at/ext-http/lcov/ext/http/
      <file role="test" name="propertyproxy001.phpt"/>
      <file role="test" name="querystring001.phpt"/>
      <file role="test" name="querystring002.phpt"/>
-     <file role="test" name="querystring003.phpt"/>
      <file role="test" name="serialize001.phpt"/>
      <file role="test" name="url001.phpt"/>
      <file role="test" name="url002.phpt"/>
@@ -348,7 +343,6 @@ http://dev.iworks.at/ext-http/lcov/ext/http/
   <optional>
    <extension><name>hash</name></extension>
    <extension><name>iconv</name></extension>
-   <extension><name>json</name></extension>
   </optional>
  </dependencies>
  <providesextension>http</providesextension>
index 17d9925b5af8d3b01409b613aeb2dca69f76545b..bd7baff1078fffbad0a4cb5bd1b3e7be73b6c497 100644 (file)
@@ -44,7 +44,6 @@ zend_function_entry http_functions[] = {
 
 PHP_MINIT_FUNCTION(http);
 PHP_MSHUTDOWN_FUNCTION(http);
-PHP_RINIT_FUNCTION(http);
 PHP_RSHUTDOWN_FUNCTION(http);
 PHP_MINFO_FUNCTION(http);
 
@@ -57,9 +56,6 @@ static zend_module_dep http_module_deps[] = {
 #endif
 #ifdef PHP_HTTP_HAVE_ICONV
        ZEND_MOD_REQUIRED("iconv")
-#endif
-#ifdef PHP_HTTP_HAVE_JSON
-       ZEND_MOD_REQUIRED("json")
 #endif
        {NULL, NULL, NULL, 0}
 };
@@ -72,7 +68,7 @@ zend_module_entry http_module_entry = {
        http_functions,
        PHP_MINIT(http),
        PHP_MSHUTDOWN(http),
-       PHP_RINIT(http),
+       NULL,
        PHP_RSHUTDOWN(http),
        PHP_MINFO(http),
        PHP_PECL_HTTP_VERSION,
@@ -185,17 +181,6 @@ PHP_MSHUTDOWN_FUNCTION(http)
        return SUCCESS;
 }
 
-PHP_RINIT_FUNCTION(http)
-{
-       if (0
-       || SUCCESS != PHP_RINIT_CALL(http_env)
-       ) {
-               return FAILURE;
-       }
-       
-       return SUCCESS;
-}
-
 PHP_RSHUTDOWN_FUNCTION(http)
 {
        if (0
index 1dfae77599b3a857b3f945e263e3e596f14288f5..baacd4b61945060475dd90e7634b3635ea18f8cb 100644 (file)
@@ -13,7 +13,7 @@
 #ifndef PHP_EXT_HTTP_H
 #define PHP_EXT_HTTP_H
 
-#define PHP_PECL_HTTP_VERSION "2.3.3dev"
+#define PHP_PECL_HTTP_VERSION "2.4.0dev"
 
 extern zend_module_entry http_module_entry;
 #define phpext_http_ptr &http_module_entry
index 00a09aebc4c23190cc80f1f2787c4f18936bc2ac..08b6ba82829520be42d0e8ba15878fb2e3a0a1b1 100644 (file)
@@ -41,9 +41,6 @@
 # define PHP_HTTP_API extern
 #endif
 
-/* make functions that return SUCCESS|FAILURE more obvious */
-typedef int STATUS;
-
 #if (defined(HAVE_ICONV) || defined(PHP_HTTP_HAVE_EXT_ICONV)) && (PHP_HTTP_SHARED_DEPS || !defined(COMPILE_DL_ICONV))
 #      define PHP_HTTP_HAVE_ICONV
 #endif
@@ -52,10 +49,6 @@ typedef int STATUS;
 #      define PHP_HTTP_HAVE_HASH
 #endif
 
-#if (defined(HAVE_JSON) || defined(PHP_HTTP_HAVE_EXT_JSON)) && (PHP_HTTP_SHARED_DEPS || !defined(COMPILE_DL_JSON))
-#      define PHP_HTTP_HAVE_JSON
-#endif
-
 #include <stddef.h>
 
 #ifdef PHP_WIN32
index 4f0de3cb6fc604334470937c0881b4efea3e56a2..364903e36e9d97ea2c15f4354c3689582b157e57 100644 (file)
  */
 static HashTable php_http_client_drivers;
 
-STATUS php_http_client_driver_add(php_http_client_driver_t *driver)
+ZEND_RESULT_CODE php_http_client_driver_add(php_http_client_driver_t *driver)
 {
        return zend_hash_add(&php_http_client_drivers, driver->name_str, driver->name_len + 1, (void *) driver, sizeof(php_http_client_driver_t), NULL);
 }
 
-STATUS php_http_client_driver_get(const char *name_str, size_t name_len, php_http_client_driver_t *driver)
+ZEND_RESULT_CODE php_http_client_driver_get(const char *name_str, size_t name_len, php_http_client_driver_t *driver)
 {
        php_http_client_driver_t *tmp;
 
@@ -216,7 +216,7 @@ void php_http_client_free(php_http_client_t **h) {
        }
 }
 
-STATUS php_http_client_enqueue(php_http_client_t *h, php_http_client_enqueue_t *enqueue)
+ZEND_RESULT_CODE php_http_client_enqueue(php_http_client_t *h, php_http_client_enqueue_t *enqueue)
 {
        TSRMLS_FETCH_FROM_CTX(h->ts);
 
@@ -231,7 +231,7 @@ STATUS php_http_client_enqueue(php_http_client_t *h, php_http_client_enqueue_t *
        return FAILURE;
 }
 
-STATUS php_http_client_dequeue(php_http_client_t *h, php_http_message_t *request)
+ZEND_RESULT_CODE php_http_client_dequeue(php_http_client_t *h, php_http_message_t *request)
 {
        TSRMLS_FETCH_FROM_CTX(h->ts);
 
@@ -267,7 +267,7 @@ php_http_client_enqueue_t *php_http_client_enqueued(php_http_client_t *h, void *
        return el ? (php_http_client_enqueue_t *) el->data : NULL;
 }
 
-STATUS php_http_client_wait(php_http_client_t *h, struct timeval *custom_timeout)
+ZEND_RESULT_CODE php_http_client_wait(php_http_client_t *h, struct timeval *custom_timeout)
 {
        if (h->ops->wait) {
                return h->ops->wait(h, custom_timeout);
@@ -285,7 +285,7 @@ int php_http_client_once(php_http_client_t *h)
        return FAILURE;
 }
 
-STATUS php_http_client_exec(php_http_client_t *h)
+ZEND_RESULT_CODE php_http_client_exec(php_http_client_t *h)
 {
        if (h->ops->exec) {
                return h->ops->exec(h);
@@ -304,7 +304,7 @@ void php_http_client_reset(php_http_client_t *h)
        zend_llist_clean(&h->responses);
 }
 
-STATUS php_http_client_setopt(php_http_client_t *h, php_http_client_setopt_opt_t opt, void *arg)
+ZEND_RESULT_CODE php_http_client_setopt(php_http_client_t *h, php_http_client_setopt_opt_t opt, void *arg)
 {
        if (h->ops->setopt) {
                return h->ops->setopt(h, opt, arg);
@@ -313,7 +313,7 @@ STATUS php_http_client_setopt(php_http_client_t *h, php_http_client_setopt_opt_t
        return FAILURE;
 }
 
-STATUS php_http_client_getopt(php_http_client_t *h, php_http_client_getopt_opt_t opt, void *arg, void *res_ptr)
+ZEND_RESULT_CODE php_http_client_getopt(php_http_client_t *h, php_http_client_getopt_opt_t opt, void *arg, void *res_ptr)
 {
        if (h->ops->getopt) {
                return h->ops->getopt(h, opt, arg, res_ptr);
@@ -377,7 +377,7 @@ static void handle_history(zval *zclient, php_http_message_t *request, php_http_
        zval_ptr_dtor(&new_hist);
 }
 
-static STATUS handle_response(void *arg, php_http_client_t *client, php_http_client_enqueue_t *e, php_http_message_t **response)
+static ZEND_RESULT_CODE handle_response(void *arg, php_http_client_t *client, php_http_client_enqueue_t *e, php_http_message_t **response)
 {
        zend_bool dequeue = 0;
        zval zclient;
index 4008e874f8ae095e24f842d2b785466e28616de3..f4a5b59138632810b4d108ce8cafde05e84a4edf 100644 (file)
@@ -41,13 +41,13 @@ typedef struct php_http_client *(*php_http_client_init_func_t)(struct php_http_c
 typedef struct php_http_client *(*php_http_client_copy_func_t)(struct php_http_client *from, struct php_http_client *to);
 typedef void (*php_http_client_dtor_func_t)(struct php_http_client *p);
 typedef void (*php_http_client_reset_func_t)(struct php_http_client *p);
-typedef STATUS (*php_http_client_exec_func_t)(struct php_http_client *p);
+typedef ZEND_RESULT_CODE (*php_http_client_exec_func_t)(struct php_http_client *p);
 typedef int (*php_http_client_once_func_t)(struct php_http_client *p);
-typedef STATUS (*php_http_client_wait_func_t)(struct php_http_client *p, struct timeval *custom_timeout);
-typedef STATUS (*php_http_client_enqueue_func_t)(struct php_http_client *p, php_http_client_enqueue_t *enqueue);
-typedef STATUS (*php_http_client_dequeue_func_t)(struct php_http_client *p, php_http_client_enqueue_t *enqueue);
-typedef STATUS (*php_http_client_setopt_func_t)(struct php_http_client *p, php_http_client_setopt_opt_t opt, void *arg);
-typedef STATUS (*php_http_client_getopt_func_t)(struct php_http_client *h, php_http_client_getopt_opt_t opt, void *arg, void **res);
+typedef ZEND_RESULT_CODE (*php_http_client_wait_func_t)(struct php_http_client *p, struct timeval *custom_timeout);
+typedef ZEND_RESULT_CODE (*php_http_client_enqueue_func_t)(struct php_http_client *p, php_http_client_enqueue_t *enqueue);
+typedef ZEND_RESULT_CODE (*php_http_client_dequeue_func_t)(struct php_http_client *p, php_http_client_enqueue_t *enqueue);
+typedef ZEND_RESULT_CODE (*php_http_client_setopt_func_t)(struct php_http_client *p, php_http_client_setopt_opt_t opt, void *arg);
+typedef ZEND_RESULT_CODE (*php_http_client_getopt_func_t)(struct php_http_client *h, php_http_client_getopt_opt_t opt, void *arg, void **res);
 
 typedef struct php_http_client_ops {
        php_resource_factory_ops_t *rsrc;
@@ -70,8 +70,8 @@ typedef struct php_http_client_driver {
        php_http_client_ops_t *client_ops;
 } php_http_client_driver_t;
 
-PHP_HTTP_API STATUS php_http_client_driver_add(php_http_client_driver_t *driver);
-PHP_HTTP_API STATUS php_http_client_driver_get(const char *name_str, size_t name_len, php_http_client_driver_t *driver);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_client_driver_add(php_http_client_driver_t *driver);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_client_driver_get(const char *name_str, size_t name_len, php_http_client_driver_t *driver);
 
 typedef struct php_http_client_progress_state {
        struct {
@@ -87,7 +87,7 @@ typedef struct php_http_client_progress_state {
        unsigned finished:1;
 } php_http_client_progress_state_t;
 
-typedef STATUS (*php_http_client_response_callback_t)(void *arg, struct php_http_client *client, php_http_client_enqueue_t *e, php_http_message_t **response);
+typedef ZEND_RESULT_CODE (*php_http_client_response_callback_t)(void *arg, struct php_http_client *client, php_http_client_enqueue_t *e, php_http_message_t **response);
 typedef void (*php_http_client_progress_callback_t)(void *arg, struct php_http_client *client, php_http_client_enqueue_t *e, php_http_client_progress_state_t *state);
 
 typedef struct php_http_client {
@@ -130,17 +130,17 @@ PHP_HTTP_API php_http_client_t *php_http_client_copy(php_http_client_t *from, ph
 PHP_HTTP_API void php_http_client_dtor(php_http_client_t *h);
 PHP_HTTP_API void php_http_client_free(php_http_client_t **h);
 
-PHP_HTTP_API STATUS php_http_client_enqueue(php_http_client_t *h, php_http_client_enqueue_t *enqueue);
-PHP_HTTP_API STATUS php_http_client_dequeue(php_http_client_t *h, php_http_message_t *request);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_client_enqueue(php_http_client_t *h, php_http_client_enqueue_t *enqueue);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_client_dequeue(php_http_client_t *h, php_http_message_t *request);
 
-PHP_HTTP_API STATUS php_http_client_wait(php_http_client_t *h, struct timeval *custom_timeout);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_client_wait(php_http_client_t *h, struct timeval *custom_timeout);
 PHP_HTTP_API int php_http_client_once(php_http_client_t *h);
 
-PHP_HTTP_API STATUS php_http_client_exec(php_http_client_t *h);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_client_exec(php_http_client_t *h);
 PHP_HTTP_API void php_http_client_reset(php_http_client_t *h);
 
-PHP_HTTP_API STATUS php_http_client_setopt(php_http_client_t *h, php_http_client_setopt_opt_t opt, void *arg);
-PHP_HTTP_API STATUS php_http_client_getopt(php_http_client_t *h, php_http_client_getopt_opt_t opt, void *arg, void *res_ptr);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_client_setopt(php_http_client_t *h, php_http_client_setopt_opt_t opt, void *arg);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_client_getopt(php_http_client_t *h, php_http_client_getopt_opt_t opt, void *arg, void *res_ptr);
 
 typedef int (*php_http_client_enqueue_cmp_func_t)(php_http_client_enqueue_t *cmp, void *arg);
 /* compare with request message pointer if compare_func is NULL */
index 44b2c21a9cc819a842e50cabcc23d6dbbb13c558..18f1dec89ab2d27159219f08fba2013576366edd 100644 (file)
@@ -314,7 +314,7 @@ static int php_http_curle_body_callback(char *data, size_t n, size_t l, void *ar
        return php_http_message_body_append(h->response.body, data, n*l);
 }
 
-static STATUS php_http_curle_get_info(CURL *ch, HashTable *info)
+static ZEND_RESULT_CODE php_http_curle_get_info(CURL *ch, HashTable *info)
 {
        char *c;
        long l;
@@ -812,7 +812,7 @@ static php_http_options_t php_http_curle_options, php_http_curlm_options;
 #define PHP_HTTP_CURLE_OPTION_CHECK_BASEDIR            0x0002
 #define PHP_HTTP_CURLE_OPTION_TRANSFORM_MS             0x0004
 
-static STATUS php_http_curle_option_set_ssl_verifyhost(php_http_option_t *opt, zval *val, void *userdata)
+static ZEND_RESULT_CODE php_http_curle_option_set_ssl_verifyhost(php_http_option_t *opt, zval *val, void *userdata)
 {
        php_http_client_curl_handler_t *curl = userdata;
        CURL *ch = curl->handle;
@@ -823,7 +823,7 @@ static STATUS php_http_curle_option_set_ssl_verifyhost(php_http_option_t *opt, z
        return SUCCESS;
 }
 
-static STATUS php_http_curle_option_set_cookiestore(php_http_option_t *opt, zval *val, void *userdata)
+static ZEND_RESULT_CODE php_http_curle_option_set_cookiestore(php_http_option_t *opt, zval *val, void *userdata)
 {
        php_http_client_curl_handler_t *curl = userdata;
        CURL *ch = curl->handle;
@@ -845,7 +845,7 @@ static STATUS php_http_curle_option_set_cookiestore(php_http_option_t *opt, zval
        return SUCCESS;
 }
 
-static STATUS php_http_curle_option_set_cookies(php_http_option_t *opt, zval *val, void *userdata)
+static ZEND_RESULT_CODE php_http_curle_option_set_cookies(php_http_option_t *opt, zval *val, void *userdata)
 {
        php_http_client_curl_handler_t *curl = userdata;
        CURL *ch = curl->handle;
@@ -892,7 +892,7 @@ static STATUS php_http_curle_option_set_cookies(php_http_option_t *opt, zval *va
        return SUCCESS;
 }
 
-static STATUS php_http_curle_option_set_encodecookies(php_http_option_t *opt, zval *val, void *userdata)
+static ZEND_RESULT_CODE php_http_curle_option_set_encodecookies(php_http_option_t *opt, zval *val, void *userdata)
 {
        php_http_client_curl_handler_t *curl = userdata;
 
@@ -900,7 +900,7 @@ static STATUS php_http_curle_option_set_encodecookies(php_http_option_t *opt, zv
        return SUCCESS;
 }
 
-static STATUS php_http_curle_option_set_lastmodified(php_http_option_t *opt, zval *val, void *userdata)
+static ZEND_RESULT_CODE php_http_curle_option_set_lastmodified(php_http_option_t *opt, zval *val, void *userdata)
 {
        php_http_client_curl_handler_t *curl = userdata;
        CURL *ch = curl->handle;
@@ -929,7 +929,7 @@ static STATUS php_http_curle_option_set_lastmodified(php_http_option_t *opt, zva
        return SUCCESS;
 }
 
-static STATUS php_http_curle_option_set_compress(php_http_option_t *opt, zval *val, void *userdata)
+static ZEND_RESULT_CODE php_http_curle_option_set_compress(php_http_option_t *opt, zval *val, void *userdata)
 {
        php_http_client_curl_handler_t *curl = userdata;
        CURL *ch = curl->handle;
@@ -943,7 +943,7 @@ static STATUS php_http_curle_option_set_compress(php_http_option_t *opt, zval *v
        return SUCCESS;
 }
 
-static STATUS php_http_curle_option_set_etag(php_http_option_t *opt, zval *val, void *userdata)
+static ZEND_RESULT_CODE php_http_curle_option_set_etag(php_http_option_t *opt, zval *val, void *userdata)
 {
        php_http_client_curl_handler_t *curl = userdata;
        php_http_buffer_t header;
@@ -959,7 +959,7 @@ static STATUS php_http_curle_option_set_etag(php_http_option_t *opt, zval *val,
        return SUCCESS;
 }
 
-static STATUS php_http_curle_option_set_range(php_http_option_t *opt, zval *val, void *userdata)
+static ZEND_RESULT_CODE php_http_curle_option_set_range(php_http_option_t *opt, zval *val, void *userdata)
 {
        php_http_client_curl_handler_t *curl = userdata;
        CURL *ch = curl->handle;
@@ -1003,7 +1003,7 @@ static STATUS php_http_curle_option_set_range(php_http_option_t *opt, zval *val,
        return SUCCESS;
 }
 
-static STATUS php_http_curle_option_set_resume(php_http_option_t *opt, zval *val, void *userdata)
+static ZEND_RESULT_CODE php_http_curle_option_set_resume(php_http_option_t *opt, zval *val, void *userdata)
 {
        php_http_client_curl_handler_t *curl = userdata;
        CURL *ch = curl->handle;
@@ -1017,7 +1017,7 @@ static STATUS php_http_curle_option_set_resume(php_http_option_t *opt, zval *val
        return SUCCESS;
 }
 
-static STATUS php_http_curle_option_set_retrydelay(php_http_option_t *opt, zval *val, void *userdata)
+static ZEND_RESULT_CODE php_http_curle_option_set_retrydelay(php_http_option_t *opt, zval *val, void *userdata)
 {
        php_http_client_curl_handler_t *curl = userdata;
 
@@ -1025,7 +1025,7 @@ static STATUS php_http_curle_option_set_retrydelay(php_http_option_t *opt, zval
        return SUCCESS;
 }
 
-static STATUS php_http_curle_option_set_retrycount(php_http_option_t *opt, zval *val, void *userdata)
+static ZEND_RESULT_CODE php_http_curle_option_set_retrycount(php_http_option_t *opt, zval *val, void *userdata)
 {
        php_http_client_curl_handler_t *curl = userdata;
 
@@ -1033,7 +1033,7 @@ static STATUS php_http_curle_option_set_retrycount(php_http_option_t *opt, zval
        return SUCCESS;
 }
 
-static STATUS php_http_curle_option_set_redirect(php_http_option_t *opt, zval *val, void *userdata)
+static ZEND_RESULT_CODE php_http_curle_option_set_redirect(php_http_option_t *opt, zval *val, void *userdata)
 {
        php_http_client_curl_handler_t *curl = userdata;
        CURL *ch = curl->handle;
@@ -1046,7 +1046,7 @@ static STATUS php_http_curle_option_set_redirect(php_http_option_t *opt, zval *v
        return SUCCESS;
 }
 
-static STATUS php_http_curle_option_set_portrange(php_http_option_t *opt, zval *val, void *userdata)
+static ZEND_RESULT_CODE php_http_curle_option_set_portrange(php_http_option_t *opt, zval *val, void *userdata)
 {
        php_http_client_curl_handler_t *curl = userdata;
        CURL *ch = curl->handle;
@@ -1085,7 +1085,7 @@ static STATUS php_http_curle_option_set_portrange(php_http_option_t *opt, zval *
 }
 
 #if PHP_HTTP_CURL_VERSION(7,37,0)
-static STATUS php_http_curle_option_set_proxyheader(php_http_option_t *opt, zval *val, void *userdata)
+static ZEND_RESULT_CODE php_http_curle_option_set_proxyheader(php_http_option_t *opt, zval *val, void *userdata)
 {
        php_http_client_curl_handler_t *curl = userdata;
        TSRMLS_FETCH_FROM_CTX(curl->client->ts);
@@ -1122,7 +1122,7 @@ static STATUS php_http_curle_option_set_proxyheader(php_http_option_t *opt, zval
 #endif
 
 #if PHP_HTTP_CURL_VERSION(7,21,3)
-static STATUS php_http_curle_option_set_resolve(php_http_option_t *opt, zval *val, void *userdata)
+static ZEND_RESULT_CODE php_http_curle_option_set_resolve(php_http_option_t *opt, zval *val, void *userdata)
 {
        php_http_client_curl_handler_t *curl = userdata;
        CURL *ch = curl->handle;
@@ -1152,7 +1152,7 @@ static STATUS php_http_curle_option_set_resolve(php_http_option_t *opt, zval *va
 #endif
 
 #if PHP_HTTP_CURL_VERSION(7,21,4) && defined(PHP_HTTP_CURL_TLSAUTH_SRP)
-static STATUS php_http_curle_option_set_ssl_tlsauthtype(php_http_option_t *opt, zval *val, void *userdata)
+static ZEND_RESULT_CODE php_http_curle_option_set_ssl_tlsauthtype(php_http_option_t *opt, zval *val, void *userdata)
 {
        php_http_client_curl_handler_t *curl = userdata;
        CURL *ch = curl->handle;
@@ -1499,13 +1499,13 @@ static zval *php_http_curle_get_option(php_http_option_t *opt, HashTable *option
        return option;
 }
 
-static STATUS php_http_curle_set_option(php_http_option_t *opt, zval *val, void *userdata)
+static ZEND_RESULT_CODE php_http_curle_set_option(php_http_option_t *opt, zval *val, void *userdata)
 {
        php_http_client_curl_handler_t *curl = userdata;
        CURL *ch = curl->handle;
        zval tmp;
        CURLcode rc = CURLE_OK;
-       STATUS rv = SUCCESS;
+       ZEND_RESULT_CODE rv = SUCCESS;
        TSRMLS_FETCH_FROM_CTX(curl->client->ts);
 
        if (!val) {
@@ -1581,7 +1581,7 @@ static STATUS php_http_curle_set_option(php_http_option_t *opt, zval *val, void
 }
 
 #if PHP_HTTP_CURL_VERSION(7,30,0)
-static STATUS php_http_curlm_option_set_pipelining_bl(php_http_option_t *opt, zval *value, void *userdata)
+static ZEND_RESULT_CODE php_http_curlm_option_set_pipelining_bl(php_http_option_t *opt, zval *value, void *userdata)
 {
        php_http_client_t *client = userdata;
        php_http_client_curl_t *curl = client->ctx;
@@ -1625,7 +1625,7 @@ static STATUS php_http_curlm_option_set_pipelining_bl(php_http_option_t *opt, zv
 #endif
 
 #if PHP_HTTP_HAVE_EVENT
-static inline STATUS php_http_curlm_use_eventloop(php_http_client_t *h, zend_bool enable)
+static inline ZEND_RESULT_CODE php_http_curlm_use_eventloop(php_http_client_t *h, zend_bool enable)
 {
        php_http_client_curl_t *curl = h->ctx;
 
@@ -1650,7 +1650,7 @@ static inline STATUS php_http_curlm_use_eventloop(php_http_client_t *h, zend_boo
        return SUCCESS;
 }
 
-static STATUS php_http_curlm_option_set_use_eventloop(php_http_option_t *opt, zval *value, void *userdata)
+static ZEND_RESULT_CODE php_http_curlm_option_set_use_eventloop(php_http_option_t *opt, zval *value, void *userdata)
 {
        php_http_client_t *client = userdata;
 
@@ -1711,14 +1711,14 @@ static void php_http_curlm_options_init(php_http_options_t *registry TSRMLS_DC)
 #endif
 }
 
-static STATUS php_http_curlm_set_option(php_http_option_t *opt, zval *val, void *userdata)
+static ZEND_RESULT_CODE php_http_curlm_set_option(php_http_option_t *opt, zval *val, void *userdata)
 {
        php_http_client_t *client = userdata;
        php_http_client_curl_t *curl = client->ctx;
        CURLM *ch = curl->handle;
        zval *orig = val;
        CURLMcode rc = CURLM_UNKNOWN_OPTION;
-       STATUS rv = SUCCESS;
+       ZEND_RESULT_CODE rv = SUCCESS;
        TSRMLS_FETCH_FROM_CTX(client->ts);
 
        if (!val) {
@@ -1759,7 +1759,7 @@ static STATUS php_http_curlm_set_option(php_http_option_t *opt, zval *val, void
 
 /* client ops */
 
-static STATUS php_http_client_curl_handler_reset(php_http_client_curl_handler_t *curl)
+static ZEND_RESULT_CODE php_http_client_curl_handler_reset(php_http_client_curl_handler_t *curl)
 {
        CURL *ch = curl->handle;
        php_http_curle_storage_t *st;
@@ -1865,7 +1865,7 @@ static php_http_client_curl_handler_t *php_http_client_curl_handler_init(php_htt
 }
 
 
-static STATUS php_http_client_curl_handler_prepare(php_http_client_curl_handler_t *curl, php_http_client_enqueue_t *enqueue)
+static ZEND_RESULT_CODE php_http_client_curl_handler_prepare(php_http_client_curl_handler_t *curl, php_http_client_enqueue_t *enqueue)
 {
        size_t body_size;
        php_http_message_t *msg = enqueue->request;
@@ -2105,7 +2105,7 @@ static php_resource_factory_t *create_rf(php_http_client_t *h, php_http_client_e
        return rf;
 }
 
-static STATUS php_http_client_curl_enqueue(php_http_client_t *h, php_http_client_enqueue_t *enqueue)
+static ZEND_RESULT_CODE php_http_client_curl_enqueue(php_http_client_t *h, php_http_client_enqueue_t *enqueue)
 {
        CURLMcode rs;
        php_http_client_curl_t *curl = h->ctx;
@@ -2150,7 +2150,7 @@ static STATUS php_http_client_curl_enqueue(php_http_client_t *h, php_http_client
        }
 }
 
-static STATUS php_http_client_curl_dequeue(php_http_client_t *h, php_http_client_enqueue_t *enqueue)
+static ZEND_RESULT_CODE php_http_client_curl_dequeue(php_http_client_t *h, php_http_client_enqueue_t *enqueue)
 {
        CURLMcode rs;
        php_http_client_curl_t *curl = h->ctx;
@@ -2195,7 +2195,7 @@ static inline void php_http_client_curl_get_timeout(php_http_client_curl_t *curl
 #      define SELECT_ERROR -1
 #endif
 
-static STATUS php_http_client_curl_wait(php_http_client_t *h, struct timeval *custom_timeout)
+static ZEND_RESULT_CODE php_http_client_curl_wait(php_http_client_t *h, struct timeval *custom_timeout)
 {
        int MAX;
        fd_set R, W, E;
@@ -2257,7 +2257,7 @@ static int php_http_client_curl_once(php_http_client_t *h)
 
 }
 
-static STATUS php_http_client_curl_exec(php_http_client_t *h)
+static ZEND_RESULT_CODE php_http_client_curl_exec(php_http_client_t *h)
 {
 #if PHP_HTTP_HAVE_EVENT
        php_http_client_curl_t *curl = h->ctx;
@@ -2298,7 +2298,7 @@ static STATUS php_http_client_curl_exec(php_http_client_t *h)
        return SUCCESS;
 }
 
-static STATUS php_http_client_curl_setopt(php_http_client_t *h, php_http_client_setopt_opt_t opt, void *arg)
+static ZEND_RESULT_CODE php_http_client_curl_setopt(php_http_client_t *h, php_http_client_setopt_opt_t opt, void *arg)
 {
        php_http_client_curl_t *curl = h->ctx;
 
@@ -2358,7 +2358,7 @@ static int apply_available_options(void *pDest TSRMLS_DC, int num_args, va_list
        return ZEND_HASH_APPLY_KEEP;
 }
 
-static STATUS php_http_client_curl_getopt(php_http_client_t *h, php_http_client_getopt_opt_t opt, void *arg, void **res)
+static ZEND_RESULT_CODE php_http_client_curl_getopt(php_http_client_t *h, php_http_client_getopt_opt_t opt, void *arg, void **res)
 {
        php_http_client_enqueue_t *enqueue;
        TSRMLS_FETCH_FROM_CTX(h->ts);
index b7050f6d769e737984bcddee1fd45996c0c3d179..286f2b5751eac1b703c44b0fa2063716d431582f 100644 (file)
@@ -148,7 +148,7 @@ static inline int php_http_inflate_rounds(z_stream *Z, int flush, char **buf, si
        return status;
 }
 
-STATUS php_http_encoding_deflate(int flags, const char *data, size_t data_len, char **encoded, size_t *encoded_len TSRMLS_DC)
+ZEND_RESULT_CODE php_http_encoding_deflate(int flags, const char *data, size_t data_len, char **encoded, size_t *encoded_len TSRMLS_DC)
 {
        int status, level, wbits, strategy;
        z_stream Z;
@@ -189,7 +189,7 @@ STATUS php_http_encoding_deflate(int flags, const char *data, size_t data_len, c
        return FAILURE;
 }
 
-STATUS php_http_encoding_inflate(const char *data, size_t data_len, char **decoded, size_t *decoded_len TSRMLS_DC)
+ZEND_RESULT_CODE php_http_encoding_inflate(const char *data, size_t data_len, char **decoded, size_t *decoded_len TSRMLS_DC)
 {
        z_stream Z;
        int status, wbits = PHP_HTTP_WINDOW_BITS_ANY;
@@ -290,7 +290,7 @@ php_http_encoding_stream_t *php_http_encoding_stream_copy(php_http_encoding_stre
        return NULL;
 }
 
-STATUS php_http_encoding_stream_reset(php_http_encoding_stream_t **s)
+ZEND_RESULT_CODE php_http_encoding_stream_reset(php_http_encoding_stream_t **s)
 {
        php_http_encoding_stream_t *ss;
        if ((*s)->ops->dtor) {
@@ -303,7 +303,7 @@ STATUS php_http_encoding_stream_reset(php_http_encoding_stream_t **s)
        return FAILURE;
 }
 
-STATUS php_http_encoding_stream_update(php_http_encoding_stream_t *s, const char *in_str, size_t in_len, char **out_str, size_t *out_len)
+ZEND_RESULT_CODE php_http_encoding_stream_update(php_http_encoding_stream_t *s, const char *in_str, size_t in_len, char **out_str, size_t *out_len)
 {
        if (!s->ops->update) {
                return FAILURE;
@@ -311,7 +311,7 @@ STATUS php_http_encoding_stream_update(php_http_encoding_stream_t *s, const char
        return s->ops->update(s, in_str, in_len, out_str, out_len);
 }
 
-STATUS php_http_encoding_stream_flush(php_http_encoding_stream_t *s, char **out_str, size_t *out_len)
+ZEND_RESULT_CODE php_http_encoding_stream_flush(php_http_encoding_stream_t *s, char **out_str, size_t *out_len)
 {
        if (!s->ops->flush) {
                *out_str = NULL;
@@ -329,7 +329,7 @@ zend_bool php_http_encoding_stream_done(php_http_encoding_stream_t *s)
        return s->ops->done(s);
 }
 
-STATUS php_http_encoding_stream_finish(php_http_encoding_stream_t *s, char **out_str, size_t *out_len)
+ZEND_RESULT_CODE php_http_encoding_stream_finish(php_http_encoding_stream_t *s, char **out_str, size_t *out_len)
 {
        if (!s->ops->finish) {
                *out_str = NULL;
@@ -478,7 +478,7 @@ static php_http_encoding_stream_t *dechunk_copy(php_http_encoding_stream_t *from
        return NULL;
 }
 
-static STATUS deflate_update(php_http_encoding_stream_t *s, const char *data, size_t data_len, char **encoded, size_t *encoded_len)
+static ZEND_RESULT_CODE deflate_update(php_http_encoding_stream_t *s, const char *data, size_t data_len, char **encoded, size_t *encoded_len)
 {
        int status;
        z_streamp ctx = s->ctx;
@@ -519,7 +519,7 @@ static STATUS deflate_update(php_http_encoding_stream_t *s, const char *data, si
        return FAILURE;
 }
 
-static STATUS inflate_update(php_http_encoding_stream_t *s, const char *data, size_t data_len, char **decoded, size_t *decoded_len)
+static ZEND_RESULT_CODE inflate_update(php_http_encoding_stream_t *s, const char *data, size_t data_len, char **decoded, size_t *decoded_len)
 {
        int status;
        z_streamp ctx = s->ctx;
@@ -558,7 +558,7 @@ retry_raw_inflate:
        return FAILURE;
 }
 
-static STATUS dechunk_update(php_http_encoding_stream_t *s, const char *data, size_t data_len, char **decoded, size_t *decoded_len)
+static ZEND_RESULT_CODE dechunk_update(php_http_encoding_stream_t *s, const char *data, size_t data_len, char **decoded, size_t *decoded_len)
 {
        php_http_buffer_t tmp;
        struct dechunk_ctx *ctx = s->ctx;
@@ -686,7 +686,7 @@ static STATUS dechunk_update(php_http_encoding_stream_t *s, const char *data, si
        return SUCCESS;
 }
 
-static STATUS deflate_flush(php_http_encoding_stream_t *s, char **encoded, size_t *encoded_len)
+static ZEND_RESULT_CODE deflate_flush(php_http_encoding_stream_t *s, char **encoded, size_t *encoded_len)
 {
        int status;
        z_streamp ctx = s->ctx;
@@ -715,7 +715,7 @@ static STATUS deflate_flush(php_http_encoding_stream_t *s, char **encoded, size_
        return FAILURE;
 }
 
-static STATUS dechunk_flush(php_http_encoding_stream_t *s, char **decoded, size_t *decoded_len)
+static ZEND_RESULT_CODE dechunk_flush(php_http_encoding_stream_t *s, char **decoded, size_t *decoded_len)
 {
        struct dechunk_ctx *ctx = s->ctx;
 
@@ -735,7 +735,7 @@ static STATUS dechunk_flush(php_http_encoding_stream_t *s, char **decoded, size_
        return SUCCESS;
 }
 
-static STATUS deflate_finish(php_http_encoding_stream_t *s, char **encoded, size_t *encoded_len)
+static ZEND_RESULT_CODE deflate_finish(php_http_encoding_stream_t *s, char **encoded, size_t *encoded_len)
 {
        int status;
        z_streamp ctx = s->ctx;
@@ -772,7 +772,7 @@ static STATUS deflate_finish(php_http_encoding_stream_t *s, char **encoded, size
        return FAILURE;
 }
 
-static STATUS inflate_finish(php_http_encoding_stream_t *s, char **decoded, size_t *decoded_len)
+static ZEND_RESULT_CODE inflate_finish(php_http_encoding_stream_t *s, char **decoded, size_t *decoded_len)
 {
        int status;
        z_streamp ctx = s->ctx;
index 59bbd278cd21ad8e382debffa07a01311160a0fe..cdf7a1a932374c237baa5d8000f5b98285dde8a9 100644 (file)
@@ -125,10 +125,10 @@ typedef struct php_http_encoding_stream php_http_encoding_stream_t;
 
 typedef php_http_encoding_stream_t *(*php_http_encoding_stream_init_func_t)(php_http_encoding_stream_t *s);
 typedef php_http_encoding_stream_t *(*php_http_encoding_stream_copy_func_t)(php_http_encoding_stream_t *from, php_http_encoding_stream_t *to);
-typedef STATUS (*php_http_encoding_stream_update_func_t)(php_http_encoding_stream_t *s, const char *in_str, size_t in_len, char **out_str, size_t *out_len);
-typedef STATUS (*php_http_encoding_stream_flush_func_t)(php_http_encoding_stream_t *s, char **out_str, size_t *out_len);
+typedef ZEND_RESULT_CODE (*php_http_encoding_stream_update_func_t)(php_http_encoding_stream_t *s, const char *in_str, size_t in_len, char **out_str, size_t *out_len);
+typedef ZEND_RESULT_CODE (*php_http_encoding_stream_flush_func_t)(php_http_encoding_stream_t *s, char **out_str, size_t *out_len);
 typedef zend_bool (*php_http_encoding_stream_done_func_t)(php_http_encoding_stream_t *s);
-typedef STATUS (*php_http_encoding_stream_finish_func_t)(php_http_encoding_stream_t *s, char **out_str, size_t *out_len);
+typedef ZEND_RESULT_CODE (*php_http_encoding_stream_finish_func_t)(php_http_encoding_stream_t *s, char **out_str, size_t *out_len);
 typedef void (*php_http_encoding_stream_dtor_func_t)(php_http_encoding_stream_t *s);
 
 typedef struct php_http_encoding_stream_ops {
@@ -156,17 +156,17 @@ PHP_HTTP_API php_http_encoding_stream_ops_t *php_http_encoding_stream_get_dechun
 
 PHP_HTTP_API php_http_encoding_stream_t *php_http_encoding_stream_init(php_http_encoding_stream_t *s, php_http_encoding_stream_ops_t *ops, unsigned flags TSRMLS_DC);
 PHP_HTTP_API php_http_encoding_stream_t *php_http_encoding_stream_copy(php_http_encoding_stream_t *from, php_http_encoding_stream_t *to);
-PHP_HTTP_API STATUS php_http_encoding_stream_reset(php_http_encoding_stream_t **s);
-PHP_HTTP_API STATUS php_http_encoding_stream_update(php_http_encoding_stream_t *s, const char *in_str, size_t in_len, char **out_str, size_t *out_len);
-PHP_HTTP_API STATUS php_http_encoding_stream_flush(php_http_encoding_stream_t *s, char **out_str, size_t *len);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_encoding_stream_reset(php_http_encoding_stream_t **s);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_encoding_stream_update(php_http_encoding_stream_t *s, const char *in_str, size_t in_len, char **out_str, size_t *out_len);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_encoding_stream_flush(php_http_encoding_stream_t *s, char **out_str, size_t *len);
 PHP_HTTP_API zend_bool php_http_encoding_stream_done(php_http_encoding_stream_t *s);
-PHP_HTTP_API STATUS php_http_encoding_stream_finish(php_http_encoding_stream_t *s, char **out_str, size_t *len);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_encoding_stream_finish(php_http_encoding_stream_t *s, char **out_str, size_t *len);
 PHP_HTTP_API void php_http_encoding_stream_dtor(php_http_encoding_stream_t *s);
 PHP_HTTP_API void php_http_encoding_stream_free(php_http_encoding_stream_t **s);
 
 PHP_HTTP_API const char *php_http_encoding_dechunk(const char *encoded, size_t encoded_len, char **decoded, size_t *decoded_len TSRMLS_DC);
-PHP_HTTP_API STATUS php_http_encoding_deflate(int flags, const char *data, size_t data_len, char **encoded, size_t *encoded_len TSRMLS_DC);
-PHP_HTTP_API STATUS php_http_encoding_inflate(const char *data, size_t data_len, char **decoded, size_t *decoded_len TSRMLS_DC);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_encoding_deflate(int flags, const char *data, size_t data_len, char **encoded, size_t *encoded_len TSRMLS_DC);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_encoding_inflate(const char *data, size_t data_len, char **decoded, size_t *decoded_len TSRMLS_DC);
 
 typedef struct php_http_encoding_stream_object {
        zend_object zo;
index 6de5ecb90a5ad419b8f098bb16dc31e1287a341c..c60d4c0b41d42787a682854a70e168700ed62e3f 100644 (file)
 #include "php_http_api.h"
 #include "php_variables.h"
 
-PHP_RINIT_FUNCTION(http_env)
-{
-       /* populate form data on non-POST requests */
-       if (SG(request_info).request_method && strcasecmp(SG(request_info).request_method, "POST") && SG(request_info).content_type && *SG(request_info).content_type) {
-               uint ct_len = strlen(SG(request_info).content_type);
-               char *ct_str = estrndup(SG(request_info).content_type, ct_len);
-               php_http_params_opts_t opts;
-               HashTable params;
-
-               php_http_params_opts_default_get(&opts);
-               opts.input.str = ct_str;
-               opts.input.len = ct_len;
-
-               SG(request_info).content_type_dup = ct_str;
-
-               ZEND_INIT_SYMTABLE(&params);
-               if (php_http_params_parse(&params, &opts TSRMLS_CC)) {
-                       char *key_str;
-                       uint key_len;
-                       ulong key_num;
-
-                       if (HASH_KEY_IS_STRING == zend_hash_get_current_key_ex(&params, &key_str, &key_len, &key_num, 0, NULL)) {
-                               sapi_post_entry *post_entry = NULL;
-
-                               if (SUCCESS == zend_hash_find(&SG(known_post_content_types), key_str, key_len, (void *) &post_entry)) {
-                                       zval *files = PG(http_globals)[TRACK_VARS_FILES];
-
-                                       if (post_entry) {
-                                               SG(request_info).post_entry = post_entry;
-
-                                               if (post_entry->post_reader) {
-                                                       post_entry->post_reader(TSRMLS_C);
-                                               }
-                                       }
-
-                                       if (sapi_module.default_post_reader) {
-                                               sapi_module.default_post_reader(TSRMLS_C);
-                                       }
-
-                                       sapi_handle_post(PG(http_globals)[TRACK_VARS_POST] TSRMLS_CC);
-
-                                       /*
-                                        * the rfc1867 handler is an awkward buddy
-                                        */
-                                       if (files != PG(http_globals)[TRACK_VARS_FILES] && PG(http_globals)[TRACK_VARS_FILES]) {
-                                               Z_ADDREF_P(PG(http_globals)[TRACK_VARS_FILES]);
-                                               zend_hash_update(&EG(symbol_table), "_FILES", sizeof("_FILES"), &PG(http_globals)[TRACK_VARS_FILES], sizeof(zval *), NULL);
-                                               if (files) {
-                                                       zval_ptr_dtor(&files);
-                                               }
-                                       }
-                               }
-                       }
-                       zend_hash_destroy(&params);
-               }
-       }
-
-       PTR_SET(SG(request_info).content_type_dup, NULL);
-
-       return SUCCESS;
-}
-
 PHP_RSHUTDOWN_FUNCTION(http_env)
 {
        if (PHP_HTTP_G->env.request.headers) {
@@ -430,9 +368,9 @@ static void grab_headers(void *data, void *arg TSRMLS_DC)
        php_http_buffer_appends(PHP_HTTP_BUFFER(arg), PHP_HTTP_CRLF);
 }
 
-STATUS php_http_env_get_response_headers(HashTable *headers_ht TSRMLS_DC)
+ZEND_RESULT_CODE php_http_env_get_response_headers(HashTable *headers_ht TSRMLS_DC)
 {
-       STATUS status;
+       ZEND_RESULT_CODE status;
        php_http_buffer_t headers;
 
        php_http_buffer_init(&headers);
@@ -475,15 +413,15 @@ long php_http_env_get_response_code(TSRMLS_D)
        return code ? code : 200;
 }
 
-STATUS php_http_env_set_response_code(long http_code TSRMLS_DC)
+ZEND_RESULT_CODE php_http_env_set_response_code(long http_code TSRMLS_DC)
 {
        return sapi_header_op(SAPI_HEADER_SET_STATUS, (void *) http_code TSRMLS_CC);
 }
 
-STATUS php_http_env_set_response_status_line(long code, php_http_version_t *v TSRMLS_DC)
+ZEND_RESULT_CODE php_http_env_set_response_status_line(long code, php_http_version_t *v TSRMLS_DC)
 {
        sapi_header_line h = {NULL, 0, 0};
-       STATUS ret;
+       ZEND_RESULT_CODE ret;
 
        h.line_len = spprintf(&h.line, 0, "HTTP/%u.%u %ld %s", v->major, v->minor, code, php_http_env_get_response_status_for_code(code));
        ret = sapi_header_op(SAPI_HEADER_REPLACE, (void *) &h TSRMLS_CC);
@@ -492,22 +430,22 @@ STATUS php_http_env_set_response_status_line(long code, php_http_version_t *v TS
        return ret;
 }
 
-STATUS php_http_env_set_response_protocol_version(php_http_version_t *v TSRMLS_DC)
+ZEND_RESULT_CODE php_http_env_set_response_protocol_version(php_http_version_t *v TSRMLS_DC)
 {
        return php_http_env_set_response_status_line(php_http_env_get_response_code(TSRMLS_C), v TSRMLS_CC);
 }
 
-STATUS php_http_env_set_response_header(long http_code, const char *header_str, size_t header_len, zend_bool replace TSRMLS_DC)
+ZEND_RESULT_CODE php_http_env_set_response_header(long http_code, const char *header_str, size_t header_len, zend_bool replace TSRMLS_DC)
 {
        sapi_header_line h = {estrndup(header_str, header_len), header_len, http_code};
-       STATUS ret = sapi_header_op(replace ? SAPI_HEADER_REPLACE : SAPI_HEADER_ADD, (void *) &h TSRMLS_CC);
+       ZEND_RESULT_CODE ret = sapi_header_op(replace ? SAPI_HEADER_REPLACE : SAPI_HEADER_ADD, (void *) &h TSRMLS_CC);
        efree(h.line);
        return ret;
 }
 
-STATUS php_http_env_set_response_header_va(long http_code, zend_bool replace, const char *fmt, va_list argv TSRMLS_DC)
+ZEND_RESULT_CODE php_http_env_set_response_header_va(long http_code, zend_bool replace, const char *fmt, va_list argv TSRMLS_DC)
 {
-       STATUS ret = FAILURE;
+       ZEND_RESULT_CODE ret = FAILURE;
        sapi_header_line h = {NULL, 0, http_code};
 
        h.line_len = vspprintf(&h.line, 0, fmt, argv);
@@ -521,9 +459,9 @@ STATUS php_http_env_set_response_header_va(long http_code, zend_bool replace, co
        return ret;
 }
 
-STATUS php_http_env_set_response_header_format(long http_code, zend_bool replace TSRMLS_DC, const char *fmt, ...)
+ZEND_RESULT_CODE php_http_env_set_response_header_format(long http_code, zend_bool replace TSRMLS_DC, const char *fmt, ...)
 {
-       STATUS ret;
+       ZEND_RESULT_CODE ret;
        va_list args;
 
        va_start(args, fmt);
@@ -533,7 +471,7 @@ STATUS php_http_env_set_response_header_format(long http_code, zend_bool replace
        return ret;
 }
 
-STATUS php_http_env_set_response_header_value(long http_code, const char *name_str, size_t name_len, zval *value, zend_bool replace TSRMLS_DC)
+ZEND_RESULT_CODE php_http_env_set_response_header_value(long http_code, const char *name_str, size_t name_len, zval *value, zend_bool replace TSRMLS_DC)
 {
        if (!value) {
                sapi_header_line h = {(char *) name_str, name_len, http_code};
@@ -562,7 +500,7 @@ STATUS php_http_env_set_response_header_value(long http_code, const char *name_s
                        return php_http_env_set_response_header_value(http_code, name_str, name_len, NULL, replace TSRMLS_CC);
                } else {
                        sapi_header_line h;
-                       STATUS ret;
+                       ZEND_RESULT_CODE ret;
 
                        if (name_len > INT_MAX) {
                                name_len = INT_MAX;
@@ -858,58 +796,6 @@ static zend_function_entry php_http_env_methods[] = {
        EMPTY_FUNCTION_ENTRY
 };
 
-#ifdef PHP_HTTP_HAVE_JSON
-#include "ext/json/php_json.h"
-
-static SAPI_POST_HANDLER_FUNC(php_http_json_post_handler)
-{
-       zval *zarg = arg;
-       char *json_str = NULL;
-       size_t json_len = 0;
-
-#if PHP_VERSION_ID >= 50600
-       if (SG(request_info).request_body) {
-               /* FG(stream_wrappers) not initialized yet, so we cannot use php://input */
-               php_stream_rewind(SG(request_info).request_body);
-               json_len = php_stream_copy_to_mem(SG(request_info).request_body, &json_str, PHP_STREAM_COPY_ALL, 0);
-       }
-#else
-       json_str = SG(request_info).raw_post_data;
-       json_len = SG(request_info).raw_post_data_length;
-#endif
-
-       if (json_len) {
-               zval zjson;
-
-               INIT_ZVAL(zjson);
-               php_json_decode(&zjson, json_str, json_len, 1, PG(max_input_nesting_level) TSRMLS_CC);
-               if (Z_TYPE(zjson) != IS_NULL) {
-                       zval_dtor(zarg);
-                       ZVAL_COPY_VALUE(zarg, (&zjson));
-               }
-       }
-#if PHP_VERSION_ID >= 50600
-       PTR_FREE(json_str);
-#endif
-}
-
-static void php_http_env_register_json_handler(TSRMLS_D)
-{
-       sapi_post_entry entry = {NULL, 0, NULL, NULL};
-
-       entry.post_reader = sapi_read_standard_form_data;
-       entry.post_handler = php_http_json_post_handler;
-
-       entry.content_type = "text/json";
-       entry.content_type_len = lenof("text/json");
-       sapi_register_post_entry(&entry TSRMLS_CC);
-
-       entry.content_type = "application/json";
-       entry.content_type_len = lenof("application/json");
-       sapi_register_post_entry(&entry TSRMLS_CC);
-}
-#endif
-
 zend_class_entry *php_http_env_class_entry;
 
 PHP_MINIT_FUNCTION(http_env)
@@ -919,10 +805,6 @@ PHP_MINIT_FUNCTION(http_env)
        INIT_NS_CLASS_ENTRY(ce, "http", "Env", php_http_env_methods);
        php_http_env_class_entry = zend_register_internal_class(&ce TSRMLS_CC);
 
-#ifdef PHP_HTTP_HAVE_JSON
-       php_http_env_register_json_handler(TSRMLS_C);
-#endif
-
        return SUCCESS;
 }
 
index 7556c3efb68e77e4de0129d1ab18b1e0aeffe3aa..3fc80aba1e489bbb821a33b9e331eeea96ba2a20 100644 (file)
@@ -58,14 +58,14 @@ typedef enum php_http_cache_status {
 
 PHP_HTTP_API long php_http_env_get_response_code(TSRMLS_D);
 PHP_HTTP_API const char *php_http_env_get_response_status_for_code(unsigned code);
-PHP_HTTP_API STATUS php_http_env_get_response_headers(HashTable *headers_ht TSRMLS_DC);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_env_get_response_headers(HashTable *headers_ht TSRMLS_DC);
 PHP_HTTP_API char *php_http_env_get_response_header(const char *name_str, size_t name_len TSRMLS_DC);
-PHP_HTTP_API STATUS php_http_env_set_response_code(long http_code TSRMLS_DC);
-PHP_HTTP_API STATUS php_http_env_set_response_protocol_version(php_http_version_t *v TSRMLS_DC);
-PHP_HTTP_API STATUS php_http_env_set_response_header(long http_code, const char *header_str, size_t header_len, zend_bool replace TSRMLS_DC);
-PHP_HTTP_API STATUS php_http_env_set_response_header_value(long http_code, const char *name_str, size_t name_len, zval *value, zend_bool replace TSRMLS_DC);
-PHP_HTTP_API STATUS php_http_env_set_response_header_format(long http_code, zend_bool replace TSRMLS_DC, const char *fmt, ...);
-PHP_HTTP_API STATUS php_http_env_set_response_header_va(long http_code, zend_bool replace, const char *fmt, va_list argv TSRMLS_DC);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_env_set_response_code(long http_code TSRMLS_DC);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_env_set_response_protocol_version(php_http_version_t *v TSRMLS_DC);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_env_set_response_header(long http_code, const char *header_str, size_t header_len, zend_bool replace TSRMLS_DC);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_env_set_response_header_value(long http_code, const char *name_str, size_t name_len, zval *value, zend_bool replace TSRMLS_DC);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_env_set_response_header_format(long http_code, zend_bool replace TSRMLS_DC, const char *fmt, ...);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_env_set_response_header_va(long http_code, zend_bool replace, const char *fmt, va_list argv TSRMLS_DC);
 
 PHP_HTTP_API zval *php_http_env_get_server_var(const char *key_str, size_t key_len, zend_bool check TSRMLS_DC);
 #define php_http_env_got_server_var(v) (NULL != php_http_env_get_server_var((v), strlen(v), 1 TSRMLS_CC))
@@ -73,7 +73,6 @@ PHP_HTTP_API zval *php_http_env_get_superglobal(const char *key, size_t key_len
 
 PHP_HTTP_API zend_class_entry *php_http_env_class_entry;
 PHP_MINIT_FUNCTION(http_env);
-PHP_RINIT_FUNCTION(http_env);
 PHP_RSHUTDOWN_FUNCTION(http_env);
 
 #endif
index 0bcc21d9127ee025c2f7026b7fa7288bb28d495f..67a6d5830e4bf4d07b63b7db7b5b1df4b108050c 100644 (file)
@@ -263,7 +263,7 @@ static size_t output(void *context, char *buf, size_t len TSRMLS_DC)
 }
 
 #define php_http_env_response_send_done(r) php_http_env_response_send_data((r), NULL, 0)
-static STATUS php_http_env_response_send_data(php_http_env_response_t *r, const char *buf, size_t len)
+static ZEND_RESULT_CODE php_http_env_response_send_data(php_http_env_response_t *r, const char *buf, size_t len)
 {
        size_t chunks_sent, chunk = r->throttle.chunk ? r->throttle.chunk : PHP_HTTP_SENDBUF_SIZE;
        TSRMLS_FETCH_FROM_CTX(r->ts);
@@ -351,9 +351,9 @@ void php_http_env_response_free(php_http_env_response_t **r)
        }
 }
 
-static STATUS php_http_env_response_send_head(php_http_env_response_t *r, php_http_message_t *request)
+static ZEND_RESULT_CODE php_http_env_response_send_head(php_http_env_response_t *r, php_http_message_t *request)
 {
-       STATUS ret = SUCCESS;
+       ZEND_RESULT_CODE ret = SUCCESS;
        zval *zoption, *options = r->options;
        TSRMLS_FETCH_FROM_CTX(r->ts);
 
@@ -608,9 +608,9 @@ static STATUS php_http_env_response_send_head(php_http_env_response_t *r, php_ht
        return ret;
 }
 
-static STATUS php_http_env_response_send_body(php_http_env_response_t *r)
+static ZEND_RESULT_CODE php_http_env_response_send_body(php_http_env_response_t *r)
 {
-       STATUS ret = SUCCESS;
+       ZEND_RESULT_CODE ret = SUCCESS;
        zval *zoption;
        php_http_message_body_t *body;
        TSRMLS_FETCH_FROM_CTX(r->ts);
@@ -696,7 +696,7 @@ static STATUS php_http_env_response_send_body(php_http_env_response_t *r)
        return ret;
 }
 
-STATUS php_http_env_response_send(php_http_env_response_t *r)
+ZEND_RESULT_CODE php_http_env_response_send(php_http_env_response_t *r)
 {
        php_http_message_t *request;
        php_http_message_body_t *body;
@@ -784,21 +784,21 @@ static long php_http_env_response_sapi_get_status(php_http_env_response_t *r)
 
        return php_http_env_get_response_code(TSRMLS_C);
 }
-static STATUS php_http_env_response_sapi_set_status(php_http_env_response_t *r, long http_code)
+static ZEND_RESULT_CODE php_http_env_response_sapi_set_status(php_http_env_response_t *r, long http_code)
 {
        TSRMLS_FETCH_FROM_CTX(r->ts);
 
        return php_http_env_set_response_code(http_code TSRMLS_CC);
 }
-static STATUS php_http_env_response_sapi_set_protocol_version(php_http_env_response_t *r, php_http_version_t *v)
+static ZEND_RESULT_CODE php_http_env_response_sapi_set_protocol_version(php_http_env_response_t *r, php_http_version_t *v)
 {
        TSRMLS_FETCH_FROM_CTX(r->ts);
 
        return php_http_env_set_response_protocol_version(v TSRMLS_CC);
 }
-static STATUS php_http_env_response_sapi_set_header(php_http_env_response_t *r, const char *fmt, ...)
+static ZEND_RESULT_CODE php_http_env_response_sapi_set_header(php_http_env_response_t *r, const char *fmt, ...)
 {
-       STATUS ret;
+       ZEND_RESULT_CODE ret;
        va_list args;
        TSRMLS_FETCH_FROM_CTX(r->ts);
 
@@ -808,9 +808,9 @@ static STATUS php_http_env_response_sapi_set_header(php_http_env_response_t *r,
 
        return ret;
 }
-static STATUS php_http_env_response_sapi_add_header(php_http_env_response_t *r, const char *fmt, ...)
+static ZEND_RESULT_CODE php_http_env_response_sapi_add_header(php_http_env_response_t *r, const char *fmt, ...)
 {
-       STATUS ret;
+       ZEND_RESULT_CODE ret;
        va_list args;
        TSRMLS_FETCH_FROM_CTX(r->ts);
 
@@ -820,13 +820,13 @@ static STATUS php_http_env_response_sapi_add_header(php_http_env_response_t *r,
 
        return ret;
 }
-static STATUS php_http_env_response_sapi_del_header(php_http_env_response_t *r, const char *header_str, size_t header_len)
+static ZEND_RESULT_CODE php_http_env_response_sapi_del_header(php_http_env_response_t *r, const char *header_str, size_t header_len)
 {
        TSRMLS_FETCH_FROM_CTX(r->ts);
 
        return php_http_env_set_response_header_value(0, header_str, header_len, NULL, 1 TSRMLS_CC);
 }
-static STATUS php_http_env_response_sapi_write(php_http_env_response_t *r, const char *data_str, size_t data_len)
+static ZEND_RESULT_CODE php_http_env_response_sapi_write(php_http_env_response_t *r, const char *data_str, size_t data_len)
 {
        TSRMLS_FETCH_FROM_CTX(r->ts);
 
@@ -835,7 +835,7 @@ static STATUS php_http_env_response_sapi_write(php_http_env_response_t *r, const
        }
        return FAILURE;
 }
-static STATUS php_http_env_response_sapi_flush(php_http_env_response_t *r)
+static ZEND_RESULT_CODE php_http_env_response_sapi_flush(php_http_env_response_t *r)
 {
        TSRMLS_FETCH_FROM_CTX(r->ts);
 
@@ -853,7 +853,7 @@ static STATUS php_http_env_response_sapi_flush(php_http_env_response_t *r)
 
        return SUCCESS;
 }
-static STATUS php_http_env_response_sapi_finish(php_http_env_response_t *r)
+static ZEND_RESULT_CODE php_http_env_response_sapi_finish(php_http_env_response_t *r)
 {
        return SUCCESS;
 }
@@ -891,7 +891,7 @@ typedef struct php_http_env_response_stream_ctx {
        unsigned chunked:1;
 } php_http_env_response_stream_ctx_t;
 
-static STATUS php_http_env_response_stream_init(php_http_env_response_t *r, void *init_arg)
+static ZEND_RESULT_CODE php_http_env_response_stream_init(php_http_env_response_t *r, void *init_arg)
 {
        php_http_env_response_stream_ctx_t *ctx;
        size_t buffer_size = 0x1000;
@@ -956,7 +956,7 @@ static void php_http_env_response_stream_header(php_http_env_response_stream_ctx
                }
        }
 }
-static STATUS php_http_env_response_stream_start(php_http_env_response_stream_ctx_t *ctx TSRMLS_DC)
+static ZEND_RESULT_CODE php_http_env_response_stream_start(php_http_env_response_stream_ctx_t *ctx TSRMLS_DC)
 {
        php_http_buffer_t header_buf;
 
@@ -1003,7 +1003,7 @@ static long php_http_env_response_stream_get_status(php_http_env_response_t *r)
 
        return ctx->status_code;
 }
-static STATUS php_http_env_response_stream_set_status(php_http_env_response_t *r, long http_code)
+static ZEND_RESULT_CODE php_http_env_response_stream_set_status(php_http_env_response_t *r, long http_code)
 {
        php_http_env_response_stream_ctx_t *stream_ctx = r->ctx;
 
@@ -1015,7 +1015,7 @@ static STATUS php_http_env_response_stream_set_status(php_http_env_response_t *r
 
        return SUCCESS;
 }
-static STATUS php_http_env_response_stream_set_protocol_version(php_http_env_response_t *r, php_http_version_t *v)
+static ZEND_RESULT_CODE php_http_env_response_stream_set_protocol_version(php_http_env_response_t *r, php_http_version_t *v)
 {
        php_http_env_response_stream_ctx_t *stream_ctx = r->ctx;
 
@@ -1027,7 +1027,7 @@ static STATUS php_http_env_response_stream_set_protocol_version(php_http_env_res
 
        return SUCCESS;
 }
-static STATUS php_http_env_response_stream_set_header_ex(php_http_env_response_t *r, zend_bool replace, const char *fmt, va_list argv)
+static ZEND_RESULT_CODE php_http_env_response_stream_set_header_ex(php_http_env_response_t *r, zend_bool replace, const char *fmt, va_list argv)
 {
        php_http_env_response_stream_ctx_t *stream_ctx = r->ctx;
        char *header_end, *header_str = NULL;
@@ -1064,9 +1064,9 @@ static STATUS php_http_env_response_stream_set_header_ex(php_http_env_response_t
                return SUCCESS;
        }
 }
-static STATUS php_http_env_response_stream_set_header(php_http_env_response_t *r, const char *fmt, ...)
+static ZEND_RESULT_CODE php_http_env_response_stream_set_header(php_http_env_response_t *r, const char *fmt, ...)
 {
-       STATUS ret;
+       ZEND_RESULT_CODE ret;
        va_list argv;
 
        va_start(argv, fmt);
@@ -1075,9 +1075,9 @@ static STATUS php_http_env_response_stream_set_header(php_http_env_response_t *r
 
        return ret;
 }
-static STATUS php_http_env_response_stream_add_header(php_http_env_response_t *r, const char *fmt, ...)
+static ZEND_RESULT_CODE php_http_env_response_stream_add_header(php_http_env_response_t *r, const char *fmt, ...)
 {
-       STATUS ret;
+       ZEND_RESULT_CODE ret;
        va_list argv;
 
        va_start(argv, fmt);
@@ -1086,7 +1086,7 @@ static STATUS php_http_env_response_stream_add_header(php_http_env_response_t *r
 
        return ret;
 }
-static STATUS php_http_env_response_stream_del_header(php_http_env_response_t *r, const char *header_str, size_t header_len)
+static ZEND_RESULT_CODE php_http_env_response_stream_del_header(php_http_env_response_t *r, const char *header_str, size_t header_len)
 {
        php_http_env_response_stream_ctx_t *stream_ctx = r->ctx;
 
@@ -1097,7 +1097,7 @@ static STATUS php_http_env_response_stream_del_header(php_http_env_response_t *r
        zend_hash_del(&stream_ctx->header, header_str, header_len + 1);
        return SUCCESS;
 }
-static STATUS php_http_env_response_stream_write(php_http_env_response_t *r, const char *data_str, size_t data_len)
+static ZEND_RESULT_CODE php_http_env_response_stream_write(php_http_env_response_t *r, const char *data_str, size_t data_len)
 {
        php_http_env_response_stream_ctx_t *stream_ctx = r->ctx;
        TSRMLS_FETCH_FROM_CTX(r->ts);
@@ -1117,7 +1117,7 @@ static STATUS php_http_env_response_stream_write(php_http_env_response_t *r, con
 
        return SUCCESS;
 }
-static STATUS php_http_env_response_stream_flush(php_http_env_response_t *r)
+static ZEND_RESULT_CODE php_http_env_response_stream_flush(php_http_env_response_t *r)
 {
        php_http_env_response_stream_ctx_t *stream_ctx = r->ctx;
        TSRMLS_FETCH_FROM_CTX(r->ts);
@@ -1133,7 +1133,7 @@ static STATUS php_http_env_response_stream_flush(php_http_env_response_t *r)
 
        return php_stream_flush(stream_ctx->stream);
 }
-static STATUS php_http_env_response_stream_finish(php_http_env_response_t *r)
+static ZEND_RESULT_CODE php_http_env_response_stream_finish(php_http_env_response_t *r)
 {
        php_http_env_response_stream_ctx_t *ctx = r->ctx;
        TSRMLS_FETCH_FROM_CTX(r->ts);
index b67293050cbf34af925988f50a53b6673cda5c80..e6a112f5417fba84fc390f78b82a266372bdbb6d 100644 (file)
 typedef struct php_http_env_response php_http_env_response_t;
 
 typedef struct php_http_env_response_ops {
-       STATUS (*init)(php_http_env_response_t *r, void *arg);
+       ZEND_RESULT_CODE (*init)(php_http_env_response_t *r, void *arg);
        void (*dtor)(php_http_env_response_t *r);
        long (*get_status)(php_http_env_response_t *r);
-       STATUS (*set_status)(php_http_env_response_t *r, long http_code);
-       STATUS (*set_protocol_version)(php_http_env_response_t *r, php_http_version_t *v);
-       STATUS (*set_header)(php_http_env_response_t *r, const char *fmt, ...);
-       STATUS (*add_header)(php_http_env_response_t *r, const char *fmt, ...);
-       STATUS (*del_header)(php_http_env_response_t *r, const char *header_str, size_t header_len);
-       STATUS (*write)(php_http_env_response_t *r, const char *data_str, size_t data_len);
-       STATUS (*flush)(php_http_env_response_t *r);
-       STATUS (*finish)(php_http_env_response_t *r);
+       ZEND_RESULT_CODE (*set_status)(php_http_env_response_t *r, long http_code);
+       ZEND_RESULT_CODE (*set_protocol_version)(php_http_env_response_t *r, php_http_version_t *v);
+       ZEND_RESULT_CODE (*set_header)(php_http_env_response_t *r, const char *fmt, ...);
+       ZEND_RESULT_CODE (*add_header)(php_http_env_response_t *r, const char *fmt, ...);
+       ZEND_RESULT_CODE (*del_header)(php_http_env_response_t *r, const char *header_str, size_t header_len);
+       ZEND_RESULT_CODE (*write)(php_http_env_response_t *r, const char *data_str, size_t data_len);
+       ZEND_RESULT_CODE (*flush)(php_http_env_response_t *r);
+       ZEND_RESULT_CODE (*finish)(php_http_env_response_t *r);
 } php_http_env_response_ops_t;
 
 PHP_HTTP_API php_http_env_response_ops_t *php_http_env_response_get_sapi_ops(void);
@@ -67,7 +67,7 @@ struct php_http_env_response {
 };
 
 PHP_HTTP_API php_http_env_response_t *php_http_env_response_init(php_http_env_response_t *r, zval *options, php_http_env_response_ops_t *ops, void *ops_ctx TSRMLS_DC);
-PHP_HTTP_API STATUS php_http_env_response_send(php_http_env_response_t *r);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_env_response_send(php_http_env_response_t *r);
 PHP_HTTP_API void php_http_env_response_dtor(php_http_env_response_t *r);
 PHP_HTTP_API void php_http_env_response_free(php_http_env_response_t **r);
 
index 5a9ecd3bf136c8bfde5f21f931c45032760fae17..41601dfc4fe1c512bf94820810fddf67a0318e3f 100644 (file)
@@ -12,7 +12,7 @@
 
 #include "php_http_api.h"
 
-STATUS php_http_header_parse(const char *header, size_t length, HashTable *headers, php_http_info_callback_t callback_func, void **callback_data TSRMLS_DC)
+ZEND_RESULT_CODE php_http_header_parse(const char *header, size_t length, HashTable *headers, php_http_info_callback_t callback_func, void **callback_data TSRMLS_DC)
 {
        php_http_header_parser_t ctx;
        php_http_buffer_t buf;
index d420e3fdd54bdf06427554572e012b4e54cf1310..a2baecb9c5acde5b304cf1b9410f13d1fc71b65f 100644 (file)
@@ -15,7 +15,7 @@
 
 #include "php_http_info.h"
 
-PHP_HTTP_API STATUS php_http_header_parse(const char *header, size_t length, HashTable *headers, php_http_info_callback_t callback_func, void **callback_data TSRMLS_DC);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_header_parse(const char *header, size_t length, HashTable *headers, php_http_info_callback_t callback_func, void **callback_data TSRMLS_DC);
 
 PHP_HTTP_API void php_http_header_to_callback(HashTable *headers, zend_bool crlf, php_http_pass_format_callback_t cb, void *cb_arg TSRMLS_DC);
 PHP_HTTP_API void php_http_header_to_string(php_http_buffer_t *str, HashTable *headers TSRMLS_DC);
index f5b88f412f627d796735a5a2ecd19e0c80d2aa6f..2fbcb9394dbae1f5cd8761468ae4ff7799f988f4 100644 (file)
@@ -115,7 +115,7 @@ static void php_http_header_parser_error(size_t valid_len, char *str, size_t len
        efree(escaped_str);
 }
 
-STATUS php_http_header_parser_parse(php_http_header_parser_t *parser, php_http_buffer_t *buffer, unsigned flags, HashTable *headers, php_http_info_callback_t callback_func, void *callback_arg)
+php_http_header_parser_state_t php_http_header_parser_parse(php_http_header_parser_t *parser, php_http_buffer_t *buffer, unsigned flags, HashTable *headers, php_http_info_callback_t callback_func, void *callback_arg)
 {
        TSRMLS_FETCH_FROM_CTX(parser->ts);
 
index b7b500b313bbea8b1308c194e14e1e653cc0b33c..3b19a8c8f2dc1ba94fe6812542ac04df4b4f4429 100644 (file)
@@ -543,11 +543,11 @@ typedef struct php_http_message_object_prophandler {
        php_http_message_object_prophandler_func_t write;
 } php_http_message_object_prophandler_t;
 
-static STATUS php_http_message_object_add_prophandler(const char *prop_str, size_t prop_len, php_http_message_object_prophandler_func_t read, php_http_message_object_prophandler_func_t write) {
+static ZEND_RESULT_CODE php_http_message_object_add_prophandler(const char *prop_str, size_t prop_len, php_http_message_object_prophandler_func_t read, php_http_message_object_prophandler_func_t write) {
        php_http_message_object_prophandler_t h = { read, write };
        return zend_hash_add(&php_http_message_object_prophandlers, prop_str, prop_len + 1, (void *) &h, sizeof(h), NULL);
 }
-static STATUS php_http_message_object_get_prophandler(const char *prop_str, size_t prop_len, php_http_message_object_prophandler_t **handler) {
+static ZEND_RESULT_CODE php_http_message_object_get_prophandler(const char *prop_str, size_t prop_len, php_http_message_object_prophandler_t **handler) {
        return zend_hash_find(&php_http_message_object_prophandlers, prop_str, prop_len + 1, (void *) handler);
 }
 static void php_http_message_object_prophandler_get_type(php_http_message_object_t *obj, zval *return_value TSRMLS_DC) {
@@ -753,7 +753,7 @@ void php_http_message_object_prepend(zval *this_ptr, zval *prepend, zend_bool to
        }
 }
 
-STATUS php_http_message_object_set_body(php_http_message_object_t *msg_obj, zval *zbody TSRMLS_DC)
+ZEND_RESULT_CODE php_http_message_object_set_body(php_http_message_object_t *msg_obj, zval *zbody TSRMLS_DC)
 {
        zval *tmp = NULL;
        php_stream *s;
@@ -819,7 +819,7 @@ STATUS php_http_message_object_set_body(php_http_message_object_t *msg_obj, zval
        return SUCCESS;
 }
 
-STATUS php_http_message_object_init_body_object(php_http_message_object_t *obj)
+ZEND_RESULT_CODE php_http_message_object_init_body_object(php_http_message_object_t *obj)
 {
        TSRMLS_FETCH_FROM_CTX(obj->message->ts);
 
index 6524a27ccb22661b5c9ae026225ccb3b30686655..780ea68ce747431df25d536a864f393a0739b79a 100644 (file)
@@ -82,8 +82,8 @@ PHP_MSHUTDOWN_FUNCTION(http_message);
 
 void php_http_message_object_prepend(zval *this_ptr, zval *prepend, zend_bool top /* = 1 */ TSRMLS_DC);
 void php_http_message_object_reverse(zval *this_ptr, zval *return_value TSRMLS_DC);
-STATUS php_http_message_object_set_body(php_http_message_object_t *obj, zval *zbody TSRMLS_DC);
-STATUS php_http_message_object_init_body_object(php_http_message_object_t *obj);
+ZEND_RESULT_CODE php_http_message_object_set_body(php_http_message_object_t *obj, zval *zbody TSRMLS_DC);
+ZEND_RESULT_CODE php_http_message_object_init_body_object(php_http_message_object_t *obj);
 
 zend_object_value php_http_message_object_new(zend_class_entry *ce TSRMLS_DC);
 zend_object_value php_http_message_object_new_ex(zend_class_entry *ce, php_http_message_t *msg, php_http_message_object_t **ptr TSRMLS_DC);
index fa9155110d776d37a0e1e26bed4ec5ef627acee6..c80c2389151b78ce0976dd23ba86f4796fb594d9 100644 (file)
@@ -28,8 +28,8 @@
 #define BOUNDARY_CLOSE(body) \
                php_http_message_body_appendf(body, PHP_HTTP_CRLF "--%s--" PHP_HTTP_CRLF, php_http_message_body_boundary(body))
 
-static STATUS add_recursive_fields(php_http_message_body_t *body, const char *name, zval *value);
-static STATUS add_recursive_files(php_http_message_body_t *body, const char *name, zval *value);
+static ZEND_RESULT_CODE add_recursive_fields(php_http_message_body_t *body, const char *name, zval *value);
+static ZEND_RESULT_CODE add_recursive_files(php_http_message_body_t *body, const char *name, zval *value);
 
 php_http_message_body_t *php_http_message_body_init(php_http_message_body_t **body_ptr, php_stream *stream TSRMLS_DC)
 {
@@ -165,7 +165,7 @@ void php_http_message_body_to_string(php_http_message_body_t *body, char **buf,
        *len = php_stream_copy_to_mem(s, buf, forlen, 0);
 }
 
-STATUS php_http_message_body_to_stream(php_http_message_body_t *body, php_stream *dst, off_t offset, size_t forlen)
+ZEND_RESULT_CODE php_http_message_body_to_stream(php_http_message_body_t *body, php_stream *dst, off_t offset, size_t forlen)
 {
        php_stream *s = php_http_message_body_stream(body);
        TSRMLS_FETCH_FROM_CTX(body->ts);
@@ -178,7 +178,7 @@ STATUS php_http_message_body_to_stream(php_http_message_body_t *body, php_stream
        return php_stream_copy_to_stream_ex(s, dst, forlen, NULL);
 }
 
-STATUS php_http_message_body_to_callback(php_http_message_body_t *body, php_http_pass_callback_t cb, void *cb_arg, off_t offset, size_t forlen)
+ZEND_RESULT_CODE php_http_message_body_to_callback(php_http_message_body_t *body, php_http_pass_callback_t cb, void *cb_arg, off_t offset, size_t forlen)
 {
        php_stream *s = php_http_message_body_stream(body);
        char *buf = emalloc(0x1000);
@@ -250,7 +250,7 @@ size_t php_http_message_body_appendf(php_http_message_body_t *body, const char *
        return print_len;
 }
 
-STATUS php_http_message_body_add_form(php_http_message_body_t *body, HashTable *fields, HashTable *files)
+ZEND_RESULT_CODE php_http_message_body_add_form(php_http_message_body_t *body, HashTable *fields, HashTable *files)
 {
        zval tmp;
 
@@ -280,7 +280,7 @@ void php_http_message_body_add_part(php_http_message_body_t *body, php_http_mess
 }
 
 
-STATUS php_http_message_body_add_form_field(php_http_message_body_t *body, const char *name, const char *value_str, size_t value_len)
+ZEND_RESULT_CODE php_http_message_body_add_form_field(php_http_message_body_t *body, const char *name, const char *value_str, size_t value_len)
 {
        char *safe_name;
        TSRMLS_FETCH_FROM_CTX(body->ts);
@@ -301,7 +301,7 @@ STATUS php_http_message_body_add_form_field(php_http_message_body_t *body, const
        return SUCCESS;
 }
 
-STATUS php_http_message_body_add_form_file(php_http_message_body_t *body, const char *name, const char *ctype, const char *path, php_stream *in)
+ZEND_RESULT_CODE php_http_message_body_add_form_file(php_http_message_body_t *body, const char *name, const char *ctype, const char *path, php_stream *in)
 {
        char *safe_name, *path_dup = estrdup(path), *bname;
        size_t bname_len;
@@ -348,7 +348,7 @@ static inline char *format_key(uint type, char *str, ulong num, const char *pref
        return new_key;
 }
 
-static STATUS add_recursive_fields(php_http_message_body_t *body, const char *name, zval *value)
+static ZEND_RESULT_CODE add_recursive_fields(php_http_message_body_t *body, const char *name, zval *value)
 {
        if (Z_TYPE_P(value) == IS_ARRAY || Z_TYPE_P(value) == IS_OBJECT) {
                zval **val;
@@ -380,7 +380,7 @@ static STATUS add_recursive_fields(php_http_message_body_t *body, const char *na
        return SUCCESS;
 }
 
-static STATUS add_recursive_files(php_http_message_body_t *body, const char *name, zval *value)
+static ZEND_RESULT_CODE add_recursive_files(php_http_message_body_t *body, const char *name, zval *value)
 {
        zval **zdata = NULL, **zfile, **zname, **ztype;
        HashTable *ht;
@@ -441,7 +441,7 @@ static STATUS add_recursive_files(php_http_message_body_t *body, const char *nam
                } else {
                        zval *znc = php_http_ztyp(IS_STRING, *zname), *ztc = php_http_ztyp(IS_STRING, *ztype);
                        char *key = format_key(HASH_KEY_IS_STRING, Z_STRVAL_P(znc), 0, name);
-                       STATUS ret =  php_http_message_body_add_form_file(body, key, Z_STRVAL_P(ztc), Z_STRVAL_P(zfc), stream);
+                       ZEND_RESULT_CODE ret =  php_http_message_body_add_form_file(body, key, Z_STRVAL_P(ztc), Z_STRVAL_P(zfc), stream);
 
                        efree(key);
                        zval_ptr_dtor(&znc);
index 860cd8a1d2d686bcb4f148fd18360b56448f9042..dc2c7a270bc0ea17e9f60621bed3e26f33d11e1b 100644 (file)
@@ -28,15 +28,15 @@ struct php_http_message;
 PHP_HTTP_API php_http_message_body_t *php_http_message_body_init(php_http_message_body_t **body, php_stream *stream TSRMLS_DC);
 PHP_HTTP_API unsigned php_http_message_body_addref(php_http_message_body_t *body);
 PHP_HTTP_API php_http_message_body_t *php_http_message_body_copy(php_http_message_body_t *from, php_http_message_body_t *to);
-PHP_HTTP_API STATUS php_http_message_body_add_form(php_http_message_body_t *body, HashTable *fields, HashTable *files);
-PHP_HTTP_API STATUS php_http_message_body_add_form_field(php_http_message_body_t *body, const char *name, const char *value_str, size_t value_len);
-PHP_HTTP_API STATUS php_http_message_body_add_form_file(php_http_message_body_t *body, const char *name, const char *ctype, const char *file, php_stream *stream);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_message_body_add_form(php_http_message_body_t *body, HashTable *fields, HashTable *files);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_message_body_add_form_field(php_http_message_body_t *body, const char *name, const char *value_str, size_t value_len);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_message_body_add_form_file(php_http_message_body_t *body, const char *name, const char *ctype, const char *file, php_stream *stream);
 PHP_HTTP_API void php_http_message_body_add_part(php_http_message_body_t *body, struct php_http_message *part);
 PHP_HTTP_API size_t php_http_message_body_append(php_http_message_body_t *body, const char *buf, size_t len);
 PHP_HTTP_API size_t php_http_message_body_appendf(php_http_message_body_t *body, const char *fmt, ...);
 PHP_HTTP_API void php_http_message_body_to_string(php_http_message_body_t *body, char **buf, size_t *len, off_t offset, size_t forlen);
-PHP_HTTP_API STATUS php_http_message_body_to_stream(php_http_message_body_t *body, php_stream *s, off_t offset, size_t forlen);
-PHP_HTTP_API STATUS php_http_message_body_to_callback(php_http_message_body_t *body, php_http_pass_callback_t cb, void *cb_arg, off_t offset, size_t forlen);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_message_body_to_stream(php_http_message_body_t *body, php_stream *s, off_t offset, size_t forlen);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_message_body_to_callback(php_http_message_body_t *body, php_http_pass_callback_t cb, void *cb_arg, off_t offset, size_t forlen);
 PHP_HTTP_API void php_http_message_body_free(php_http_message_body_t **body);
 PHP_HTTP_API const php_stream_statbuf *php_http_message_body_stat(php_http_message_body_t *body);
 #define php_http_message_body_size(b) (php_http_message_body_stat((b))->sb.st_size)
index cf00f24ef5a71e3d3b21c1a8e0283f2c439e8b97..15daa96eb2f6d34a26c0dad3ebcd011a67eb1412 100644 (file)
@@ -154,6 +154,13 @@ static inline const char *php_http_locate_bin_eol(const char *bin, size_t len, i
 #      define PHP_HTTP_ZEND_LITERAL_CCN , NULL
 #endif
 
+#if PHP_VERSION_ID < 50500
+typedef enum {
+       SUCCESS = 0,
+       FAILURE = -1
+} ZEND_RESULT_CODE;
+#endif
+
 #if PHP_VERSION_ID < 50700
 #      define z_is_true zend_is_true
 #else
@@ -200,7 +207,7 @@ static inline zval *php_http_zsep(zend_bool add_ref, int type, zval *z)
        }
 }
 
-static inline STATUS php_http_ini_entry(const char *name_str, size_t name_len, const char **value_str, size_t *value_len, zend_bool orig TSRMLS_DC)
+static inline ZEND_RESULT_CODE php_http_ini_entry(const char *name_str, size_t name_len, const char **value_str, size_t *value_len, zend_bool orig TSRMLS_DC)
 {
        zend_ini_entry *ini_entry;
 
index ba6d28c82b8b7fed832cc9327d73bca8782a3d6d..d57388d03a8a28e6ef8381e504c1680545fd0e5f 100644 (file)
@@ -35,7 +35,7 @@ zend_object_value php_http_object_new_ex(zend_class_entry *ce, void *nothing, ph
        return o->zv;
 }
 
-STATUS php_http_new(zend_object_value *ovp, zend_class_entry *ce, php_http_new_t create, zend_class_entry *parent_ce, void *intern_ptr, void **obj_ptr TSRMLS_DC)
+ZEND_RESULT_CODE php_http_new(zend_object_value *ovp, zend_class_entry *ce, php_http_new_t create, zend_class_entry *parent_ce, void *intern_ptr, void **obj_ptr TSRMLS_DC)
 {
        zend_object_value ov;
 
@@ -101,9 +101,9 @@ void php_http_object_method_free(php_http_object_method_t **cb)
        }
 }
 
-STATUS php_http_object_method_call(php_http_object_method_t *cb, zval *zobject, zval **retval_ptr, int argc, zval ***args TSRMLS_DC)
+ZEND_RESULT_CODE php_http_object_method_call(php_http_object_method_t *cb, zval *zobject, zval **retval_ptr, int argc, zval ***args TSRMLS_DC)
 {
-       STATUS rv;
+       ZEND_RESULT_CODE rv;
        zval *retval = NULL;
 
        Z_ADDREF_P(zobject);
index 1fbd817454ad6ddccbf3cb263aae3fd21b6af261..3f75932f7fb1239df0c4e4a0b46ebb182eb746fa 100644 (file)
@@ -23,7 +23,7 @@ zend_object_value php_http_object_new_ex(zend_class_entry *ce, void *nothing, ph
 
 typedef zend_object_value (*php_http_new_t)(zend_class_entry *ce, void *, void ** TSRMLS_DC);
 
-STATUS php_http_new(zend_object_value *ov, zend_class_entry *ce, php_http_new_t create, zend_class_entry *parent_ce, void *intern_ptr, void **obj_ptr TSRMLS_DC);
+ZEND_RESULT_CODE php_http_new(zend_object_value *ov, zend_class_entry *ce, php_http_new_t create, zend_class_entry *parent_ce, void *intern_ptr, void **obj_ptr TSRMLS_DC);
 
 typedef struct php_http_method {
        zend_fcall_info fci;
@@ -31,7 +31,7 @@ typedef struct php_http_method {
 } php_http_object_method_t;
 
 php_http_object_method_t *php_http_object_method_init(php_http_object_method_t *cb, zval *zobject, const char *method_str, size_t method_len TSRMLS_DC);
-STATUS php_http_object_method_call(php_http_object_method_t *cb, zval *zobject, zval **retval, int argc, zval ***args TSRMLS_DC);
+ZEND_RESULT_CODE php_http_object_method_call(php_http_object_method_t *cb, zval *zobject, zval **retval, int argc, zval ***args TSRMLS_DC);
 void php_http_object_method_dtor(php_http_object_method_t *cb);
 void php_http_object_method_free(php_http_object_method_t **cb);
 
index 1ba987a2b0c12b864c5f244e874029ea8614593f..59b9c5f9fb6daa6fb66d6a23890f93f6f109bc29 100644 (file)
@@ -26,7 +26,7 @@ php_http_options_t *php_http_options_init(php_http_options_t *registry, zend_boo
        return registry;
 }
 
-STATUS php_http_options_apply(php_http_options_t *registry, HashTable *options, void *userdata)
+ZEND_RESULT_CODE php_http_options_apply(php_http_options_t *registry, HashTable *options, void *userdata)
 {
        HashPosition pos;
        zval *val;
index 67268155e7adacde6310041c410e02ae0e2f3506..2475383c3800f303e026c35b6ca230734c9cd214 100644 (file)
@@ -16,7 +16,7 @@
 typedef struct php_http_option php_http_option_t;
 typedef struct php_http_options php_http_options_t;
 
-typedef STATUS (*php_http_option_set_callback_t)(php_http_option_t *opt, zval *val, void *userdata);
+typedef ZEND_RESULT_CODE (*php_http_option_set_callback_t)(php_http_option_t *opt, zval *val, void *userdata);
 typedef zval *(*php_http_option_get_callback_t)(php_http_option_t *opt, HashTable *options, void *userdata);
 
 struct php_http_options {
@@ -46,7 +46,7 @@ struct php_http_option {
 };
 
 PHP_HTTP_API php_http_options_t *php_http_options_init(php_http_options_t *registry, zend_bool persistent);
-PHP_HTTP_API STATUS php_http_options_apply(php_http_options_t *registry, HashTable *options, void *userdata);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_options_apply(php_http_options_t *registry, HashTable *options, void *userdata);
 PHP_HTTP_API void php_http_options_dtor(php_http_options_t *registry);
 PHP_HTTP_API void php_http_options_free(php_http_options_t **registry);
 
index f2164fb56ab7d860bdff9510a572f2bad111c605..d2657484668ade531a876860c51354707e06a99e 100644 (file)
@@ -76,7 +76,7 @@ static inline void php_http_querystring_get(zval *this_ptr, int type, char *name
 }
 
 #ifdef PHP_HTTP_HAVE_ICONV
-STATUS php_http_querystring_xlate(zval *dst, zval *src, const char *ie, const char *oe TSRMLS_DC)
+ZEND_RESULT_CODE php_http_querystring_xlate(zval *dst, zval *src, const char *ie, const char *oe TSRMLS_DC)
 {
        HashPosition pos;
        zval **entry = NULL;
@@ -131,7 +131,7 @@ STATUS php_http_querystring_xlate(zval *dst, zval *src, const char *ie, const ch
 }
 #endif /* HAVE_ICONV */
 
-STATUS php_http_querystring_ctor(zval *instance, zval *params TSRMLS_DC)
+ZEND_RESULT_CODE php_http_querystring_ctor(zval *instance, zval *params TSRMLS_DC)
 {
        php_http_querystring_set(instance, params, 0 TSRMLS_CC);
        return SUCCESS;
@@ -158,9 +158,9 @@ static int apply_querystring(void *pData TSRMLS_DC)
        return ZEND_HASH_APPLY_KEEP;
 }
 
-STATUS php_http_querystring_parse(HashTable *ht, const char *str, size_t len TSRMLS_DC)
+ZEND_RESULT_CODE php_http_querystring_parse(HashTable *ht, const char *str, size_t len TSRMLS_DC)
 {
-       STATUS rv = FAILURE;
+       ZEND_RESULT_CODE rv = FAILURE;
        php_http_params_opts_t opts;
        php_http_params_token_t psep = { ZEND_STRL("&") }, *psepp[] = { &psep, NULL };
        php_http_params_token_t vsep = { ZEND_STRL("=") }, *vsepp[] = { &vsep, NULL };
@@ -206,7 +206,7 @@ STATUS php_http_querystring_parse(HashTable *ht, const char *str, size_t len TSR
        return rv;
 }
 
-STATUS php_http_querystring_update(zval *qarray, zval *params, zval *outstring TSRMLS_DC)
+ZEND_RESULT_CODE php_http_querystring_update(zval *qarray, zval *params, zval *outstring TSRMLS_DC)
 {
        /* enforce proper type */
        if (Z_TYPE_P(qarray) != IS_ARRAY) {
index 4ebdd77db37b44e5affc580b436d6327d218dc8f..3391e9132f7fea8cf32418fe3cf3506d7152c9dc 100644 (file)
 #define PHP_HTTP_QUERYSTRING_H
 
 #ifdef PHP_HTTP_HAVE_ICONV
-PHP_HTTP_API STATUS php_http_querystring_xlate(zval *dst, zval *src, const char *ie, const char *oe TSRMLS_DC);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_querystring_xlate(zval *dst, zval *src, const char *ie, const char *oe TSRMLS_DC);
 #endif /* PHP_HTTP_HAVE_ICONV */
-PHP_HTTP_API STATUS php_http_querystring_update(zval *qarray, zval *params, zval *qstring TSRMLS_DC);
-PHP_HTTP_API STATUS php_http_querystring_ctor(zval *instance, zval *params TSRMLS_DC);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_querystring_update(zval *qarray, zval *params, zval *qstring TSRMLS_DC);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_querystring_ctor(zval *instance, zval *params TSRMLS_DC);
 
 typedef php_http_object_t php_http_querystring_object_t;
 
index 6bfca2480d0b233685bc7192a48fe6c676cb5853..35178dc882a8b2314c821681088e9b6d0b43d3b9 100644 (file)
@@ -550,7 +550,7 @@ HashTable *php_http_url_to_struct(const php_http_url_t *url, zval *strct TSRMLS_
        return Z_ARRVAL(arr);
 }
 
-STATUS php_http_url_encode_hash(HashTable *hash, const char *pre_encoded_str, size_t pre_encoded_len, char **encoded_str, size_t *encoded_len TSRMLS_DC)
+ZEND_RESULT_CODE php_http_url_encode_hash(HashTable *hash, const char *pre_encoded_str, size_t pre_encoded_len, char **encoded_str, size_t *encoded_len TSRMLS_DC)
 {
        const char *arg_sep_str;
        size_t arg_sep_len;
@@ -569,7 +569,7 @@ STATUS php_http_url_encode_hash(HashTable *hash, const char *pre_encoded_str, si
        return SUCCESS;
 }
 
-STATUS php_http_url_encode_hash_ex(HashTable *hash, php_http_buffer_t *qstr, const char *arg_sep_str, size_t arg_sep_len, const char *val_sep_str, size_t val_sep_len, const char *pre_encoded_str, size_t pre_encoded_len TSRMLS_DC)
+ZEND_RESULT_CODE php_http_url_encode_hash_ex(HashTable *hash, php_http_buffer_t *qstr, const char *arg_sep_str, size_t arg_sep_len, const char *val_sep_str, size_t val_sep_len, const char *pre_encoded_str, size_t pre_encoded_len TSRMLS_DC)
 {
        if (pre_encoded_len && pre_encoded_str) {
                php_http_buffer_append(qstr, pre_encoded_str, pre_encoded_len);
@@ -661,8 +661,9 @@ static size_t parse_mb_loc(unsigned *wc, const char *ptr, const char *end)
        wchar_t wchar;
        size_t consumed = 0;
 #if defined(HAVE_MBRTOWC)
-       mbstate_t ps = {0};
+       mbstate_t ps;
 
+       memset(&ps, 0, sizeof(ps));
        consumed = mbrtowc(&wchar, ptr, end - ptr, &ps);
 #elif defined(HAVE_MBTOWC)
        consumed = mbtowc(&wchar, ptr, end - ptr);
@@ -745,15 +746,21 @@ static size_t parse_mb(struct parse_state *state, parse_mb_what_t what, const ch
 
        if (!silent) {
                TSRMLS_FETCH_FROM_CTX(state->ts);
-               php_error_docref(NULL TSRMLS_CC, E_WARNING,
-                               "Failed to parse %s; unexpected byte 0x%02x at pos %u in '%s'",
-                               parse_what[what], (unsigned char) *ptr, (unsigned) (ptr - begin), begin);
+               if (consumed) {
+                       php_error_docref(NULL TSRMLS_CC, E_WARNING,
+                                       "Failed to parse %s; unexpected multibyte sequence 0x%x at pos %u in '%s'",
+                                       parse_what[what], wchar, (unsigned) (ptr - begin), begin);
+               } else {
+                       php_error_docref(NULL TSRMLS_CC, E_WARNING,
+                                       "Failed to parse %s; unexpected byte 0x%02x at pos %u in '%s'",
+                                       parse_what[what], (unsigned char) *ptr, (unsigned) (ptr - begin), begin);
+               }
        }
 
        return 0;
 }
 
-static STATUS parse_userinfo(struct parse_state *state, const char *ptr)
+static ZEND_RESULT_CODE parse_userinfo(struct parse_state *state, const char *ptr)
 {
        size_t mb;
        const char *password = NULL, *end = state->ptr, *tmp = ptr;
@@ -818,13 +825,179 @@ static STATUS parse_userinfo(struct parse_state *state, const char *ptr)
        return SUCCESS;
 }
 
-static STATUS parse_hostinfo(struct parse_state *state, const char *ptr)
+#if defined(PHP_WIN32) || defined(HAVE_UIDNA_IDNTOASCII)
+typedef size_t (*parse_mb_func)(unsigned *wc, const char *ptr, const char *end);
+static ZEND_RESULT_CODE to_utf16(parse_mb_func fn, const char *u8, uint16_t **u16, size_t *len)
+{
+       size_t offset = 0, u8_len = strlen(u8);
+
+       *u16 = ecalloc(4 * sizeof(uint16_t), u8_len + 1);
+       *len = 0;
+
+       while (offset < u8_len) {
+               unsigned wc;
+               uint16_t buf[2], *ptr = buf;
+               size_t consumed = fn(&wc, &u8[offset], &u8[u8_len]);
+
+               if (!consumed) {
+                       efree(*u16);
+                       php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to parse UTF-8 at pos %zu of '%s'", offset, u8);
+                       return FAILURE;
+               } else {
+                       offset += consumed;
+               }
+
+               switch (wctoutf16(buf, wc)) {
+               case 2:
+                       (*u16)[(*len)++] = *ptr++;
+                       /* no break */
+               case 1:
+                       (*u16)[(*len)++] = *ptr++;
+                       break;
+               case 0:
+               default:
+                       efree(*u16);
+                       php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to convert UTF-32 'U+%X' to UTF-16", wc);
+                       return FAILURE;
+               }
+       }
+
+       return SUCCESS;
+}
+#endif
+
+#ifndef MAXHOSTNAMELEN
+#      define MAXHOSTNAMELEN 256
+#endif
+
+#ifdef PHP_HTTP_HAVE_IDN
+static ZEND_RESULT_CODE parse_idn(struct parse_state *state, size_t prev_len)
+{
+       char *idn = NULL;
+       int rv = -1;
+       TSRMLS_FETCH_FROM_CTX(state->ts);
+
+       if (state->flags & PHP_HTTP_URL_PARSE_MBUTF8) {
+               rv = idna_to_ascii_8z(state->url.host, &idn, IDNA_ALLOW_UNASSIGNED|IDNA_USE_STD3_ASCII_RULES);
+       }
+#      ifdef PHP_HTTP_HAVE_WCHAR
+       else if (state->flags & PHP_HTTP_URL_PARSE_MBLOC) {
+               rv = idna_to_ascii_lz(state->url.host, &idn, IDNA_ALLOW_UNASSIGNED|IDNA_USE_STD3_ASCII_RULES);
+       }
+#      endif
+       if (rv != IDNA_SUCCESS) {
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to parse IDN; %s", idna_strerror(rv));
+               return FAILURE;
+       } else {
+               size_t idnlen = strlen(idn);
+               memcpy(state->url.host, idn, idnlen + 1);
+               free(idn);
+               state->offset += idnlen - prev_len;
+               return SUCCESS;
+       }
+}
+#endif
+
+#ifdef HAVE_UIDNA_IDNTOASCII
+#      if HAVE_UNICODE_UIDNA_H
+#              include <unicode/uidna.h>
+#      else
+typedef uint16_t UChar;
+typedef enum { U_ZERO_ERROR = 0 } UErrorCode;
+int32_t uidna_IDNToASCII(const UChar *src, int32_t srcLength, UChar *dest, int32_t destCapacity, int32_t options, void *parseError, UErrorCode *status);
+#      endif
+static ZEND_RESULT_CODE parse_uidn(struct parse_state *state)
+{
+       char *host_ptr;
+       uint16_t *uhost_str, ahost_str[MAXHOSTNAMELEN], *ahost_ptr;
+       size_t uhost_len, ahost_len;
+       UErrorCode error = U_ZERO_ERROR;
+       TSRMLS_FETCH_FROM_CTX(state->ts);
+
+       if (state->flags & PHP_HTTP_URL_PARSE_MBUTF8) {
+               if (SUCCESS != to_utf16(parse_mb_utf8, state->url.host, &uhost_str, &uhost_len)) {
+                       return FAILURE;
+               }
+#ifdef PHP_HTTP_HAVE_WCHAR
+       } else if (state->flags & PHP_HTTP_URL_PARSE_MBLOC) {
+               if (SUCCESS != to_utf16(parse_mb_loc, state->url.host, &uhost_str, &uhost_len)) {
+                       return FAILURE;
+               }
+#endif
+       } else {
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to parse IDN; codepage not specified");
+               return FAILURE;
+       }
+
+       ahost_len = uidna_IDNToASCII(uhost_str, uhost_len, ahost_str, MAXHOSTNAMELEN, 3, NULL, &error);
+       efree(uhost_str);
+
+       if (error != U_ZERO_ERROR) {
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to parse IDN; ICU error %d", error);
+               return FAILURE;
+       }
+
+       host_ptr = state->url.host;
+       ahost_ptr = ahost_str;
+       PHP_HTTP_DUFF(ahost_len, *host_ptr++ = *ahost_ptr++);
+
+       *host_ptr = '\0';
+       state->offset += host_ptr - state->url.host;
+
+       return SUCCESS;
+}
+#endif
+
+#if 0 && defined(PHP_WIN32)
+static ZEND_RESULT_CODE parse_widn(struct parse_state *state)
+{
+       char *host_ptr;
+       uint16_t *uhost_str, ahost_str[MAXHOSTNAMELEN], *ahost_ptr;
+       size_t uhost_len;
+       TSRMLS_FETCH_FROM_CTX(state->ts);
+
+       if (state->flags & PHP_HTTP_URL_PARSE_MBUTF8) {
+               if (SUCCESS != to_utf16(parse_mb_utf8, state->url.host, &uhost_str, &uhost_len)) {
+                       php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to parse IDN");
+                       return FAILURE;
+               }
+#ifdef PHP_HTTP_HAVE_WCHAR
+       } else if (state->flags & PHP_HTTP_URL_PARSE_MBLOC) {
+               if (SUCCESS != to_utf16(parse_mb_loc, state->url.host, &uhost_str, &uhost_len)) {
+                       php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to parse IDN");
+                       return FAILURE;
+               }
+#endif
+       } else {
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to parse IDN");
+               return FAILURE;
+       }
+
+       if (!IdnToAscii(IDN_ALLOW_UNASSIGNED|IDN_USE_STD3_ASCII_RULES, uhost_str, uhost_len, ahost_str, MAXHOSTNAMELEN)) {
+               efree(uhost_str);
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to parse IDN");
+               return FAILURE;
+       }
+
+       efree(uhost_str);
+       host_ptr = state->url.host;
+       ahost_ptr = ahost_str;
+       PHP_HTTP_DUFF(wcslen(ahost_str), *host_ptr++ = *ahost_ptr++);
+       efree(ahost_str);
+
+       *host_ptr = '\0';
+       state->offset += host_ptr - state->url.host;
+
+       return SUCCESS;
+}
+#endif
+
+static ZEND_RESULT_CODE parse_hostinfo(struct parse_state *state, const char *ptr)
 {
        size_t mb, len;
        const char *end = state->ptr, *tmp = ptr, *port = NULL;
        TSRMLS_FETCH_FROM_CTX(state->ts);
 
-
 #ifdef HAVE_INET_PTON
        if (*ptr == '[') {
                char *error = NULL, *tmp = memchr(ptr, ']', end - ptr);
@@ -932,30 +1105,17 @@ static STATUS parse_hostinfo(struct parse_state *state, const char *ptr)
                state->buffer[state->offset++] = 0;
        }
 
-#ifdef PHP_HTTP_HAVE_IDN
        if (state->flags & PHP_HTTP_URL_PARSE_TOIDN) {
-               char *idn = NULL;
-               int rv = -1;
-
-               if (state->flags & PHP_HTTP_URL_PARSE_MBUTF8) {
-                       rv = idna_to_ascii_8z(state->url.host, &idn, IDNA_ALLOW_UNASSIGNED|IDNA_USE_STD3_ASCII_RULES);
-               }
-#      ifdef PHP_HTTP_HAVE_WCHAR
-               else if (state->flags & PHP_HTTP_URL_PARSE_MBLOC) {
-                       rv = idna_to_ascii_lz(state->url.host, &idn, IDNA_ALLOW_UNASSIGNED|IDNA_USE_STD3_ASCII_RULES);
-               }
-#      endif
-               if (rv != IDNA_SUCCESS) {
-                       php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to parse IDN; %s", idna_strerror(rv));
-                       return FAILURE;
-               } else {
-                       size_t idnlen = strlen(idn);
-                       memcpy(state->url.host, idn, idnlen + 1);
-                       free(idn);
-                       state->offset += idnlen - len;
-               }
-       }
+#ifdef PHP_HTTP_HAVE_IDN
+               return parse_idn(state, len);
+#endif
+#ifdef HAVE_UIDNA_IDNTOASCII
+               return parse_uidn(state);
 #endif
+#if 0 && defined(PHP_WIN32)
+               return parse_widn(state);
+#endif
+       }
 
        return SUCCESS;
 }
@@ -1494,7 +1654,7 @@ PHP_MINIT_FUNCTION(http_url)
        zend_declare_class_constant_long(php_http_url_class_entry, ZEND_STRL("PARSE_MBLOC"), PHP_HTTP_URL_PARSE_MBLOC TSRMLS_CC);
 #endif
        zend_declare_class_constant_long(php_http_url_class_entry, ZEND_STRL("PARSE_MBUTF8"), PHP_HTTP_URL_PARSE_MBUTF8 TSRMLS_CC);
-#ifdef PHP_HTTP_HAVE_IDN
+#if defined(PHP_HTTP_HAVE_IDN) || defined(HAVE_UIDNA_IDNTOASCII)
        zend_declare_class_constant_long(php_http_url_class_entry, ZEND_STRL("PARSE_TOIDN"), PHP_HTTP_URL_PARSE_TOIDN TSRMLS_CC);
 #endif
        zend_declare_class_constant_long(php_http_url_class_entry, ZEND_STRL("PARSE_TOPCT"), PHP_HTTP_URL_PARSE_TOPCT TSRMLS_CC);
index 303b9361b83fa895f188855948ed9420afb05be4..636efb584b667785fa9c1f5b4447610a1ab398e8 100644 (file)
@@ -68,8 +68,8 @@ PHP_HTTP_API char *php_http_url_to_string(const php_http_url_t *url, char **url_
 PHP_HTTP_API char *php_http_url_authority_to_string(const php_http_url_t *url, char **url_str, size_t *url_len);
 PHP_HTTP_API void php_http_url_free(php_http_url_t **url);
 
-PHP_HTTP_API STATUS php_http_url_encode_hash(HashTable *hash, const char *pre_encoded_str, size_t pre_encoded_len, char **encoded_str, size_t *encoded_len TSRMLS_DC);
-PHP_HTTP_API STATUS php_http_url_encode_hash_ex(HashTable *hash, php_http_buffer_t *qstr, const char *arg_sep_str, size_t arg_sep_len, const char *val_sep_str, size_t val_sep_len, const char *pre_encoded_str, size_t pre_encoded_len TSRMLS_DC);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_url_encode_hash(HashTable *hash, const char *pre_encoded_str, size_t pre_encoded_len, char **encoded_str, size_t *encoded_len TSRMLS_DC);
+PHP_HTTP_API ZEND_RESULT_CODE php_http_url_encode_hash_ex(HashTable *hash, php_http_buffer_t *qstr, const char *arg_sep_str, size_t arg_sep_len, const char *val_sep_str, size_t val_sep_len, const char *pre_encoded_str, size_t pre_encoded_len TSRMLS_DC);
 
 static inline void php_http_url_argsep(const char **str, size_t *len TSRMLS_DC)
 {
index 2503f0644e605db64aae577b6523e641b3e54098..f9008032dff0eea98abc8c59cb1134b35ab3b7c3 100644 (file)
@@ -625,6 +625,39 @@ static inline zend_bool isualnum(unsigned ch)
        return isualpha(ch);
 }
 
+static inline size_t wctoutf16(unsigned short u16[2], unsigned wc)
+{
+       if (wc > 0x10ffff || (wc >= 0xd800 && wc <= 0xdfff)) {
+               return 0;
+       }
+
+       if (wc <= 0xffff) {
+               u16[0] = (unsigned short) wc;
+               return 1;
+       }
+
+       wc -= 0x10000;
+       u16[0] = (unsigned short) ((wc >> 10) + 0xd800);
+       u16[1] = (unsigned short) ((wc & 0x3ff) + 0xdc00);
+       return 2;
+}
+
+static inline size_t utf16towc(unsigned *wc, unsigned short *u16_str, size_t u16_len)
+{
+       if (u16_len < 1) {
+               return 0;
+       }
+       if (u16_str[0] - 0xd800 >= 0x800) {
+               *wc = u16_str[0];
+               return 1;
+       }
+       if (u16_len < 2 || (u16_str[0] & 0xfffffc00) != 0xd800 || (u16_str[1] & 0xfffffc00) != 0xdc00) {
+               return 0;
+       }
+       *wc = (u16_str[0] << 10) + u16_str[1] - 0x35fdc00;
+       return 2;
+}
+
 #endif /* PHP_HTTP_UTF8_H */
 
 /*
diff --git a/tests/envrequestbody002.phpt b/tests/envrequestbody002.phpt
deleted file mode 100644 (file)
index 69c5988..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
---TEST--
-env request body
---SKIPIF--
-<?php include "skipif.inc"; ?>
---PUT--
-Content-Type: application/x-www-form-urlencoded
-foo=bar&baz=buh
---FILE--
-<?php
-var_dump($_POST);
-?>
-DONE
---EXPECT--
-array(2) {
-  ["foo"]=>
-  string(3) "bar"
-  ["baz"]=>
-  string(3) "buh"
-}
-DONE
diff --git a/tests/envrequestbody003.phpt b/tests/envrequestbody003.phpt
deleted file mode 100644 (file)
index c2bde83..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
---TEST--
-env request body
---SKIPIF--
-<?php include "skipif.inc"; ?>
---PUT--
-Content-Type: multipart/form-data;boundary=123
---123
-Content-Disposition: form-data; name="foo"
-
-bar
---123
-Content-Disposition: form-data; name="baz"
-
-buh
---123
-Content-Disposition: form-data; name="up"; filename="up.txt"
-
-foo=bar&baz=buh
---123--
---FILE--
-<?php
-var_dump($_POST);
-var_dump($_FILES);
-?>
-DONE
---EXPECTF--
-array(2) {
-  ["foo"]=>
-  string(3) "bar"
-  ["baz"]=>
-  string(3) "buh"
-}
-array(1) {
-  ["up"]=>
-  array(5) {
-    ["name"]=>
-    string(6) "up.txt"
-    ["type"]=>
-    string(0) ""
-    ["tmp_name"]=>
-    string(%d) "%s"
-    ["error"]=>
-    int(0)
-    ["size"]=>
-    int(15)
-  }
-}
-DONE
diff --git a/tests/envrequestjson001.phpt b/tests/envrequestjson001.phpt
deleted file mode 100644 (file)
index 3dfd9a8..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
---TEST--
-env request json
---SKIPIF--
-<?php
-include "skipif.inc";
-_ext("json");
-?>
---POST_RAW--
-Content-Type: application/json
-
-{"foo": "bar", "a": [1,2,3]}
---FILE--
-<?php
-echo "Test\n";
-print_r($_POST);
-?>
-Done
---EXPECT--
-Test
-Array
-(
-    [foo] => bar
-    [a] => Array
-        (
-            [0] => 1
-            [1] => 2
-            [2] => 3
-        )
-
-)
-Done
-
diff --git a/tests/envrequestjson002.phpt b/tests/envrequestjson002.phpt
deleted file mode 100644 (file)
index 4c404c0..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
---TEST--
-env request json
---SKIPIF--
-<?php
-include "skipif.inc";
-_ext("json");
-?>
---PUT--
-Content-Type: application/json
-
-{"foo": "bar", "a": [1,2,3]}
---FILE--
-<?php
-echo "Test\n";
-print_r($_POST);
-?>
-Done
---EXPECT--
-Test
-Array
-(
-    [foo] => bar
-    [a] => Array
-        (
-            [0] => 1
-            [1] => 2
-            [2] => 3
-        )
-
-)
-Done
-