ftmod_libpri: Check for '#' key to leave overlap receiving state.
Same as ftmod_isdn, '#' key ends overlap receive and moves the incoming call to RING state. Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
This commit is contained in:
parent
04924f1694
commit
716f4c0675
|
@ -1232,15 +1232,22 @@ static int on_info(lpwrap_pri_t *spri, lpwrap_pri_event_t event_type, pri_event
|
|||
if (!ftdm_strlen_zero(pevent->ring.callednum)) {
|
||||
int digits = strlen(pevent->ring.callednum);
|
||||
int offset = strlen(caller_data->dnis.digits);
|
||||
int len = ftdm_min(sizeof(caller_data->dnis.digits) - 1 - offset, digits); /* max. length without terminator */
|
||||
int len = 0;
|
||||
|
||||
if (strchr(pevent->ring.callednum, '#')) {
|
||||
pevent->ring.complete = 1;
|
||||
digits--;
|
||||
}
|
||||
|
||||
len = ftdm_min(sizeof(caller_data->dnis.digits) - 1 - offset, digits); /* max. length without terminator */
|
||||
if (len < digits) {
|
||||
ftdm_log_chan(chan, FTDM_LOG_WARNING, "Length %d of digit string exceeds available space %d of DNIS, truncating!\n",
|
||||
digits, len);
|
||||
}
|
||||
|
||||
ftdm_copy_string(&caller_data->dnis.digits[offset], (char *)pevent->ring.callednum, len + 1); /* max. length with terminator */
|
||||
caller_data->dnis.digits[offset + len] = '\0';
|
||||
if (len) {
|
||||
ftdm_copy_string(&caller_data->dnis.digits[offset], (char *)pevent->ring.callednum, len + 1); /* max. length with terminator */
|
||||
caller_data->dnis.digits[offset + len] = '\0';
|
||||
}
|
||||
}
|
||||
if (pevent->ring.complete) {
|
||||
ftdm_log_chan_msg(chan, FTDM_LOG_DEBUG, "Number complete indicated, moving channel to RING state\n");
|
||||
|
|
Loading…
Reference in New Issue