<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[Freeswitch-trunk][17414] </title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<div id="header">FreeSWITCH Subversion</div>
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://fisheye.freeswitch.org/changelog/FreeSWITCH?cs=17414">17414</a></dd>
<dt>Author</dt> <dd>dyatsin</dd>
<dt>Date</dt> <dd>2010-04-23 16:35:21 -0500 (Fri, 23 Apr 2010)</dd>
</dl>
<h3>Log Message</h3>
<pre>Merge branch 'master' of git@git.freeswitch.org:freeswitch</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#freeswitchtrunkFreeswitch2008expresssln">freeswitch/trunk/Freeswitch.2008.express.sln</a></li>
<li><a href="#freeswitchtrunkfreeswitchspec">freeswitch/trunk/freeswitch.spec</a></li>
<li><a href="#freeswitchtrunklibsfreetdmsrcftmodftmod_sangoma_boostftmod_sangoma_boostc">freeswitch/trunk/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.c</a></li>
<li><a href="#freeswitchtrunklibsfreetdmsrcincludeftdm_typesh">freeswitch/trunk/libs/freetdm/src/include/ftdm_types.h</a></li>
<li><a href="#freeswitchtrunksrcmodcodecsmod_mp4vMakefile">freeswitch/trunk/src/mod/codecs/mod_mp4v/Makefile</a></li>
<li><a href="#freeswitchtrunksrcmodcodecsmod_mp4vmod_mp4vc">freeswitch/trunk/src/mod/codecs/mod_mp4v/mod_mp4v.c</a></li>
<li><a href="#freeswitchtrunksrcmodendpointsmod_sofiamod_sofiac">freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c</a></li>
<li><a href="#freeswitchtrunksrcmodendpointsmod_sofiasofia_gluec">freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c</a></li>
<li><a href="#freeswitchtrunksrcmodevent_handlersmod_json_cdrmod_json_cdr2008vcproj">freeswitch/trunk/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.2008.vcproj</a></li>
<li><a href="#freeswitchtrunksrcmodevent_handlersmod_json_cdrmod_json_cdrc">freeswitch/trunk/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c</a></li>
<li><a href="#freeswitchtrunksrcmodlanguagesmod_managedfreeswitch_wrapcxx">freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx</a></li>
<li><a href="#freeswitchtrunksrcmodlanguagesmod_managedmanagedswigcs">freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs</a></li>
<li><a href="#freeswitchtrunksrcswitch_channelc">freeswitch/trunk/src/switch_channel.c</a></li>
<li><a href="#freeswitchtrunksrcswitch_ivr_originatec">freeswitch/trunk/src/switch_ivr_originate.c</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="freeswitchtrunkFreeswitch2008expresssln"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/Freeswitch.2008.express.sln (17413 => 17414)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/Freeswitch.2008.express.sln        2010-04-23 21:34:57 UTC (rev 17413)
+++ freeswitch/trunk/Freeswitch.2008.express.sln        2010-04-23 21:35:21 UTC (rev 17414)
</span><span class="lines">@@ -613,6 +613,24 @@
</span><span class="cx">                 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
</span><span class="cx">         EndProjectSection
</span><span class="cx"> EndProject
</span><ins>+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download JSON", "libs\win32\Download JSON.2008.vcproj", "{B808178B-82F0-4CF4-A2B1-921939FA24D0}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libjson", "libs\win32\json\libjson.2008.vcproj", "{9778F1C0-09BC-4698-8EBC-BD982247209A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_curl", "src\mod\applications\mod_curl\mod_curl.2008.vcproj", "{EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}"
+        ProjectSection(ProjectDependencies) = postProject
+                {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+                {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}
+                {9778F1C0-09BC-4698-8EBC-BD982247209A} = {9778F1C0-09BC-4698-8EBC-BD982247209A}
+        EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_json_cdr", "src\mod\event_handlers\mod_json_cdr\mod_json_cdr.2008.vcproj", "{EBE7452D-B3F7-4798-8EED-A0DDE2D738F5}"
+        ProjectSection(ProjectDependencies) = postProject
+                {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+                {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}
+                {9778F1C0-09BC-4698-8EBC-BD982247209A} = {9778F1C0-09BC-4698-8EBC-BD982247209A}
+        EndProjectSection
+EndProject
</ins><span class="cx"> Global
</span><span class="cx">         GlobalSection(SolutionConfigurationPlatforms) = preSolution
</span><span class="cx">                 All|Win32 = All|Win32
</span><span class="lines">@@ -1602,7 +1620,6 @@
</span><span class="cx">                 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|Win32.Build.0 = Release|Win32
</span><span class="cx">                 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|x64.ActiveCfg = Release|Win32
</span><span class="cx">                 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32
</span><del>-                {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|Win32.Build.0 = Debug|Win32
</del><span class="cx">                 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|x64.ActiveCfg = Debug|Win32
</span><span class="cx">                 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|x64.Build.0 = Debug|Win32
</span><span class="cx">                 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|Win32.ActiveCfg = Release|Win32
</span><span class="lines">@@ -2002,6 +2019,31 @@
</span><span class="cx">                 {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|Win32.Build.0 = Release|Win32
</span><span class="cx">                 {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|x64.ActiveCfg = Release|x64
</span><span class="cx">                 {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|x64.Build.0 = Release|x64
</span><ins>+                {B808178B-82F0-4CF4-A2B1-921939FA24D0}.All|Win32.ActiveCfg = Release|Win32
+                {B808178B-82F0-4CF4-A2B1-921939FA24D0}.All|x64.ActiveCfg = Release|Win32
+                {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|Win32.ActiveCfg = Debug|Win32
+                {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|Win32.Build.0 = Debug|Win32
+                {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|x64.ActiveCfg = Debug|Win32
+                {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Release|Win32.ActiveCfg = Release|Win32
+                {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Release|x64.ActiveCfg = Release|Win32
+                {9778F1C0-09BC-4698-8EBC-BD982247209A}.All|Win32.ActiveCfg = Release|Win32
+                {9778F1C0-09BC-4698-8EBC-BD982247209A}.All|x64.ActiveCfg = Release|Win32
+                {9778F1C0-09BC-4698-8EBC-BD982247209A}.Debug|Win32.ActiveCfg = Debug|Win32
+                {9778F1C0-09BC-4698-8EBC-BD982247209A}.Debug|x64.ActiveCfg = Debug|Win32
+                {9778F1C0-09BC-4698-8EBC-BD982247209A}.Release|Win32.ActiveCfg = Release|Win32
+                {9778F1C0-09BC-4698-8EBC-BD982247209A}.Release|x64.ActiveCfg = Release|Win32
+                {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.All|Win32.ActiveCfg = Release|Win32
+                {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.All|x64.ActiveCfg = Release|Win32
+                {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Debug|Win32.ActiveCfg = Debug|Win32
+                {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Debug|x64.ActiveCfg = Debug|Win32
+                {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Release|Win32.ActiveCfg = Release|Win32
+                {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Release|x64.ActiveCfg = Release|Win32
+                {EBE7452D-B3F7-4798-8EED-A0DDE2D738F5}.All|Win32.ActiveCfg = Release|Win32
+                {EBE7452D-B3F7-4798-8EED-A0DDE2D738F5}.All|x64.ActiveCfg = Release|Win32
+                {EBE7452D-B3F7-4798-8EED-A0DDE2D738F5}.Debug|Win32.ActiveCfg = Debug|Win32
+                {EBE7452D-B3F7-4798-8EED-A0DDE2D738F5}.Debug|x64.ActiveCfg = Debug|Win32
+                {EBE7452D-B3F7-4798-8EED-A0DDE2D738F5}.Release|Win32.ActiveCfg = Release|Win32
+                {EBE7452D-B3F7-4798-8EED-A0DDE2D738F5}.Release|x64.ActiveCfg = Release|Win32
</ins><span class="cx">         EndGlobalSection
</span><span class="cx">         GlobalSection(SolutionProperties) = preSolution
</span><span class="cx">                 HideSolutionNode = FALSE
</span></span></pre></div>
<a id="freeswitchtrunkfreeswitchspec"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/freeswitch.spec (17413 => 17414)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/freeswitch.spec        2010-04-23 21:34:57 UTC (rev 17413)
+++ freeswitch/trunk/freeswitch.spec        2010-04-23 21:35:21 UTC (rev 17414)
</span><span class="lines">@@ -9,8 +9,8 @@
</span><span class="cx"> Summary: FreeSWITCH open source telephony platform
</span><span class="cx"> License: MPL
</span><span class="cx"> Group: Productivity/Telephony/Servers
</span><del>-Version: 1.0.4
-Release: 1
</del><ins>+Version: 1.0.7
+Release: trunk
</ins><span class="cx"> URL: http://www.freeswitch.org/
</span><span class="cx"> Packager:         Michal Bielicki
</span><span class="cx"> Vendor:         http://www.freeswitch.org/
</span><span class="lines">@@ -355,6 +355,7 @@
</span><span class="cx"> %dir %attr(0750, freeswitch, daemon) %{prefix}/conf
</span><span class="cx"> %dir %attr(0750, freeswitch, daemon) %{prefix}/conf/autoload_configs
</span><span class="cx"> %dir %attr(0750, freeswitch, daemon) %{prefix}/conf/dialplan
</span><ins>+%dir %attr(0750, freeswitch, daemon) %{prefix}/conf/dialplan/skinny-patterns
</ins><span class="cx"> %dir %attr(0750, freeswitch, daemon) %{prefix}/conf/directory
</span><span class="cx"> %dir %attr(0750, freeswitch, daemon) %{prefix}/conf/directory/default
</span><span class="cx"> %dir %attr(0750, freeswitch, daemon) %{prefix}/conf/lang
</span><span class="lines">@@ -430,6 +431,7 @@
</span><span class="cx"> %config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/dialplan/*.xml
</span><span class="cx"> %config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/dialplan/default/*.xml
</span><span class="cx"> %config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/dialplan/public/*.xml
</span><ins>+%config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/dialplan/skinny-patterns
</ins><span class="cx"> %config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/directory/*.xml
</span><span class="cx"> %config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/directory/default/*
</span><span class="cx"> %config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/ivr_menus/*.xml
</span><span class="lines">@@ -614,6 +616,9 @@
</span><span class="cx"> %config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/lang/ru/dir/*.xml
</span><span class="cx">
</span><span class="cx"> %changelog
</span><ins>+* Fr Apr 23 2010 - michal.bielicki@seventhsignal.de
+- bumped spec file vrersion up to 1.0.7-trunk for trunk
+- added skinny dialplan stuff to specfile
</ins><span class="cx"> * Sun Mar 28 2010 - michal.bielicki@seventhsignal.de
</span><span class="cx"> - added sangoma codec config file
</span><span class="cx"> * Wed Dec 02 2009 - michal.bielicki@seventhsignal.de
</span></span></pre></div>
<a id="freeswitchtrunklibsfreetdmsrcftmodftmod_sangoma_boostftmod_sangoma_boostc"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.c (17413 => 17414)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.c        2010-04-23 21:34:57 UTC (rev 17413)
+++ freeswitch/trunk/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.c        2010-04-23 21:35:21 UTC (rev 17414)
</span><span class="lines">@@ -617,9 +617,6 @@
</span><span class="cx">                 return;
</span><span class="cx">         }
</span><span class="cx">
</span><del>-        OUTBOUND_REQUESTS[event->call_setup_id].event = *event;
-        SETUP_GRID[event->span][event->chan] = event->call_setup_id;
-
</del><span class="cx">         if (mcon->sigmod) {
</span><span class="cx">                 ftdmchan = OUTBOUND_REQUESTS[event->call_setup_id].ftdmchan;
</span><span class="cx">         } else {
</span><span class="lines">@@ -1011,8 +1008,8 @@
</span><span class="cx">                         } else if (ftdmchan->state == FTDM_CHANNEL_STATE_HANGUP || ftdm_test_sflag(ftdmchan, SFLAG_HANGUP)) {
</span><span class="cx">                                 ftdm_log(FTDM_LOG_CRIT, "s%dc%d:FTDMCHAN STATE HANGUP -> Changed to HANGUP COMPLETE\n", BOOST_EVENT_SPAN(mcon->sigmod, event), BOOST_EVENT_CHAN(mcon->sigmod, event));
</span><span class="cx">                                 ftdm_set_state_r(ftdmchan, FTDM_CHANNEL_STATE_HANGUP_COMPLETE, 0, r);
</span><del>- } else if (ftdmchan->state == FTDM_CHANNEL_STATE_DIALING) {
- ftdm_log(FTDM_LOG_WARNING, "s%dc%d:Collision, hanging up incoming call\n", BOOST_EVENT_SPAN(mcon->sigmod, event), BOOST_EVENT_CHAN(mcon->sigmod, event));
</del><ins>+                        } else if (ftdmchan->state == FTDM_CHANNEL_STATE_DIALING) {
+                 ftdm_log(FTDM_LOG_WARNING, "s%dc%d:Collision, hanging up incoming call\n", BOOST_EVENT_SPAN(mcon->sigmod, event), BOOST_EVENT_CHAN(mcon->sigmod, event));
</ins><span class="cx">                                 ftdm_set_state_r(ftdmchan, FTDM_CHANNEL_STATE_TERMINATING, 0, r);
</span><span class="cx">                         } else {
</span><span class="cx">                                 ftdm_log(FTDM_LOG_CRIT, "s%dc%d:FTDMCHAN STATE INVALID %s on IN CALL\n", BOOST_EVENT_SPAN(mcon->sigmod, event), BOOST_EVENT_CHAN(mcon->sigmod, event), ftdm_channel_state2str(ftdmchan->state));
</span><span class="lines">@@ -1312,6 +1309,8 @@
</span><span class="cx">                 if (event->call_setup_id) {
</span><span class="cx">                         nack_map[event->call_setup_id] = 0;
</span><span class="cx">                         release_request_id(event->call_setup_id);
</span><ins>+                } else {
+                        handle_call_done(span, mcon, event);
</ins><span class="cx">                 }
</span><span class="cx">                 break;
</span><span class="cx"> case SIGBOOST_EVENT_INSERT_CHECK_LOOP:
</span><span class="lines">@@ -1921,13 +1920,17 @@
</span><span class="cx">
</span><span class="cx"> static void ftdm_cli_span_state_cmd(ftdm_span_t *span, char *state)
</span><span class="cx"> {
</span><del>-        unsigned j;
</del><ins>+        unsigned int j;
</ins><span class="cx">         int cnt=0;
</span><ins>+        ftdm_channel_state_t state_e = ftdm_str2ftdm_channel_state(state);
+        if (state_e == FTDM_CHANNEL_STATE_INVALID) {
+                ftdm_log(FTDM_LOG_CRIT, "Checking for channels not in the INVALID state is probably not waht you want\n");
+        }
</ins><span class="cx">         for(j = 1; j <= span->chan_count; j++) {
</span><del>-                if (span->channels[j]->state != FTDM_CHANNEL_STATE_DOWN) {
</del><ins>+                if (span->channels[j]->state != state_e) {
</ins><span class="cx">                         ftdm_channel_t *ftdmchan = span->channels[j];
</span><span class="cx">                         ftdm_log(FTDM_LOG_CRIT, "Channel %i s%dc%d State=%s\n",
</span><del>-                                j,ftdmchan->physical_span_id-1,ftdmchan->physical_chan_id-1,ftdm_channel_state2str(ftdmchan->state));
</del><ins>+                                j, ftdmchan->physical_span_id-1, ftdmchan->physical_chan_id-1, ftdm_channel_state2str(ftdmchan->state));
</ins><span class="cx">                         cnt++;
</span><span class="cx">                 }
</span><span class="cx">         }
</span></span></pre></div>
<a id="freeswitchtrunklibsfreetdmsrcincludeftdm_typesh"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/freetdm/src/include/ftdm_types.h (17413 => 17414)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/freetdm/src/include/ftdm_types.h        2010-04-23 21:34:57 UTC (rev 17413)
+++ freeswitch/trunk/libs/freetdm/src/include/ftdm_types.h        2010-04-23 21:35:21 UTC (rev 17414)
</span><span class="lines">@@ -383,7 +383,8 @@
</span><span class="cx"> } ftdm_channel_state_t;
</span><span class="cx"> #define CHANNEL_STATE_STRINGS "DOWN", "HOLD", "SUSPENDED", "DIALTONE", "COLLECT", \
</span><span class="cx">                 "RING", "BUSY", "ATTN", "GENRING", "DIALING", "GET_CALLERID", "CALLWAITING", \
</span><del>-                "RESTART", "PROGRESS", "PROGRESS_MEDIA", "UP", "IDLE", "TERMINATING", "CANCEL", "HANGUP", "HANGUP_COMPLETE", "INVALID"
</del><ins>+                "RESTART", "PROGRESS", "PROGRESS_MEDIA", "UP", "IDLE", "TERMINATING", "CANCEL", \
+                "HANGUP", "HANGUP_COMPLETE", "IN_LOOP", "INVALID"
</ins><span class="cx"> FTDM_STR2ENUM_P(ftdm_str2ftdm_channel_state, ftdm_channel_state2str, ftdm_channel_state_t)
</span><span class="cx">
</span><span class="cx"> typedef enum {
</span></span></pre></div>
<a id="freeswitchtrunksrcmodcodecsmod_mp4vMakefile"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/src/mod/codecs/mod_mp4v/Makefile ( => )</h4>
<pre class="diff"><span>
<span class="info">
Modified: freeswitch/trunk/src/mod/codecs/mod_mp4v/mod_mp4v.c
</span><span class="cx">===================================================================
</span></span></pre></div>
<a id="freeswitchtrunksrcmodendpointsmod_sofiamod_sofiac"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c (17413 => 17414)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c        2010-04-23 21:34:57 UTC (rev 17413)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c        2010-04-23 21:35:21 UTC (rev 17414)
</span><span class="lines">@@ -160,22 +160,29 @@
</span><span class="cx">
</span><span class="cx">
</span><span class="cx">         if (sofia_test_flag(tech_pvt, TFLAG_RECOVERING_BRIDGE)) {
</span><del>-                switch_core_session_t *other_session;
</del><ins>+                switch_core_session_t *other_session = NULL;
</ins><span class="cx">                 const char *uuid = switch_core_session_get_uuid(session);
</span><span class="cx">
</span><span class="cx">                 if (switch_channel_test_flag(channel, CF_BRIDGE_ORIGINATOR)) {
</span><span class="cx">                         const char *other_uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE);
</span><ins>+                        int x = 0;
</ins><span class="cx">
</span><del>-                        if (other_uuid && (other_session = switch_core_session_locate(other_uuid))) {
</del><ins>+                        if (other_uuid) {
+                                for(x = 0; other_session == NULL && x < 5; x++) {
+                                        other_session = switch_core_session_locate(other_uuid);
+                                        switch_yield(100000);
+                                }
+                        }
+
+                        if (other_session) {
</ins><span class="cx">                                 switch_channel_t *other_channel = switch_core_session_get_channel(other_session);
</span><del>-
</del><span class="cx">                                 switch_channel_clear_flag(channel, CF_BRIDGE_ORIGINATOR);
</span><span class="cx">                                 switch_channel_wait_for_state_timeout(other_channel, CS_RESET, 5000);
</span><span class="cx">                                 switch_channel_wait_for_flag(channel, CF_REQ_MEDIA, SWITCH_FALSE, 10000, NULL);
</span><span class="cx">                                 switch_channel_wait_for_flag(channel, CF_MEDIA_ACK, SWITCH_TRUE, 10000, NULL);
</span><span class="cx">                                 switch_channel_wait_for_flag(other_channel, CF_REQ_MEDIA, SWITCH_FALSE, 10000, NULL);
</span><span class="cx">                                 switch_channel_wait_for_flag(other_channel, CF_MEDIA_ACK, SWITCH_TRUE, 10000, NULL);
</span><del>-
</del><ins>+                                
</ins><span class="cx">                                 if (switch_channel_test_flag(channel, CF_PROXY_MODE) && switch_channel_test_flag(other_channel, CF_PROXY_MODE)) {
</span><span class="cx">                                         switch_ivr_signal_bridge(session, other_session);
</span><span class="cx">                                 } else {
</span></span></pre></div>
<a id="freeswitchtrunksrcmodendpointsmod_sofiasofia_gluec"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c (17413 => 17414)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c        2010-04-23 21:34:57 UTC (rev 17413)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c        2010-04-23 21:35:21 UTC (rev 17414)
</span><span class="lines">@@ -3571,6 +3571,18 @@
</span><span class="cx">                                         match = 0;
</span><span class="cx">                                         got_audio = 0;
</span><span class="cx">                                 }
</span><ins>+                                
+                                for (map = m->m_rtpmaps; map; map = map->rm_next) {
+                                        if ((zstr(map->rm_encoding) || (tech_pvt->profile->ndlb & PFLAG_NDLB_ALLOW_BAD_IANANAME)) && map->rm_pt < 96) {
+                                                match = (map->rm_pt == tech_pvt->agreed_pt) ? 1 : 0;
+                                        } else {
+                                                match = strcasecmp(map->rm_encoding, tech_pvt->rm_encoding) ? 0 : 1;
+                                        }                                        
+                                }
+
+                                if (match) {
+                                        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Existing codec is already acceptable, using that.\n");
+                                }
</ins><span class="cx">                         }
</span><span class="cx">
</span><span class="cx">                         for (map = m->m_rtpmaps; map; map = map->rm_next) {
</span><span class="lines">@@ -4247,7 +4259,7 @@
</span><span class="cx">                         }
</span><span class="cx">
</span><span class="cx">                         if ((tmp = switch_channel_get_variable(channel, "sip_use_pt"))) {
</span><del>-                                tech_pvt->agreed_pt = atoi(tmp);
</del><ins>+                                tech_pvt->pt = tech_pvt->agreed_pt = atoi(tmp);
</ins><span class="cx">                         }
</span><span class="cx">
</span><span class="cx">                         sofia_glue_tech_set_codec(tech_pvt, 1);
</span></span></pre></div>
<a id="freeswitchtrunksrcmodevent_handlersmod_json_cdrmod_json_cdr2008vcproj"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.2008.vcproj (17413 => 17414)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.2008.vcproj        2010-04-23 21:34:57 UTC (rev 17413)
+++ freeswitch/trunk/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.2008.vcproj        2010-04-23 21:35:21 UTC (rev 17414)
</span><span class="lines">@@ -104,7 +104,7 @@
</span><span class="cx">                         />
</span><span class="cx">                         <Tool
</span><span class="cx">                                 Name="VCCLCompilerTool"
</span><del>-                                AdditionalIncludeDirectories=""
</del><ins>+                                AdditionalIncludeDirectories="&quot;$(InputDir)..\..\..\..\libs\json-c-0.9&quot;"
</ins><span class="cx">                                 UsePrecompiledHeader="0"
</span><span class="cx">                         />
</span><span class="cx">                         <Tool
</span></span></pre></div>
<a id="freeswitchtrunksrcmodevent_handlersmod_json_cdrmod_json_cdrc"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c (17413 => 17414)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c        2010-04-23 21:34:57 UTC (rev 17413)
+++ freeswitch/trunk/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c        2010-04-23 21:35:21 UTC (rev 17414)
</span><span class="lines">@@ -178,7 +178,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> #define JSON_ENSURE_SUCCESS(obj) if (is_error(obj)) { return; }
</span><del>-SWITCH_DECLARE(void) set_json_profile_data(struct json_object *json, switch_caller_profile_t *caller_profile)
</del><ins>+static void set_json_profile_data(struct json_object *json, switch_caller_profile_t *caller_profile)
</ins><span class="cx"> {
</span><span class="cx">         struct json_object *param = NULL;
</span><span class="cx">
</span><span class="lines">@@ -236,7 +236,7 @@
</span><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><del>-SWITCH_DECLARE(void) set_json_chan_vars(struct json_object *json, switch_channel_t *channel)
</del><ins>+static void set_json_chan_vars(struct json_object *json, switch_channel_t *channel)
</ins><span class="cx"> {
</span><span class="cx">         struct json_object *variable = NULL;
</span><span class="cx">         switch_event_header_t *hi = switch_channel_variable_first(channel);
</span><span class="lines">@@ -268,7 +268,7 @@
</span><span class="cx">
</span><span class="cx">
</span><span class="cx">
</span><del>-SWITCH_DECLARE(switch_status_t) generate_json_cdr(switch_core_session_t *session, struct json_object **json_cdr)
</del><ins>+static switch_status_t generate_json_cdr(switch_core_session_t *session, struct json_object **json_cdr)
</ins><span class="cx"> {
</span><span class="cx">
</span><span class="cx">         struct json_object *cdr = json_object_new_object();
</span></span></pre></div>
<a id="freeswitchtrunksrcmodlanguagesmod_managedfreeswitch_wrapcxx"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx (17413 => 17414)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx        2010-04-23 21:34:57 UTC (rev 17413)
+++ freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx        2010-04-23 21:35:21 UTC (rev 17414)
</span><span class="lines">@@ -3244,6 +3244,140 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx">
</span><ins>+SWIGEXPORT void SWIGSTDCALL CSharp_switch_rtcp_hdr_t_version_set(void * jarg1, unsigned int jarg2) {
+ switch_rtcp_hdr_t *arg1 = (switch_rtcp_hdr_t *) 0 ;
+ unsigned int arg2 ;
+
+ arg1 = (switch_rtcp_hdr_t *)jarg1;
+ arg2 = (unsigned int)jarg2;
+ if (arg1) (arg1)->version = arg2;
+
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_switch_rtcp_hdr_t_version_get(void * jarg1) {
+ unsigned int jresult ;
+ switch_rtcp_hdr_t *arg1 = (switch_rtcp_hdr_t *) 0 ;
+ unsigned int result;
+
+ arg1 = (switch_rtcp_hdr_t *)jarg1;
+ result = (unsigned int) ((arg1)->version);
+ jresult = result;
+ return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_rtcp_hdr_t_p_set(void * jarg1, unsigned int jarg2) {
+ switch_rtcp_hdr_t *arg1 = (switch_rtcp_hdr_t *) 0 ;
+ unsigned int arg2 ;
+
+ arg1 = (switch_rtcp_hdr_t *)jarg1;
+ arg2 = (unsigned int)jarg2;
+ if (arg1) (arg1)->p = arg2;
+
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_switch_rtcp_hdr_t_p_get(void * jarg1) {
+ unsigned int jresult ;
+ switch_rtcp_hdr_t *arg1 = (switch_rtcp_hdr_t *) 0 ;
+ unsigned int result;
+
+ arg1 = (switch_rtcp_hdr_t *)jarg1;
+ result = (unsigned int) ((arg1)->p);
+ jresult = result;
+ return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_rtcp_hdr_t_count_set(void * jarg1, unsigned int jarg2) {
+ switch_rtcp_hdr_t *arg1 = (switch_rtcp_hdr_t *) 0 ;
+ unsigned int arg2 ;
+
+ arg1 = (switch_rtcp_hdr_t *)jarg1;
+ arg2 = (unsigned int)jarg2;
+ if (arg1) (arg1)->count = arg2;
+
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_switch_rtcp_hdr_t_count_get(void * jarg1) {
+ unsigned int jresult ;
+ switch_rtcp_hdr_t *arg1 = (switch_rtcp_hdr_t *) 0 ;
+ unsigned int result;
+
+ arg1 = (switch_rtcp_hdr_t *)jarg1;
+ result = (unsigned int) ((arg1)->count);
+ jresult = result;
+ return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_rtcp_hdr_t_type_set(void * jarg1, unsigned int jarg2) {
+ switch_rtcp_hdr_t *arg1 = (switch_rtcp_hdr_t *) 0 ;
+ unsigned int arg2 ;
+
+ arg1 = (switch_rtcp_hdr_t *)jarg1;
+ arg2 = (unsigned int)jarg2;
+ if (arg1) (arg1)->type = arg2;
+
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_switch_rtcp_hdr_t_type_get(void * jarg1) {
+ unsigned int jresult ;
+ switch_rtcp_hdr_t *arg1 = (switch_rtcp_hdr_t *) 0 ;
+ unsigned int result;
+
+ arg1 = (switch_rtcp_hdr_t *)jarg1;
+ result = (unsigned int) ((arg1)->type);
+ jresult = result;
+ return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_rtcp_hdr_t_length_set(void * jarg1, unsigned int jarg2) {
+ switch_rtcp_hdr_t *arg1 = (switch_rtcp_hdr_t *) 0 ;
+ unsigned int arg2 ;
+
+ arg1 = (switch_rtcp_hdr_t *)jarg1;
+ arg2 = (unsigned int)jarg2;
+ if (arg1) (arg1)->length = arg2;
+
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_switch_rtcp_hdr_t_length_get(void * jarg1) {
+ unsigned int jresult ;
+ switch_rtcp_hdr_t *arg1 = (switch_rtcp_hdr_t *) 0 ;
+ unsigned int result;
+
+ arg1 = (switch_rtcp_hdr_t *)jarg1;
+ result = (unsigned int) ((arg1)->length);
+ jresult = result;
+ return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_switch_rtcp_hdr_t() {
+ void * jresult ;
+ switch_rtcp_hdr_t *result = 0 ;
+
+ result = (switch_rtcp_hdr_t *)new switch_rtcp_hdr_t();
+ jresult = (void *)result;
+ return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_switch_rtcp_hdr_t(void * jarg1) {
+ switch_rtcp_hdr_t *arg1 = (switch_rtcp_hdr_t *) 0 ;
+
+ arg1 = (switch_rtcp_hdr_t *)jarg1;
+ delete arg1;
+
+}
+
+
</ins><span class="cx"> SWIGEXPORT void SWIGSTDCALL CSharp_switch_t38_options_t_T38MaxBitRate_set(void * jarg1, unsigned long jarg2) {
</span><span class="cx"> switch_t38_options_t *arg1 = (switch_t38_options_t *) 0 ;
</span><span class="cx"> uint32_t arg2 ;
</span><span class="lines">@@ -25900,6 +26034,17 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx">
</span><ins>+SWIGEXPORT int SWIGSTDCALL CSharp_SWITCH_RTCP_MAX_BUF_LEN_get() {
+ int jresult ;
+ int result;
+
+ result = (int) 16384;
+
+ jresult = result;
+ return jresult;
+}
+
+
</ins><span class="cx"> SWIGEXPORT int SWIGSTDCALL CSharp_SWITCH_RTP_MAX_CRYPTO_LEN_get() {
</span><span class="cx"> int jresult ;
</span><span class="cx"> int result;
</span><span class="lines">@@ -26288,21 +26433,23 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx">
</span><del>-SWIGEXPORT int SWIGSTDCALL CSharp_switch_rtp_set_remote_address(void * jarg1, char * jarg2, unsigned short jarg3, int jarg4, void * jarg5) {
</del><ins>+SWIGEXPORT int SWIGSTDCALL CSharp_switch_rtp_set_remote_address(void * jarg1, char * jarg2, unsigned short jarg3, unsigned short jarg4, int jarg5, void * jarg6) {
</ins><span class="cx"> int jresult ;
</span><span class="cx"> switch_rtp_t *arg1 = (switch_rtp_t *) 0 ;
</span><span class="cx"> char *arg2 = (char *) 0 ;
</span><span class="cx"> switch_port_t arg3 ;
</span><del>- switch_bool_t arg4 ;
- char **arg5 = (char **) 0 ;
</del><ins>+ switch_port_t arg4 ;
+ switch_bool_t arg5 ;
+ char **arg6 = (char **) 0 ;
</ins><span class="cx"> switch_status_t result;
</span><span class="cx">
</span><span class="cx"> arg1 = (switch_rtp_t *)jarg1;
</span><span class="cx"> arg2 = (char *)jarg2;
</span><span class="cx"> arg3 = (switch_port_t)jarg3;
</span><del>- arg4 = (switch_bool_t)jarg4;
- arg5 = (char **)jarg5;
- result = (switch_status_t)switch_rtp_set_remote_address(arg1,(char const *)arg2,arg3,arg4,(char const **)arg5);
</del><ins>+ arg4 = (switch_port_t)jarg4;
+ arg5 = (switch_bool_t)jarg5;
+ arg6 = (char **)jarg6;
+ result = (switch_status_t)switch_rtp_set_remote_address(arg1,(char const *)arg2,arg3,arg4,arg5,(char const **)arg6);
</ins><span class="cx"> jresult = result;
</span><span class="cx"> return jresult;
</span><span class="cx"> }
</span><span class="lines">@@ -26420,6 +26567,22 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx">
</span><ins>+SWIGEXPORT int SWIGSTDCALL CSharp_switch_rtp_activate_rtcp(void * jarg1, int jarg2, unsigned short jarg3) {
+ int jresult ;
+ switch_rtp_t *arg1 = (switch_rtp_t *) 0 ;
+ int arg2 ;
+ switch_port_t arg3 ;
+ switch_status_t result;
+
+ arg1 = (switch_rtp_t *)jarg1;
+ arg2 = (int)jarg2;
+ arg3 = (switch_port_t)jarg3;
+ result = (switch_status_t)switch_rtp_activate_rtcp(arg1,arg2,arg3);
+ jresult = result;
+ return jresult;
+}
+
+
</ins><span class="cx"> SWIGEXPORT int SWIGSTDCALL CSharp_switch_rtp_activate_jitter_buffer(void * jarg1, unsigned long jarg2) {
</span><span class="cx"> int jresult ;
</span><span class="cx"> switch_rtp_t *arg1 = (switch_rtp_t *) 0 ;
</span><span class="lines">@@ -26638,6 +26801,20 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx">
</span><ins>+SWIGEXPORT int SWIGSTDCALL CSharp_switch_rtcp_zerocopy_read_frame(void * jarg1, void * jarg2) {
+ int jresult ;
+ switch_rtp_t *arg1 = (switch_rtp_t *) 0 ;
+ switch_rtcp_frame_t *arg2 = (switch_rtcp_frame_t *) 0 ;
+ switch_status_t result;
+
+ arg1 = (switch_rtp_t *)jarg1;
+ arg2 = (switch_rtcp_frame_t *)jarg2;
+ result = (switch_status_t)switch_rtcp_zerocopy_read_frame(arg1,arg2);
+ jresult = result;
+ return jresult;
+}
+
+
</ins><span class="cx"> SWIGEXPORT void SWIGSTDCALL CSharp_rtp_flush_read_buffer(void * jarg1, int jarg2) {
</span><span class="cx"> switch_rtp_t *arg1 = (switch_rtp_t *) 0 ;
</span><span class="cx"> switch_rtp_flush_t arg2 ;
</span></span></pre></div>
<a id="freeswitchtrunksrcmodlanguagesmod_managedmanagedswigcs"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs (17413 => 17414)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs        2010-04-23 21:34:57 UTC (rev 17413)
+++ freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs        2010-04-23 21:35:21 UTC (rev 17414)
</span><span class="lines">@@ -4056,8 +4056,8 @@
</span><span class="cx"> return ret;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- public static switch_status_t switch_rtp_set_remote_address(SWIGTYPE_p_switch_rtp rtp_session, string host, ushort port, switch_bool_t change_adv_addr, ref string err) {
- switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_rtp_set_remote_address(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session), host, port, (int)change_adv_addr, ref err);
</del><ins>+ public static switch_status_t switch_rtp_set_remote_address(SWIGTYPE_p_switch_rtp rtp_session, string host, ushort port, ushort remote_rtcp_port, switch_bool_t change_adv_addr, ref string err) {
+ switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_rtp_set_remote_address(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session), host, port, remote_rtcp_port, (int)change_adv_addr, ref err);
</ins><span class="cx"> return ret;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -4106,6 +4106,11 @@
</span><span class="cx"> return ret;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+ public static switch_status_t switch_rtp_activate_rtcp(SWIGTYPE_p_switch_rtp rtp_session, int send_rate, ushort remote_port) {
+ switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_rtp_activate_rtcp(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session), send_rate, remote_port);
+ return ret;
+ }
+
</ins><span class="cx"> public static switch_status_t switch_rtp_activate_jitter_buffer(SWIGTYPE_p_switch_rtp rtp_session, uint queue_frames) {
</span><span class="cx"> switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_rtp_activate_jitter_buffer(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session), queue_frames);
</span><span class="cx"> return ret;
</span><span class="lines">@@ -4183,6 +4188,11 @@
</span><span class="cx"> return ret;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+ public static switch_status_t switch_rtcp_zerocopy_read_frame(SWIGTYPE_p_switch_rtp rtp_session, SWIGTYPE_p_switch_rtcp_frame frame) {
+ switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_rtcp_zerocopy_read_frame(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session), SWIGTYPE_p_switch_rtcp_frame.getCPtr(frame));
+ return ret;
+ }
+
</ins><span class="cx"> public static void rtp_flush_read_buffer(SWIGTYPE_p_switch_rtp rtp_session, switch_rtp_flush_t flush) {
</span><span class="cx"> freeswitchPINVOKE.rtp_flush_read_buffer(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session), (int)flush);
</span><span class="cx"> }
</span><span class="lines">@@ -4914,6 +4924,7 @@
</span><span class="cx"> public static readonly int SWITCH_SMIN = freeswitchPINVOKE.SWITCH_SMIN_get();
</span><span class="cx"> public static readonly int SWITCH_RESAMPLE_QUALITY = freeswitchPINVOKE.SWITCH_RESAMPLE_QUALITY_get();
</span><span class="cx"> public static readonly int SWITCH_RTP_MAX_BUF_LEN = freeswitchPINVOKE.SWITCH_RTP_MAX_BUF_LEN_get();
</span><ins>+ public static readonly int SWITCH_RTCP_MAX_BUF_LEN = freeswitchPINVOKE.SWITCH_RTCP_MAX_BUF_LEN_get();
</ins><span class="cx"> public static readonly int SWITCH_RTP_MAX_CRYPTO_LEN = freeswitchPINVOKE.SWITCH_RTP_MAX_CRYPTO_LEN_get();
</span><span class="cx"> public static readonly int SWITCH_RTP_KEY_LEN = freeswitchPINVOKE.SWITCH_RTP_KEY_LEN_get();
</span><span class="cx"> public static readonly string SWITCH_RTP_CRYPTO_KEY_32 = freeswitchPINVOKE.SWITCH_RTP_CRYPTO_KEY_32_get();
</span><span class="lines">@@ -5866,6 +5877,42 @@
</span><span class="cx"> [DllImport("mod_managed", EntryPoint="CSharp_delete_switch_rtp_hdr_t")]
</span><span class="cx"> public static extern void delete_switch_rtp_hdr_t(HandleRef jarg1);
</span><span class="cx">
</span><ins>+ [DllImport("mod_managed", EntryPoint="CSharp_switch_rtcp_hdr_t_version_set")]
+ public static extern void switch_rtcp_hdr_t_version_set(HandleRef jarg1, uint jarg2);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_rtcp_hdr_t_version_get")]
+ public static extern uint switch_rtcp_hdr_t_version_get(HandleRef jarg1);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_rtcp_hdr_t_p_set")]
+ public static extern void switch_rtcp_hdr_t_p_set(HandleRef jarg1, uint jarg2);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_rtcp_hdr_t_p_get")]
+ public static extern uint switch_rtcp_hdr_t_p_get(HandleRef jarg1);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_rtcp_hdr_t_count_set")]
+ public static extern void switch_rtcp_hdr_t_count_set(HandleRef jarg1, uint jarg2);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_rtcp_hdr_t_count_get")]
+ public static extern uint switch_rtcp_hdr_t_count_get(HandleRef jarg1);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_rtcp_hdr_t_type_set")]
+ public static extern void switch_rtcp_hdr_t_type_set(HandleRef jarg1, uint jarg2);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_rtcp_hdr_t_type_get")]
+ public static extern uint switch_rtcp_hdr_t_type_get(HandleRef jarg1);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_rtcp_hdr_t_length_set")]
+ public static extern void switch_rtcp_hdr_t_length_set(HandleRef jarg1, uint jarg2);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_rtcp_hdr_t_length_get")]
+ public static extern uint switch_rtcp_hdr_t_length_get(HandleRef jarg1);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_new_switch_rtcp_hdr_t")]
+ public static extern IntPtr new_switch_rtcp_hdr_t();
+
+ [DllImport("mod_managed", EntryPoint="CSharp_delete_switch_rtcp_hdr_t")]
+ public static extern void delete_switch_rtcp_hdr_t(HandleRef jarg1);
+
</ins><span class="cx"> [DllImport("mod_managed", EntryPoint="CSharp_switch_t38_options_t_T38MaxBitRate_set")]
</span><span class="cx"> public static extern void switch_t38_options_t_T38MaxBitRate_set(HandleRef jarg1, uint jarg2);
</span><span class="cx">
</span><span class="lines">@@ -11152,6 +11199,9 @@
</span><span class="cx"> [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_RTP_MAX_BUF_LEN_get")]
</span><span class="cx"> public static extern int SWITCH_RTP_MAX_BUF_LEN_get();
</span><span class="cx">
</span><ins>+ [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_RTCP_MAX_BUF_LEN_get")]
+ public static extern int SWITCH_RTCP_MAX_BUF_LEN_get();
+
</ins><span class="cx"> [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_RTP_MAX_CRYPTO_LEN_get")]
</span><span class="cx"> public static extern int SWITCH_RTP_MAX_CRYPTO_LEN_get();
</span><span class="cx">
</span><span class="lines">@@ -11240,7 +11290,7 @@
</span><span class="cx"> public static extern IntPtr switch_rtp_new(string jarg1, ushort jarg2, string jarg3, ushort jarg4, byte jarg5, uint jarg6, uint jarg7, uint jarg8, string jarg9, ref string jarg10, HandleRef jarg11);
</span><span class="cx">
</span><span class="cx"> [DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_set_remote_address")]
</span><del>- public static extern int switch_rtp_set_remote_address(HandleRef jarg1, string jarg2, ushort jarg3, int jarg4, ref string jarg5);
</del><ins>+ public static extern int switch_rtp_set_remote_address(HandleRef jarg1, string jarg2, ushort jarg3, ushort jarg4, int jarg5, ref string jarg6);
</ins><span class="cx">
</span><span class="cx"> [DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_get_remote_host")]
</span><span class="cx"> public static extern string switch_rtp_get_remote_host(HandleRef jarg1);
</span><span class="lines">@@ -11272,6 +11322,9 @@
</span><span class="cx"> [DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_activate_ice")]
</span><span class="cx"> public static extern int switch_rtp_activate_ice(HandleRef jarg1, string jarg2, string jarg3);
</span><span class="cx">
</span><ins>+ [DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_activate_rtcp")]
+ public static extern int switch_rtp_activate_rtcp(HandleRef jarg1, int jarg2, ushort jarg3);
+
</ins><span class="cx"> [DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_activate_jitter_buffer")]
</span><span class="cx"> public static extern int switch_rtp_activate_jitter_buffer(HandleRef jarg1, uint jarg2);
</span><span class="cx">
</span><span class="lines">@@ -11320,6 +11373,9 @@
</span><span class="cx"> [DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_zerocopy_read_frame")]
</span><span class="cx"> public static extern int switch_rtp_zerocopy_read_frame(HandleRef jarg1, HandleRef jarg2, uint jarg3);
</span><span class="cx">
</span><ins>+ [DllImport("mod_managed", EntryPoint="CSharp_switch_rtcp_zerocopy_read_frame")]
+ public static extern int switch_rtcp_zerocopy_read_frame(HandleRef jarg1, HandleRef jarg2);
+
</ins><span class="cx"> [DllImport("mod_managed", EntryPoint="CSharp_rtp_flush_read_buffer")]
</span><span class="cx"> public static extern void rtp_flush_read_buffer(HandleRef jarg1, int jarg2);
</span><span class="cx">
</span><span class="lines">@@ -16855,6 +16911,36 @@
</span><span class="cx"> using System;
</span><span class="cx"> using System.Runtime.InteropServices;
</span><span class="cx">
</span><ins>+public class SWIGTYPE_p_switch_rtcp_frame {
+ private HandleRef swigCPtr;
+
+ internal SWIGTYPE_p_switch_rtcp_frame(IntPtr cPtr, bool futureUse) {
+ swigCPtr = new HandleRef(this, cPtr);
+ }
+
+ protected SWIGTYPE_p_switch_rtcp_frame() {
+ swigCPtr = new HandleRef(null, IntPtr.Zero);
+ }
+
+ internal static HandleRef getCPtr(SWIGTYPE_p_switch_rtcp_frame obj) {
+ return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr;
+ }
+}
+
+}
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.35
+ *
+ * Do not make changes to this file unless you know what you are doing--modify
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+namespace FreeSWITCH.Native {
+
+using System;
+using System.Runtime.InteropServices;
+
</ins><span class="cx"> public class SWIGTYPE_p_switch_rtp {
</span><span class="cx"> private HandleRef swigCPtr;
</span><span class="cx">
</span><span class="lines">@@ -21473,6 +21559,7 @@
</span><span class="cx"> SWITCH_MESSAGE_INDICATE_PROXY_MEDIA,
</span><span class="cx"> SWITCH_MESSAGE_INDICATE_APPLICATION_EXEC,
</span><span class="cx"> SWITCH_MESSAGE_INDICATE_APPLICATION_EXEC_COMPLETE,
</span><ins>+ SWITCH_MESSAGE_INDICATE_PHONE_EVENT,
</ins><span class="cx"> SWITCH_MESSAGE_INVALID
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -22861,6 +22948,7 @@
</span><span class="cx"> SWITCH_EVENT_SERVER_DISCONNECTED,
</span><span class="cx"> SWITCH_EVENT_SEND_INFO,
</span><span class="cx"> SWITCH_EVENT_RECV_INFO,
</span><ins>+ SWITCH_EVENT_RECV_RTCP_MESSAGE,
</ins><span class="cx"> SWITCH_EVENT_CALL_SECURE,
</span><span class="cx"> SWITCH_EVENT_NAT,
</span><span class="cx"> SWITCH_EVENT_RECORD_START,
</span><span class="lines">@@ -25770,6 +25858,103 @@
</span><span class="cx">
</span><span class="cx"> namespace FreeSWITCH.Native {
</span><span class="cx">
</span><ins>+using System;
+using System.Runtime.InteropServices;
+
+public class switch_rtcp_hdr_t : IDisposable {
+ private HandleRef swigCPtr;
+ protected bool swigCMemOwn;
+
+ internal switch_rtcp_hdr_t(IntPtr cPtr, bool cMemoryOwn) {
+ swigCMemOwn = cMemoryOwn;
+ swigCPtr = new HandleRef(this, cPtr);
+ }
+
+ internal static HandleRef getCPtr(switch_rtcp_hdr_t obj) {
+ return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr;
+ }
+
+ ~switch_rtcp_hdr_t() {
+ Dispose();
+ }
+
+ public virtual void Dispose() {
+ lock(this) {
+ if(swigCPtr.Handle != IntPtr.Zero && swigCMemOwn) {
+ swigCMemOwn = false;
+ freeswitchPINVOKE.delete_switch_rtcp_hdr_t(swigCPtr);
+ }
+ swigCPtr = new HandleRef(null, IntPtr.Zero);
+ GC.SuppressFinalize(this);
+ }
+ }
+
+ public uint version {
+ set {
+ freeswitchPINVOKE.switch_rtcp_hdr_t_version_set(swigCPtr, value);
+ }
+ get {
+ uint ret = freeswitchPINVOKE.switch_rtcp_hdr_t_version_get(swigCPtr);
+ return ret;
+ }
+ }
+
+ public uint p {
+ set {
+ freeswitchPINVOKE.switch_rtcp_hdr_t_p_set(swigCPtr, value);
+ }
+ get {
+ uint ret = freeswitchPINVOKE.switch_rtcp_hdr_t_p_get(swigCPtr);
+ return ret;
+ }
+ }
+
+ public uint count {
+ set {
+ freeswitchPINVOKE.switch_rtcp_hdr_t_count_set(swigCPtr, value);
+ }
+ get {
+ uint ret = freeswitchPINVOKE.switch_rtcp_hdr_t_count_get(swigCPtr);
+ return ret;
+ }
+ }
+
+ public uint type {
+ set {
+ freeswitchPINVOKE.switch_rtcp_hdr_t_type_set(swigCPtr, value);
+ }
+ get {
+ uint ret = freeswitchPINVOKE.switch_rtcp_hdr_t_type_get(swigCPtr);
+ return ret;
+ }
+ }
+
+ public uint length {
+ set {
+ freeswitchPINVOKE.switch_rtcp_hdr_t_length_set(swigCPtr, value);
+ }
+ get {
+ uint ret = freeswitchPINVOKE.switch_rtcp_hdr_t_length_get(swigCPtr);
+ return ret;
+ }
+ }
+
+ public switch_rtcp_hdr_t() : this(freeswitchPINVOKE.new_switch_rtcp_hdr_t(), true) {
+ }
+
+}
+
+}
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.35
+ *
+ * Do not make changes to this file unless you know what you are doing--modify
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+namespace FreeSWITCH.Native {
+
</ins><span class="cx"> public enum switch_rtp_bug_flag_t {
</span><span class="cx"> RTP_BUG_NONE = 0,
</span><span class="cx"> RTP_BUG_CISCO_SKIP_MARK_BIT_2833 = (1 << 0),
</span><span class="lines">@@ -25953,7 +26138,9 @@
</span><span class="cx"> SWITCH_ZRTP_FLAG_SECURE_MITM_RECV = (1 << 26),
</span><span class="cx"> SWITCH_RTP_FLAG_DEBUG_RTP_READ = (1 << 27),
</span><span class="cx"> SWITCH_RTP_FLAG_DEBUG_RTP_WRITE = (1 << 28),
</span><del>- SWITCH_RTP_FLAG_VIDEO = (1 << 29)
</del><ins>+ SWITCH_RTP_FLAG_VIDEO = (1 << 29),
+ SWITCH_RTP_FLAG_ENABLE_RTCP = (1 << 30),
+ SWITCH_RTP_FLAG_RTCP_PASSTHRU = (1 << 31)
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> }
</span></span></pre></div>
<a id="freeswitchtrunksrcswitch_channelc"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/src/switch_channel.c (17413 => 17414)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/src/switch_channel.c        2010-04-23 21:34:57 UTC (rev 17413)
+++ freeswitch/trunk/src/switch_channel.c        2010-04-23 21:35:21 UTC (rev 17414)
</span><span class="lines">@@ -2108,6 +2108,11 @@
</span><span class="cx">                 switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_channel_get_uuid(channel), SWITCH_LOG_NOTICE, "Hangup %s [%s] [%s]\n",
</span><span class="cx">                                                  channel->name, state_names[last_state], switch_channel_cause2str(channel->hangup_cause));
</span><span class="cx">
</span><ins>+
+                if (!switch_core_session_running(channel->session)) {
+                        switch_core_session_thread_launch(channel->session);
+                }
+
</ins><span class="cx">                 if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_HANGUP) == SWITCH_STATUS_SUCCESS) {
</span><span class="cx">                         switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Hangup-Cause", switch_channel_cause2str(hangup_cause));
</span><span class="cx">                         switch_channel_event_set_data(channel, event);
</span></span></pre></div>
<a id="freeswitchtrunksrcswitch_ivr_originatec"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/src/switch_ivr_originate.c (17413 => 17414)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/src/switch_ivr_originate.c        2010-04-23 21:34:57 UTC (rev 17413)
+++ freeswitch/trunk/src/switch_ivr_originate.c        2010-04-23 21:35:21 UTC (rev 17414)
</span><span class="lines">@@ -1366,6 +1366,9 @@
</span><span class="cx">                 int argc;
</span><span class="cx">                 char *argv[256];
</span><span class="cx">
</span><ins>+                switch_event_del_header(var_event, SWITCH_EXPORT_VARS_VARIABLE);
+                switch_event_add_header_string(var_event, SWITCH_STACK_BOTTOM, SWITCH_EXPORT_VARS_VARIABLE, export_vars);
+
</ins><span class="cx">                 if ((argc = switch_separate_string(cptmp, ',', argv, (sizeof(argv) / sizeof(argv[0]))))) {
</span><span class="cx">                         int x;
</span><span class="cx">
</span></span></pre>
</div>
</div>
<div id="footer">See you at ClueCon</div>
</body>
</html>