Browse Source

fix operation reply to last treated client instead to reply to sender

pull/21/head
houston 5 years ago
parent
commit
cf05686219
1 changed files with 51 additions and 38 deletions
  1. +51
    -38
      src/nsmd.cpp

+ 51
- 38
src/nsmd.cpp View File

@@ -795,9 +795,7 @@ OSC_HANDLER( add )
} }
else else
{ {
osc_server->send( lo_message_get_source( msg ), "/reply", path,
ERR_OK,
"Launched." );
osc_server->send( lo_message_get_source( msg ), "/reply", path, "Launched." );
} }


return 0; return 0;
@@ -1353,9 +1351,12 @@ load_session_file ( const char * path )


OSC_HANDLER( save ) OSC_HANDLER( save )
{ {
lo_address sender_addr;
sender_addr = lo_address_new_from_url( lo_address_get_url( lo_message_get_source( msg ) ));

if ( pending_operation != COMMAND_NONE ) if ( pending_operation != COMMAND_NONE )
{ {
osc_server->send( lo_message_get_source( msg ), "/error", path,
osc_server->send( sender_addr, "/error", path,
ERR_OPERATION_PENDING, ERR_OPERATION_PENDING,
"An operation pending." ); "An operation pending." );
return 0; return 0;
@@ -1363,7 +1364,7 @@ OSC_HANDLER( save )


if ( ! session_path ) if ( ! session_path )
{ {
osc_server->send( lo_message_get_source( msg ), "/error", path,
osc_server->send( sender_addr, "/error", path,
ERR_NO_SESSION_OPEN, ERR_NO_SESSION_OPEN,
"No session to save."); "No session to save.");


@@ -1374,7 +1375,7 @@ OSC_HANDLER( save )


MESSAGE( "Done." ); MESSAGE( "Done." );


osc_server->send( lo_message_get_source( msg ), "/reply", path, "Saved." );
osc_server->send( sender_addr, "/reply", path, "Saved." );


done: done:


@@ -1385,9 +1386,12 @@ done:


OSC_HANDLER( duplicate ) OSC_HANDLER( duplicate )
{ {
lo_address sender_addr;
sender_addr = lo_address_new_from_url( lo_address_get_url( lo_message_get_source( msg ) ));

if ( pending_operation != COMMAND_NONE ) if ( pending_operation != COMMAND_NONE )
{ {
osc_server->send( lo_message_get_source( msg ), "/error", path,
osc_server->send( sender_addr, "/error", path,
ERR_OPERATION_PENDING, ERR_OPERATION_PENDING,
"An operation pending." ); "An operation pending." );
return 0; return 0;
@@ -1397,7 +1401,7 @@ OSC_HANDLER( duplicate )


if ( ! session_path ) if ( ! session_path )
{ {
osc_server->send( lo_message_get_source( msg ), "/error", path,
osc_server->send( sender_addr, "/error", path,
ERR_NO_SESSION_OPEN, ERR_NO_SESSION_OPEN,
"No session to duplicate."); "No session to duplicate.");
goto done; goto done;
@@ -1405,7 +1409,7 @@ OSC_HANDLER( duplicate )


if ( ! path_is_valid( &argv[0]->s ) ) if ( ! path_is_valid( &argv[0]->s ) )
{ {
osc_server->send( lo_message_get_source( msg ), "/error", path,
osc_server->send( sender_addr, "/error", path,
ERR_CREATE_FAILED, ERR_CREATE_FAILED,
"Invalid session name." ); "Invalid session name." );


@@ -1416,7 +1420,7 @@ OSC_HANDLER( duplicate )


if ( clients_have_errors() ) if ( clients_have_errors() )
{ {
osc_server->send( lo_message_get_source( msg ), "/error", path,
osc_server->send( sender_addr, "/error", path,
ERR_GENERAL_ERROR, ERR_GENERAL_ERROR,
"Some clients could not save" ); "Some clients could not save" );


@@ -1446,13 +1450,13 @@ OSC_HANDLER( duplicate )
if ( !load_session_file( spath ) ) if ( !load_session_file( spath ) )
{ {
MESSAGE( "Loaded" ); MESSAGE( "Loaded" );
osc_server->send( lo_message_get_source( msg ), "/reply", path,
osc_server->send( sender_addr, "/reply", path,
"Loaded." ); "Loaded." );
} }
else else
{ {
MESSAGE( "Failed" ); MESSAGE( "Failed" );
osc_server->send( lo_message_get_source( msg ), "/error", path,
osc_server->send( sender_addr, "/error", path,
ERR_NO_SUCH_FILE, ERR_NO_SUCH_FILE,
"No such file." ); "No such file." );
free(spath); free(spath);
@@ -1463,7 +1467,7 @@ OSC_HANDLER( duplicate )


MESSAGE( "Done" ); MESSAGE( "Done" );


osc_server->send( lo_message_get_source( msg ), "/reply", path, "Duplicated." );
osc_server->send( sender_addr, "/reply", path, "Duplicated." );


done: done:


@@ -1474,9 +1478,12 @@ done:


OSC_HANDLER( new ) OSC_HANDLER( new )
{ {
lo_address sender_addr;
sender_addr = lo_address_new_from_url( lo_address_get_url( lo_message_get_source( msg ) ));

if ( pending_operation != COMMAND_NONE ) if ( pending_operation != COMMAND_NONE )
{ {
osc_server->send( lo_message_get_source( msg ), "/error", path,
osc_server->send( sender_addr, "/error", path,
ERR_OPERATION_PENDING, ERR_OPERATION_PENDING,
"An operation pending." ); "An operation pending." );
return 0; return 0;
@@ -1486,7 +1493,7 @@ OSC_HANDLER( new )


if ( ! path_is_valid( &argv[0]->s ) ) if ( ! path_is_valid( &argv[0]->s ) )
{ {
osc_server->send( lo_message_get_source( msg ), "/error", path,
osc_server->send( sender_addr, "/error", path,
ERR_CREATE_FAILED, ERR_CREATE_FAILED,
"Invalid session name." ); "Invalid session name." );


@@ -1509,7 +1516,7 @@ OSC_HANDLER( new )


if ( mkpath( spath, true ) ) if ( mkpath( spath, true ) )
{ {
osc_server->send( lo_message_get_source( msg ), "/error", path,
osc_server->send( sender_addr, "/error", path,
ERR_CREATE_FAILED, ERR_CREATE_FAILED,
"Could not create the session directory" ); "Could not create the session directory" );


@@ -1524,7 +1531,7 @@ OSC_HANDLER( new )


set_name( session_path ); set_name( session_path );


osc_server->send( lo_message_get_source( msg ), "/reply", path, "Created." );
osc_server->send( sender_addr, "/reply", path, "Created." );


if ( gui_is_active ) if ( gui_is_active )
{ {
@@ -1537,8 +1544,7 @@ OSC_HANDLER( new )


free( spath ); free( spath );


osc_server->send( lo_message_get_source( msg ), "/reply", path,
"Session created" );
osc_server->send( sender_addr, "/reply", path, "Session created" );


pending_operation = COMMAND_NONE; pending_operation = COMMAND_NONE;


@@ -1591,11 +1597,14 @@ OSC_HANDLER( list )


OSC_HANDLER( open ) OSC_HANDLER( open )
{ {
lo_address sender_addr;
sender_addr = lo_address_new_from_url( lo_address_get_url( lo_message_get_source( msg ) ));

GUIMSG( "Opening session %s", &argv[0]->s ); GUIMSG( "Opening session %s", &argv[0]->s );


if ( pending_operation != COMMAND_NONE ) if ( pending_operation != COMMAND_NONE )
{ {
osc_server->send( lo_message_get_source( msg ), "/error", path,
osc_server->send( sender_addr, "/error", path,
ERR_OPERATION_PENDING, ERR_OPERATION_PENDING,
"An operation pending." ); "An operation pending." );
return 0; return 0;
@@ -1603,7 +1612,6 @@ OSC_HANDLER( open )


pending_operation = COMMAND_OPEN; pending_operation = COMMAND_OPEN;



if ( session_path ) if ( session_path )
{ {


@@ -1611,7 +1619,7 @@ OSC_HANDLER( open )


if ( clients_have_errors() ) if ( clients_have_errors() )
{ {
osc_server->send( lo_message_get_source( msg ), "/error", path,
osc_server->send( sender_addr, "/error", path,
ERR_GENERAL_ERROR, ERR_GENERAL_ERROR,
"Some clients could not save" ); "Some clients could not save" );


@@ -1633,7 +1641,7 @@ OSC_HANDLER( open )
if ( ! err ) if ( ! err )
{ {
MESSAGE( "Loaded" ); MESSAGE( "Loaded" );
osc_server->send( lo_message_get_source( msg ), "/reply", path,
osc_server->send( sender_addr, "/reply", path,
"Loaded." ); "Loaded." );
} }
else else
@@ -1656,7 +1664,7 @@ OSC_HANDLER( open )
} }




osc_server->send( lo_message_get_source( msg ), "/error", path,
osc_server->send( sender_addr, "/error", path,
err, err,
m ); m );
} }
@@ -1682,20 +1690,23 @@ OSC_HANDLER( quit )


OSC_HANDLER( abort ) OSC_HANDLER( abort )
{ {
if ( pending_operation != COMMAND_NONE )
{
osc_server->send( lo_message_get_source( msg ), "/error", path,
ERR_OPERATION_PENDING,
"An operation pending." );
return 0;
}
lo_address sender_addr;
sender_addr = lo_address_new_from_url( lo_address_get_url( lo_message_get_source( msg ) ));


pending_operation = COMMAND_CLOSE;
if ( pending_operation != COMMAND_NONE )
{
osc_server->send( sender_addr, "/error", path,
ERR_OPERATION_PENDING,
"An operation pending." );
return 0;
}

pending_operation = COMMAND_CLOSE;




if ( ! session_path ) if ( ! session_path )
{ {
osc_server->send( lo_message_get_source( msg ), "/error", path,
osc_server->send( sender_addr, "/error", path,
ERR_NO_SESSION_OPEN, ERR_NO_SESSION_OPEN,
"No session to abort." ); "No session to abort." );


@@ -1706,7 +1717,7 @@ OSC_HANDLER( abort )


close_session(); close_session();


osc_server->send( lo_message_get_source( msg ), "/reply", path,
osc_server->send( sender_addr, "/reply", path,
"Aborted." ); "Aborted." );


MESSAGE( "Done" ); MESSAGE( "Done" );
@@ -1720,9 +1731,12 @@ done:


OSC_HANDLER( close ) OSC_HANDLER( close )
{ {
lo_address sender_addr;
sender_addr = lo_address_new_from_url( lo_address_get_url( lo_message_get_source( msg ) ));

if ( pending_operation != COMMAND_NONE ) if ( pending_operation != COMMAND_NONE )
{ {
osc_server->send( lo_message_get_source( msg ), "/error", path,
osc_server->send( sender_addr, "/error", path,
ERR_OPERATION_PENDING, ERR_OPERATION_PENDING,
"An operation pending." ); "An operation pending." );
return 0; return 0;
@@ -1732,7 +1746,7 @@ OSC_HANDLER( close )


if ( ! session_path ) if ( ! session_path )
{ {
osc_server->send( lo_message_get_source( msg ), "/error", path,
osc_server->send( sender_addr, "/error", path,
ERR_NO_SESSION_OPEN, ERR_NO_SESSION_OPEN,
"No session to close." ); "No session to close." );


@@ -1744,8 +1758,7 @@ OSC_HANDLER( close )


close_session(); close_session();


osc_server->send( lo_message_get_source( msg ), "/reply", path,
"Closed." );
osc_server->send( sender_addr, "/reply", path, "Closed." );


MESSAGE( "Done" ); MESSAGE( "Done" );




Loading…
Cancel
Save