diff --git a/nonlib/OSC/Endpoint.C b/nonlib/OSC/Endpoint.C index e198c18..26db5bb 100644 --- a/nonlib/OSC/Endpoint.C +++ b/nonlib/OSC/Endpoint.C @@ -435,8 +435,16 @@ namespace OSC const char *name = &argv[0]->s; Endpoint *ep = (Endpoint*)user_data; + + Peer *p = ep->find_peer_by_address( lo_message_get_source( msg ) ); - Signal *o = ep->find_signal_by_path( name ); + if ( ! p ) + { + WARNING( "Got signal removed notification from unknown peer." ); + return 0; + } + + Signal *o = ep->find_peer_signal_by_path( p, name ); if ( ! o ) { @@ -450,7 +458,7 @@ namespace OSC if ( ep->_peer_signal_notification_callback ) ep->_peer_signal_notification_callback( o, Signal::Removed, ep->_peer_signal_notification_userdata ); - ep->_signals.remove( o ); + p->_signals.remove(o); delete o;