- return error if headers have been already sent
[m6w6/ext-http] / http.c
diff --git a/http.c b/http.c
index 4460d6950d2bd540d78d143c92af23925c99a785..192834be53f9476a16060641f9869bddaf8e9fbd 100644 (file)
--- a/http.c
+++ b/http.c
 #ifdef HAVE_CONFIG_H
 #      include "config.h"
 #endif
-
-#ifdef HTTP_HAVE_CURL
-#      ifdef PHP_WIN32
-#              include <winsock2.h>
-#      endif
-#      include <curl/curl.h>
-#endif
-
-#include <ctype.h>
-
 #include "php.h"
-#include "php_ini.h"
-#include "ext/standard/info.h"
 
 #include "SAPI.h"
+#include "php_ini.h"
+#include "ext/standard/info.h"
 
 #include "php_http.h"
 #include "php_http_std_defs.h"
 
 #include "phpstr/phpstr.h"
 
+#ifdef HTTP_HAVE_CURL
+#      ifdef PHP_WIN32
+#              include <winsock2.h>
+#      endif
+#      include <curl/curl.h>
+#endif
+
+#include <ctype.h>
+
 ZEND_DECLARE_MODULE_GLOBALS(http);
 HTTP_DECLARE_ARG_PASS_INFO();
 
@@ -85,6 +84,7 @@ function_entry http_functions[] = {
        PHP_FE(http_split_response, NULL)
        PHP_FE(http_parse_headers, NULL)
        PHP_FE(http_get_request_headers, NULL)
+       PHP_FE(http_get_request_body, NULL)
        PHP_FE(http_match_request_header, NULL)
 #ifdef HTTP_HAVE_CURL
        PHP_FE(http_get, http_arg_pass_ref_3)
@@ -240,9 +240,19 @@ PHP_RINIT_FUNCTION(http)
 }
 /* }}} */
 
+static int cleanup_statics(void *p TSRMLS_DC)
+{
+       zval_dtor(*(zval **)p);
+       return 0;
+}
+
 /* {{{ PHP_RSHUTDOWN_FUNCTION */
 PHP_RSHUTDOWN_FUNCTION(http)
 {
+       /* ZE kludge */
+#ifdef ZEND_ENGINE_2
+       zend_hash_apply(http_response_object_ce->static_members, cleanup_statics TSRMLS_CC);
+#endif
        http_globals_free(HTTP_GLOBALS);
        return SUCCESS;
 }