From: Son Hyunjun Date: Thu, 5 Apr 2012 13:31:21 +0000 (+0900) Subject: [Title] enhance skin server hearbeat fail policy : restart skin process. X-Git-Tag: TizenStudio_2.0_p2.3~1547 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7bc68e19e51349c28f02672fff6d43e07557d429;p=sdk%2Femulator%2Fqemu.git [Title] enhance skin server hearbeat fail policy : restart skin process. [Type] Enhancement [Module] Skin [Priority] Major [CQ#] [Redmine#] [Problem] [Cause] [Solution] Change-Id: I403196d32bd605d96fb0040b25df905e4eaceed4 --- diff --git a/tizen/src/skin/maruskin_server.c b/tizen/src/skin/maruskin_server.c index 69faac9..9840ef9 100644 --- a/tizen/src/skin/maruskin_server.c +++ b/tizen/src/skin/maruskin_server.c @@ -104,6 +104,7 @@ static int stop_server = 0; static int is_sensord_initialized = 0; static int ready_server = 0; static int ignore_heartbeat = 0; +static int is_force_close_client = 0; static int is_started_heartbeat = 0; static int stop_heartbeat = 0; @@ -158,7 +159,6 @@ void shutdown_skin_server( void ) { INFO( "send shutdown to skin.\n" ); if ( 0 > send_skin_header_only( client_sock, SEND_SHUTDOWN ) ) { ERR( "fail to send SEND_SHUTDOWN to skin.\n" ); - stop_server = 1; // force close #ifdef _WIN32 closesocket( client_sock ); @@ -330,6 +330,7 @@ static void* run_skin_server( void* args ) { if ( 0 > ( server_sock = socket( PF_INET, SOCK_STREAM, IPPROTO_TCP ) ) ) { ERR( "create listen socket error\n" ); perror( "create listen socket error : " ); + shutdown_qmu = 1; goto cleanup; } @@ -419,8 +420,14 @@ static void* run_skin_server( void* args ) { int read_cnt = recv_n( client_sock, recvbuf, RECV_HEADER_SIZE ); if ( 0 > read_cnt ) { - ERR( "skin_server read error:%d\n", read_cnt ); - perror( "skin_server read error : " ); + + if( is_force_close_client ) { + WARN( "force close client socket.\n" ); + is_force_close_client = 0; + }else { + ERR( "skin_server read error:%d\n", read_cnt ); + perror( "skin_server read error : " ); + } break; } else { @@ -908,7 +915,7 @@ static void* do_heart_beat( void* args ) { int send_fail_count = 0; int restart_client_count = 0; int need_restart_skin_client = 0; - int shutdown_qmu = 0; + int shutdown = 0; while ( 1 ) { @@ -959,7 +966,7 @@ static void* do_heart_beat( void* args ) { if( need_restart_skin_client ) { if ( RESTART_CLIENT_MAX_COUNT <= restart_client_count ) { - shutdown_qmu = 1; + shutdown = 1; break; } else { @@ -972,6 +979,7 @@ static void* do_heart_beat( void* args ) { WARN( "!!! restart skin client process !!!\n" ); WARN( "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n" ); + is_force_close_client = 1; shutdown_skin_server(); start_skin_client( skin_argc, skin_argv ); @@ -981,11 +989,15 @@ static void* do_heart_beat( void* args ) { } - if ( shutdown_qmu ) { + if ( shutdown ) { INFO( "[HB] shutdown skin_server by heartbeat thread.\n" ); + + is_force_close_client = 1; shutdown_skin_server(); + stop_server = 1; + if ( server_sock ) { #ifdef _WIN32 closesocket( server_sock );