mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-02-18 23:59:07 +00:00
Merge remote branch 'origin/releases.3.4' into releases.3.4.experimental_head
This commit is contained in:
commit
7e4bd5440b
@ -52,7 +52,7 @@
|
|||||||
struct tm *localtime_r(const time_t *clock, struct tm *result);
|
struct tm *localtime_r(const time_t *clock, struct tm *result);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define FORCE_HANGUP_TIMER 3000
|
#define FORCE_HANGUP_TIMER 30000
|
||||||
#define SPAN_PENDING_CHANS_QUEUE_SIZE 1000
|
#define SPAN_PENDING_CHANS_QUEUE_SIZE 1000
|
||||||
#define SPAN_PENDING_SIGNALS_QUEUE_SIZE 1000
|
#define SPAN_PENDING_SIGNALS_QUEUE_SIZE 1000
|
||||||
#define FTDM_READ_TRACE_INDEX 0
|
#define FTDM_READ_TRACE_INDEX 0
|
||||||
@ -5465,7 +5465,7 @@ static void execute_safety_hangup(void *data)
|
|||||||
ftdm_channel_lock(fchan);
|
ftdm_channel_lock(fchan);
|
||||||
fchan->hangup_timer = 0;
|
fchan->hangup_timer = 0;
|
||||||
if (fchan->state == FTDM_CHANNEL_STATE_TERMINATING) {
|
if (fchan->state == FTDM_CHANNEL_STATE_TERMINATING) {
|
||||||
ftdm_log_chan(fchan, FTDM_LOG_NOTICE, "Forcing hangup since the user did not confirmed our hangup after %dms\n", FORCE_HANGUP_TIMER);
|
ftdm_log_chan(fchan, FTDM_LOG_WARNING, "Forcing hangup since the user did not confirmed our hangup after %dms\n", FORCE_HANGUP_TIMER);
|
||||||
_ftdm_channel_call_hangup_nl(__FILE__, __FUNCTION__, __LINE__, fchan, NULL);
|
_ftdm_channel_call_hangup_nl(__FILE__, __FUNCTION__, __LINE__, fchan, NULL);
|
||||||
} else {
|
} else {
|
||||||
ftdm_log_chan(fchan, FTDM_LOG_CRIT, "Not performing safety hangup, channel state is %s\n", ftdm_channel_state2str(fchan->state));
|
ftdm_log_chan(fchan, FTDM_LOG_CRIT, "Not performing safety hangup, channel state is %s\n", ftdm_channel_state2str(fchan->state));
|
||||||
|
@ -77,9 +77,9 @@ int ft_to_sngss7_cfg_all(void)
|
|||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
/* check if we have done gen_config already */
|
/* check if we have done gen_config already */
|
||||||
if (!(g_ftdm_sngss7_data.gen_config)) {
|
if (g_ftdm_sngss7_data.gen_config == SNG_GEN_CFG_STATUS_INIT) {
|
||||||
/* update the global gen_config so we don't do it again */
|
/* update the global gen_config so we don't do it again */
|
||||||
g_ftdm_sngss7_data.gen_config = 1;
|
g_ftdm_sngss7_data.gen_config = SNG_GEN_CFG_STATUS_PENDING;
|
||||||
|
|
||||||
/* start of by checking if the license and sig file are valid */
|
/* start of by checking if the license and sig file are valid */
|
||||||
if (sng_validate_license(g_ftdm_sngss7_data.cfg.license,
|
if (sng_validate_license(g_ftdm_sngss7_data.cfg.license,
|
||||||
@ -209,13 +209,12 @@ int ft_to_sngss7_cfg_all(void)
|
|||||||
}
|
}
|
||||||
} /* if (sngss7_test_flag(&g_ftdm_sngss7_data.cfg, SNGSS7_MTP2)) */
|
} /* if (sngss7_test_flag(&g_ftdm_sngss7_data.cfg, SNGSS7_MTP2)) */
|
||||||
|
|
||||||
g_ftdm_sngss7_data.gen_config = 2;
|
g_ftdm_sngss7_data.gen_config = SNG_GEN_CFG_STATUS_DONE;
|
||||||
|
|
||||||
} /* if (!(g_ftdm_sngss7_data.gen_config)) */
|
} /* if (!(g_ftdm_sngss7_data.gen_config)) */
|
||||||
|
|
||||||
|
|
||||||
/* FIXME: Please change number 2 to an ENUM that is more explanatory */
|
if (g_ftdm_sngss7_data.gen_config != SNG_GEN_CFG_STATUS_DONE) {
|
||||||
if (g_ftdm_sngss7_data.gen_config != 2) {
|
|
||||||
SS7_CRITICAL("General configuration FAILED!\n");
|
SS7_CRITICAL("General configuration FAILED!\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -1653,8 +1653,10 @@ static FIO_CHANNEL_OUTGOING_CALL_FUNCTION(ftdm_sangoma_ss7_outgoing_call)
|
|||||||
|
|
||||||
/* check if the channel sig state is UP */
|
/* check if the channel sig state is UP */
|
||||||
if (!ftdm_test_flag(ftdmchan, FTDM_CHANNEL_SIG_UP)) {
|
if (!ftdm_test_flag(ftdmchan, FTDM_CHANNEL_SIG_UP)) {
|
||||||
SS7_ERROR_CHAN(ftdmchan, "Requested channel sig state is down, cancelling call!%s\n", " ");
|
SS7_ERROR_CHAN(ftdmchan, "Requested channel sig state is down, skipping channell!%s\n", " ");
|
||||||
goto outgoing_fail;
|
/* Sig state will be down due to a block.
|
||||||
|
Right action is to hunt for another call */
|
||||||
|
goto outgoing_break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* check if there is a remote block */
|
/* check if there is a remote block */
|
||||||
@ -1679,6 +1681,14 @@ static FIO_CHANNEL_OUTGOING_CALL_FUNCTION(ftdm_sangoma_ss7_outgoing_call)
|
|||||||
goto outgoing_break;
|
goto outgoing_break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* This is a gracefull stack resource check.
|
||||||
|
Removing this function will cause unpredictable
|
||||||
|
ungracefule errors. */
|
||||||
|
if (sng_cc_resource_check()) {
|
||||||
|
goto outgoing_fail;
|
||||||
|
}
|
||||||
|
|
||||||
/* check the state of the channel */
|
/* check the state of the channel */
|
||||||
switch (ftdmchan->state){
|
switch (ftdmchan->state){
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
@ -1873,7 +1883,6 @@ static ftdm_status_t ftdm_sangoma_ss7_stop(ftdm_span_t * span)
|
|||||||
static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_sangoma_ss7_span_config)
|
static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_sangoma_ss7_span_config)
|
||||||
{
|
{
|
||||||
sngss7_span_data_t *ss7_span_info;
|
sngss7_span_data_t *ss7_span_info;
|
||||||
int sngss7_retry_cnt=5;
|
|
||||||
|
|
||||||
ftdm_log (FTDM_LOG_INFO, "Configuring ftmod_sangoma_ss7 span = %s(%d)...\n",
|
ftdm_log (FTDM_LOG_INFO, "Configuring ftmod_sangoma_ss7 span = %s(%d)...\n",
|
||||||
span->name,
|
span->name,
|
||||||
@ -1923,20 +1932,14 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_sangoma_ss7_span_config)
|
|||||||
/* parse the configuration and apply to the global config structure */
|
/* parse the configuration and apply to the global config structure */
|
||||||
if (ftmod_ss7_parse_xml(ftdm_parameters, span)) {
|
if (ftmod_ss7_parse_xml(ftdm_parameters, span)) {
|
||||||
ftdm_log (FTDM_LOG_CRIT, "Failed to parse configuration!\n");
|
ftdm_log (FTDM_LOG_CRIT, "Failed to parse configuration!\n");
|
||||||
ftdm_sleep (1000);
|
ftdm_sleep (100);
|
||||||
return FTDM_FAIL;
|
return FTDM_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* configure libsngss7 */
|
/* configure libsngss7 */
|
||||||
try_cfg_again:
|
|
||||||
if (ft_to_sngss7_cfg_all()) {
|
if (ft_to_sngss7_cfg_all()) {
|
||||||
if (sngss7_retry_cnt--) {
|
|
||||||
ftdm_sleep (500);
|
|
||||||
ftdm_log (FTDM_LOG_DEBUG, "Failed to configure LibSngSS7 - retrying!\n");
|
|
||||||
goto try_cfg_again;
|
|
||||||
}
|
|
||||||
ftdm_log (FTDM_LOG_CRIT, "Failed to configure LibSngSS7!\n");
|
ftdm_log (FTDM_LOG_CRIT, "Failed to configure LibSngSS7!\n");
|
||||||
ftdm_sleep (1000);
|
ftdm_sleep (100);
|
||||||
return FTDM_FAIL;
|
return FTDM_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,6 +116,12 @@ typedef enum {
|
|||||||
SNG_CALLING = 2
|
SNG_CALLING = 2
|
||||||
} sng_addr_type_t;
|
} sng_addr_type_t;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
SNG_GEN_CFG_STATUS_INIT = 0,
|
||||||
|
SNG_GEN_CFG_STATUS_PENDING = 1,
|
||||||
|
SNG_GEN_CFG_STATUS_DONE = 2
|
||||||
|
} nsg_gen_cfg_type_t;
|
||||||
|
|
||||||
typedef struct sng_mtp2_error_type {
|
typedef struct sng_mtp2_error_type {
|
||||||
int init;
|
int init;
|
||||||
char sng_type[MAX_NAME_LEN];
|
char sng_type[MAX_NAME_LEN];
|
||||||
|
@ -1923,7 +1923,7 @@ static int ftmod_ss7_parse_cc_span(ftdm_conf_node_t *cc_span)
|
|||||||
SS7_DEBUG("Found transparent_iam %d\n", sng_ccSpan.transparent_iam);
|
SS7_DEBUG("Found transparent_iam %d\n", sng_ccSpan.transparent_iam);
|
||||||
#endif
|
#endif
|
||||||
} else if (!strcasecmp(parm->var, "transparent_iam_max_size")) {
|
} else if (!strcasecmp(parm->var, "transparent_iam_max_size")) {
|
||||||
sng_ccSpan.transparent_iam_max_size = ftdm_true(parm->val);
|
sng_ccSpan.transparent_iam_max_size = atoi(parm->val);
|
||||||
SS7_DEBUG("Found transparent_iam_max_size %d\n", sng_ccSpan.transparent_iam_max_size);
|
SS7_DEBUG("Found transparent_iam_max_size %d\n", sng_ccSpan.transparent_iam_max_size);
|
||||||
} else if (!strcasecmp(parm->var, "cpg_on_progress_media")) {
|
} else if (!strcasecmp(parm->var, "cpg_on_progress_media")) {
|
||||||
sng_ccSpan.cpg_on_progress_media = ftdm_true(parm->val);
|
sng_ccSpan.cpg_on_progress_media = ftdm_true(parm->val);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user