summaryrefslogtreecommitdiffstats
path: root/apppbx.cpp
diff options
context:
space:
mode:
authorroot2009-09-06 15:36:36 +0200
committerroot2009-09-06 15:36:36 +0200
commit2188efe2cc9dfb473bf41540960382d7c43b892e (patch)
treea1b5cf3f0146ed9eff7fddecf7a119bc88582059 /apppbx.cpp
parentMinor fix: chan_lcr will now go into RING state if remote channel is RINGING. (diff)
downloadlcr-2188efe2cc9dfb473bf41540960382d7c43b892e.tar.gz
lcr-2188efe2cc9dfb473bf41540960382d7c43b892e.tar.xz
lcr-2188efe2cc9dfb473bf41540960382d7c43b892e.zip
New Version 1.6
Fix of conference release bug. Calls can now be forwarded during alerting phase via "*3#". modified: README modified: apppbx.cpp modified: configure modified: configure.ac new file: default/openbsc.cfg modified: dss1.cpp modified: gsm.cpp modified: joinpbx.cpp
Diffstat (limited to 'apppbx.cpp')
-rw-r--r--apppbx.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/apppbx.cpp b/apppbx.cpp
index fc50737..2a91364 100644
--- a/apppbx.cpp
+++ b/apppbx.cpp
@@ -1565,7 +1565,7 @@ void EndpointAppPBX::port_information(struct port_list *portlist, int message_ty
}
/* keypad when connected */
- if (e_state == EPOINT_STATE_CONNECT) {
+ if (e_state == EPOINT_STATE_CONNECT || e_state == EPOINT_STATE_IN_ALERTING) {
if (e_ext.keypad || e_enablekeypad) {
PDEBUG(DEBUG_EPOINT, "EPOINT(%d) keypad information received during connect: %s.\n", ea_endpoint->ep_serial, param->information.id);
/* processing keypad function */
@@ -1639,7 +1639,7 @@ NOTE: vbox is now handled due to overlap state
#endif
/* check for *X# sequence */
- if (e_state == EPOINT_STATE_CONNECT) {
+ if (e_state == EPOINT_STATE_CONNECT || e_state == EPOINT_STATE_IN_ALERTING) {
if (e_dtmf_time+3 < now) {
/* the last digit was too far in the past to be a sequence */
if (param->dtmf == '*')
@@ -2758,6 +2758,9 @@ void EndpointAppPBX::join_alerting(struct port_list *portlist, int message_type,
set_tone(portlist, "ringpbx");
else
set_tone(portlist, "ringing");
+
+ if (e_ext.number[0])
+ e_dtmf = 1; /* allow dtmf */
}
/* join MESSAGE_CONNECT */
@@ -3514,7 +3517,7 @@ void EndpointAppPBX::join_join(void)
class Port *our_port, *other_port;
class Pdss1 *our_pdss1, *other_pdss1;
- /* are we a candidate to join a join */
+ /* are we a candidate to join a join? */
our_join = find_join_id(ea_endpoint->ep_join_id);
if (!our_join) {
PDEBUG(DEBUG_EPOINT, "EPOINT(%d) cannot join: our join doesn't exist anymore.\n", ea_endpoint->ep_serial);
@@ -3575,14 +3578,14 @@ void EndpointAppPBX::join_join(void)
other_eapp = other_eapp->next;
}
if (!other_eapp) {
- PDEBUG(DEBUG_EPOINT, "EPOINT(%d) cannot join: no other endpoint on same isdn interface with port on hold.\n", ea_endpoint->ep_serial);
+ PDEBUG(DEBUG_EPOINT, "EPOINT(%d) cannot join: no other endpoint on same isdn terminal.\n", ea_endpoint->ep_serial);
return;
}
- PDEBUG(DEBUG_EPOINT, "EPOINT(%d) port on hold found.\n", ea_endpoint->ep_serial);
+ PDEBUG(DEBUG_EPOINT, "EPOINT(%d) port with same terminal found.\n", ea_endpoint->ep_serial);
/* if we have the same join */
if (other_eapp->ea_endpoint->ep_join_id == ea_endpoint->ep_join_id) {
- PDEBUG(DEBUG_EPOINT, "EPOINT(%d) cannot join: we an the other have the same join.\n", ea_endpoint->ep_serial);
+ PDEBUG(DEBUG_EPOINT, "EPOINT(%d) cannot join: we and the other have the same join.\n", ea_endpoint->ep_serial);
return;
}
other_join = find_join_id(other_eapp->ea_endpoint->ep_join_id);