Project "FreeSWITCH Source" received a push.

branch: master updated

       via: 0cbac4ad25ed3921262a7676397206f824aade32 (commit)
       via: 2401fec54b48d8dfb1ec5a2f33a092dac076c0f3 (commit)
       via: 330d741853f4f7c548b61dbcb717266a2bf24107 (commit)
       via: 93501b288b34a7d4f5287f7bc2b498a2321d73c5 (commit)
       via: 0e841a5f14810514ee60562481c405d7fb560e72 (commit)
       via: a93623618b83fb08f2a0a728800f431856b29f92 (commit)
      from: df4a18dcba1ad6a3ac20f67982642e8fe0e35471 (commit)


= COMMIT LOG ===========================================================
committer: Moises Silva
comments: 
Merge remote branch 'smgfs/master'
committer: Anthony Minessale
comments: 
minor regression from 4ae8282e6c6df0e296113e9b4b4a1383e1af8ad7 (sofia_contact with no args from cli caused seg)

diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c
index c683203..2a2ec63 100644
--- a/src/mod/endpoints/mod_sofia/mod_sofia.c
+++ b/src/mod/endpoints/mod_sofia/mod_sofia.c
@@ -3458,7 +3458,7 @@ SWITCH_STANDARD_API(sofia_contact_function)
 {
 	char *data;
 	char *user = NULL;
-	char *domain = NULL;
+	char *domain = NULL, *dup_domain = NULL;
 	char *concat = NULL;
 	char *profile_name = NULL;
 	char *p;
@@ -3501,7 +3501,8 @@ SWITCH_STANDARD_API(sofia_contact_function)
 	}
 
 	if (zstr(domain)) {
-		domain = switch_core_get_variable_pdup("domain", switch_core_session_get_pool(session));
+		dup_domain = switch_core_get_variable_dup("domain");
+		domain = dup_domain;
 	}
 
 	if (!user) goto end;
@@ -3567,6 +3568,7 @@ SWITCH_STANDARD_API(sofia_contact_function)
 	switch_safe_free(mystream.data);					
 
 	switch_safe_free(data);
+	switch_safe_free(dup_domain);
 
 	return SWITCH_STATUS_SUCCESS;
 }
committer: Anthony Minessale
comments: 
reset signal_bond variable back to its original value on failed dial in att_xfer

diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c
index f7bf86b..9a1258a 100755
--- a/src/mod/applications/mod_dptools/mod_dptools.c
+++ b/src/mod/applications/mod_dptools/mod_dptools.c
@@ -1864,6 +1864,7 @@ SWITCH_STANDARD_APP(att_xfer_function)
 
 	if (switch_ivr_originate(session, &peer_session, &cause, data, 0, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL)
 		!= SWITCH_STATUS_SUCCESS || !peer_session) {
+		switch_channel_set_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE, bond);
 		goto end;
 	}
 
@@ -1878,6 +1879,7 @@ SWITCH_STANDARD_APP(att_xfer_function)
 
 	if (zstr(bond) && switch_channel_down(peer_channel)) {
 		switch_core_session_rwunlock(peer_session);
+		switch_channel_set_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE, bond);
 		goto end;
 	}
 
committer: David Yat Sin
comments: 
Fixes to support QSIG over T1

diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cfg.c b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cfg.c
index bd5b13b..9fe2819 100644
--- a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cfg.c
+++ b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cfg.c
@@ -84,6 +84,8 @@ static ftdm_status_t parse_switchtype(const char* switch_name, ftdm_span_t *span
 				signal_data->switchtype = SNGISDN_SWITCH_4ESS;
 			} else if (!strcasecmp(switch_name, "dms100")) {
 				signal_data->switchtype = SNGISDN_SWITCH_DMS100;
+			} else if (!strcasecmp(switch_name, "qsig")) {
+				signal_data->switchtype = SNGISDN_SWITCH_QSIG;
 			} else {
 				ftdm_log(FTDM_LOG_ERROR, "%s:Unsupported switchtype %s for trunktype:%s\n", span->name, switch_name, ftdm_trunk_type2str(span->trunk_type));
 				return FTDM_FAIL;
diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cfg.c b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cfg.c
index a52a624..1bd2753 100644
--- a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cfg.c
+++ b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cfg.c
@@ -667,25 +667,33 @@ ftdm_status_t sngisdn_stack_cfg_q931_dlsap(ftdm_span_t *span)
 	cfg.t.cfg.s.inDLSAP.maxBSrvCnt = 2;
 	cfg.t.cfg.s.inDLSAP.maxDSrvCnt = 2;
 #endif /* ISDN_SRV */
-	
-	if (signal_data->signalling == SNGISDN_SIGNALING_NET) {
-		cfg.t.cfg.s.inDLSAP.ackOpt = TRUE;
-		cfg.t.cfg.s.inDLSAP.intType = NETWORK;
-		cfg.t.cfg.s.inDLSAP.clrGlr = FALSE;			/* in case of glare, do not clear local call */
-		cfg.t.cfg.s.inDLSAP.statEnqOpt = TRUE;
 
-		if (signal_data->switchtype == SNGISDN_SWITCH_EUROISDN ||
-			signal_data->switchtype == SNGISDN_SWITCH_INSNET) {
-			cfg.t.cfg.s.inDLSAP.rstOpt = FALSE;
-		} else {
-			cfg.t.cfg.s.inDLSAP.rstOpt = TRUE;
-		}
-	} else {
-		cfg.t.cfg.s.inDLSAP.ackOpt = FALSE;
-		cfg.t.cfg.s.inDLSAP.intType = USER;
+	if (signal_data->switchtype == SNGISDN_SWITCH_QSIG) {
+		cfg.t.cfg.s.inDLSAP.ackOpt = TRUE;
+		cfg.t.cfg.s.inDLSAP.intType = SYM_USER;
 		cfg.t.cfg.s.inDLSAP.clrGlr = TRUE;			/* in case of glare, clear local call */
 		cfg.t.cfg.s.inDLSAP.statEnqOpt = FALSE;
 		cfg.t.cfg.s.inDLSAP.rstOpt = FALSE;
+	} else {
+		if (signal_data->signalling == SNGISDN_SIGNALING_NET) {
+			cfg.t.cfg.s.inDLSAP.ackOpt = TRUE;
+			cfg.t.cfg.s.inDLSAP.intType = NETWORK;
+			cfg.t.cfg.s.inDLSAP.clrGlr = FALSE;			/* in case of glare, do not clear local call */
+			cfg.t.cfg.s.inDLSAP.statEnqOpt = TRUE;
+
+			if (signal_data->switchtype == SNGISDN_SWITCH_EUROISDN ||
+				signal_data->switchtype == SNGISDN_SWITCH_INSNET) {
+				cfg.t.cfg.s.inDLSAP.rstOpt = FALSE;
+			} else {
+				cfg.t.cfg.s.inDLSAP.rstOpt = TRUE;
+			}
+		} else {
+			cfg.t.cfg.s.inDLSAP.ackOpt = FALSE;
+			cfg.t.cfg.s.inDLSAP.intType = USER;
+			cfg.t.cfg.s.inDLSAP.clrGlr = TRUE;			/* in case of glare, clear local call */
+			cfg.t.cfg.s.inDLSAP.statEnqOpt = FALSE;
+			cfg.t.cfg.s.inDLSAP.rstOpt = FALSE;
+		}
 	}
 
 	/* Override the restart options if user selected that option */
committer: Anthony Minessale
comments: 
FS-3040/FS-1742: use 1 sql query for message count in a way that is portable and doesn't segfault

diff --git a/src/mod/applications/mod_voicemail/mod_voicemail.c b/src/mod/applications/mod_voicemail/mod_voicemail.c
index 80b011e..894e49a 100644
--- a/src/mod/applications/mod_voicemail/mod_voicemail.c
+++ b/src/mod/applications/mod_voicemail/mod_voicemail.c
@@ -1011,6 +1011,11 @@ typedef struct msg_cnt_callback msg_cnt_callback_t;
 static int message_count_callback(void *pArg, int argc, char **argv, char **columnNames)
 {
 	msg_cnt_callback_t *cbt = (msg_cnt_callback_t *) pArg;
+
+	if (argc < 3 || zstr(argv[0]) || zstr(argv[1]) || zstr(argv[2])) {
+		return -1;
+	}
+
 	if (atoi(argv[0]) == 1) {	/* UnRead */
 		if (!strcasecmp(argv[1], "A_URGENT")) {	/* Urgent */
 			cbt->total_new_urgent_messages = atoi(argv[2]);
@@ -1263,7 +1268,7 @@ static void message_count(vm_profile_t *profile, const char *id_in, const char *
 {
 	char msg_count[80] = "";
 	msg_cnt_callback_t cbt = { 0 };
-	char sql[256];
+	char *sql;
 	char *myid = NULL;
 
 
@@ -1277,11 +1282,20 @@ static void message_count(vm_profile_t *profile, const char *id_in, const char *
 
 	myid = resolve_id(id_in, domain_name, "message-count");
 
-	switch_snprintf(sql, sizeof(sql),
-					"select read_epoch=0, read_flags, count(read_epoch) from voicemail_msgs where username='%s' and domain='%s' and in_folder='%s' group by read_epoch=0,read_flags;",
-					myid, domain_name, myfolder);
+	sql = switch_mprintf(
+						 "select 1, read_flags, count(read_epoch) from voicemail_msgs where "
+						 "username='%q' and domain='%q' and in_folder='%q' and read_epoch=0 "
+						 "group by read_flags "
+						 "union "
+						 "select 0, read_flags, count(read_epoch) from voicemail_msgs where "
+						 "username='%q' and domain='%q' and in_folder='%q' and read_epoch<>0 "
+						 "group by read_flags;",
+
+						 myid, domain_name, myfolder,
+						 myid, domain_name, myfolder);
 
 	vm_execute_sql_callback(profile, profile->mutex, sql, message_count_callback, &cbt);
+	free(sql);
 
 	*total_new_messages = cbt.total_new_messages + cbt.total_new_urgent_messages;
 	*total_new_urgent_messages = cbt.total_new_urgent_messages;
committer: Anthony Minessale
comments: 
3 regresions from this now, rolling it back

diff --git a/src/mod/applications/mod_voicemail/mod_voicemail.c b/src/mod/applications/mod_voicemail/mod_voicemail.c
index bea8214..80b011e 100644
--- a/src/mod/applications/mod_voicemail/mod_voicemail.c
+++ b/src/mod/applications/mod_voicemail/mod_voicemail.c
@@ -1277,13 +1277,9 @@ static void message_count(vm_profile_t *profile, const char *id_in, const char *
 
 	myid = resolve_id(id_in, domain_name, "message-count");
 
-	switch_snprintf(sql, sizeof(sql), "select 1, read_flags, count(read_epoch) from voicemail_msgs where "
-					"username='%s' and domain='%s' and in_folder='%s' "
-					"and read_epoch=0 group by read_flags union select 0, read_flags, count(read_epoch) from voicemail_msgs where username='%s' "
-					"and domain='%s' and in_folder='%s' and read_epoch<>0 group by read_flags;", 
-					myid, domain_name, myfolder, myid, domain_name, myfolder);
-					
-				   
+	switch_snprintf(sql, sizeof(sql),
+					"select read_epoch=0, read_flags, count(read_epoch) from voicemail_msgs where username='%s' and domain='%s' and in_folder='%s' group by read_epoch=0,read_flags;",
+					myid, domain_name, myfolder);
 
 	vm_execute_sql_callback(profile, profile->mutex, sql, message_count_callback, &cbt);
 
========================================================================

Summary of changes:
 src/mod/applications/mod_dptools/mod_dptools.c     |    2 +
 src/mod/applications/mod_voicemail/mod_voicemail.c |   26 +++++++++++++------
 src/mod/endpoints/mod_sofia/mod_sofia.c            |    6 +++-
 3 files changed, 24 insertions(+), 10 deletions(-)

this email was generated because of /git/your-repo.git/hooks/post-receive by the file /git-core/contrib/hooks/post-receive-email
For more info, see http://blog.chomperstomp.com/?p=630 --
FreeSWITCH Source