From 91ea36900f8363f6f94ed4c9dc7f07fbf19cad6a Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Thu, 24 May 2012 12:07:25 +0200 Subject: Fix crash on 'observe n' where n was not in the tree. Fix compile warnings. --- src/munia_proto.cc | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'src/munia_proto.cc') 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 #include +#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); -- cgit v1.2.3