mturk 2002/07/06 01:05:49
Modified: jk/native2/server/isapi jk_isapi_plugin.c
Log:
Fix the Q250397 bug introducing authComplete registry param
that one when set enables the SF_NOTIFY_AUTH_COMPLETE
filter notification.
Remove the iis5 version checking acordingly using new approach.
Revision Changes Path
1.35 +83 -46
jakarta-tomcat-connectors/jk/native2/server/isapi/jk_isapi_plugin.c
Index: jk_isapi_plugin.c
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-connectors/jk/native2/server/isapi/jk_isapi_plugin.c,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- jk_isapi_plugin.c 5 Jul 2002 08:12:09 -0000 1.34
+++ jk_isapi_plugin.c 6 Jul 2002 08:05:49 -0000 1.35
@@ -85,6 +85,7 @@
#define SERVER_ROOT_TAG ("serverRoot")
#define EXTENSION_URI_TAG ("extensionUri")
#define WORKERS_FILE_TAG ("workersFile")
+#define USE_AUTH_COMP_TAG ("authComplete")
static char file_name[_MAX_PATH];
@@ -93,7 +94,7 @@
static int is_inited = JK_FALSE;
static int is_mapread = JK_FALSE;
static int was_inited = JK_FALSE;
-static int iis5 = -1;
+static int auth_notification_flags = 0;
static jk_workerEnv_t *workerEnv;
static apr_pool_t *jk_globalPool;
@@ -117,7 +118,7 @@
static jk_env_t* jk2_create_config();
-
+static int get_auth_flags();
static void write_error_response(PHTTP_FILTER_CONTEXT pfc,char *status,char * msg)
@@ -151,20 +152,23 @@
if (pVer->dwFilterVersion > http_filter_revision) {
pVer->dwFilterVersion = http_filter_revision;
}
-
+ auth_notification_flags = get_auth_flags();
#ifdef SF_NOTIFY_AUTH_COMPLETE
-
- pVer->dwFlags = SF_NOTIFY_ORDER_HIGH |
- SF_NOTIFY_SECURE_PORT |
- SF_NOTIFY_NONSECURE_PORT |
- SF_NOTIFY_PREPROC_HEADERS |
- SF_NOTIFY_AUTH_COMPLETE;
-#else
- pVer->dwFlags = SF_NOTIFY_ORDER_HIGH |
- SF_NOTIFY_SECURE_PORT |
- SF_NOTIFY_NONSECURE_PORT |
- SF_NOTIFY_PREPROC_HEADERS;
+ if (auth_notification_flags == SF_NOTIFY_AUTH_COMPLETE) {
+ pVer->dwFlags = SF_NOTIFY_ORDER_HIGH |
+ SF_NOTIFY_SECURE_PORT |
+ SF_NOTIFY_NONSECURE_PORT |
+ SF_NOTIFY_PREPROC_HEADERS |
+ SF_NOTIFY_AUTH_COMPLETE;
+ }
+ else
#endif
+ {
+ pVer->dwFlags = SF_NOTIFY_ORDER_HIGH |
+ SF_NOTIFY_SECURE_PORT |
+ SF_NOTIFY_NONSECURE_PORT |
+ SF_NOTIFY_PREPROC_HEADERS;
+ }
strcpy(pVer->lpszFilterDesc, VERSION_STRING);
@@ -201,28 +205,8 @@
}
if (is_inited && is_mapread) {
env = workerEnv->globalEnv->getEnv( workerEnv->globalEnv );
- if (is_inited && (iis5 < 0) ) {
- char serverSoftware[256];
- DWORD dwLen = sizeof(serverSoftware);
- iis5=0;
- if (pfc->GetServerVariable(pfc,SERVER_SOFTWARE, serverSoftware,
&dwLen)){
- iis5=(atof(serverSoftware + 14) >= 5.0);
- if (iis5) {
- env->l->jkLog(env, env->l, JK_LOG_INFO,"Detected IIS >=
5.0\n");
- } else {
- env->l->jkLog(env, env->l, JK_LOG_INFO,"Detected IIS < 5.0\n");
- }
- }
- }
-#ifdef SF_NOTIFY_AUTH_COMPLETE
- if (is_inited &&
- (((SF_NOTIFY_PREPROC_HEADERS == dwNotificationType) && !iis5) ||
- ((SF_NOTIFY_AUTH_COMPLETE == dwNotificationType) && iis5)
- )
- )
-#else
- if (is_inited && (SF_NOTIFY_PREPROC_HEADERS == dwNotificationType))
-#endif
+
+ if (auth_notification_flags == dwNotificationType)
{
char uri[INTERNET_MAX_URL_LENGTH];
char snuri[INTERNET_MAX_URL_LENGTH]="/";
@@ -240,22 +224,18 @@
DWORD szTranslate = sizeof(Translate);
#ifdef SF_NOTIFY_AUTH_COMPLETE
- if (iis5) {
+ if (auth_notification_flags == SF_NOTIFY_AUTH_COMPLETE) {
GetHeader=((PHTTP_FILTER_AUTH_COMPLETE_INFO)pvNotification)->GetHeader;
SetHeader=((PHTTP_FILTER_AUTH_COMPLETE_INFO)pvNotification)->SetHeader;
AddHeader=((PHTTP_FILTER_AUTH_COMPLETE_INFO)pvNotification)->AddHeader;
- } else {
+ }
+ else
+#endif
+ {
GetHeader=((PHTTP_FILTER_PREPROC_HEADERS)pvNotification)->GetHeader;
SetHeader=((PHTTP_FILTER_PREPROC_HEADERS)pvNotification)->SetHeader;
AddHeader=((PHTTP_FILTER_PREPROC_HEADERS)pvNotification)->AddHeader;
}
-#else
- GetHeader=((PHTTP_FILTER_PREPROC_HEADERS)pvNotification)->GetHeader;
- SetHeader=((PHTTP_FILTER_PREPROC_HEADERS)pvNotification)->SetHeader;
- AddHeader=((PHTTP_FILTER_PREPROC_HEADERS)pvNotification)->AddHeader;
-#endif
-
-
env->l->jkLog(env, env->l, JK_LOG_DEBUG,
"HttpFilterProc started\n");
@@ -814,3 +794,60 @@
return env;
}
+
+#ifdef SF_NOTIFY_AUTH_COMPLETE
+static int get_auth_flags()
+{
+ HKEY hkey;
+ long rc;
+ int maj, sz;
+ int rv = SF_NOTIFY_PREPROC_HEADERS;
+ int use_auth = JK_FALSE;
+ /* Retreive the IIS version Major*/
+ rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+ W3SVC_REGISTRY_KEY,
+ (DWORD)0,
+ KEY_READ,
+ &hkey);
+ if(ERROR_SUCCESS != rc) {
+ return rv;
+ }
+ sz = sizeof(int);
+ rc = RegQueryValueEx(hkey,
+ "MajorVersion",
+ NULL,
+ NULL,
+ (LPBYTE)&maj,
+ &sz);
+ if (ERROR_SUCCESS != rc) {
+ CloseHandle(hkey);
+ return rv;
+ }
+ CloseHandle(hkey);
+ rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+ REGISTRY_LOCATION,
+ (DWORD)0,
+ KEY_READ,
+ &hkey);
+ if(ERROR_SUCCESS != rc) {
+ return rv;
+ }
+
+ rc = RegQueryValueEx(hkey,
+ USE_AUTH_COMP_TAG,
+ NULL,
+ NULL,
+ (LPBYTE)&use_auth,
+ &sz);
+ CloseHandle(hkey);
+ if (use_auth && maj > 4)
+ rv = SF_NOTIFY_AUTH_COMPLETE;
+
+ return rv;
+}
+#else
+static int get_auth_flags()
+{
+ return SF_NOTIFY_PREPROC_HEADERS;
+}
+#endif
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>