From: Stefan Knoblich Date: Thu, 23 Aug 2012 20:26:49 +0000 (+0200) Subject: ftmod_libpri: Check for '#' key to leave overlap receiving state. X-Git-Tag: v1.2.3^2~189 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=716f4c067546b63e9f393b9e9676f3fa2d66ec03;p=thirdparty%2Ffreeswitch.git 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 --- diff --git a/libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c b/libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c index 41f6718353..0b3a999ee1 100644 --- a/libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c +++ b/libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c @@ -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");