<h1>Project "FreeSWITCH Source" received a push.</h1>
<h2>branch: master updated</h2>
<pre>
via: 0cbac4ad25ed3921262a7676397206f824aade32 (commit)
via: 2401fec54b48d8dfb1ec5a2f33a092dac076c0f3 (commit)
via: 330d741853f4f7c548b61dbcb717266a2bf24107 (commit)
via: 93501b288b34a7d4f5287f7bc2b498a2321d73c5 (commit)
via: 0e841a5f14810514ee60562481c405d7fb560e72 (commit)
via: a93623618b83fb08f2a0a728800f431856b29f92 (commit)
from: df4a18dcba1ad6a3ac20f67982642e8fe0e35471 (commit)
</pre>= COMMIT LOG ===========================================================
<div class="highlight"><pre>committer: Moises Silva
comments:
Merge remote branch 'smgfs/master'
</pre></div>
<div class="highlight"><pre>committer: Anthony Minessale
comments:
minor regression from 4ae8282e6c6df0e296113e9b4b4a1383e1af8ad7 (sofia_contact with no args from cli caused seg)
<span style="color: #000080; font-weight: bold">diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c</span>
<span style="color: #000080; font-weight: bold">index c683203..2a2ec63 100644</span>
<span style="color: #A00000">--- a/src/mod/endpoints/mod_sofia/mod_sofia.c</span>
<span style="color: #00A000">+++ b/src/mod/endpoints/mod_sofia/mod_sofia.c</span>
<span style="color: #800080; font-weight: bold">@@ -3458,7 +3458,7 @@ SWITCH_STANDARD_API(sofia_contact_function)</span>
{
        char *data;
        char *user = NULL;
<span style="color: #A00000">-        char *domain = NULL;</span>
<span style="color: #00A000">+        char *domain = NULL, *dup_domain = NULL;</span>
        char *concat = NULL;
        char *profile_name = NULL;
        char *p;
<span style="color: #800080; font-weight: bold">@@ -3501,7 +3501,8 @@ SWITCH_STANDARD_API(sofia_contact_function)</span>
        }
        if (zstr(domain)) {
<span style="color: #A00000">-                domain = switch_core_get_variable_pdup("domain", switch_core_session_get_pool(session));</span>
<span style="color: #00A000">+                dup_domain = switch_core_get_variable_dup("domain");</span>
<span style="color: #00A000">+                domain = dup_domain;</span>
        }
        if (!user) goto end;
<span style="color: #800080; font-weight: bold">@@ -3567,6 +3568,7 @@ SWITCH_STANDARD_API(sofia_contact_function)</span>
        switch_safe_free(mystream.data);                                        
        switch_safe_free(data);
<span style="color: #00A000">+        switch_safe_free(dup_domain);</span>
        return SWITCH_STATUS_SUCCESS;
}
</pre></div>
<div class="highlight"><pre>committer: Anthony Minessale
comments:
reset signal_bond variable back to its original value on failed dial in att_xfer
<span style="color: #000080; font-weight: bold">diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c</span>
<span style="color: #000080; font-weight: bold">index f7bf86b..9a1258a 100755</span>
<span style="color: #A00000">--- a/src/mod/applications/mod_dptools/mod_dptools.c</span>
<span style="color: #00A000">+++ b/src/mod/applications/mod_dptools/mod_dptools.c</span>
<span style="color: #800080; font-weight: bold">@@ -1864,6 +1864,7 @@ SWITCH_STANDARD_APP(att_xfer_function)</span>
        if (switch_ivr_originate(session, &peer_session, &cause, data, 0, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL)
                != SWITCH_STATUS_SUCCESS || !peer_session) {
<span style="color: #00A000">+                switch_channel_set_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE, bond);</span>
                goto end;
        }
<span style="color: #800080; font-weight: bold">@@ -1878,6 +1879,7 @@ SWITCH_STANDARD_APP(att_xfer_function)</span>
        if (zstr(bond) && switch_channel_down(peer_channel)) {
                switch_core_session_rwunlock(peer_session);
<span style="color: #00A000">+                switch_channel_set_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE, bond);</span>
                goto end;
        }
</pre></div>
<div class="highlight"><pre>committer: David Yat Sin
comments:
Fixes to support QSIG over T1
<span style="color: #000080; font-weight: bold">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</span>
<span style="color: #000080; font-weight: bold">index bd5b13b..9fe2819 100644</span>
<span style="color: #A00000">--- a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cfg.c</span>
<span style="color: #00A000">+++ b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cfg.c</span>
<span style="color: #800080; font-weight: bold">@@ -84,6 +84,8 @@ static ftdm_status_t parse_switchtype(const char* switch_name, ftdm_span_t *span</span>
                                signal_data->switchtype = SNGISDN_SWITCH_4ESS;
                        } else if (!strcasecmp(switch_name, "dms100")) {
                                signal_data->switchtype = SNGISDN_SWITCH_DMS100;
<span style="color: #00A000">+                        } else if (!strcasecmp(switch_name, "qsig")) {</span>
<span style="color: #00A000">+                                signal_data->switchtype = SNGISDN_SWITCH_QSIG;</span>
                        } 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;
<span style="color: #000080; font-weight: bold">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</span>
<span style="color: #000080; font-weight: bold">index a52a624..1bd2753 100644</span>
<span style="color: #A00000">--- a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cfg.c</span>
<span style="color: #00A000">+++ b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cfg.c</span>
<span style="color: #800080; font-weight: bold">@@ -667,25 +667,33 @@ ftdm_status_t sngisdn_stack_cfg_q931_dlsap(ftdm_span_t *span)</span>
        cfg.t.cfg.s.inDLSAP.maxBSrvCnt = 2;
        cfg.t.cfg.s.inDLSAP.maxDSrvCnt = 2;
#endif /* ISDN_SRV */
<span style="color: #A00000">-        </span>
<span style="color: #A00000">-        if (signal_data->signalling == SNGISDN_SIGNALING_NET) {</span>
<span style="color: #A00000">-                cfg.t.cfg.s.inDLSAP.ackOpt = TRUE;</span>
<span style="color: #A00000">-                cfg.t.cfg.s.inDLSAP.intType = NETWORK;</span>
<span style="color: #A00000">-                cfg.t.cfg.s.inDLSAP.clrGlr = FALSE;                        /* in case of glare, do not clear local call */</span>
<span style="color: #A00000">-                cfg.t.cfg.s.inDLSAP.statEnqOpt = TRUE;</span>
<span style="color: #A00000">-                if (signal_data->switchtype == SNGISDN_SWITCH_EUROISDN ||</span>
<span style="color: #A00000">-                        signal_data->switchtype == SNGISDN_SWITCH_INSNET) {</span>
<span style="color: #A00000">-                        cfg.t.cfg.s.inDLSAP.rstOpt = FALSE;</span>
<span style="color: #A00000">-                } else {</span>
<span style="color: #A00000">-                        cfg.t.cfg.s.inDLSAP.rstOpt = TRUE;</span>
<span style="color: #A00000">-                }</span>
<span style="color: #A00000">-        } else {</span>
<span style="color: #A00000">-                cfg.t.cfg.s.inDLSAP.ackOpt = FALSE;</span>
<span style="color: #A00000">-                cfg.t.cfg.s.inDLSAP.intType = USER;</span>
<span style="color: #00A000">+        if (signal_data->switchtype == SNGISDN_SWITCH_QSIG) {</span>
<span style="color: #00A000">+                cfg.t.cfg.s.inDLSAP.ackOpt = TRUE;</span>
<span style="color: #00A000">+                cfg.t.cfg.s.inDLSAP.intType = SYM_USER;</span>
                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;
<span style="color: #00A000">+        } else {</span>
<span style="color: #00A000">+                if (signal_data->signalling == SNGISDN_SIGNALING_NET) {</span>
<span style="color: #00A000">+                        cfg.t.cfg.s.inDLSAP.ackOpt = TRUE;</span>
<span style="color: #00A000">+                        cfg.t.cfg.s.inDLSAP.intType = NETWORK;</span>
<span style="color: #00A000">+                        cfg.t.cfg.s.inDLSAP.clrGlr = FALSE;                        /* in case of glare, do not clear local call */</span>
<span style="color: #00A000">+                        cfg.t.cfg.s.inDLSAP.statEnqOpt = TRUE;</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                        if (signal_data->switchtype == SNGISDN_SWITCH_EUROISDN ||</span>
<span style="color: #00A000">+                                signal_data->switchtype == SNGISDN_SWITCH_INSNET) {</span>
<span style="color: #00A000">+                                cfg.t.cfg.s.inDLSAP.rstOpt = FALSE;</span>
<span style="color: #00A000">+                        } else {</span>
<span style="color: #00A000">+                                cfg.t.cfg.s.inDLSAP.rstOpt = TRUE;</span>
<span style="color: #00A000">+                        }</span>
<span style="color: #00A000">+                } else {</span>
<span style="color: #00A000">+                        cfg.t.cfg.s.inDLSAP.ackOpt = FALSE;</span>
<span style="color: #00A000">+                        cfg.t.cfg.s.inDLSAP.intType = USER;</span>
<span style="color: #00A000">+                        cfg.t.cfg.s.inDLSAP.clrGlr = TRUE;                        /* in case of glare, clear local call */</span>
<span style="color: #00A000">+                        cfg.t.cfg.s.inDLSAP.statEnqOpt = FALSE;</span>
<span style="color: #00A000">+                        cfg.t.cfg.s.inDLSAP.rstOpt = FALSE;</span>
<span style="color: #00A000">+                }</span>
        }
        /* Override the restart options if user selected that option */
</pre></div>
<div class="highlight"><pre>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
<span style="color: #000080; font-weight: bold">diff --git a/src/mod/applications/mod_voicemail/mod_voicemail.c b/src/mod/applications/mod_voicemail/mod_voicemail.c</span>
<span style="color: #000080; font-weight: bold">index 80b011e..894e49a 100644</span>
<span style="color: #A00000">--- a/src/mod/applications/mod_voicemail/mod_voicemail.c</span>
<span style="color: #00A000">+++ b/src/mod/applications/mod_voicemail/mod_voicemail.c</span>
<span style="color: #800080; font-weight: bold">@@ -1011,6 +1011,11 @@ typedef struct msg_cnt_callback msg_cnt_callback_t;</span>
static int message_count_callback(void *pArg, int argc, char **argv, char **columnNames)
{
        msg_cnt_callback_t *cbt = (msg_cnt_callback_t *) pArg;
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        if (argc < 3 || zstr(argv[0]) || zstr(argv[1]) || zstr(argv[2])) {</span>
<span style="color: #00A000">+                return -1;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
        if (atoi(argv[0]) == 1) {        /* UnRead */
                if (!strcasecmp(argv[1], "A_URGENT")) {        /* Urgent */
                        cbt->total_new_urgent_messages = atoi(argv[2]);
<span style="color: #800080; font-weight: bold">@@ -1263,7 +1268,7 @@ static void message_count(vm_profile_t *profile, const char *id_in, const char *</span>
{
        char msg_count[80] = "";
        msg_cnt_callback_t cbt = { 0 };
<span style="color: #A00000">-        char sql[256];</span>
<span style="color: #00A000">+        char *sql;</span>
        char *myid = NULL;
<span style="color: #800080; font-weight: bold">@@ -1277,11 +1282,20 @@ static void message_count(vm_profile_t *profile, const char *id_in, const char *</span>
        myid = resolve_id(id_in, domain_name, "message-count");
<span style="color: #A00000">-        switch_snprintf(sql, sizeof(sql),</span>
<span style="color: #A00000">-                                        "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;",</span>
<span style="color: #A00000">-                                        myid, domain_name, myfolder);</span>
<span style="color: #00A000">+        sql = switch_mprintf(</span>
<span style="color: #00A000">+                                                 "select 1, read_flags, count(read_epoch) from voicemail_msgs where "</span>
<span style="color: #00A000">+                                                 "username='%q' and domain='%q' and in_folder='%q' and read_epoch=0 "</span>
<span style="color: #00A000">+                                                 "group by read_flags "</span>
<span style="color: #00A000">+                                                 "union "</span>
<span style="color: #00A000">+                                                 "select 0, read_flags, count(read_epoch) from voicemail_msgs where "</span>
<span style="color: #00A000">+                                                 "username='%q' and domain='%q' and in_folder='%q' and read_epoch<>0 "</span>
<span style="color: #00A000">+                                                 "group by read_flags;",</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                                                 myid, domain_name, myfolder,</span>
<span style="color: #00A000">+                                                 myid, domain_name, myfolder);</span>
        vm_execute_sql_callback(profile, profile->mutex, sql, message_count_callback, &cbt);
<span style="color: #00A000">+        free(sql);</span>
        *total_new_messages = cbt.total_new_messages + cbt.total_new_urgent_messages;
        *total_new_urgent_messages = cbt.total_new_urgent_messages;
</pre></div>
<div class="highlight"><pre>committer: Anthony Minessale
comments:
3 regresions from this now, rolling it back
<span style="color: #000080; font-weight: bold">diff --git a/src/mod/applications/mod_voicemail/mod_voicemail.c b/src/mod/applications/mod_voicemail/mod_voicemail.c</span>
<span style="color: #000080; font-weight: bold">index bea8214..80b011e 100644</span>
<span style="color: #A00000">--- a/src/mod/applications/mod_voicemail/mod_voicemail.c</span>
<span style="color: #00A000">+++ b/src/mod/applications/mod_voicemail/mod_voicemail.c</span>
<span style="color: #800080; font-weight: bold">@@ -1277,13 +1277,9 @@ static void message_count(vm_profile_t *profile, const char *id_in, const char *</span>
        myid = resolve_id(id_in, domain_name, "message-count");
<span style="color: #A00000">-        switch_snprintf(sql, sizeof(sql), "select 1, read_flags, count(read_epoch) from voicemail_msgs where "</span>
<span style="color: #A00000">-                                        "username='%s' and domain='%s' and in_folder='%s' "</span>
<span style="color: #A00000">-                                        "and read_epoch=0 group by read_flags union select 0, read_flags, count(read_epoch) from voicemail_msgs where username='%s' "</span>
<span style="color: #A00000">-                                        "and domain='%s' and in_folder='%s' and read_epoch<>0 group by read_flags;", </span>
<span style="color: #A00000">-                                        myid, domain_name, myfolder, myid, domain_name, myfolder);</span>
<span style="color: #A00000">-                                        </span>
<span style="color: #A00000">-                                 </span>
<span style="color: #00A000">+        switch_snprintf(sql, sizeof(sql),</span>
<span style="color: #00A000">+                                        "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;",</span>
<span style="color: #00A000">+                                        myid, domain_name, myfolder);</span>
        vm_execute_sql_callback(profile, profile->mutex, sql, message_count_callback, &cbt);
</pre></div>
========================================================================<pre>
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(-)
</pre>
<p>this email was generated because of /git/your-repo.git/hooks/post-receive by the file /git-core/contrib/hooks/post-receive-email<br />
For more info, see <a href="http://blog.chomperstomp.com/?p=630">http://blog.chomperstomp.com/?p=630</a>
-- <br />
FreeSWITCH Source</p>