mturk 2002/07/04 00:23:55 Modified: jk/native2/server/isapi jk_isapi_plugin.c Log: Set the starter thread extisting through entire extension life cycle. The starter thread at init sleeps for 1 s, causing not blocking of the main IIS thread that calls LoadLibrary for our extension. Revision Changes Path 1.32 +26 -6 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.31 retrieving revision 1.32 diff -u -r1.31 -r1.32 --- jk_isapi_plugin.c 1 Jul 2002 16:53:55 -0000 1.31 +++ jk_isapi_plugin.c 4 Jul 2002 07:23:55 -0000 1.32 @@ -520,8 +520,13 @@ return TerminateFilter(dwFlags); } +HANDLE jk2_starter_event; + BOOL WINAPI TerminateFilter(DWORD dwFlags) { + /* detatch the starter thread */ + SetEvent(jk2_starter_event); + if (is_inited) { is_inited = JK_FALSE; if (workerEnv) { @@ -540,11 +545,14 @@ DWORD WINAPI jk2_isapi_starter( LPVOID lpParam ) { + Sleep(1000); + initialize_extension(); if (is_inited) { if (init_jk(NULL)) is_mapread = JK_TRUE; } + WaitForSingleObject(jk2_starter_event, INFINITE); return 0; } @@ -558,21 +566,33 @@ char dir[_MAX_DIR]; char fname[_MAX_FNAME]; DWORD dwThreadId; + DWORD dwRes; + int tcount = 0; switch (ulReason) { case DLL_PROCESS_DETACH: - __try { - if (jk2_starter_thread) - CloseHandle(jk2_starter_thread); - TerminateFilter(HSE_TERM_MUST_UNLOAD); - } __except(1) { + while (!GetExitCodeThread(jk2_starter_thread, &dwRes)) { + if (dwRes == STILL_ACTIVE) { + ++tcount; + if (tcount > 30) { + TerminateThread(jk2_starter_thread, -1); + break; + } + Sleep(100); + } } + CloseHandle(jk2_starter_thread); 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_event = CreateEvent(NULL, + FALSE, + FALSE, + NULL); jk2_starter_thread = CreateThread( NULL, 0,
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>