diff options
author | Andreas Baumann <abaumann@yahoo.com> | 2009-03-26 10:45:44 +0100 |
---|---|---|
committer | Andreas Baumann <abaumann@yahoo.com> | 2009-03-26 10:45:44 +0100 |
commit | 49e7219385456a64f4d66bb921af149acadb5c81 (patch) | |
tree | cb5a3e34d7550013ccd078d1e2efb9adba8155a6 /tests/service | |
parent | db363643c15fcc0db5fed7734ce7d30642ff7500 (diff) | |
download | wolfbones-49e7219385456a64f4d66bb921af149acadb5c81.tar.gz wolfbones-49e7219385456a64f4d66bb921af149acadb5c81.tar.bz2 |
fixed race-condition in termination of service
Diffstat (limited to 'tests/service')
-rw-r--r-- | tests/service/testservice.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/tests/service/testservice.c b/tests/service/testservice.c index 66d20be..8159cbd 100644 --- a/tests/service/testservice.c +++ b/tests/service/testservice.c @@ -272,7 +272,7 @@ void WINAPI wolf_service_ctrl_handler( DWORD control ) { switch( control ) { case SERVICE_CONTROL_STOP: - wolf_service_report_status( SERVICE_STOP_PENDING, NO_ERROR, 0 ); + wolf_service_report_status( SERVICE_STOP_PENDING, NO_ERROR, 1000 ); SetEvent( service_stop_event ); break; @@ -282,7 +282,7 @@ void WINAPI wolf_service_ctrl_handler( DWORD control ) { } /* report current state */ - wolf_service_report_status( service_status.dwCurrentState, NO_ERROR, 0 ); + wolf_service_report_status( service_status.dwCurrentState, NO_ERROR, 1000 ); } @@ -328,10 +328,10 @@ void WINAPI wolf_service_main( DWORD argc, LPTSTR *argv ) { wolf_log( WOLF_LOG_ERR, WOLF_CATEGORY_TESTSERVICE, WOLF_MSG_TESTSERVICE_CANT_CREATE_STOP_EVENT, _( "Unable to create the stop event for service '%s': %s (%d)" ), SERVICE_NAME, errbuf, GetLastError( ) ); - wolf_service_report_status( SERVICE_STOPPED, NO_ERROR, 0 ); + wolf_service_report_status( SERVICE_STOPPED, NO_ERROR, 1000 ); } - wolf_service_report_status( SERVICE_RUNNING, NO_ERROR, 0 ); + wolf_service_report_status( SERVICE_RUNNING, NO_ERROR, 1000 ); wolf_log( WOLF_LOG_NOTICE, WOLF_CATEGORY_TESTSERVICE, WOLF_MSG_TESTSERVICE_STARTED_SERVICE, _( "Started %s service" ), SERVICE_NAME ); @@ -342,7 +342,6 @@ void WINAPI wolf_service_main( DWORD argc, LPTSTR *argv ) { switch( r ) { case WAIT_OBJECT_0: /* stop signal received */ - wolf_service_report_status( SERVICE_STOPPED, NO_ERROR, 0 ); goto SERVICE_END; case WAIT_TIMEOUT: @@ -354,7 +353,7 @@ void WINAPI wolf_service_main( DWORD argc, LPTSTR *argv ) { wolf_log( WOLF_LOG_ERR, WOLF_CATEGORY_TESTSERVICE, WOLF_MSG_TESTSERVICE_WAIT_FOR_OBJECT_FAILED, _( "Waiting for the stop event for service '%s' failed: %s (%d)" ), SERVICE_NAME, errbuf, GetLastError( ) ); - wolf_service_report_status( SERVICE_STOPPED, NO_ERROR, 0 ); + wolf_service_report_status( SERVICE_STOPPED, NO_ERROR, 1000 ); return; } } @@ -363,6 +362,8 @@ SERVICE_END: wolf_log( WOLF_LOG_NOTICE, WOLF_CATEGORY_TESTSERVICE, WOLF_MSG_TESTSERVICE_STOPPED_SERVICE, _( "Stopped %s service" ), SERVICE_NAME ); + wolf_service_report_status( SERVICE_STOPPED, NO_ERROR, 1000 ); + wolf_log_closelogtoeventlog( ); return; |