Compare commits

...

6 Commits

Author SHA1 Message Date
Harald Welte 2cd5585026 ftmod_libpri: Ensure bearer_capability and layer1 variables are populated 2019-12-29 01:56:17 +01:00
Harald Welte a341d58fbd ftmod_libpri: Fix NULL pointer deref in on_hangup() 2019-12-29 00:26:14 +01:00
Harald Welte 83f6bf5276 ftmod_libpri: Don't hardcode SPEECH bearer capability
FreeTDM actually knows which bearer capability to set; let's use
it rather than discarding that and overriding it with SPEECH.
2019-12-29 00:24:56 +01:00
Harald Welte 5621e2a5ed Only look at lower 16 bits of FreeTDM channel numbers
FreeTDM sets some higher-ordre bits in the channel number to indicate
certain situations.  The actual channel number in the E1 multiplex
is still only in the bottom 16 bits.
2019-12-29 00:22:44 +01:00
Andrey Volk f9990221e6 Merge branch 'master' into v1.10 2019-08-20 20:54:04 +04:00
Andrey Volk 7a921c608b version bump 2019-08-05 21:28:26 +04:00
4 changed files with 10 additions and 5 deletions

View File

@ -1 +1 @@
1.10.1-dev
1.10.1-release

View File

@ -3,10 +3,10 @@
# Must change all of the below together
# For a release, set revision for that tagged release as well and uncomment
AC_INIT([freeswitch], [1.10.1-dev], bugs@freeswitch.org)
AC_INIT([freeswitch], [1.10.1-release], bugs@freeswitch.org)
AC_SUBST(SWITCH_VERSION_MAJOR, [1])
AC_SUBST(SWITCH_VERSION_MINOR, [10])
AC_SUBST(SWITCH_VERSION_MICRO, [1-dev])
AC_SUBST(SWITCH_VERSION_MICRO, [1-release])
AC_SUBST(SWITCH_VERSION_REVISION, [])
AC_SUBST(SWITCH_VERSION_REVISION_HUMAN, [])

View File

@ -2446,6 +2446,7 @@ FT_DECLARE(ftdm_caller_data_t *) ftdm_channel_get_caller_data(ftdm_channel_t *ft
FT_DECLARE(ftdm_channel_t *) ftdm_span_get_channel(const ftdm_span_t *span, uint32_t chanid)
{
ftdm_channel_t *chan;
chanid &= 0xffff; /* mask off libpri "ds1_explicit" bit & co */
ftdm_mutex_lock(span->mutex);
if (chanid == 0 || chanid > span->chan_count) {
ftdm_mutex_unlock(span->mutex);

View File

@ -1207,7 +1207,7 @@ static ftdm_status_t state_advance(ftdm_channel_t *chan)
assert(sr);
pri_sr_set_channel(sr, ftdm_channel_get_id(chan), 1, 0);
pri_sr_set_bearer(sr, PRI_TRANS_CAP_SPEECH, isdn_data->layer1);
pri_sr_set_bearer(sr, caller_data->bearer_capability << 3, isdn_data->layer1);
pri_sr_set_called(sr, caller_data->dnis.digits, called_ton, 1);
pri_sr_set_caller(sr, caller_data->cid_num.digits,
@ -1405,12 +1405,13 @@ static int on_hangup(lpwrap_pri_t *spri, lpwrap_pri_event_t event_type, pri_even
{
ftdm_span_t *span = spri->span;
ftdm_channel_t *chan = ftdm_span_get_channel(span, pevent->hangup.channel);
ftdm_libpri_b_chan_t *chan_priv = chan->call_data;
ftdm_libpri_b_chan_t *chan_priv;
if (!chan) {
ftdm_log(FTDM_LOG_CRIT, "-- Hangup on channel %d:%d but it's not in use?\n", ftdm_span_get_id(spri->span), pevent->hangup.channel);
return 0;
}
chan_priv = chan->call_data;
ftdm_channel_lock(chan);
@ -1963,6 +1964,9 @@ static int on_ring(lpwrap_pri_t *spri, lpwrap_pri_event_t event_type, pri_event
snprintf(caller_data->aniII, 5, "%.2d", pevent->ring.ani2);
}
caller_data->bearer_capability = pevent->ring.ctype >> 3;
isdn_data->layer1 = pevent->ring.layer1;
// scary to trust this pointer, you'd think they would give you a copy of the call data so you own it......
/* hurr, this is valid as along as nobody releases the call */
chan_priv->call = pevent->ring.call;