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. +