summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlexander Traud <pabstraud@compuserve.com>2017-11-26 10:49:16 +0100
committerAlexander Traud <pabstraud@compuserve.com>2017-11-26 10:49:16 +0100
commit1b25dde15ce5c3ff21c8bf56adb0028786036632 (patch)
tree58c65370768cc2cf0fd058b55f8dbba31799e19f /src
parentff62a107f10fa586e25a46aef4fe06dea18b6c10 (diff)
downloadtwinkle-1b25dde15ce5c3ff21c8bf56adb0028786036632.tar
twinkle-1b25dde15ce5c3ff21c8bf56adb0028786036632.tar.gz
twinkle-1b25dde15ce5c3ff21c8bf56adb0028786036632.tar.lz
twinkle-1b25dde15ce5c3ff21c8bf56adb0028786036632.tar.xz
twinkle-1b25dde15ce5c3ff21c8bf56adb0028786036632.zip
User-Determined User Busy (UDUB)
When you reject a call, either A. the forwarding rule for User-Busy kicks in, like an answering machine or another extension (of a personal secretary or a deputy). Or B. the caller hears normal ringing first, and then the busy tone. To allow case A, a SIP user-agent client (UAC) has to return the status User-Busy (486). The same should happen in case B, because the caller shall hear a busy tone on rejection. 486 is mandated for SIP clients in mobile phones by the GSMA. Furthermore, other SIP-client creators give a 486 in that case as well; I tested Acrobits, Atlinks, Counterpath, Gigaset, Grandstream, RTX, Snom, Yealink, and Vtech. Before this change, twinkle rejected a call with the SIP-Status 603. The class 6xx requires that *all* other registered phones stop to ring. Furthermore, some SIP user-agent servers (UAS) follow RFC 3398 and map a status 603 to the cause-code 21, which is mapped back to status 403 (Forbidden). Cisco and Digium Asterisk do this. For example in Asterisk, after you rejected the call in twinkle, the caller did not get 603 or 486, but 403. However, in case of 403, the original caller is allowed to re-try the call setup. For example, I have a Nokia Symbian/S60 based phone which tries via IPv4 first, then after it received the 403, that phone tries again via IPv6. Consequently, a user of twinkle had to reject the call twice when 603 was returned.
Diffstat (limited to 'src')
-rw-r--r--src/line.cpp2
-rw-r--r--src/userintf.cpp2
2 files changed, 2 insertions, 2 deletions
diff --git a/src/line.cpp b/src/line.cpp
index 1c1de17..a5f1b31 100644
--- a/src/line.cpp
+++ b/src/line.cpp
@@ -700,7 +700,7 @@ void t_line::reject(void) {
stop_timer(LTMR_NO_ANSWER);
try {
- active_dialog->reject(R_603_DECLINE);
+ active_dialog->reject(R_486_BUSY_HERE);
}
catch (t_exception x) {
// TODO: there is no call to reject
diff --git a/src/userintf.cpp b/src/userintf.cpp
index 1fec547..f75a140 100644
--- a/src/userintf.cpp
+++ b/src/userintf.cpp
@@ -1565,7 +1565,7 @@ void t_userintf::do_help(const list<t_command_arg> &al) {
cout << "Usage:\n";
cout << "\treject\n";
cout << "Description:\n";
- cout << "\tReject an incoming call. A 603 Decline response\n";
+ cout << "\tReject an incoming call. A 486 Busy Here response\n";
cout << "\twill be sent.\n";
cout << endl;