summaryrefslogtreecommitdiff
path: root/tests/service
diff options
context:
space:
mode:
authorAndreas Baumann <abaumann@yahoo.com>2009-03-26 10:45:44 +0100
committerAndreas Baumann <abaumann@yahoo.com>2009-03-26 10:45:44 +0100
commit49e7219385456a64f4d66bb921af149acadb5c81 (patch)
treecb5a3e34d7550013ccd078d1e2efb9adba8155a6 /tests/service
parentdb363643c15fcc0db5fed7734ce7d30642ff7500 (diff)
downloadwolfbones-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.c13
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;