diff options
Diffstat (limited to 'src/munia_proto.cc')
-rw-r--r-- | src/munia_proto.cc | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/munia_proto.cc b/src/munia_proto.cc index 6f42c28..61017b0 100644 --- a/src/munia_proto.cc +++ b/src/munia_proto.cc @@ -33,6 +33,8 @@ #include <queue> #include <map> +#include "debug.h" + #include "task.h" #include "messageparser.h" #include "messagehandler.h" @@ -198,8 +200,14 @@ int callback_lws_task(struct libwebsocket_context * context, while(omi != omsgs.end()) { if(omi->cmd == cmd::observe) { - - TaskIdList ids = task_manager.subTasks(omi->observe.id); + TaskIdList ids; + try { + ids = task_manager.subTasks(omi->observe.id); + } catch(...) { + DEBUG(proto, "No such node %d\n", omi->observe.id); + omi++; + continue; + } TaskIdList::iterator id = ids.begin(); while(id != ids.end()) { task_t task = task_manager.task(*id); @@ -216,8 +224,14 @@ int callback_lws_task(struct libwebsocket_context * context, } } else if(omi->cmd == cmd::unobserve) { - - TaskIdList ids = task_manager.subTasks(omi->observe.id); + TaskIdList ids; + try { + ids = task_manager.subTasks(omi->observe.id); + } catch(...) { + DEBUG(proto, "No such node %d\n", omi->observe.id); + omi++; + continue; + } TaskIdList::reverse_iterator id = ids.rbegin(); while(id != ids.rend()) { task_t task = task_manager.task(*id); |