From 585f886f2104615be3bd51f264c13e15497e7aa6 Mon Sep 17 00:00:00 2001 From: Stefan Sayer Date: Fri, 22 May 2009 17:46:09 +0000 Subject: [PATCH] dlg.bye() action git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@1406 8eb893ce-cfd4-0310-b710-fb5ebe64c474 --- apps/dsm/mods/mod_dlg/ModDlg.cpp | 12 ++++++++++++ apps/dsm/mods/mod_dlg/ModDlg.h | 1 + apps/dsm/mods/mod_dlg/Readme.mod_dlg.txt | 3 +++ 3 files changed, 16 insertions(+) diff --git a/apps/dsm/mods/mod_dlg/ModDlg.cpp b/apps/dsm/mods/mod_dlg/ModDlg.cpp index eb142564..bd15f478 100644 --- a/apps/dsm/mods/mod_dlg/ModDlg.cpp +++ b/apps/dsm/mods/mod_dlg/ModDlg.cpp @@ -31,6 +31,7 @@ #include "DSMSession.h" #include "AmSession.h" #include +#include "AmSipHeaders.h" SC_EXPORT(DLGModule); @@ -66,6 +67,7 @@ DSMAction* DLGModule::getAction(const string& from_str) { DEF_CMD("dlg.reply", DLGReplyAction); DEF_CMD("dlg.acceptInvite", DLGAcceptInviteAction); + DEF_CMD("dlg.bye", DLGByeAction); return NULL; } @@ -162,3 +164,13 @@ bool DLGAcceptInviteAction::execute(AmSession* sess, return false; } + +EXEC_ACTION_START(DLGByeAction) { + string hdrs = resolveVars(arg, sess, sc_sess, event_params); + + if (sess->dlg.bye(hdrs)) { + sc_sess->SET_ERRNO(DSM_ERRNO_UNKNOWN_ARG); + } else { + sc_sess->SET_ERRNO(DSM_ERRNO_OK); + } +} EXEC_ACTION_END; diff --git a/apps/dsm/mods/mod_dlg/ModDlg.h b/apps/dsm/mods/mod_dlg/ModDlg.h index d20b6d63..cd89e1c8 100644 --- a/apps/dsm/mods/mod_dlg/ModDlg.h +++ b/apps/dsm/mods/mod_dlg/ModDlg.h @@ -43,4 +43,5 @@ class DLGModule DEF_ACTION_2P(DLGReplyAction); DEF_ACTION_2P(DLGAcceptInviteAction); +DEF_ACTION_1P(DLGByeAction); #endif diff --git a/apps/dsm/mods/mod_dlg/Readme.mod_dlg.txt b/apps/dsm/mods/mod_dlg/Readme.mod_dlg.txt index b523b2cb..6cfd4778 100644 --- a/apps/dsm/mods/mod_dlg/Readme.mod_dlg.txt +++ b/apps/dsm/mods/mod_dlg/Readme.mod_dlg.txt @@ -11,3 +11,6 @@ dlg.acceptInvite([code, reason]); accept audio stream from last_req (INVITE), and reply with 200 OK (default) or code, reason +dlg.bye([headers]) + send BYE. useful for example for continuing processing after call has ended. +