hyanantha Thu Oct 24 07:34:14 2002 EDT
Modified files: (Branch: PHP_4_2_0)
/php4/sapi/apache mod_php4.c
Log:
NetWare related changes/modifications.
Index: php4/sapi/apache/mod_php4.c
diff -u php4/sapi/apache/mod_php4.c:1.127.2.4 php4/sapi/apache/mod_php4.c:1.127.2.5
--- php4/sapi/apache/mod_php4.c:1.127.2.4 Thu Aug 22 10:45:56 2002
+++ php4/sapi/apache/mod_php4.c Thu Oct 24 07:34:14 2002
@@ -17,7 +17,7 @@
| PHP 4.0 patches by Zeev Suraski <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: mod_php4.c,v 1.127.2.4 2002/08/22 14:45:56 rasmus Exp $ */
+/* $Id: mod_php4.c,v 1.127.2.5 2002/10/24 11:34:14 hyanantha Exp $ */
#define NO_REGEX_EXTRA_H
#ifdef WIN32
@@ -25,6 +25,18 @@
#include <stddef.h>
#endif
+#ifdef NETWARE
+#define SIGPIPE SIGINT
+#ifdef NEW_LIBC /* Works fine for both Winsock and Berkeley sockets */
+#include <netinet/in.h>
+#else /* NEW_LIBC */
+#include <sys/socket.h>
+#endif /* NEW_LIBC */
+/* Security related functions: Using the dynamically exported functions */
+extern int NWSECInitializeSession(unsigned int ScriptLangType, unsigned int
+ExecutionMode, char *pszPublicDocDir);
+extern int NWSECTerminateSession();
+#endif /* NETWARE */
+
#include "zend.h"
#include "php.h"
#include "php_variables.h"
@@ -127,13 +139,20 @@
static int sapi_apache_ub_write(const char *str, uint str_length TSRMLS_DC)
{
int ret=0;
-
+
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ EnterClib();
+#endif
+
if (SG(server_context)) {
ret = rwrite(str, str_length, (request_rec *) SG(server_context));
}
if (ret != str_length) {
php_handle_aborted_connection();
}
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ ExitClib();
+#endif
return ret;
}
/* }}} */
@@ -142,6 +161,9 @@
*/
static void sapi_apache_flush(void *server_context)
{
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ EnterClib();
+#endif
if (server_context) {
#if MODULE_MAGIC_NUMBER > 19970110
rflush((request_rec *) server_context);
@@ -149,6 +171,9 @@
bflush((request_rec *) server_context->connection->client);
#endif
}
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ ExitClib();
+#endif
}
/* }}} */
@@ -160,7 +185,13 @@
request_rec *r = (request_rec *) SG(server_context);
void (*handler)(int);
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ EnterClib();
+#endif
+
+#ifndef NETWARE
handler = signal(SIGPIPE, SIG_IGN);
+#endif
while (total_read_bytes<count_bytes) {
hard_timeout("Read POST information", r); /* start timeout timer */
read_bytes = get_client_block(r, buffer+total_read_bytes,
count_bytes-total_read_bytes);
@@ -170,7 +201,12 @@
}
total_read_bytes += read_bytes;
}
- signal(SIGPIPE, handler);
+#ifndef NETWARE
+ signal(SIGPIPE, handler);
+#endif
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ ExitClib();
+#endif
return total_read_bytes;
}
/* }}} */
@@ -179,7 +215,17 @@
*/
char *sapi_apache_read_cookies(TSRMLS_D)
{
+#if !(defined(NETWARE) && defined(NETWARE_CLIB_BROKER))
return (char *) table_get(((request_rec *)
SG(server_context))->subprocess_env, "HTTP_COOKIE");
+#else
+ char *temp;
+
+ EnterClib();
+ temp = (char *) table_get(((request_rec *) SG(server_context))->subprocess_env,
+"HTTP_COOKIE");
+ ExitClib();
+
+ return temp;
+#endif
}
/* }}} */
@@ -202,6 +248,9 @@
header_content++;
} while (*header_content==' ');
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ EnterClib();
+#endif
if (!strcasecmp(header_name, "Content-Type")) {
r->content_type = pstrdup(r->pool, header_content);
} else if (!strcasecmp(header_name, "Set-Cookie")) {
@@ -214,6 +263,9 @@
efree(sapi_header->header);
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ ExitClib();
+#endif
return 0; /* don't use the default SAPI mechanism, Apache duplicates this
functionality */
}
/* }}} */
@@ -226,8 +278,14 @@
return SAPI_HEADER_SEND_FAILED;
}
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ EnterClib();
+#endif
((request_rec *) SG(server_context))->status =
SG(sapi_headers).http_response_code;
send_http_header((request_rec *) SG(server_context));
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ ExitClib();
+#endif
return SAPI_HEADER_SENT_SUCCESSFULLY;
}
/* }}} */
@@ -242,6 +300,9 @@
zval **path_translated;
HashTable *symbol_table;
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ EnterClib();
+#endif
for (i = 0; i < arr->nelts; i++) {
char *val;
@@ -269,6 +330,9 @@
}
php_register_variable("PHP_SELF", ((request_rec *) SG(server_context))->uri,
track_vars_array TSRMLS_CC);
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ ExitClib();
+#endif
}
/* }}} */
@@ -291,6 +355,9 @@
{
TSRMLS_FETCH();
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ EnterClib();
+#endif
if (SG(server_context)) {
#if MODULE_MAGIC_NUMBER >= 19970831
aplog_error(NULL, 0, APLOG_ERR | APLOG_NOERRNO, ((request_rec *)
SG(server_context))->server, "%s", message);
@@ -301,6 +368,9 @@
fprintf(stderr, "%s", message);
fprintf(stderr, "\n");
}
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ ExitClib();
+#endif
}
/* }}} */
@@ -310,12 +380,18 @@
{
TSRMLS_FETCH();
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ EnterClib();
+#endif
php_output_set_status(0 TSRMLS_CC);
SG(server_context) = NULL; /* The server context (request) is invalid by the
time run_cleanups() is called */
if (AP(in_request)) {
AP(in_request) = 0;
php_request_shutdown(dummy);
}
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ ExitClib();
+#endif
}
/* }}} */
@@ -325,6 +401,9 @@
{
request_rec *r = (request_rec *) SG(server_context);
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ EnterClib();
+#endif
/*
* For the Apache module version, this bit of code registers a cleanup
* function that gets triggered when our request pool is destroyed.
@@ -342,6 +421,9 @@
* send headers.
*/
SG(request_info).headers_only = r->header_only;
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ ExitClib();
+#endif
return SUCCESS;
}
/* }}} */
@@ -422,6 +504,9 @@
const char *authorization=NULL;
char *tmp;
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ EnterClib();
+#endif
SG(request_info).query_string = r->args;
SG(request_info).path_translated = r->filename;
SG(request_info).request_uri = r->uri;
@@ -451,6 +536,9 @@
SG(request_info).auth_user = NULL;
SG(request_info).auth_password = NULL;
}
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ ExitClib();
+#endif
}
/* }}} */
@@ -491,6 +579,9 @@
HashTable *per_dir_conf;
TSRMLS_FETCH();
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ EnterClib();
+#endif
if (AP(in_request)) {
zend_file_handle fh;
@@ -499,9 +590,15 @@
fh.free_filename = 0;
fh.type = ZEND_HANDLE_FILENAME;
zend_execute_scripts(ZEND_INCLUDE TSRMLS_CC, NULL, 1, &fh);
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ ExitClib();
+#endif
return OK;
}
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ ExitClib();
+#endif
zend_first_try {
/* We don't accept OPTIONS requests, but take everything else */
if (r->method_number == M_OPTIONS) {
@@ -514,6 +611,9 @@
return DECLINED;
}
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ EnterClib();
+#endif
per_dir_conf = (HashTable *) get_module_config(r->per_dir_config,
&php4_module);
if (per_dir_conf) {
zend_hash_apply((HashTable *) per_dir_conf, (apply_func_t)
php_apache_alter_ini_entries TSRMLS_CC);
@@ -528,6 +628,9 @@
zend_try {
zend_ini_deactivate(TSRMLS_C);
} zend_end_try();
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ ExitClib();
+#endif
return DECLINED;
}
if (filename == NULL) {
@@ -540,6 +643,9 @@
zend_try {
zend_ini_deactivate(TSRMLS_C);
} zend_end_try();
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ ExitClib();
+#endif
return retval;
}
#endif
@@ -550,6 +656,9 @@
zend_try {
zend_ini_deactivate(TSRMLS_C);
} zend_end_try();
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ ExitClib();
+#endif
return retval;
}
#else
@@ -579,6 +688,9 @@
kill_timeout(r);
} zend_end_try();
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ ExitClib();
+#endif
return OK;
}
/* }}} */
@@ -587,8 +699,24 @@
*/
static int send_parsed_php(request_rec * r)
{
+#ifndef NETWARE
int result = send_php(r, 0, NULL);
+#else
+ int result;
+
+ /* Security changes */
+ /* 102 is used for PHP Scripts */
+ NWSECInitializeSession(102, 1, NULL);
+
+ result = send_php(r, 0, NULL);
+ /* Security changes */
+ NWSECTerminateSession();
+#endif
+
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ EnterClib();
+#endif
#if MEMORY_LIMIT
{
char *mem_usage;
@@ -600,6 +728,9 @@
}
#endif
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ ExitClib();
+#endif
return result;
}
/* }}} */
@@ -665,10 +796,16 @@
{
HashTable *per_dir_info;
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ EnterClib();
+#endif
per_dir_info = (HashTable *) malloc(sizeof(HashTable));
zend_hash_init_ex(per_dir_info, 5, NULL, (void (*)(void *))
destroy_per_dir_entry, 1, 0);
register_cleanup(p, (void *) per_dir_info, (void (*)(void *))
php_destroy_per_dir_info, (void (*)(void *)) zend_hash_destroy);
+#if defined(NETWARE) && defined(NETWARE_CLIB_BROKER)
+ ExitClib();
+#endif
return per_dir_info;
}
/* }}} */
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php