cvs: /php4/sapi/isapi php4isapi.c
| From: | Zeev Suraski | Date: | Sun, 13 Feb 2000 01:25:21 +0000 |
| Subject: | cvs: /php4/sapi/isapi php4isapi.c | ||
| Groups: | php.version4 | ||
| Request: | Send a blank email to php-version4+get-10200@lists.php.net to get a copy of this message | ||
zeev Sat Feb 12 17:25:21 2000 EDT
Modified files:
/php4/sapi/isapi php4isapi.c
Log:
Report access violations
Index: php4/sapi/isapi/php4isapi.c
diff -u php4/sapi/isapi/php4isapi.c:1.22 php4/sapi/isapi/php4isapi.c:1.23
--- php4/sapi/isapi/php4isapi.c:1.22 Sat Feb 12 17:14:45 2000
+++ php4/sapi/isapi/php4isapi.c Sat Feb 12 17:24:51 2000
@@ -452,6 +452,27 @@
}
+static void php_isapi_report_exception(char *message, int message_len SLS_DC)
+{
+ if (!SG(headers_sent)) {
+ HSE_SEND_HEADER_EX_INFO header_info;
+ LPEXTENSION_CONTROL_BLOCK lpECB = (LPEXTENSION_CONTROL_BLOCK) SG(server_context);
+
+ header_info.pszStatus = "500 Internal Server Error";
+#ifndef WITH_ZEUS
+ header_info.cchStatus = strlen(header_info.pszStatus);
+#endif
+ header_info.pszHeader = "Content-Type: text/html\r\n\r\n";
+ header_info.cchHeader = strlen(header_info.pszHeader);
+
+ lpECB->dwHttpStatusCode = 500;
+ lpECB->ServerSupportFunction(lpECB->ConnID, HSE_REQ_SEND_RESPONSE_HEADER_EX,
&header_info, NULL, NULL);
+ SG(headers_sent)=1;
+ }
+ sapi_isapi_ub_write(message, message_len);
+}
+
+
BOOL WINAPI GetExtensionVersion(HSE_VERSION_INFO *pVer)
{
pVer->dwExtensionVersion = HSE_VERSION;
@@ -516,22 +537,10 @@
}
CG(unclean_shutdown)=1;
-
- if (!SG(headers_sent)) {
- HSE_SEND_HEADER_EX_INFO header_info;
-
- header_info.pszStatus = "500 Internal Server Error";
-#ifndef WITH_ZEUS
- header_info.cchStatus = strlen(header_info.pszStatus);
-#endif
- header_info.pszHeader = "Content-Type: text/html\r\n\r\n";
- header_info.cchHeader = strlen(header_info.pszHeader);
-
- lpECB->dwHttpStatusCode = 500;
- lpECB->ServerSupportFunction(lpECB->ConnID, HSE_REQ_SEND_RESPONSE_HEADER_EX,
&header_info, NULL, NULL);
- SG(headers_sent)=1;
- }
- sapi_isapi_ub_write("Stack Overflow", sizeof("Stack Overflow")-1);
+ php_isapi_report_exception("Stack overflow", sizeof("Stack overflow")-1
SLS_CC);
+ } else if (_exception_code()==EXCEPTION_ACCESS_VIOLATION) {
+ php_isapi_report_exception("Access violation", sizeof("Access violation")-1
SLS_CC);
+ ExitThread(0);
} else {
ExitThread(0);
}