@@ -378,14 +378,15 @@ bool ProtocolManager::sendEvent(Event* event)
378378 bool can_be_deleted = false ;
379379 if (event->getType () == EVENT_TYPE_MESSAGE)
380380 {
381- OneProtocolType &opt = m_all_protocols[event->data ().getProtocolType ()];
381+ OneProtocolType &opt =
382+ m_all_protocols.at (event->data ().getProtocolType ());
382383 can_be_deleted = opt.notifyEvent (event);
383384 }
384385 else // connect or disconnect event --> test all protocols
385386 {
386387 for (unsigned int i = 0 ; i < m_all_protocols.size (); i++)
387388 {
388- can_be_deleted |= m_all_protocols[i] .notifyEvent (event);
389+ can_be_deleted |= m_all_protocols. at (i) .notifyEvent (event);
389390 }
390391 }
391392 return can_be_deleted || StkTime::getTimeSinceEpoch () - event->getArrivalTime ()
@@ -432,7 +433,16 @@ void ProtocolManager::update(int ticks)
432433 while (i != m_sync_events_to_process.getData ().end ())
433434 {
434435 m_sync_events_to_process.unlock ();
435- bool can_be_deleted = sendEvent (*i);
436+ bool can_be_deleted = true ;
437+ try
438+ {
439+ can_be_deleted = sendEvent (*i);
440+ }
441+ catch (std::exception& e)
442+ {
443+ Log::error (" ProtocolManager" , " Synchronous event error: %s" ,
444+ e.what ());
445+ }
436446 m_sync_events_to_process.lock ();
437447 if (can_be_deleted)
438448 {
@@ -478,7 +488,16 @@ void ProtocolManager::asynchronousUpdate()
478488 m_async_events_to_process.unlock ();
479489
480490 m_all_protocols[(*i)->getType ()].lock ();
481- bool result = sendEvent (*i);
491+ bool result = true ;
492+ try
493+ {
494+ result = sendEvent (*i);
495+ }
496+ catch (std::exception& e)
497+ {
498+ Log::error (" ProtocolManager" , " Asynchronous event error: %s" ,
499+ e.what ());
500+ }
482501 m_all_protocols[(*i)->getType ()].unlock ();
483502
484503 m_async_events_to_process.lock ();
0 commit comments