Module: sems
Branch: 1.4
Commit: 0ad56907a9844a9632c377715ba38a2c5ebcab6b
URL:    
http://git.sip-router.org/cgi-bin/gitweb.cgi/sems/?a=commit;h=0ad56907a9844a9632c377715ba38a2c5ebcab6b

Author: Stefan Sayer <[email protected]>
Committer: Stefan Sayer <[email protected]>
Date:   Fri Mar  2 23:46:13 2012 +0100

core: handle exceptions in out-of-dlg messages gracefully

---

 core/AmSipDispatcher.cpp |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/core/AmSipDispatcher.cpp b/core/AmSipDispatcher.cpp
index 12f5435..574ce54 100644
--- a/core/AmSipDispatcher.cpp
+++ b/core/AmSipDispatcher.cpp
@@ -107,7 +107,7 @@ void AmSipDispatcher::handleSipMsg(AmSipRequest &req)
     return;
 
   } else {
-
+    try {
       AmSessionFactory* sess_fact = 
AmPlugIn::instance()->findSessionFactory(req);
       if(!sess_fact){
 
@@ -116,5 +116,14 @@ void AmSipDispatcher::handleSipMsg(AmSipRequest &req)
       }
 
       sess_fact->onOoDRequest(req);
+    } catch (const AmSession::Exception& e) {
+      AmSipDialog::reply_error(req,e.code, e.reason);
+      return;
+    } catch (...) {
+      ERROR("Server internal Error: unhandled exception while handling 
out-of-dialog '%s'\n",
+           req.method.c_str());
+      AmSipDialog::reply_error(req,500,SIP_REPLY_SERVER_INTERNAL_ERROR);
+      return;
+    }
   }
 }

_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev

Reply via email to