From fe51e322f3cfd9c51435d3e66d5e81352dd29da5 Mon Sep 17 00:00:00 2001 From: Jonathan Moore Liles Date: Wed, 30 Sep 2015 17:37:34 -0700 Subject: [PATCH] OSC: Fix signal lookup in removal notification handler. Closes #176 --- nonlib/OSC/Endpoint.C | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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;