thetaphi Fri May 30 19:39:16 2003 EDT
Modified files:
/php4/sapi/nsapi nsapi.c
Log:
Disable virtual() if zlib.output_compression is turned on. Better detection of
ns-httpdXX.dll
Index: php4/sapi/nsapi/nsapi.c
diff -u php4/sapi/nsapi/nsapi.c:1.41 php4/sapi/nsapi/nsapi.c:1.42
--- php4/sapi/nsapi/nsapi.c:1.41 Fri May 30 09:15:22 2003
+++ php4/sapi/nsapi/nsapi.c Fri May 30 19:39:15 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: nsapi.c,v 1.41 2003/05/30 13:15:22 thetaphi Exp $ */
+/* $Id: nsapi.c,v 1.42 2003/05/30 23:39:15 thetaphi Exp $ */
/*
* PHP includes
@@ -210,13 +210,20 @@
/* newer servers hide this functions from the programmer so redefine the functions
dynamically
thanks to Chris Elving from Sun for the function declarations */
-
typedef int (*nsapi_servact_prototype)(Session *sn, Request *rq);
nsapi_servact_prototype nsapi_servact_uri2path = NULL;
nsapi_servact_prototype nsapi_servact_pathchecks = NULL;
nsapi_servact_prototype nsapi_servact_fileinfo = NULL;
nsapi_servact_prototype nsapi_servact_service = NULL;
+#ifdef PHP_WIN32
+/* The following dll-names for nsapi are in use at this time. The undocumented
+ * servact_* functions are always in the newest one, older ones are supported by
+ * the server only by wrapping the function table nothing else. So choose
+ * the newest one found in process space for dynamic linking */
+char *nsapi_dlls[] = { "ns-httpd40.dll", "ns-httpd36.dll", "ns-httpd35.dll",
"ns-httpd30.dll", NULL };
+#endif
+
/* {{{ php_nsapi_init_dynamic_symbols
*/
static void php_nsapi_init_dynamic_symbols(void)
@@ -231,13 +238,10 @@
/* find address of internal NSAPI functions */
#ifdef PHP_WIN32
register int i;
- char module_name[11];
DL_HANDLE module = NULL;
- /* find a LOADED dll module named "ns-httpdX0", where X is version
- * currently there are server-dlls in version 2, 3 and 4 in use */
- for (i=4; i>=2; i--) {
- sprintf(module_name, "ns-httpd%d0", i);
- if (module = GetModuleHandle(module_name)) {
+ /* find a LOADED dll module from nsapi_dlls */
+ for (i=0; nsapi_dlls[i]; i++) {
+ if (module = GetModuleHandle(nsapi_dlls[i])) {
break;
}
}
@@ -295,7 +299,8 @@
php_info_print_table_start();
php_info_print_table_row(2, "NSAPI support", "enabled");
php_info_print_table_row(2, "Server Software", system_version());
- php_info_print_table_row(2, "Sub-requests with virtual()",
(nsapi_servact_service)?"enabled":"not supported on this platform" );
+ php_info_print_table_row(2, "Sub-requests with virtual()",
+ (nsapi_servact_service)?((zend_ini_long("zlib.output_compression",
sizeof("zlib.output_compression"), 0))?"not supported with
zlib.output_compression":"enabled"):"not supported on this platform" );
php_info_print_table_end();
DISPLAY_INI_ENTRIES();
@@ -324,6 +329,9 @@
if (!nsapi_servact_service) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to include uri
'%s' - Sub-requests not supported on this platform", (*uri)->value.str.val);
+ RETURN_FALSE;
+ } else if (zend_ini_long("zlib.output_compression",
sizeof("zlib.output_compression"), 0)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to include uri
'%s' - Sub-requests do not work with zlib.output_compression", (*uri)->value.str.val);
RETURN_FALSE;
} else {
php_end_ob_buffers(1 TSRMLS_CC);
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php