<h1>Project "FreeSWITCH Source" received a push.</h1>

<h2>branch: master updated</h2>
<pre>
       via: f398dc1f3a0d387837572f76810ec22b484955fb (commit)
      from: 2044a749cf131d4765078212883f17af19cff57b (commit)


</pre>= COMMIT LOG ===========================================================
<div class="highlight"><pre>committer: Anthony Minessale
comments: 
fix issue reported from mailing list and not JIRA =/

<span style="color: #000080; font-weight: bold">diff --git a/src/mod/endpoints/mod_dingaling/mod_dingaling.c b/src/mod/endpoints/mod_dingaling/mod_dingaling.c</span>
<span style="color: #000080; font-weight: bold">index f9f0788..7cd9e56 100644</span>
<span style="color: #A00000">--- a/src/mod/endpoints/mod_dingaling/mod_dingaling.c</span>
<span style="color: #00A000">+++ b/src/mod/endpoints/mod_dingaling/mod_dingaling.c</span>
<span style="color: #800080; font-weight: bold">@@ -77,6 +77,7 @@ typedef enum {</span>
         TFLAG_TERM = (1 &lt;&lt; 20),
         TFLAG_TRANSPORT_ACCEPT = (1 &lt;&lt; 21),
         TFLAG_READY = (1 &lt;&lt; 22),
<span style="color: #00A000">+        TFLAG_NAT_MAP = (1 &lt;&lt; 22)</span>
 } TFLAGS;
 
 typedef enum {
<span style="color: #800080; font-weight: bold">@@ -158,6 +159,7 @@ struct private_object {</span>
         ldl_session_t *dlsession;
         char *remote_ip;
         switch_port_t local_port;
<span style="color: #00A000">+        switch_port_t adv_local_port;</span>
         switch_port_t remote_port;
         char local_user[17];
         char local_pass[17];
<span style="color: #800080; font-weight: bold">@@ -886,11 +888,22 @@ static int activate_rtp(struct private_object *tech_pvt)</span>
         if (globals.auto_nat &amp;&amp; tech_pvt-&gt;profile-&gt;local_network &amp;&amp; !switch_check_network_list_ip(tech_pvt-&gt;remote_ip, tech_pvt-&gt;profile-&gt;local_network)) {
                 switch_port_t external_port = 0;
                 switch_nat_add_mapping((switch_port_t) tech_pvt-&gt;local_port, SWITCH_NAT_UDP, &amp;external_port, SWITCH_FALSE);
<span style="color: #A00000">-                tech_pvt-&gt;local_port = external_port;</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                if (external_port) {</span>
<span style="color: #00A000">+                        tech_pvt-&gt;adv_local_port = external_port;</span>
<span style="color: #00A000">+                        switch_set_flag(tech_pvt, TFLAG_NAT_MAP);</span>
<span style="color: #00A000">+                } else {</span>
<span style="color: #00A000">+                        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, &quot;NAT mapping returned 0. Run freeswitch with -nonat since it&#39;s not working right.\n&quot;);</span>
<span style="color: #00A000">+                }</span>
         }
 
<span style="color: #A00000">-        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt-&gt;session), SWITCH_LOG_DEBUG, &quot;SETUP RTP %s:%d -&gt; %s:%d\n&quot;, tech_pvt-&gt;profile-&gt;ip,</span>
<span style="color: #A00000">-                                          tech_pvt-&gt;local_port, tech_pvt-&gt;remote_ip, tech_pvt-&gt;remote_port);</span>
<span style="color: #00A000">+        if (tech_pvt-&gt;adv_local_port != tech_pvt-&gt;local_port) {</span>
<span style="color: #00A000">+                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt-&gt;session), SWITCH_LOG_DEBUG, &quot;SETUP RTP %s:%d(%d) -&gt; %s:%d\n&quot;, tech_pvt-&gt;profile-&gt;ip,</span>
<span style="color: #00A000">+                                                  tech_pvt-&gt;local_port, tech_pvt-&gt;adv_local_port, tech_pvt-&gt;remote_ip, tech_pvt-&gt;remote_port);</span>
<span style="color: #00A000">+        } else {</span>
<span style="color: #00A000">+                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt-&gt;session), SWITCH_LOG_DEBUG, &quot;SETUP RTP %s:%d -&gt; %s:%d\n&quot;, tech_pvt-&gt;profile-&gt;ip,</span>
<span style="color: #00A000">+                                                  tech_pvt-&gt;local_port, tech_pvt-&gt;remote_ip, tech_pvt-&gt;remote_port);</span>
<span style="color: #00A000">+        }</span>
 
         flags = SWITCH_RTP_FLAG_DATAWAIT | SWITCH_RTP_FLAG_GOOGLEHACK | SWITCH_RTP_FLAG_AUTOADJ | SWITCH_RTP_FLAG_RAW_WRITE | SWITCH_RTP_FLAG_AUTO_CNG;
 
<span style="color: #800080; font-weight: bold">@@ -964,7 +977,7 @@ static int do_candidates(struct private_object *tech_pvt, int force)</span>
                 }
 
 
<span style="color: #A00000">-                cand[0].port = tech_pvt-&gt;local_port;</span>
<span style="color: #00A000">+                cand[0].port = tech_pvt-&gt;adv_local_port;</span>
                 cand[0].address = advip;
 
                 if (!strncasecmp(advip, &quot;stun:&quot;, 5)) {
<span style="color: #800080; font-weight: bold">@@ -1253,9 +1266,9 @@ static switch_status_t channel_on_destroy(switch_core_session_t *session)</span>
                         tech_pvt-&gt;rtp_session = NULL;
                 }
 
<span style="color: #A00000">-                if (globals.auto_nat &amp;&amp; tech_pvt-&gt;profile-&gt;local_network &amp;&amp; tech_pvt-&gt;remote_ip &amp;&amp; tech_pvt-&gt;profile-&gt;local_network &amp;&amp;</span>
<span style="color: #A00000">-                        !switch_check_network_list_ip(tech_pvt-&gt;remote_ip, tech_pvt-&gt;profile-&gt;local_network)) {</span>
<span style="color: #A00000">-                        switch_nat_del_mapping((switch_port_t) tech_pvt-&gt;local_port, SWITCH_NAT_UDP);</span>
<span style="color: #00A000">+                if (switch_test_flag(tech_pvt, TFLAG_NAT_MAP)) {</span>
<span style="color: #00A000">+                        switch_nat_del_mapping((switch_port_t) tech_pvt-&gt;adv_local_port, SWITCH_NAT_UDP);</span>
<span style="color: #00A000">+                        switch_clear_flag(tech_pvt, TFLAG_NAT_MAP);</span>
                 }
 
                 if (switch_core_codec_ready(&amp;tech_pvt-&gt;read_codec)) {
<span style="color: #800080; font-weight: bold">@@ -1751,6 +1764,7 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi</span>
                                 terminate_session(new_session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
                                 return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
                         }
<span style="color: #00A000">+                        tech_pvt-&gt;adv_local_port = tech_pvt-&gt;local_port;</span>
                         tech_pvt-&gt;recip = switch_core_session_strdup(*new_session, full_id);
                         if (dnis) {
                                 tech_pvt-&gt;dnis = switch_core_session_strdup(*new_session, dnis);
<span style="color: #800080; font-weight: bold">@@ -2992,6 +3006,7 @@ static ldl_status handle_signalling(ldl_handle_t *handle, ldl_session_t *dlsessi</span>
                                         status = LDL_STATUS_FALSE;
                                         goto done;
                                 }
<span style="color: #00A000">+                                tech_pvt-&gt;adv_local_port = tech_pvt-&gt;local_port;</span>
                                 switch_set_flag_locked(tech_pvt, TFLAG_ANSWER);
                                 tech_pvt-&gt;recip = switch_core_session_strdup(session, from);
                                 if (!(exten = ldl_session_get_value(dlsession, &quot;dnis&quot;))) {
<span style="color: #000080; font-weight: bold">diff --git a/src/switch_core_io.c b/src/switch_core_io.c</span>
<span style="color: #000080; font-weight: bold">index 4e1c707..d79c550 100644</span>
<span style="color: #A00000">--- a/src/switch_core_io.c</span>
<span style="color: #00A000">+++ b/src/switch_core_io.c</span>
<span style="color: #800080; font-weight: bold">@@ -360,10 +360,12 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_sessi</span>
                                         }
                                 
                                         if (session-&gt;plc) {
<span style="color: #A00000">-                                                if (switch_test_flag(read_frame, SFF_PLC)) {</span>
<span style="color: #00A000">+                                                if (switch_test_flag(read_frame, SFF_PLC) || 1) {</span>
                                                         plc_fillin(session-&gt;plc, session-&gt;raw_read_frame.data, session-&gt;raw_read_frame.datalen / 2);
                                                         switch_clear_flag(read_frame, SFF_PLC);
<span style="color: #00A000">+                                                        printf(&quot;SHIT %d %s\n&quot;, switch_test_flag(read_frame, SFF_CNG), switch_core_session_get_name(session));</span>
                                                 } else {
<span style="color: #00A000">+                                                        printf(&quot;ASS\n&quot;);</span>
                                                         plc_rx(session-&gt;plc, session-&gt;raw_read_frame.data, session-&gt;raw_read_frame.datalen / 2);
                                                 }
                                         }
<span style="color: #000080; font-weight: bold">diff --git a/src/switch_ivr_bridge.c b/src/switch_ivr_bridge.c</span>
<span style="color: #000080; font-weight: bold">index 88c72bf..61ddc9e 100644</span>
<span style="color: #A00000">--- a/src/switch_ivr_bridge.c</span>
<span style="color: #00A000">+++ b/src/switch_ivr_bridge.c</span>
<span style="color: #800080; font-weight: bold">@@ -477,6 +477,7 @@ static void *audio_bridge_thread(switch_thread_t *thread, void *obj)</span>
                 if (SWITCH_READ_ACCEPTABLE(status)) {
                         read_frame_count++;
                         if (switch_test_flag(read_frame, SFF_CNG)) {
<span style="color: #00A000">+                                printf(&quot;FUCK YOU %s\n&quot;, switch_channel_get_name(chan_a));</span>
                                 if (silence_val) {
                                         switch_generate_sln_silence((int16_t *) silence_frame.data, silence_frame.samples, silence_val);
                                         read_frame = &amp;silence_frame;
</pre></div>
========================================================================<pre>

Summary of changes:
 src/mod/endpoints/mod_dingaling/mod_dingaling.c |   29 +++++++++++++++++-----
 src/switch_core_io.c                            |    4 ++-
 src/switch_ivr_bridge.c                         |    1 +
 3 files changed, 26 insertions(+), 8 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>