diff --git a/winixd/core/app.cpp b/winixd/core/app.cpp index a501009..1cb4f17 100644 --- a/winixd/core/app.cpp +++ b/winixd/core/app.cpp @@ -648,20 +648,26 @@ void App::ClearAfterRequest() void App::Start() { - while( !synchro.was_stop_signal && FCGX_Accept_r(&fcgi_request) == 0 ) + bool was_stop_signal = false; + { - Lock(); + Winix::Lock lock(synchro); + was_stop_signal = synchro.was_stop_signal; + } + + while( !was_stop_signal && FCGX_Accept_r(&fcgi_request) == 0 ) + { + Winix::Lock lock(synchro); if( synchro.was_stop_signal ) { + was_stop_signal = true; FCGX_Finish_r(&fcgi_request); } else { ProcessRequest(); } - - Unlock(); } }