diff --git a/iis/moduleconfig.cpp b/iis/moduleconfig.cpp index a92d51ff..d3bcefc9 100644 --- a/iis/moduleconfig.cpp +++ b/iis/moduleconfig.cpp @@ -466,11 +466,8 @@ MODSECURITY_STORED_CONTEXT::~MODSECURITY_STORED_CONTEXT() MODSECURITY_STORED_CONTEXT::MODSECURITY_STORED_CONTEXT(): m_bIsEnabled ( FALSE ), m_pszPath( NULL ), - m_Config( NULL ), - m_dwLastCheck( 0 ) + m_Config( NULL ) { - m_LastChange.dwLowDateTime = 0; - m_LastChange.dwHighDateTime = 0; } DWORD diff --git a/iis/moduleconfig.h b/iis/moduleconfig.h index 83b7517d..75ee71dc 100644 --- a/iis/moduleconfig.h +++ b/iis/moduleconfig.h @@ -68,8 +68,6 @@ class MODSECURITY_STORED_CONTEXT : public IHttpStoredContext USHORT* pdwLengthDestination ); void* m_Config; - DWORD m_dwLastCheck; - FILETIME m_LastChange; private: HRESULT diff --git a/iis/mymodule.cpp b/iis/mymodule.cpp index 627c6ab7..32decf43 100644 --- a/iis/mymodule.cpp +++ b/iis/mymodule.cpp @@ -818,11 +818,7 @@ CMyHttpModule::OnBeginRequest( goto Finished; } - // every 3 seconds we check for changes in config file - // - DWORD ctime = GetTickCount(); - - if(pConfig->m_Config == NULL || (ctime - pConfig->m_dwLastCheck) > 3000) + if(pConfig->m_Config == NULL) { char *path; USHORT pathlen; @@ -835,55 +831,42 @@ CMyHttpModule::OnBeginRequest( goto Finished; } - WIN32_FILE_ATTRIBUTE_DATA fdata; - BOOL ret; + pConfig->m_Config = modsecGetDefaultConfig(); - ret = GetFileAttributesEx(path, GetFileExInfoStandard, &fdata); + PCWSTR servpath = pHttpContext->GetApplication()->GetApplicationPhysicalPath(); + char *apppath; + USHORT apppathlen; - pConfig->m_dwLastCheck = ctime; + hr = pConfig->GlobalWideCharToMultiByte((WCHAR *)servpath, wcslen(servpath), &apppath, &apppathlen); - if(pConfig->m_Config == NULL || (ret != 0 && (pConfig->m_LastChange.dwLowDateTime != fdata.ftLastWriteTime.dwLowDateTime || - pConfig->m_LastChange.dwHighDateTime != fdata.ftLastWriteTime.dwHighDateTime))) + if ( FAILED( hr ) ) { - pConfig->m_LastChange.dwLowDateTime = fdata.ftLastWriteTime.dwLowDateTime; - pConfig->m_LastChange.dwHighDateTime = fdata.ftLastWriteTime.dwHighDateTime; + delete path; + hr = E_UNEXPECTED; + goto Finished; + } - pConfig->m_Config = modsecGetDefaultConfig(); + if(path[0] != 0) + { + const char * err = modsecProcessConfig((directory_config *)pConfig->m_Config, path, apppath); - PCWSTR servpath = pHttpContext->GetApplication()->GetApplicationPhysicalPath(); - char *apppath; - USHORT apppathlen; - - hr = pConfig->GlobalWideCharToMultiByte((WCHAR *)servpath, wcslen(servpath), &apppath, &apppathlen); - - if ( FAILED( hr ) ) + if(err != NULL) { + WriteEventViewerLog(err, EVENTLOG_ERROR_TYPE); + delete apppath; delete path; - hr = E_UNEXPECTED; goto Finished; } - if(path[0] != 0) + modsecReportRemoteLoadedRules(); + if (this->status_call_already_sent == false) { - const char * err = modsecProcessConfig((directory_config *)pConfig->m_Config, path, apppath); - - if(err != NULL) - { - WriteEventViewerLog(err, EVENTLOG_ERROR_TYPE); - delete apppath; - delete path; - goto Finished; - } - - modsecReportRemoteLoadedRules(); - if (this->status_call_already_sent == false) - { - this->status_call_already_sent = true; - modsecStatusEngineCall(); - } + this->status_call_already_sent = true; + modsecStatusEngineCall(); } - delete apppath; } + + delete apppath; delete path; } @@ -1140,7 +1123,9 @@ CMyHttpModule::OnBeginRequest( #endif c->remote_host = NULL; + LeaveCriticalSection(&m_csLock); int status = modsecProcessRequest(r); + EnterCriticalSection(&m_csLock); if(status != DECLINED) {