Browse Source

NSM: Further clarify nsmd debugging output regarding client death.

tags/non-daw-v1.2.0
Jonathan Moore Liles 12 years ago
parent
commit
299193dc60
1 changed files with 37 additions and 27 deletions
  1. +37
    -27
      session-manager/src/nsmd.C

+ 37
- 27
session-manager/src/nsmd.C View File

@@ -302,39 +302,37 @@ handle_client_process_death ( int pid )
if ( c )
{
bool dead_because_we_said = false;
bool dead_because_we_said = ( c->pending_command() == COMMAND_KILL ||
c->pending_command() == COMMAND_QUIT );

if ( c->pending_command() == COMMAND_KILL ||
c->pending_command() == COMMAND_QUIT )
if ( dead_because_we_said )
{
dead_because_we_said = true;
MESSAGE( "Client %s terminated because we told it to.", c->name );
}
else
{
MESSAGE( "Client %s died unexpectedly.", c->name );
}


c->pending_command( COMMAND_NONE );
c->active = false;
c->pid = 0;

if ( dead_because_we_said )
if ( c->pending_command() == COMMAND_QUIT )
{
MESSAGE( "Client %s terminated because we told it to.", c->name );
if ( gui_is_active )
osc_server->send( gui_addr, "/nsm/gui/client/status", c->client_id, c->status = "removed" );

client.remove( c );

client.remove(c);
delete c;
}
else
{
MESSAGE( "Client %s died unexpectedly.", c->name );

if ( gui_is_active )
osc_server->send( gui_addr, "/nsm/gui/client/status", c->client_id, c->status = "stopped" );
}
}
c->pending_command( COMMAND_NONE );
c->active = false;
c->pid = 0;
}
}


@@ -995,6 +993,21 @@ command_all_clients_to_save ( )
}
}

void
command_client_to_stop ( Client *c )
{
MESSAGE( "Stopping client %s", c->name );

if ( c->pid > 0 )
{
c->pending_command( COMMAND_KILL );

kill( c->pid, SIGTERM );

if ( gui_is_active )
osc_server->send( gui_addr, "/nsm/gui/client/status", c->client_id, c->status = "stopped" );
}
}

void
command_client_to_quit ( Client *c )
@@ -1015,10 +1028,10 @@ command_client_to_quit ( Client *c )
if ( c->pid > 0 )
{
if ( gui_is_active )
osc_server->send( gui_addr, "/nsm/gui/client/status", c->client_id, c->status = "kill" );
osc_server->send( gui_addr, "/nsm/gui/client/status", c->client_id, c->status = "quit" );
/* should be kill? */
c->pending_command( COMMAND_KILL );
c->pending_command( COMMAND_QUIT );
// this is a dumb client... try and kill it
kill( c->pid, SIGTERM );
@@ -1897,13 +1910,10 @@ OSC_HANDLER( stop )

if ( c )
{
if ( c->pid != 0 )
{
kill( c->pid, SIGTERM );

if ( gui_is_active )
osc_server->send( gui_addr, "/reply", "Client stopped." );
}
command_client_to_stop( c );
if ( gui_is_active )
osc_server->send( gui_addr, "/reply", "Client stopped." );
}
else
{


Loading…
Cancel
Save