summaryrefslogtreecommitdiff
path: root/src/munia_proto.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/munia_proto.cc')
-rw-r--r--src/munia_proto.cc22
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);