mturk 2002/06/29 07:17:27 Modified: jk/native2/server/isapi jk_isapi_plugin.c Log: Create the thread when DllMain is called with the DLL_PROCCESS_ATTACH param that starts the jk2 initalization. That enables the inprocess TC to be started, cause it disables the thread locking of DllMain itself. Revision Changes Path 1.30 +34 -8 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.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- jk_isapi_plugin.c 9 Jun 2002 03:10:43 -0000 1.29 +++ jk_isapi_plugin.c 29 Jun 2002 14:17:27 -0000 1.30 @@ -533,6 +533,19 @@ } +HANDLE jk2_starter_thread = NULL; + +DWORD WINAPI jk2_isapi_starter( LPVOID lpParam ) +{ + initialize_extension(); + if (is_inited) { + if (init_jk(NULL)) + is_mapread = JK_TRUE; + } + return 0; +} + + BOOL WINAPI DllMain(HINSTANCE hInst, // Instance Handle of the DLL ULONG ulReason, // Reason why NT called this DLL LPVOID lpReserved) // Reserved parameter for future use @@ -541,24 +554,37 @@ char drive[_MAX_DRIVE]; char dir[_MAX_DIR]; char fname[_MAX_FNAME]; + DWORD dwThreadId; switch (ulReason) { case DLL_PROCESS_DETACH: __try { + if (jk2_starter_thread) + CloseHandle(jk2_starter_thread); TerminateFilter(HSE_TERM_MUST_UNLOAD); } __except(1) { } break; + case DLL_PROCESS_ATTACH: + if (GetModuleFileName( hInst, file_name, sizeof(file_name))) { + _splitpath( file_name, drive, dir, fname, NULL ); + _makepath( ini_file_name, drive, dir, fname, ".properties" ); + + jk2_starter_thread = CreateThread( NULL, + 0, + jk2_isapi_starter, + NULL, + 0, + &dwThreadId); + + } else { + fReturn = JK_FALSE; + } + break; default: break; } - if (GetModuleFileName( hInst, file_name, sizeof(file_name))) { - _splitpath( file_name, drive, dir, fname, NULL ); - _makepath( ini_file_name, drive, dir, fname, ".properties" ); - } else { - fReturn = JK_FALSE; - } return fReturn; } @@ -575,7 +601,7 @@ /* Logging the initialization type: registry or properties file in virtual dir */ if(strlen(worker_file)){ - rc=(JK_OK != workerEnv->config->setPropertyString( env, workerEnv->config, "config.file", worker_file )); + rc=(JK_OK == workerEnv->config->setPropertyString( env, workerEnv->config, "config.file", worker_file )); } workerEnv->init(env,workerEnv); env->l->jkLog(env, env->l, JK_LOG_INFO, "Set serverRoot %s\n", server_root);
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>