Freeswitch-branches
Threads by month
- ----- 2026 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
November 2006
- 6 participants
- 116 discussions
Author: knhor
Date: Wed Nov 22 20:43:42 2006
New Revision: 3441
Modified:
freeswitch/branches/knhor/trunk/ (props changed)
freeswitch/branches/knhor/trunk/Freeswitch.sln
freeswitch/branches/knhor/trunk/conf/freeswitch.xml
freeswitch/branches/knhor/trunk/libs/libdingaling/.update
freeswitch/branches/knhor/trunk/libs/libdingaling/src/libdingaling.c
freeswitch/branches/knhor/trunk/libs/libdingaling/src/libdingaling.h
freeswitch/branches/knhor/trunk/libs/libteletone/src/libteletone_generate.c
freeswitch/branches/knhor/trunk/libs/libteletone/src/libteletone_generate.h
freeswitch/branches/knhor/trunk/libs/portaudio.build.sh
freeswitch/branches/knhor/trunk/libs/win32/Download SOFIA.vcproj
freeswitch/branches/knhor/trunk/libs/win32/js/js.vcproj
freeswitch/branches/knhor/trunk/libs/win32/sofia/libsofia_sip_ua_static.vcproj
freeswitch/branches/knhor/trunk/src/include/switch_apr.h
freeswitch/branches/knhor/trunk/src/include/switch_core.h
freeswitch/branches/knhor/trunk/src/mod/dialplans/mod_dialplan_directory/mod_dialplan_directory.c
freeswitch/branches/knhor/trunk/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c
freeswitch/branches/knhor/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c
freeswitch/branches/knhor/trunk/src/mod/endpoints/mod_sofia/Makefile
freeswitch/branches/knhor/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c
freeswitch/branches/knhor/trunk/src/mod/endpoints/mod_sofia/mod_sofia.vcproj
freeswitch/branches/knhor/trunk/src/mod/formats/mod_native_file/mod_native_file.c
freeswitch/branches/knhor/trunk/src/mod/languages/mod_perl/mod_perl.c
freeswitch/branches/knhor/trunk/src/mod/languages/mod_spidermonkey_core_db/ (props changed)
freeswitch/branches/knhor/trunk/src/mod/languages/mod_spidermonkey_skel/ (props changed)
freeswitch/branches/knhor/trunk/src/mod/languages/mod_spidermonkey_teletone/ (props changed)
freeswitch/branches/knhor/trunk/src/mod/languages/mod_spidermonkey_teletone/mod_spidermonkey_teletone.c
freeswitch/branches/knhor/trunk/src/switch.c
freeswitch/branches/knhor/trunk/src/switch_channel.c
freeswitch/branches/knhor/trunk/src/switch_core.c
freeswitch/branches/knhor/trunk/src/switch_ivr.c
freeswitch/branches/knhor/trunk/src/switch_log.c
freeswitch/branches/knhor/trunk/src/switch_rtp.c
freeswitch/branches/knhor/trunk/src/switch_swig.c
freeswitch/branches/knhor/trunk/w32/Library/FreeSwitchCore.vcproj
Log:
Merged revisions 3382-3440 via svnmerge from trunk
Modified: freeswitch/branches/knhor/trunk/Freeswitch.sln
==============================================================================
--- freeswitch/branches/knhor/trunk/Freeswitch.sln (original)
+++ freeswitch/branches/knhor/trunk/Freeswitch.sln Wed Nov 22 20:43:42 2006
@@ -3,21 +3,22 @@
# Visual Studio 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FreeSwitchConsole", "w32\Console\FreeSwitchConsole.vcproj", "{1AF3A893-F7BE-43DD-B697-8AB2397C0D67}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FreeSwitchCoreLib", "w32\Library\FreeSwitchCore.vcproj", "{202D7A4E-760D-4D0E-AFA1-D7459CED30FF}"
ProjectSection(ProjectDependencies) = postProject
{50AD0E28-B8D7-4FCC-8FC3-599F6AC69761} = {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}
- {8D04B550-D240-4A44-8A18-35DA3F7038D9} = {8D04B550-D240-4A44-8A18-35DA3F7038D9}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EEF031CB-FED8-451E-A471-91EC8D4F6750}
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {89385C74-5860-4174-9CAF-A39E7C48909C} = {89385C74-5860-4174-9CAF-A39E7C48909C}
{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EEF031CB-FED8-451E-A471-91EC8D4F6750}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {8D04B550-D240-4A44-8A18-35DA3F7038D9} = {8D04B550-D240-4A44-8A18-35DA3F7038D9}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g729", "src\mod\codecs\mod_g729\mod_g729.vcproj", "{1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}"
@@ -27,42 +28,42 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_gsm", "src\mod\codecs\mod_gsm\mod_gsm.vcproj", "{4926323F-4EA8-4B7D-A3D3-65488725988F}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
{8FD2E297-4096-47E5-9258-C48FF1841523} = {8FD2E297-4096-47E5-9258-C48FF1841523}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xmpp_event", "src\mod\event_handlers\mod_xmpp_event\mod_xmpp_event.vcproj", "{F10BE67C-A8FF-4CB2-AF29-D46D2590DC59}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
{E727E8F6-935D-46FE-8B0E-37834748A0E3} = {E727E8F6-935D-46FE-8B0E-37834748A0E3}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sndfile", "src\mod\formats\mod_sndfile\mod_sndfile.vcproj", "{AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {3D0370CA-BED2-4657-A475-32375CBCB6E4} = {3D0370CA-BED2-4657-A475-32375CBCB6E4}
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {3D0370CA-BED2-4657-A475-32375CBCB6E4} = {3D0370CA-BED2-4657-A475-32375CBCB6E4}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_bridgecall", "src\mod\applications\mod_bridgecall\mod_bridgecall.vcproj", "{E1794405-29D4-466D-9BE3-DD2344C2A663}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_event_test", "src\mod\event_handlers\mod_event_test\mod_event_test.vcproj", "{3A2A7795-C216-4FFF-B8EF-4D17A84BACCC}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g711", "src\mod\codecs\mod_g711\mod_g711.vcproj", "{B1FE4613-3F4B-4DAF-9714-2472BF8F56AE}"
@@ -72,28 +73,28 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_iax", "src\mod\endpoints\mod_iax\mod_iax.vcproj", "{3A5B9131-F20C-4A85-9447-6C1610941CEE}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E} = {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E} = {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_playback", "src\mod\applications\mod_playback\mod_playback.vcproj", "{78100236-7CEA-4948-96CC-E8ED3160329C}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_PortAudio", "src\mod\endpoints\mod_portaudio\mod_PortAudio.vcproj", "{5FD31A25-5D83-4794-8BEE-904DAD84CE71}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
{C30D35E4-7FC6-4E97-9BE5-4BC077BE0D4B} = {C30D35E4-7FC6-4E97-9BE5-4BC077BE0D4B}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_l16", "src\mod\codecs\mod_l16\mod_l16.vcproj", "{5844AFE1-AA3E-4BDB-A9EF-119AEF19DF88}"
@@ -103,24 +104,24 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_softtimer", "src\mod\timers\mod_softtimer\mod_softtimer.vcproj", "{DCC13474-28DF-47CA-A8EB-72F8CE9A78C5}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_speex", "src\mod\codecs\mod_speex\mod_speex.vcproj", "{5580D60E-0F77-4716-9CD4-B8E5986FA375}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
{1C469CDD-A3AF-4A94-A592-B2CF12F2D918} = {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_woomera", "src\mod\endpoints\mod_woomera\mod_woomera.vcproj", "{FE3540C5-3303-46E0-A69E-D92F775687F1}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Codecs", "Codecs", "{F881ADA2-2F1A-4046-9FEB-191D9422D781}"
@@ -143,19 +144,19 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dialplan_xml", "src\mod\dialplans\mod_dialplan_xml\mod_dialplan_xml.vcproj", "{07113B25-D3AF-4E04-BA77-4CD1171F022C}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {8D04B550-D240-4A44-8A18-35DA3F7038D9} = {8D04B550-D240-4A44-8A18-35DA3F7038D9}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {8D04B550-D240-4A44-8A18-35DA3F7038D9} = {8D04B550-D240-4A44-8A18-35DA3F7038D9}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_ivrtest", "src\mod\applications\mod_ivrtest\mod_ivrtest.vcproj", "{419AA391-5F3F-4BFE-A869-9D154D62A792}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "FreeSwitchSetup", "w32\Setup\Setup.vdproj", "{B17FFBE6-A942-4056-8346-B624FB5D995B}"
@@ -169,28 +170,28 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dialplan_directory", "src\mod\dialplans\mod_dialplan_directory\mod_dialplan_directory.vcproj", "{A27CCA23-1541-4337-81A4-F0A6413078A0}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_zeroconf", "src\mod\event_handlers\mod_zeroconf\mod_zeroconf.vcproj", "{C7705DC4-2088-493E-AF8D-65BC6D65C125}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {49C34584-B6DA-448F-83CF-27584DC9FC90} = {49C34584-B6DA-448F-83CF-27584DC9FC90}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
{0D826AF5-0506-4C50-BB8B-7DB019AC21AE} = {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {49C34584-B6DA-448F-83CF-27584DC9FC90} = {49C34584-B6DA-448F-83CF-27584DC9FC90}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_event_multicast", "src\mod\event_handlers\mod_event_multicast\mod_event_multicast.vcproj", "{784113EF-44D9-4949-835D-7065D3C7AD08}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libteletone", "libs\libteletone\libteletone.vcproj", "{89385C74-5860-4174-9CAF-A39E7C48909C}"
@@ -199,15 +200,15 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey", "src\mod\languages\mod_spidermonkey\mod_spidermonkey.vcproj", "{1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {76D0A759-9C07-42D4-90A9-82AE15462C95} = {76D0A759-9C07-42D4-90A9-82AE15462C95}
- {89385C74-5860-4174-9CAF-A39E7C48909C} = {89385C74-5860-4174-9CAF-A39E7C48909C}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
{204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}
+ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {89385C74-5860-4174-9CAF-A39E7C48909C} = {89385C74-5860-4174-9CAF-A39E7C48909C}
+ {76D0A759-9C07-42D4-90A9-82AE15462C95} = {76D0A759-9C07-42D4-90A9-82AE15462C95}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ASR-TTS", "ASR-TTS", "{4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}"
@@ -229,36 +230,36 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_echo", "src\mod\applications\mod_echo\mod_echo.vcproj", "{0E2C6395-13B9-46E5-9264-8859D346018D}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_ilbc", "src\mod\codecs\mod_ilbc\mod_ilbc.vcproj", "{D3EC0AFF-76FC-4210-A825-9A17410660A3}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
{989BB874-7AF1-44CB-8E5C-CC8113D267E8} = {989BB874-7AF1-44CB-8E5C-CC8113D267E8}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dingaling", "src\mod\endpoints\mod_dingaling\mod_dingaling.vcproj", "{FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}"
ProjectSection(ProjectDependencies) = postProject
- {1906D736-08BD-4EE1-924F-B536249B9A54} = {1906D736-08BD-4EE1-924F-B536249B9A54}
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
{E727E8F6-935D-46FE-8B0E-37834748A0E3} = {E727E8F6-935D-46FE-8B0E-37834748A0E3}
+ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {1906D736-08BD-4EE1-924F-B536249B9A54} = {1906D736-08BD-4EE1-924F-B536249B9A54}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_commands", "src\mod\applications\mod_commands\mod_commands.vcproj", "{30A5B29C-983E-4580-9FD0-D647CCDCC7EB}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Loggers", "Loggers", "{A7AB4405-FDB7-4853-9FBB-1516B1C3D80A}"
@@ -272,55 +273,55 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xml_rpc", "src\mod\xml_int\mod_xml_rpc\mod_xml_rpc.vcproj", "{CBEC7225-0C21-4DA8-978E-1F158F8AD950}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {356EC96D-4C9F-47B5-9083-FC328B87BA94} = {356EC96D-4C9F-47B5-9083-FC328B87BA94}
- {A3FE0076-B366-429D-A238-D7304DA7D3C1} = {A3FE0076-B366-429D-A238-D7304DA7D3C1}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}
- {155844C3-EC5F-407F-97A4-A2DDADED9B2F} = {155844C3-EC5F-407F-97A4-A2DDADED9B2F}
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {155844C3-EC5F-407F-97A4-A2DDADED9B2F} = {155844C3-EC5F-407F-97A4-A2DDADED9B2F}
+ {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {A3FE0076-B366-429D-A238-D7304DA7D3C1} = {A3FE0076-B366-429D-A238-D7304DA7D3C1}
+ {356EC96D-4C9F-47B5-9083-FC328B87BA94} = {356EC96D-4C9F-47B5-9083-FC328B87BA94}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_rss", "src\mod\applications\mod_rss\mod_rss.vcproj", "{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_conference", "src\mod\applications\mod_conference\mod_conference.vcproj", "{C24FB505-05D7-4319-8485-7540B44C8603}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dptools", "src\mod\applications\mod_dptools\mod_dptools.vcproj", "{B5881A85-FE70-4F64-8607-2CAAE52669C6}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_event_socket", "src\mod\event_handlers\mod_event_socket\mod_event_socket.vcproj", "{05515420-16DE-4E63-BE73-85BE85BA5142}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_cdr", "src\mod\event_handlers\mod_cdr\mod_cdr.vcproj", "{3D1EED36-A510-4EDB-B4D9-4E0F4A5EC2A8}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Libraries", "_Libraries", "{EB910B0D-F27D-4B62-B67B-DE834C99AC5B}"
@@ -345,8 +346,8 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpcre", "libs\win32\pcre\libpcre.vcproj", "{8D04B550-D240-4A44-8A18-35DA3F7038D9}"
ProjectSection(ProjectDependencies) = postProject
- {91695C7C-7AD1-4782-9727-508F82D9C577} = {91695C7C-7AD1-4782-9727-508F82D9C577}
{1CED5987-A529-46DC-B30F-870D85FF9C94} = {1CED5987-A529-46DC-B30F-870D85FF9C94}
+ {91695C7C-7AD1-4782-9727-508F82D9C577} = {91695C7C-7AD1-4782-9727-508F82D9C577}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpcre Generate pcre_chartables.c", "libs\win32\pcre\pcre_chartables.c.vcproj", "{1CED5987-A529-46DC-B30F-870D85FF9C94}"
@@ -363,18 +364,18 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libapriconv", "libs\win32\apr-iconv\libapriconv.vcproj", "{101130D1-3EA6-4ED2-B65D-CEB5243A20ED}"
ProjectSection(ProjectDependencies) = postProject
- {C4854C1D-5478-4F87-AB62-36CCDDDBA3C7} = {C4854C1D-5478-4F87-AB62-36CCDDDBA3C7}
- {5786D51D-1C6A-4BE1-8804-29954DB5258F} = {5786D51D-1C6A-4BE1-8804-29954DB5258F}
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {5786D51D-1C6A-4BE1-8804-29954DB5258F} = {5786D51D-1C6A-4BE1-8804-29954DB5258F}
+ {C4854C1D-5478-4F87-AB62-36CCDDDBA3C7} = {C4854C1D-5478-4F87-AB62-36CCDDDBA3C7}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libaprutil", "libs\win32\apr-util\libaprutil.vcproj", "{F057DA7F-79E5-4B00-845C-EF446EF055E3}"
ProjectSection(ProjectDependencies) = postProject
- {C4854C1D-5478-4F87-AB62-36CCDDDBA3C7} = {C4854C1D-5478-4F87-AB62-36CCDDDBA3C7}
- {5786D51D-1C6A-4BE1-8804-29954DB5258F} = {5786D51D-1C6A-4BE1-8804-29954DB5258F}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
{E969F3E0-1043-482A-AD49-787B8356BA92} = {E969F3E0-1043-482A-AD49-787B8356BA92}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {5786D51D-1C6A-4BE1-8804-29954DB5258F} = {5786D51D-1C6A-4BE1-8804-29954DB5258F}
+ {C4854C1D-5478-4F87-AB62-36CCDDDBA3C7} = {C4854C1D-5478-4F87-AB62-36CCDDDBA3C7}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Downloads", "_Downloads", "{C120A020-773F-4EA3-923F-B67AF28B750D}"
@@ -388,8 +389,8 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download APR-Util", "libs\win32\Download APR-Util.vcproj", "{E969F3E0-1043-482A-AD49-787B8356BA92}"
ProjectSection(ProjectDependencies) = postProject
- {C4854C1D-5478-4F87-AB62-36CCDDDBA3C7} = {C4854C1D-5478-4F87-AB62-36CCDDDBA3C7}
{5786D51D-1C6A-4BE1-8804-29954DB5258F} = {5786D51D-1C6A-4BE1-8804-29954DB5258F}
+ {C4854C1D-5478-4F87-AB62-36CCDDDBA3C7} = {C4854C1D-5478-4F87-AB62-36CCDDDBA3C7}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download PCRE", "libs\win32\Download PCRE.vcproj", "{91695C7C-7AD1-4782-9727-508F82D9C577}"
@@ -426,8 +427,8 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mDNSResponder static library", "libs\win32\howl\libmDNSResponder.vcproj", "{49C34584-B6DA-448F-83CF-27584DC9FC90}"
ProjectSection(ProjectDependencies) = postProject
- {5927104D-C14C-4AC8-925C-4AB681762E75} = {5927104D-C14C-4AC8-925C-4AB681762E75}
{0D826AF5-0506-4C50-BB8B-7DB019AC21AE} = {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}
+ {5927104D-C14C-4AC8-925C-4AB681762E75} = {5927104D-C14C-4AC8-925C-4AB681762E75}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download LIBSNDFILE", "libs\win32\Download LIBSNDFILE.vcproj", "{EFA9E76E-62A5-4237-B7E9-F39B8E174CD5}"
@@ -453,8 +454,8 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Abyss", "libs\win32\xmlrpc\Abyss.vcproj", "{356EC96D-4C9F-47B5-9083-FC328B87BA94}"
ProjectSection(ProjectDependencies) = postProject
- {A3FE0076-B366-429D-A238-D7304DA7D3C1} = {A3FE0076-B366-429D-A238-D7304DA7D3C1}
{EC8D4AE8-0F3E-454A-BFB8-D56A5D9C0121} = {EC8D4AE8-0F3E-454A-BFB8-D56A5D9C0121}
+ {A3FE0076-B366-429D-A238-D7304DA7D3C1} = {A3FE0076-B366-429D-A238-D7304DA7D3C1}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xml", "libs\win32\apr-util\xml.vcproj", "{155844C3-EC5F-407F-97A4-A2DDADED9B2F}"
@@ -468,58 +469,58 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "js", "libs\win32\js\js.vcproj", "{204FA0DE-305D-4414-AE2E-F195A23F390D}"
ProjectSection(ProjectDependencies) = postProject
- {76D0A759-9C07-42D4-90A9-82AE15462C95} = {76D0A759-9C07-42D4-90A9-82AE15462C95}
{B0AA13FC-636C-45A7-8EAE-663220679A75} = {B0AA13FC-636C-45A7-8EAE-663220679A75}
+ {76D0A759-9C07-42D4-90A9-82AE15462C95} = {76D0A759-9C07-42D4-90A9-82AE15462C95}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sofia", "src\mod\endpoints\mod_sofia\mod_sofia.vcproj", "{0DF3ABD0-DDC0-4265-B778-07C66780979B}"
ProjectSection(ProjectDependencies) = postProject
- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} = {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0} = {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0} = {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} = {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libg726", "libs\codec\g726\libg726.vcproj", "{5A6A281A-AA50-470A-8305-202BDA1CD1BF}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g726", "src\mod\codecs\mod_g726\mod_g726.vcproj", "{486369EB-F150-4B56-BCC8-77B9E18FF5F5}"
ProjectSection(ProjectDependencies) = postProject
- {5A6A281A-AA50-470A-8305-202BDA1CD1BF} = {5A6A281A-AA50-470A-8305-202BDA1CD1BF}
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {5A6A281A-AA50-470A-8305-202BDA1CD1BF} = {5A6A281A-AA50-470A-8305-202BDA1CD1BF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libg7xx", "libs\codec\g7xx\libg7xx.vcproj", "{D71E7338-8D9C-4FE4-A15F-D5CC60202C7C}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g722", "src\mod\codecs\mod_g722\mod_g722.vcproj", "{D42518CC-7475-454D-B392-0E132C07D761}"
ProjectSection(ProjectDependencies) = postProject
- {D71E7338-8D9C-4FE4-A15F-D5CC60202C7C} = {D71E7338-8D9C-4FE4-A15F-D5CC60202C7C}
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {D71E7338-8D9C-4FE4-A15F-D5CC60202C7C} = {D71E7338-8D9C-4FE4-A15F-D5CC60202C7C}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_park", "src\mod\applications\mod_park\mod_park.vcproj", "{2740F45C-475A-4DE0-BCED-6E2E5F6C4B8B}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download SOFIA", "libs\win32\Download SOFIA.vcproj", "{8B2CE7D1-77EF-45ED-927D-82147805440B}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsofia_sip_ua_static", "libs\win32\sofia\libsofia_sip_ua_static.vcproj", "{70A49BC2-7500-41D0-B75D-EDCC5BE987A0}"
ProjectSection(ProjectDependencies) = postProject
- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} = {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}
- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A} = {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}
{8B2CE7D1-77EF-45ED-927D-82147805440B} = {8B2CE7D1-77EF-45ED-927D-82147805440B}
+ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A} = {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}
+ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} = {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download PTHREAD", "libs\win32\Download PTHREAD.vcproj", "{8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}"
@@ -531,38 +532,38 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g723_1", "src\mod\codecs\mod_g723_1\mod_g723_1.vcproj", "{FEA1EEF7-876F-48DE-88BF-C0E3E606D758}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_native_file", "src\mod\formats\mod_native_file\mod_native_file.vcproj", "{9254C4B0-6F60-42B6-BB3A-36D63FC001C7}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FreeSwitch.NET", "src\dotnet\FreeSwitch.NET.csproj", "{251CAABC-16C3-4593-A491-603B908094E0}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_core_db", "src\mod\languages\mod_spidermonkey_core_db\mod_spidermonkey_core_db.vcproj", "{ACFFF684-4D19-4D48-AF12-88EA1D778BDF}"
ProjectSection(ProjectDependencies) = postProject
- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
{204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}
+ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_teletone", "src\mod\languages\mod_spidermonkey_teletone\mod_spidermonkey_teletone.vcproj", "{8F992C49-6C51-412F-B2A3-34EAB708EB65}"
ProjectSection(ProjectDependencies) = postProject
- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {89385C74-5860-4174-9CAF-A39E7C48909C} = {89385C74-5860-4174-9CAF-A39E7C48909C}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {89385C74-5860-4174-9CAF-A39E7C48909C} = {89385C74-5860-4174-9CAF-A39E7C48909C}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}
EndProjectSection
EndProject
Global
Modified: freeswitch/branches/knhor/trunk/conf/freeswitch.xml
==============================================================================
--- freeswitch/branches/knhor/trunk/conf/freeswitch.xml (original)
+++ freeswitch/branches/knhor/trunk/conf/freeswitch.xml Wed Nov 22 20:43:42 2006
@@ -8,6 +8,12 @@
<!--Most channels to allow at once -->
<param name="max-sessions" value="1000"/>
</settings>
+ <!--Any variables defined here will be available in every channel, in the dialplan etc -->
+ <variables>
+ <variable name="uk-ring" value="%(400,200,400,450);%(400,2200,400,450)"/>
+ <variable name="us-ring" value="%(2000, 4000, 440.0, 480.0)"/>
+ <variable name="bong-ring" value="v=4000;>=0;+=2;#(60,0);v=2000;%(940,0,350,440)"/>
+ </variables>
</configuration>
<configuration name="modules.conf" description="Modules">
@@ -429,6 +435,9 @@
<extension name="testmusic">
<condition field="destination_number" expression="^1234$">
+ <!-- Request a certain tone/file to be played while you wait for the call to be answered-->
+ <action application="set" data="ringback=${us-ring}"/>
+ <!--<action application="set" data="ringback=/home/ring.wav"/>-->
<action application="bridge" data="sofia/test/1234(a)66.250.68.194"/>
</condition>
</extension>
Modified: freeswitch/branches/knhor/trunk/libs/libdingaling/.update
==============================================================================
--- freeswitch/branches/knhor/trunk/libs/libdingaling/.update (original)
+++ freeswitch/branches/knhor/trunk/libs/libdingaling/.update Wed Nov 22 20:43:42 2006
@@ -1 +1 @@
-Wed Nov 15 20:20:53 UTC 2006
+Thu Nov 16 16:09:31 UTC 2006
Modified: freeswitch/branches/knhor/trunk/libs/libdingaling/src/libdingaling.c
==============================================================================
--- freeswitch/branches/knhor/trunk/libs/libdingaling/src/libdingaling.c (original)
+++ freeswitch/branches/knhor/trunk/libs/libdingaling/src/libdingaling.c Wed Nov 22 20:43:42 2006
@@ -63,7 +63,7 @@
#include "sha1.h"
#ifdef _MSC_VER
-#pragma warning(disable:4127)
+#pragma warning(disable:4127 4706)
#endif
#define microsleep(x) apr_sleep(x * 1000)
@@ -250,7 +250,7 @@
}
-ldl_status ldl_session_create(ldl_session_t **session_p, ldl_handle_t *handle, char *id, char *them, char *me)
+ldl_status ldl_session_create(ldl_session_t **session_p, ldl_handle_t *handle, char *id, char *them, char *me, ldl_user_flag_t flags)
{
ldl_session_t *session = NULL;
@@ -264,9 +264,9 @@
session->id = apr_pstrdup(session->pool, id);
session->them = apr_pstrdup(session->pool, them);
- //if (me) {
- //session->initiator = apr_pstrdup(session->pool, them);
- //}
+ if (flags & LDL_FLAG_OUTBOUND) {
+ session->initiator = apr_pstrdup(session->pool, me);
+ }
if (ldl_test_flag(handle, LDL_FLAG_COMPONENT)) {
session->login = apr_pstrdup(session->pool, me);
@@ -298,7 +298,7 @@
char *msg = NULL;
if (!(session = apr_hash_get(handle->sessions, id, APR_HASH_KEY_STRING))) {
- ldl_session_create(&session, handle, id, from, to);
+ ldl_session_create(&session, handle, id, from, to, LDL_FLAG_NONE);
if (!session) {
return LDL_STATUS_MEMERR;
}
@@ -1468,14 +1468,29 @@
}
+static void add_elements(ldl_session_t *session, iks *tag)
+{
+ apr_hash_index_t *hi;
+ for (hi = apr_hash_first(session->pool, session->variables); hi; hi = apr_hash_next(hi)) {
+ void *val = NULL;
+ const void *key = NULL;
+ apr_hash_this(hi, &key, NULL, &val);
+ if (val) {
+ iks *var = iks_insert(tag, "info_element");
+ iks_insert_attrib(var, "xmlns", "http://www.freeswitch.org/jie");
+ iks_insert_attrib(var, "name", (char *) key);
+ iks_insert_attrib(var, "value", (char *) val);
+ }
+ }
+}
+
static ldl_status new_session_iq(ldl_session_t *session, iks **iqp, iks **sessp, unsigned int *id, char *type)
{
iks *iq, *sess;
unsigned int myid;
char idbuf[80];
- apr_hash_index_t *hi;
myid = next_id();
snprintf(idbuf, sizeof(idbuf), "%u", myid);
@@ -1491,19 +1506,7 @@
iks_insert_attrib(sess, "type", type);
iks_insert_attrib(sess, "id", session->id);
iks_insert_attrib(sess, "initiator", session->initiator ? session->initiator : session->them);
- for (hi = apr_hash_first(session->pool, session->variables); hi; hi = apr_hash_next(hi)) {
- void *val = NULL;
- const void *key = NULL;
- apr_hash_this(hi, &key, NULL, &val);
- if (val) {
- iks *var = iks_insert(sess, "info_element");
- iks_insert_attrib(var, "xmlns", "http://www.freeswitch.org/jie");
- iks_insert_attrib(var, "name", (char *) key);
- iks_insert_attrib(var, "value", (char *) val);
- }
- }
-
*sessp = sess;
*iqp = iq;
*id = myid;
@@ -1717,6 +1720,8 @@
new_session_iq(session, &iq, &sess, &id, "transport-info");
tag = iks_insert(sess, "transport");
iks_insert_attrib(tag, "xmlns", "http://www.google.com/transport/p2p");
+
+ add_elements(session, tag);
tag = iks_insert(tag, "candidate");
if (candidates[x].name) {
Modified: freeswitch/branches/knhor/trunk/libs/libdingaling/src/libdingaling.h
==============================================================================
--- freeswitch/branches/knhor/trunk/libs/libdingaling/src/libdingaling.h (original)
+++ freeswitch/branches/knhor/trunk/libs/libdingaling/src/libdingaling.h Wed Nov 22 20:43:42 2006
@@ -110,10 +110,12 @@
} ldl_flag_t;
typedef enum {
+ LDL_FLAG_NONE = 0,
LDL_FLAG_TLS = (1 << 10),
LDL_FLAG_SASL_PLAIN = (1 << 11),
LDL_FLAG_SASL_MD5 = (1 << 12),
LDL_FLAG_COMPONENT = (1 << 13),
+ LDL_FLAG_OUTBOUND = (1 << 14)
} ldl_user_flag_t;
typedef enum {
@@ -253,9 +255,10 @@
\param id the id to use for the session
\param them the id of the other end of the call
\param me the id of our end of the call
+ \param flags user flags
\return SUCCESS OR FAILURE
*/
-ldl_status ldl_session_create(ldl_session_t **session_p, ldl_handle_t *handle, char *id, char *them, char *me);
+ldl_status ldl_session_create(ldl_session_t **session_p, ldl_handle_t *handle, char *id, char *them, char *me, ldl_user_flag_t flags);
/*!
\brief get the id of a session
Modified: freeswitch/branches/knhor/trunk/libs/libteletone/src/libteletone_generate.c
==============================================================================
--- freeswitch/branches/knhor/trunk/libs/libteletone/src/libteletone_generate.c (original)
+++ freeswitch/branches/knhor/trunk/libs/libteletone/src/libteletone_generate.c Wed Nov 22 20:43:42 2006
@@ -34,6 +34,9 @@
#define SMIN -32768
#define normalize_to_16bit(n) if (n > SMAX) n = SMAX; else if (n < SMIN) n = SMIN;
+#ifdef _MSC_VER
+#pragma warning(disable:4706)
+#endif
int teletone_set_tone(teletone_generation_session_t *ts, int index, ...)
@@ -81,11 +84,14 @@
ts->user_data = user_data;
ts->volume = 1500;
ts->decay_step = 0;
- if ((ts->buffer = calloc(buflen, sizeof(teletone_audio_t))) == 0) {
- return -1;
+ if (buflen) {
+ if ((ts->buffer = calloc(buflen, sizeof(teletone_audio_t))) == 0) {
+ return -1;
+ }
+ ts->datalen = buflen;
+ } else {
+ ts->dynamic = 1024;
}
- ts->datalen = buflen;
-
/* Add Standard DTMF Tones */
teletone_set_tone(ts, '1', 697.0, 1209.0, 0.0);
teletone_set_tone(ts, '2', 697.0, 1336.0, 0.0);
@@ -117,9 +123,22 @@
return 0;
}
-/** Generate a specified number of samples containing the three specified
- * frequencies (in hertz) and dump to the file descriptor audio_fd. */
+static int ensure_buffer(teletone_generation_session_t *ts, int need)
+{
+ need += ts->samples;
+ need *= sizeof(teletone_audio_t);
+ need *= ts->channels;
+ if (need > ts->datalen) {
+ ts->datalen = need + ts->dynamic;
+ if (!(ts->buffer = realloc(ts->buffer, ts->datalen))) {
+ return -1;
+ }
+ }
+
+ return 0;
+}
+
int teletone_mux_tones(teletone_generation_session_t *ts, teletone_tone_map_t *map)
{
teletone_process_t period = (1.0 / ts->rate) / ts->channels;
@@ -156,6 +175,11 @@
duration *= ts->channels;
}
+ if (ts->dynamic) {
+ if (ensure_buffer(ts, duration)) {
+ return -1;
+ }
+ }
for (ts->samples = 0; ts->samples < ts->datalen && ts->samples < duration; ts->samples++) {
if (ts->decay_step && !(ts->samples % ts->decay_step) && ts->volume > 0 && ts->samples > decay) {
ts->volume += ts->decay_direction;
@@ -176,6 +200,11 @@
}
}
+ if (ts->dynamic) {
+ if (ensure_buffer(ts, wait)) {
+ return -1;
+ }
+ }
for (c = 0; c < ts->channels; c++) {
for (i = 0; i < wait && ts->samples < ts->datalen; i++) {
ts->buffer[ts->samples++] = 0;
@@ -208,19 +237,37 @@
return ts->samples;
}
+/* don't ask */
+static char *my_strdup (const char *s)
+{
+ size_t len = strlen (s) + 1;
+ void *new = malloc (len);
+
+ if (new == NULL) {
+ return NULL;
+ }
+ return (char *) memcpy (new, s, len);
+}
+
int teletone_run(teletone_generation_session_t *ts, char *cmd)
{
- char *data, *cur, *end;
+ char *data = NULL, *cur = NULL, *end = NULL;
int var = 0, LOOPING = 0;
+
+ if (!cmd) {
+ return -1;
+ }
do {
- data = strdup(cmd);
+ if (!(data = my_strdup(cmd))) {
+ return -1;
+ }
+
cur = data;
-
+
while (*cur) {
var = 0;
-
if (*cur == ' ' || *cur == '\r' || *cur == '\n') {
cur++;
continue;
Modified: freeswitch/branches/knhor/trunk/libs/libteletone/src/libteletone_generate.h
==============================================================================
--- freeswitch/branches/knhor/trunk/libs/libteletone/src/libteletone_generate.h (original)
+++ freeswitch/branches/knhor/trunk/libs/libteletone/src/libteletone_generate.h Wed Nov 22 20:43:42 2006
@@ -56,7 +56,7 @@
This module is responsible for tone generation specifics
*/
-typedef short teletone_audio_t;
+typedef int16_t teletone_audio_t;
struct teletone_generation_session;
typedef int (*tone_handler)(struct teletone_generation_session *ts, teletone_tone_map_t *map);
@@ -101,6 +101,7 @@
/*! In-Use size of the buffer */
int samples;
/*! Callback function called during generation */
+ int dynamic;
tone_handler handler;
};
Modified: freeswitch/branches/knhor/trunk/libs/portaudio.build.sh
==============================================================================
--- freeswitch/branches/knhor/trunk/libs/portaudio.build.sh (original)
+++ freeswitch/branches/knhor/trunk/libs/portaudio.build.sh Wed Nov 22 20:43:42 2006
@@ -45,6 +45,9 @@
if [ $arch = "amd64" ] ; then
opts="-fPIC"
fi
+if [ $arch = "ppc" ] ; then
+opts="-fPIC"
+fi
CFLAGS=$opts ./configure $@
$MAKE
Modified: freeswitch/branches/knhor/trunk/libs/win32/Download SOFIA.vcproj
==============================================================================
--- freeswitch/branches/knhor/trunk/libs/win32/Download SOFIA.vcproj (original)
+++ freeswitch/branches/knhor/trunk/libs/win32/Download SOFIA.vcproj Wed Nov 22 20:43:42 2006
@@ -76,8 +76,8 @@
<Tool
Name="VCCustomBuildTool"
Description="Downloading SOFIA."
- CommandLine="if not exist "$(ProjectDir)..\sofia-sip-1.12.3.10" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://svn.freeswitch.org/downloads/libs/sofia-sip-1.12.3.10.tar.gz "$(ProjectDir).."
"
- Outputs="$(ProjectDir)..\sofia-sip-1.12.3.10"
+ CommandLine="if not exist "$(ProjectDir)..\sofia-sip-1.12.3.11" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://svn.freeswitch.org/downloads/libs/sofia-sip-1.12.3.11.tar.gz "$(ProjectDir).."
"
+ Outputs="$(ProjectDir)..\sofia-sip-1.12.3.11"
/>
</FileConfiguration>
<FileConfiguration
@@ -86,8 +86,8 @@
<Tool
Name="VCCustomBuildTool"
Description="Downloading SOFIA."
- CommandLine="if not exist "$(ProjectDir)..\sofia-sip-1.12.3.10" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://svn.freeswitch.org/downloads/libs/sofia-sip-1.12.3.10.tar.gz "$(ProjectDir).."
"
- Outputs="$(ProjectDir)..\sofia-sip-1.12.3.10"
+ CommandLine="if not exist "$(ProjectDir)..\sofia-sip-1.12.3.11" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://svn.freeswitch.org/downloads/libs/sofia-sip-1.12.3.11.tar.gz "$(ProjectDir).."
"
+ Outputs="$(ProjectDir)..\sofia-sip-1.12.3.11"
/>
</FileConfiguration>
</File>
Modified: freeswitch/branches/knhor/trunk/libs/win32/js/js.vcproj
==============================================================================
--- freeswitch/branches/knhor/trunk/libs/win32/js/js.vcproj (original)
+++ freeswitch/branches/knhor/trunk/libs/win32/js/js.vcproj Wed Nov 22 20:43:42 2006
@@ -49,7 +49,7 @@
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\nspr-4.6.1.winnt5.release\nspr-4.6.1\include"
- PreprocessorDefinitions="NDEBUG;_X86_=1;_WINDOWS;WIN32;XP_WIN;JSFILE;EXPORT_JS_API;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
+ PreprocessorDefinitions="NDEBUG;_X86_=1;_WINDOWS;WIN32;XP_WIN;JSFILE;EXPORT_JS_API;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;JS_THREADSAFE"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
Modified: freeswitch/branches/knhor/trunk/libs/win32/sofia/libsofia_sip_ua_static.vcproj
==============================================================================
--- freeswitch/branches/knhor/trunk/libs/win32/sofia/libsofia_sip_ua_static.vcproj (original)
+++ freeswitch/branches/knhor/trunk/libs/win32/sofia/libsofia_sip_ua_static.vcproj Wed Nov 22 20:43:42 2006
@@ -26,7 +26,7 @@
>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="if not exist "$(ProjectDir)..\..\sofia-sip-1.12.3.10\win32\gawk.exe" cscript /nologo "$(ProjectDir)..\util.vbs" Get http://svn.freeswitch.org/downloads/win32/gawk.exe "$(ProjectDir)..\..\sofia-sip-1.12.3.10\win32\"
cd /D "$(ProjectDir)..\..\sofia-sip-1.12.3.10\win32\"
"autogen.cmd"
"
+ CommandLine="if not exist "$(ProjectDir)..\..\sofia-sip-1.12.3.11\win32\gawk.exe" cscript /nologo "$(ProjectDir)..\util.vbs" Get http://svn.freeswitch.org/downloads/win32/gawk.exe "$(ProjectDir)..\..\sofia-sip-1.12.3.11\win32\"
cd /D "$(ProjectDir)..\..\sofia-sip-1.12.3.11\win32\"
"autogen.cmd"
"
/>
<Tool
Name="VCCustomBuildTool"
@@ -43,7 +43,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories=""..\..\sofia-sip-1.12.3.10\win32";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\ipt";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sresolv";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\bnf";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\url";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nta";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nua";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\iptsec";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\http";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nth";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nea";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sdp";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\soa";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\stun";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\tport";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\features";"..\..\pthreads-w32-2-7-0-release";."
+ AdditionalIncludeDirectories=""..\..\sofia-sip-1.12.3.11\win32";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\ipt";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sresolv";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\bnf";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\url";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nta";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nua";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\iptsec";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\http";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nth";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nea";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sdp";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\soa";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\stun";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\tport";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\features";"..\..\pthreads-w32-2-7-0-release";."
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;IN_LIBSOFIA_SIP_UA_STATIC;LIBSOFIA_SIP_UA_STATIC;LIBSRES_STATIC;PTW32_STATIC_LIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
@@ -104,7 +104,7 @@
>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="if not exist "$(ProjectDir)..\..\sofia-sip-1.12.3.10\win32\gawk.exe" cscript /nologo "$(ProjectDir)..\util.vbs" Get http://svn.freeswitch.org/downloads/win32/gawk.exe "$(ProjectDir)..\..\sofia-sip-1.12.3.10\win32\"
cd /D "$(ProjectDir)..\..\sofia-sip-1.12.3.10\win32\"
"autogen.cmd"
"
+ CommandLine="if not exist "$(ProjectDir)..\..\sofia-sip-1.12.3.11\win32\gawk.exe" cscript /nologo "$(ProjectDir)..\util.vbs" Get http://svn.freeswitch.org/downloads/win32/gawk.exe "$(ProjectDir)..\..\sofia-sip-1.12.3.11\win32\"
cd /D "$(ProjectDir)..\..\sofia-sip-1.12.3.11\win32\"
"autogen.cmd"
"
/>
<Tool
Name="VCCustomBuildTool"
@@ -122,7 +122,7 @@
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
- AdditionalIncludeDirectories=""..\..\sofia-sip-1.12.3.10\win32";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\ipt";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sresolv";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\bnf";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\url";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nta";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nua";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\iptsec";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\http";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nth";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nea";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sdp";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\soa";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\stun";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\tport";"..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\features";"..\..\pthreads-w32-2-7-0-release";."
+ AdditionalIncludeDirectories=""..\..\sofia-sip-1.12.3.11\win32";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\ipt";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sresolv";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\bnf";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\url";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nta";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nua";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\iptsec";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\http";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nth";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nea";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sdp";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\soa";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\stun";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\tport";"..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\features";"..\..\pthreads-w32-2-7-0-release";."
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;IN_LIBSOFIA_SIP_UA_STATIC;LIBSOFIA_SIP_UA_STATIC;LIBSRES_STATIC;PTW32_STATIC_LIB"
StringPooling="true"
RuntimeLibrary="2"
@@ -182,247 +182,247 @@
Name="su"
Filter="su*.c"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\inet_ntop.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\inet_pton.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_addrinfo.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_alloc.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_alloc_lock.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_bm.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_default_log.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_errno.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_global_log.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_localinfo.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_log.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_md5.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_os_nw.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_port.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_root.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_sprintf.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_strdup.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_strlst.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_tag.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_tag_io.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_taglist.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_time.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_time0.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_timer.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_uniqueid.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_vector.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_wait.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\inet_ntop.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\inet_pton.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_addrinfo.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_alloc.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_alloc_lock.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_bm.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_default_log.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_errno.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_global_log.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_localinfo.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_log.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_md5.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_os_nw.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_port.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_root.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_sprintf.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_strdup.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_strlst.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_tag.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_tag_io.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_taglist.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_time.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_time0.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_timer.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_uniqueid.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_vector.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_wait.c"></File>
</Filter>
<Filter
Name="ipt"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\ipt\base64.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\ipt\rc4.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\ipt\string0.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\ipt\token64.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\ipt\base64.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\ipt\rc4.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\ipt\string0.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\ipt\token64.c"></File>
</Filter>
<Filter
Name="url"
Filter="url*.c"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\url\url.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\url\url_tag.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\url\url_tag_ref.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\url\url.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\url\url_tag.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\url\url_tag_ref.c"></File>
</Filter>
<Filter
Name="features"
Filter="features*.c"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\features\features.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\features\features.c"></File>
</Filter>
<Filter
Name="bnf"
Filter="bnf*.c"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\bnf\bnf.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\bnf\bnf.c"></File>
</Filter>
<Filter
Name="msg"
Filter="msg*.c"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\msg.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\msg_auth.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\msg_basic.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\msg_date.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\msg_generic.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\msg_header_copy.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\msg_header_make.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\msg_mclass.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\msg_mime.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\msg_mime_table.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\msg_parser.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\msg_parser_util.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\msg_tag.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\msg.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\msg_auth.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\msg_basic.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\msg_date.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\msg_generic.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\msg_header_copy.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\msg_header_make.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\msg_mclass.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\msg_mime.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\msg_mime_table.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\msg_parser.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\msg_parser_util.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\msg_tag.c"></File>
</Filter>
<Filter
Name="clib replacement"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\memcspn.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\memmem.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\memspn.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\strcasestr.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\strtoull.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\memcspn.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\memmem.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\memspn.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\strcasestr.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\strtoull.c"></File>
</Filter>
<Filter
Name="sip"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sip_basic.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sip_caller_prefs.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sip_event.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sip_extra.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sip_feature.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sip_header.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sip_mime.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sip_parser.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sip_parser_table.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sip_prack.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sip_pref_util.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sip_reason.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sip_refer.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sip_security.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sip_session.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sip_status.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sip_tag.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sip_tag_class.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sip_tag_ref.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sip_time.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sip_util.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sip_basic.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sip_caller_prefs.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sip_event.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sip_extra.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sip_feature.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sip_header.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sip_mime.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sip_parser.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sip_parser_table.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sip_prack.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sip_pref_util.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sip_reason.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sip_refer.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sip_security.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sip_session.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sip_status.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sip_tag.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sip_tag_class.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sip_tag_ref.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sip_time.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sip_util.c"></File>
</Filter>
<Filter
Name="http"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\http\http_basic.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\http\http_extra.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\http\http_header.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\http\http_parser.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\http\http_parser_table.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\http\http_status.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\http\http_tag.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\http\http_tag_class.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\http\http_tag_ref.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\http\http_basic.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\http\http_extra.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\http\http_header.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\http\http_parser.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\http\http_parser_table.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\http\http_status.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\http\http_tag.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\http\http_tag_class.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\http\http_tag_ref.c"></File>
</Filter>
<Filter
Name="nth"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nth\nth_client.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nth\nth_server.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nth\nth_tag.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nth\nth_tag_ref.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nth\nth_client.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nth\nth_server.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nth\nth_tag.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nth\nth_tag_ref.c"></File>
</Filter>
<Filter
Name="sresolv"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sresolv\sres.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sresolv\sres_blocking.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sresolv\sres_cache.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sresolv\sresolv.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sresolv\sres.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sresolv\sres_blocking.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sresolv\sres_cache.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sresolv\sresolv.c"></File>
</Filter>
<Filter
Name="nea"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nea\nea.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nea\nea_debug.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nea\nea_event.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nea\nea_server.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nea\nea_tag.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nea\nea_tag_ref.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nea\nea.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nea\nea_debug.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nea\nea_event.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nea\nea_server.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nea\nea_tag.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nea\nea_tag_ref.c"></File>
</Filter>
<Filter
Name="iptsec"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\iptsec\auth_client.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\iptsec\auth_common.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\iptsec\auth_digest.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\iptsec\auth_module.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\iptsec\auth_module_http.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\iptsec\auth_module_sip.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\iptsec\auth_plugin.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\iptsec\auth_plugin_delayed.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\iptsec\auth_tag.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\iptsec\auth_tag_ref.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\iptsec\iptsec_debug.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\iptsec\auth_client.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\iptsec\auth_common.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\iptsec\auth_digest.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\iptsec\auth_module.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\iptsec\auth_module_http.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\iptsec\auth_module_sip.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\iptsec\auth_plugin.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\iptsec\auth_plugin_delayed.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\iptsec\auth_tag.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\iptsec\auth_tag_ref.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\iptsec\iptsec_debug.c"></File>
</Filter>
<Filter
Name="stun"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\stun\stun.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\stun\stun_common.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\stun\stun_dns.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\stun\stun_internal.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\stun\stun_mini.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\stun\stun_tag.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\stun\stun_tag_ref.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\stun\stun.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\stun\stun_common.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\stun\stun_dns.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\stun\stun_internal.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\stun\stun_mini.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\stun\stun_tag.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\stun\stun_tag_ref.c"></File>
</Filter>
<Filter
Name="nua"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nua\nua.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nua\nua_common.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nua\nua_dialog.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nua\nua_dialog.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nua\nua_event_server.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nua\nua_extension.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nua\nua_message.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nua\nua_notifier.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nua\nua_options.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nua\nua_params.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nua\nua_params.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nua\nua_publish.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nua\nua_register.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nua\nua_registrar.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nua\nua_session.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nua\nua_stack.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nua\nua_stack.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nua\nua_subnotref.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nua\nua_tag.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nua\nua_tag_ref.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nua\outbound.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nua\nua.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nua\nua_common.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nua\nua_dialog.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nua\nua_dialog.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nua\nua_event_server.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nua\nua_extension.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nua\nua_message.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nua\nua_notifier.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nua\nua_options.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nua\nua_params.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nua\nua_params.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nua\nua_publish.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nua\nua_register.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nua\nua_registrar.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nua\nua_session.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nua\nua_stack.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nua\nua_stack.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nua\nua_subnotref.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nua\nua_tag.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nua\nua_tag_ref.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nua\outbound.c"></File>
</Filter>
<Filter
Name="nta"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nta\nta.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nta\nta_check.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nta\nta_tag.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nta\nta_tag_ref.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nta\sl_read_payload.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nta\sl_utils_log.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nta\sl_utils_print.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nta\nta.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nta\nta_check.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nta\nta_tag.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nta\nta_tag_ref.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nta\sl_read_payload.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nta\sl_utils_log.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nta\sl_utils_print.c"></File>
</Filter>
<Filter
Name="tport"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\tport\tport.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\tport\tport_internal.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\tport\tport_logging.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\tport\tport_stub_sigcomp.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\tport\tport_stub_stun.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\tport\tport_tag.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\tport\tport_tag_ref.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\tport\tport_type_connect.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\tport\tport_type_tcp.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\tport\tport_type_udp.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\tport\tport.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\tport\tport_internal.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\tport\tport_logging.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\tport\tport_stub_sigcomp.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\tport\tport_stub_stun.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\tport\tport_tag.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\tport\tport_tag_ref.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\tport\tport_type_connect.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\tport\tport_type_tcp.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\tport\tport_type_udp.c"></File>
</Filter>
<Filter
Name="sdp"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sdp\sdp.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sdp\sdp_parse.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sdp\sdp_print.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sdp\sdp_tag.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sdp\sdp_tag_ref.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sdp\sdp.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sdp\sdp_parse.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sdp\sdp_print.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sdp\sdp_tag.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sdp\sdp_tag_ref.c"></File>
</Filter>
<Filter
Name="soa"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\soa\soa.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\soa\sofia-sip\soa_session.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\soa\soa_static.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\soa\soa_tag.c"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\soa\soa_tag_ref.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\soa\soa.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\soa\sofia-sip\soa_session.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\soa\soa_static.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\soa\soa_tag.c"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\soa\soa_tag_ref.c"></File>
</Filter>
</Filter>
<Filter
@@ -433,194 +433,194 @@
Name="su headers"
Filter="su*.h"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\htable.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\htable2.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\rbtree.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\su.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\su_addrinfo.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\su_alloc.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\su_alloc_stat.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\su_bm.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\su_config.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\su_debug.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\su_errno.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\su_localinfo.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\su_log.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\su_md5.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_module_debug.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\su_os_nw.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\su_port.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\su_source.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\su_strlst.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\su_tag.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\su_tag_class.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\su_tag_inline.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\su_tag_io.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\su_tagarg.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\su_time.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\su_types.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\su_uniqueid.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\su_vector.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\su_wait.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\su\sofia-sip\tstdef.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\htable.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\htable2.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\rbtree.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\su.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\su_addrinfo.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\su_alloc.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\su_alloc_stat.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\su_bm.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\su_config.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\su_debug.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\su_errno.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\su_localinfo.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\su_log.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\su_md5.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_module_debug.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\su_os_nw.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\su_port.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\su_source.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\su_strlst.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\su_tag.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\su_tag_class.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\su_tag_inline.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\su_tag_io.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\su_tagarg.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\su_time.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\su_types.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\su_uniqueid.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\su_vector.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\su_wait.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\su\sofia-sip\tstdef.h"></File>
</Filter>
<Filter
Name="win32 headers"
>
<File RelativePath="..\config.h"></File>
- <File RelativePath="..\sofia-sip-1.12.3.10\su_configure.h"></File>
+ <File RelativePath="..\sofia-sip-1.12.3.11\su_configure.h"></File>
<File RelativePath="..\unistd.h"></File>
</Filter>
<Filter
Name="ipt headers"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\ipt\sofia-sip\base64.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\ipt\sofia-sip\rc4.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\ipt\sofia-sip\string0.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\ipt\sofia-sip\token64.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\ipt\sofia-sip\base64.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\ipt\sofia-sip\rc4.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\ipt\sofia-sip\string0.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\ipt\sofia-sip\token64.h"></File>
</Filter>
<Filter
Name="url headers"
Filter="url*.h"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\url\sofia-sip\url.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\url\sofia-sip\url_tag.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\url\sofia-sip\url_tag_class.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\url\sofia-sip\url.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\url\sofia-sip\url_tag.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\url\sofia-sip\url_tag_class.h"></File>
</Filter>
<Filter
Name="features headers"
Filter="features*.h"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\features\sofia-sip\sofia_features.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\features\sofia-sip\sofia_features.h"></File>
</Filter>
<Filter
Name="bnf headers"
Filter="bnf*.h"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\bnf\sofia-sip\bnf.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\bnf\sofia-sip\hostdomain.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\bnf\sofia-sip\bnf.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\bnf\sofia-sip\hostdomain.h"></File>
</Filter>
<Filter
Name="msg headers"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\sofia-sip\msg.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\sofia-sip\msg_addr.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\msg_bnf.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\sofia-sip\msg_buffer.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\sofia-sip\msg_date.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\sofia-sip\msg_header.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\msg_internal.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\sofia-sip\msg_mclass.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\sofia-sip\msg_mclass_hash.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\sofia-sip\msg_mime.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\sofia-sip\msg_mime_protos.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\sofia-sip\msg_parser.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\sofia-sip\msg_protos.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\sofia-sip\msg_tag_class.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\msg\sofia-sip\msg_types.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\sofia-sip\msg.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\sofia-sip\msg_addr.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\msg_bnf.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\sofia-sip\msg_buffer.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\sofia-sip\msg_date.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\sofia-sip\msg_header.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\msg_internal.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\sofia-sip\msg_mclass.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\sofia-sip\msg_mclass_hash.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\sofia-sip\msg_mime.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\sofia-sip\msg_mime_protos.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\sofia-sip\msg_parser.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\sofia-sip\msg_protos.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\sofia-sip\msg_tag_class.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\msg\sofia-sip\msg_types.h"></File>
</Filter>
<Filter
Name="sip headers"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sofia-sip\sip.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sip_extensions.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sofia-sip\sip_hclasses.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sofia-sip\sip_header.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sip_internal.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sofia-sip\sip_parser.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sofia-sip\sip_protos.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sofia-sip\sip_status.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sofia-sip\sip_tag.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sofia-sip\sip_tag_class.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sip\sofia-sip\sip_util.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sofia-sip\sip.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sip_extensions.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sofia-sip\sip_hclasses.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sofia-sip\sip_header.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sip_internal.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sofia-sip\sip_parser.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sofia-sip\sip_protos.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sofia-sip\sip_status.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sofia-sip\sip_tag.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sofia-sip\sip_tag_class.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sip\sofia-sip\sip_util.h"></File>
</Filter>
<Filter
Name="http headers"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\http\sofia-sip\http.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\http\sofia-sip\http_hclasses.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\http\sofia-sip\http_header.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\http\sofia-sip\http_parser.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\http\sofia-sip\http_protos.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\http\sofia-sip\http_status.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\http\sofia-sip\http_tag.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\http\sofia-sip\http_tag_class.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\http\sofia-sip\http.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\http\sofia-sip\http_hclasses.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\http\sofia-sip\http_header.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\http\sofia-sip\http_parser.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\http\sofia-sip\http_protos.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\http\sofia-sip\http_status.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\http\sofia-sip\http_tag.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\http\sofia-sip\http_tag_class.h"></File>
</Filter>
<Filter
Name="nth headers"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nth\sofia-sip\nth.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nth\sofia-sip\nth_tag.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nth\sofia-sip\nth.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nth\sofia-sip\nth_tag.h"></File>
</Filter>
<Filter
Name="sresolv headers"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sresolv\sofia-resolv\sres.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sresolv\sofia-resolv\sres_async.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sresolv\sofia-resolv\sres_cache.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sresolv\sofia-resolv\sres_record.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sresolv\sofia-sip\sresolv.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sresolv\sofia-resolv\sres.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sresolv\sofia-resolv\sres_async.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sresolv\sofia-resolv\sres_cache.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sresolv\sofia-resolv\sres_record.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sresolv\sofia-sip\sresolv.h"></File>
</Filter>
<Filter
Name="nea headers"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nea\sofia-sip\nea.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nea\nea_debug.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nea\sofia-sip\nea_tag.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nea\sofia-sip\nea.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nea\nea_debug.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nea\sofia-sip\nea_tag.h"></File>
</Filter>
<Filter
Name="iptsec headers"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\iptsec\sofia-sip\auth_client.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\iptsec\sofia-sip\auth_digest.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\iptsec\sofia-sip\auth_module.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\iptsec\sofia-sip\auth_ntlm.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\iptsec\sofia-sip\auth_plugin.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\iptsec\iptsec_debug.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\iptsec\sofia-sip\auth_client.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\iptsec\sofia-sip\auth_digest.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\iptsec\sofia-sip\auth_module.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\iptsec\sofia-sip\auth_ntlm.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\iptsec\sofia-sip\auth_plugin.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\iptsec\iptsec_debug.h"></File>
</Filter>
<Filter
Name="stun headers"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\stun\sofia-sip\stun.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\stun\sofia-sip\stun_common.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\stun\sofia-sip\stun_tag.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\stun\sofia-sip\stun.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\stun\sofia-sip\stun_common.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\stun\sofia-sip\stun_tag.h"></File>
</Filter>
<Filter
Name="nua headers"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nua\sofia-sip\nua.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nua\sofia-sip\nua_tag.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nua\sofia-sip\nua.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nua\sofia-sip\nua_tag.h"></File>
</Filter>
<Filter
Name="nta headers"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nta\sofia-sip\nta.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nta\nta_internal.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nta\sofia-sip\nta_stateless.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nta\sofia-sip\nta_tag.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nta\sofia-sip\nta_tport.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\nta\sofia-sip\sl_utils.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nta\sofia-sip\nta.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nta\nta_internal.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nta\sofia-sip\nta_stateless.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nta\sofia-sip\nta_tag.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nta\sofia-sip\nta_tport.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\nta\sofia-sip\sl_utils.h"></File>
</Filter>
<Filter
Name="tport headers"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\tport\sofia-sip\tport.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\tport\sofia-sip\tport_plugins.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\tport\sofia-sip\tport_tag.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\tport\tport_tls.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\tport\sofia-sip\tport.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\tport\sofia-sip\tport_plugins.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\tport\sofia-sip\tport_tag.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\tport\tport_tls.h"></File>
</Filter>
<Filter
Name="sdp headers"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sdp\sofia-sip\sdp.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\sdp\sofia-sip\sdp_tag.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sdp\sofia-sip\sdp.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\sdp\sofia-sip\sdp_tag.h"></File>
</Filter>
<Filter
Name="soa headers"
>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\soa\sofia-sip\soa.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\soa\sofia-sip\soa_add.h"></File>
- <File RelativePath="..\..\sofia-sip-1.12.3.10\libsofia-sip-ua\soa\sofia-sip\soa_tag.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\soa\sofia-sip\soa.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\soa\sofia-sip\soa_add.h"></File>
+ <File RelativePath="..\..\sofia-sip-1.12.3.11\libsofia-sip-ua\soa\sofia-sip\soa_tag.h"></File>
</Filter>
</Filter>
</Files>
Modified: freeswitch/branches/knhor/trunk/src/include/switch_apr.h
==============================================================================
--- freeswitch/branches/knhor/trunk/src/include/switch_apr.h (original)
+++ freeswitch/branches/knhor/trunk/src/include/switch_apr.h Wed Nov 22 20:43:42 2006
@@ -183,6 +183,7 @@
*/
DoxyDefine(apr_status_t switch_file_open(switch_file_t **newf, const char *fname, apr_int32_t flag, switch_fileperms_t perm, switch_pool_t *pool);)
#define switch_file_open apr_file_open
+#define switch_file_seek apr_file_seek
/**
* Close the specified file.
Modified: freeswitch/branches/knhor/trunk/src/include/switch_core.h
==============================================================================
--- freeswitch/branches/knhor/trunk/src/include/switch_core.h (original)
+++ freeswitch/branches/knhor/trunk/src/include/switch_core.h Wed Nov 22 20:43:42 2006
@@ -219,9 +219,10 @@
/*!
\brief Destroy the core
+ \param vg nonzero to skip core uninitilize for memory debugging
\note to be called at application shutdown
*/
-SWITCH_DECLARE(switch_status_t) switch_core_destroy(void);
+SWITCH_DECLARE(switch_status_t) switch_core_destroy(int vg);
///\}
@@ -415,6 +416,13 @@
\note if the session was located it will have a read lock obtained which will need to be released with switch_core_session_rwunlock()
*/
SWITCH_DECLARE(switch_core_session_t *) switch_core_session_locate(char *uuid_str);
+
+/*!
+ \brief Retrieve a global variable from the core
+ \param varname the name of the variable
+ \return the value of the desired variable
+*/
+SWITCH_DECLARE(char *) switch_core_get_variable(char *varname);
/*!
\brief Hangup All Sessions
Modified: freeswitch/branches/knhor/trunk/src/mod/dialplans/mod_dialplan_directory/mod_dialplan_directory.c
==============================================================================
--- freeswitch/branches/knhor/trunk/src/mod/dialplans/mod_dialplan_directory/mod_dialplan_directory.c (original)
+++ freeswitch/branches/knhor/trunk/src/mod/dialplans/mod_dialplan_directory/mod_dialplan_directory.c Wed Nov 22 20:43:42 2006
@@ -151,7 +151,7 @@
if (extension) {
switch_channel_set_state(channel, CS_EXECUTE);
} else {
- switch_channel_hangup(channel, SWITCH_CAUSE_MESSAGE_TYPE_NONEXIST);
+ switch_channel_hangup(channel, SWITCH_CAUSE_NO_ROUTE_DESTINATION);
}
return extension;
Modified: freeswitch/branches/knhor/trunk/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c
==============================================================================
--- freeswitch/branches/knhor/trunk/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c (original)
+++ freeswitch/branches/knhor/trunk/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c Wed Nov 22 20:43:42 2006
@@ -296,7 +296,7 @@
if (!(xcontext = switch_xml_find_child(cfg, "context", "name", context))) {
if (!(xcontext = switch_xml_find_child(cfg, "context", "name", "global"))) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "context %s not found\n", context);
- switch_channel_hangup(channel, SWITCH_CAUSE_MESSAGE_TYPE_NONEXIST);
+ switch_channel_hangup(channel, SWITCH_CAUSE_NO_ROUTE_DESTINATION);
switch_xml_free(xml);
return NULL;
}
@@ -325,7 +325,7 @@
if (extension) {
switch_channel_set_state(channel, CS_EXECUTE);
} else {
- switch_channel_hangup(channel, SWITCH_CAUSE_MESSAGE_TYPE_NONEXIST);
+ switch_channel_hangup(channel, SWITCH_CAUSE_NO_ROUTE_DESTINATION);
}
return extension;
Modified: freeswitch/branches/knhor/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c
==============================================================================
--- freeswitch/branches/knhor/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c (original)
+++ freeswitch/branches/knhor/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c Wed Nov 22 20:43:42 2006
@@ -248,7 +248,7 @@
}
rpid = translate_rpid(rpid, status);
- ldl_handle_send_presence(profile->handle, sub_to, sub_from, "probe", rpid, status);
+ //ldl_handle_send_presence(profile->handle, sub_to, sub_from, "probe", rpid, status);
ldl_handle_send_presence(profile->handle, sub_to, sub_from, type, rpid, status);
@@ -333,7 +333,6 @@
type, rpid, status, proto, from);
-
for (hi = switch_hash_first(apr_hash_pool_get(globals.profile_hash), globals.profile_hash); hi; hi = switch_hash_next(hi)) {
char *errmsg;
switch_hash_this(hi, NULL, NULL, &val);
@@ -819,6 +818,7 @@
cand[0].protocol = "udp";
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Send Candidate %s:%d [%s]\n", cand[0].address, cand[0].port, cand[0].username);
tech_pvt->cand_id = ldl_session_candidates(tech_pvt->dlsession, cand, 1);
+ switch_set_flag_locked(tech_pvt, TFLAG_TRANSPORT);
switch_set_flag_locked(tech_pvt, TFLAG_RTP_READY);
}
switch_clear_flag_locked(tech_pvt, TFLAG_DO_CAND);
@@ -913,6 +913,7 @@
started = switch_time_now();
if (switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) {
+ tech_pvt->next_cand = switch_time_now() + DL_CAND_WAIT;
tech_pvt->next_desc = switch_time_now();
} else {
tech_pvt->next_cand = switch_time_now() + DL_CAND_WAIT;
@@ -1486,25 +1487,28 @@
*dnis++ = '\0';
}
+
+ if ((p = strchr(profile_name, '@'))) {
+ *p++ = '\0';
+ u = profile_name;
+ profile_name = p;
+ snprintf(ubuf, sizeof(ubuf), "%s@%s/talk", u, profile_name);
+ user = ubuf;
+ }
+
if ((mdl_profile = switch_core_hash_find(globals.profile_hash, profile_name))) {
- if ((mdl_profile->user_flags & LDL_FLAG_COMPONENT)) {
- if ((p = strchr(profile_name, '@'))) {
- *p++ = '\0';
- u = profile_name;
- profile_name = p;
- snprintf(ubuf, sizeof(ubuf), "%s@%s/talk", u, profile_name);
- user = ubuf;
- } else {
- terminate_session(new_session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
- return SWITCH_STATUS_GENERR;
- }
- }
-
- if (strchr(outbound_profile->caller_id_number, '@')) {
- snprintf(ubuf, sizeof(ubuf), "%s/talk", outbound_profile->caller_id_number);
- user = ubuf;
- } else {
+ if (!(mdl_profile->user_flags & LDL_FLAG_COMPONENT)) {
user = ldl_handle_get_login(mdl_profile->handle);
+ } else {
+ if (!user) {
+ if (strchr(outbound_profile->caller_id_number, '@')) {
+ snprintf(ubuf, sizeof(ubuf), "%s/talk", outbound_profile->caller_id_number);
+ user = ubuf;
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Invalid User!\n");
+ terminate_session(new_session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
+ }
+ }
}
if (!ldl_handle_ready(mdl_profile->handle)) {
@@ -1564,12 +1568,12 @@
switch_stun_random_string(sess_id, 10, "0123456789");
tech_pvt->us = switch_core_session_strdup(session, user);
tech_pvt->them = switch_core_session_strdup(session, full_id);
- ldl_session_create(&dlsession, mdl_profile->handle, sess_id, full_id, user);
+ ldl_session_create(&dlsession, mdl_profile->handle, sess_id, full_id, user, LDL_FLAG_OUTBOUND);
tech_pvt->profile = mdl_profile;
ldl_session_set_private(dlsession, *new_session);
- ldl_session_set_value(dlsession, "dnis", dnis);
- ldl_session_set_value(dlsession, "caller_id_name", outbound_profile->caller_id_name);
- ldl_session_set_value(dlsession, "caller_id_number", outbound_profile->caller_id_number);
+ //ldl_session_set_value(dlsession, "dnis", dnis);
+ //ldl_session_set_value(dlsession, "caller_id_name", outbound_profile->caller_id_name);
+ //ldl_session_set_value(dlsession, "caller_id_number", outbound_profile->caller_id_number);
tech_pvt->dlsession = dlsession;
if (!get_codecs(tech_pvt)) {
terminate_session(new_session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
@@ -2101,7 +2105,13 @@
execute_sql(profile->dbname, sql, profile->mutex);
switch_core_db_free(sql);
}
+
if (is_special(to)) {
+ ldl_handle_send_presence(profile->handle, to, from, NULL, "unknown", "Click To Call");
+ }
+
+#if 0
+ if (is_special(to)) {
if (switch_event_create(&event, SWITCH_EVENT_PRESENCE_IN) == SWITCH_STATUS_SUCCESS) {
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "proto", MDL_CHAT_PROTO);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "login", "%s", profile->login);
@@ -2111,6 +2121,7 @@
switch_event_fire(&event);
}
}
+#endif
break;
case LDL_SIGNAL_ROSTER:
if (switch_event_create(&event, SWITCH_EVENT_ROSTER) == SWITCH_STATUS_SUCCESS) {
@@ -2135,7 +2146,12 @@
switch_event_fire(&event);
}
+
if (is_special(to)) {
+ ldl_handle_send_presence(profile->handle, to, from, NULL, "unknown", "Click To Call");
+ }
+#if 0
+ if (is_special(to)) {
if (switch_event_create(&event, SWITCH_EVENT_PRESENCE_IN) == SWITCH_STATUS_SUCCESS) {
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "proto", MDL_CHAT_PROTO);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "login", "%s", profile->login);
@@ -2146,7 +2162,7 @@
}
}
break;
-
+#endif
case LDL_SIGNAL_PRESENCE_OUT:
if ((sql = switch_mprintf("update subscriptions set show='%q', status='%q' where sub_from='%q'", msg, subject, from))) {
@@ -2285,6 +2301,7 @@
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Creating a session for %s\n", ldl_session_get_id(dlsession));
ldl_session_set_private(dlsession, session);
tech_pvt->dlsession = dlsession;
+ switch_channel_set_name(channel, "DingaLing/new");
switch_channel_set_state(channel, CS_INIT);
switch_core_session_thread_launch(session);
} else {
@@ -2414,176 +2431,178 @@
}
}
}
-
break;
case LDL_SIGNAL_CANDIDATES:
if (signal) {
ldl_candidate_t *candidates;
unsigned int len = 0;
+ unsigned int x;
- if (ldl_session_get_candidates(dlsession, &candidates, &len) == LDL_STATUS_SUCCESS) {
- unsigned int x;
+ if (ldl_session_get_candidates(dlsession, &candidates, &len) != LDL_STATUS_SUCCESS) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Candidate Error!\n");
+ switch_set_flag(tech_pvt, TFLAG_BYE);
+ switch_clear_flag(tech_pvt, TFLAG_IO);
+ status = LDL_STATUS_FALSE;
+ goto done;
+ }
- if (tech_pvt->remote_ip) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Already picked an IP [%s]\n", tech_pvt->remote_ip);
- break;
- }
+ if (tech_pvt->remote_ip) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Already picked an IP [%s]\n", tech_pvt->remote_ip);
+ break;
+ }
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%u candidates\n", len);
- for(x = 0; x < len; x++) {
- uint8_t lanaddr = 0;
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%u candidates\n", len);
+ for(x = 0; x < len; x++) {
+ uint8_t lanaddr = 0;
- if (profile->lanaddr) {
- lanaddr = strncasecmp(candidates[x].address, profile->lanaddr, strlen(profile->lanaddr)) ? 0 : 1;
- }
+ if (profile->lanaddr) {
+ lanaddr = strncasecmp(candidates[x].address, profile->lanaddr, strlen(profile->lanaddr)) ? 0 : 1;
+ }
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "candidates %s:%d\n", candidates[x].address, candidates[x].port);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "candidates %s:%d\n", candidates[x].address, candidates[x].port);
- if (!strcasecmp(candidates[x].protocol, "udp") && (!strcasecmp(candidates[x].type, "local") || !strcasecmp(candidates[x].type, "stun")) &&
- ((profile->lanaddr && lanaddr) ||
- (strncasecmp(candidates[x].address, "10.", 3) &&
- strncasecmp(candidates[x].address, "192.168.", 8) &&
- strncasecmp(candidates[x].address, "127.", 4) &&
- strncasecmp(candidates[x].address, "1.", 2) &&
- strncasecmp(candidates[x].address, "2.", 2) &&
- strncasecmp(candidates[x].address, "172.16.", 7) &&
- strncasecmp(candidates[x].address, "172.17.", 7) &&
- strncasecmp(candidates[x].address, "172.18.", 7) &&
- strncasecmp(candidates[x].address, "172.19.", 7) &&
- strncasecmp(candidates[x].address, "172.2", 5) &&
- strncasecmp(candidates[x].address, "172.30.", 7) &&
- strncasecmp(candidates[x].address, "172.31.", 7)
- ))) {
- ldl_payload_t payloads[5];
- char *exten;
- char *context;
- char *cid_name;
- char *cid_num;
- char *tmp, *t, *them = NULL;
+ if (!strcasecmp(candidates[x].protocol, "udp") && (!strcasecmp(candidates[x].type, "local") || !strcasecmp(candidates[x].type, "stun")) &&
+ ((profile->lanaddr && lanaddr) ||
+ (strncasecmp(candidates[x].address, "10.", 3) &&
+ strncasecmp(candidates[x].address, "192.168.", 8) &&
+ strncasecmp(candidates[x].address, "127.", 4) &&
+ strncasecmp(candidates[x].address, "1.", 2) &&
+ strncasecmp(candidates[x].address, "2.", 2) &&
+ strncasecmp(candidates[x].address, "172.16.", 7) &&
+ strncasecmp(candidates[x].address, "172.17.", 7) &&
+ strncasecmp(candidates[x].address, "172.18.", 7) &&
+ strncasecmp(candidates[x].address, "172.19.", 7) &&
+ strncasecmp(candidates[x].address, "172.2", 5) &&
+ strncasecmp(candidates[x].address, "172.30.", 7) &&
+ strncasecmp(candidates[x].address, "172.31.", 7)
+ ))) {
+ ldl_payload_t payloads[5];
+ char *exten;
+ char *context;
+ char *cid_name;
+ char *cid_num;
+ char *tmp, *t, *them = NULL;
- memset(payloads, 0, sizeof(payloads));
+ memset(payloads, 0, sizeof(payloads));
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Acceptable Candidate %s:%d\n", candidates[x].address, candidates[x].port);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Acceptable Candidate %s:%d\n", candidates[x].address, candidates[x].port);
- if (!switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) {
- ldl_session_accept_candidate(dlsession, &candidates[x]);
- }
+ if (!switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) {
+ switch_set_flag_locked(tech_pvt, TFLAG_TRANSPORT_ACCEPT);
+ ldl_session_accept_candidate(dlsession, &candidates[x]);
+ }
- if (!(exten = ldl_session_get_value(dlsession, "dnis"))) {
- exten = profile->exten;
- /* if it's _auto_ set the extension to match the username portion of the called address */
- if (!strcmp(exten, "_auto_")) {
- if ((t = ldl_session_get_callee(dlsession))) {
- if ((them = strdup(t))) {
- char *a, *b, *p;
- if ((p = strchr(them, '/'))) {
- *p = '\0';
- }
+ if (!(exten = ldl_session_get_value(dlsession, "dnis"))) {
+ exten = profile->exten;
+ /* if it's _auto_ set the extension to match the username portion of the called address */
+ if (!strcmp(exten, "_auto_")) {
+ if ((t = ldl_session_get_callee(dlsession))) {
+ if ((them = strdup(t))) {
+ char *a, *b, *p;
+ if ((p = strchr(them, '/'))) {
+ *p = '\0';
+ }
- if ((a = strchr(them, '+')) && (b = strrchr(them, '+')) && a != b) {
- *b++ = '\0';
- switch_channel_set_variable(channel, "dl_user", them);
- switch_channel_set_variable(channel, "dl_host", b);
- }
- exten = them;
+ if ((a = strchr(them, '+')) && (b = strrchr(them, '+')) && a != b) {
+ *b++ = '\0';
+ switch_channel_set_variable(channel, "dl_user", them);
+ switch_channel_set_variable(channel, "dl_host", b);
}
+ exten = them;
}
}
}
+ }
- if (!(context = ldl_session_get_value(dlsession, "context"))) {
- context = profile->context;
- }
+ if (!(context = ldl_session_get_value(dlsession, "context"))) {
+ context = profile->context;
+ }
- if (!(cid_name = ldl_session_get_value(dlsession, "caller_id_name"))) {
- cid_name = tech_pvt->recip;
- }
+ if (!(cid_name = ldl_session_get_value(dlsession, "caller_id_name"))) {
+ cid_name = tech_pvt->recip;
+ }
- if (!(cid_num = ldl_session_get_value(dlsession, "caller_id_number"))) {
- cid_num = tech_pvt->recip;
- }
+ if (!(cid_num = ldl_session_get_value(dlsession, "caller_id_number"))) {
+ cid_num = tech_pvt->recip;
+ }
- /* context of "_auto_" means set it to the domain */
- if (profile->context && !strcmp(profile->context, "_auto_")) {
- context = profile->name;
- }
+ /* context of "_auto_" means set it to the domain */
+ if (profile->context && !strcmp(profile->context, "_auto_")) {
+ context = profile->name;
+ }
- tech_pvt->them = switch_core_session_strdup(session, ldl_session_get_callee(dlsession));
- tech_pvt->us = switch_core_session_strdup(session, ldl_session_get_caller(dlsession));
+ tech_pvt->them = switch_core_session_strdup(session, ldl_session_get_callee(dlsession));
+ tech_pvt->us = switch_core_session_strdup(session, ldl_session_get_caller(dlsession));
- if ((tmp = strdup(tech_pvt->us))) {
- char *p, *q;
+ if ((tmp = strdup(tech_pvt->us))) {
+ char *p, *q;
- if ((p = strchr(tmp, '@'))) {
- *p++ = '\0';
- if ((q = strchr(p, '/'))) {
- *q = '\0';
- }
- switch_channel_set_variable(channel, "dl_from_user", tmp);
- switch_channel_set_variable(channel, "dl_from_host", p);
+ if ((p = strchr(tmp, '@'))) {
+ *p++ = '\0';
+ if ((q = strchr(p, '/'))) {
+ *q = '\0';
}
-
- switch_safe_free(tmp);
+ switch_channel_set_variable(channel, "dl_from_user", tmp);
+ switch_channel_set_variable(channel, "dl_from_host", p);
}
+
+ switch_safe_free(tmp);
+ }
- if (!tech_pvt->caller_profile) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Creating an identity for %s %s <%s> %s\n",
- ldl_session_get_id(dlsession), cid_name, cid_num, exten);
+ if (!tech_pvt->caller_profile) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Creating an identity for %s %s <%s> %s\n",
+ ldl_session_get_id(dlsession), cid_name, cid_num, exten);
- if ((tech_pvt->caller_profile = switch_caller_profile_new(switch_core_session_get_pool(session),
- ldl_handle_get_login(profile->handle),
- profile->dialplan,
- cid_name,
- cid_num,
- ldl_session_get_ip(dlsession),
- ldl_session_get_value(dlsession, "ani"),
- ldl_session_get_value(dlsession, "aniii"),
- ldl_session_get_value(dlsession, "rdnis"),
- (char *)modname,
- context,
- exten)) != 0) {
- char name[128];
- snprintf(name, sizeof(name), "DingaLing/%s", tech_pvt->caller_profile->destination_number);
- switch_channel_set_name(channel, name);
- switch_channel_set_caller_profile(channel, tech_pvt->caller_profile);
- }
+ if ((tech_pvt->caller_profile = switch_caller_profile_new(switch_core_session_get_pool(session),
+ ldl_handle_get_login(profile->handle),
+ profile->dialplan,
+ cid_name,
+ cid_num,
+ ldl_session_get_ip(dlsession),
+ ldl_session_get_value(dlsession, "ani"),
+ ldl_session_get_value(dlsession, "aniii"),
+ ldl_session_get_value(dlsession, "rdnis"),
+ (char *)modname,
+ context,
+ exten)) != 0) {
+ char name[128];
+ snprintf(name, sizeof(name), "DingaLing/%s", tech_pvt->caller_profile->destination_number);
+ switch_channel_set_name(channel, name);
+ switch_channel_set_caller_profile(channel, tech_pvt->caller_profile);
}
+ }
- switch_safe_free(them);
+ switch_safe_free(them);
- if (lanaddr) {
- switch_set_flag_locked(tech_pvt, TFLAG_LANADDR);
- }
+ if (lanaddr) {
+ switch_set_flag_locked(tech_pvt, TFLAG_LANADDR);
+ }
- if (!get_codecs(tech_pvt)) {
- terminate_session(&session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
- status = LDL_STATUS_FALSE;
- goto done;
- }
+ if (!get_codecs(tech_pvt)) {
+ terminate_session(&session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
+ status = LDL_STATUS_FALSE;
+ goto done;
+ }
- tech_pvt->remote_ip = switch_core_session_strdup(session, candidates[x].address);
- ldl_session_set_ip(dlsession, tech_pvt->remote_ip);
- tech_pvt->remote_port = candidates[x].port;
- tech_pvt->remote_user = switch_core_session_strdup(session, candidates[x].username);
+ tech_pvt->remote_ip = switch_core_session_strdup(session, candidates[x].address);
+ ldl_session_set_ip(dlsession, tech_pvt->remote_ip);
+ tech_pvt->remote_port = candidates[x].port;
+ tech_pvt->remote_user = switch_core_session_strdup(session, candidates[x].username);
- if (!switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) {
- if (!do_candidates(tech_pvt, 0)) {
- terminate_session(&session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
- status = LDL_STATUS_FALSE;
- goto done;
- }
+ if (!switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) {
+ if (!do_candidates(tech_pvt, 0)) {
+ terminate_session(&session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
+ status = LDL_STATUS_FALSE;
+ goto done;
}
-
-
- switch_set_flag_locked(tech_pvt, TFLAG_TRANSPORT);
-
- status = LDL_STATUS_SUCCESS;
- goto done;
}
+
+ status = LDL_STATUS_SUCCESS;
+ goto done;
}
}
}
Modified: freeswitch/branches/knhor/trunk/src/mod/endpoints/mod_sofia/Makefile
==============================================================================
--- freeswitch/branches/knhor/trunk/src/mod/endpoints/mod_sofia/Makefile (original)
+++ freeswitch/branches/knhor/trunk/src/mod/endpoints/mod_sofia/Makefile Wed Nov 22 20:43:42 2006
@@ -1,6 +1,6 @@
OS_ARCH := $(subst /,_,$(shell uname -s | sed /\ /s//_/))
VERSION = sofia-sip-1.12
-TARBALL = sofia-sip-1.12.3.10.tar.gz
+TARBALL = sofia-sip-1.12.3.11.tar.gz
CFLAGS += -I. -I$(PREFIX)/include/$(VERSION)
LDFLAGS += -lsofia-sip-ua
LINKER=$(CC)
Modified: freeswitch/branches/knhor/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c
==============================================================================
--- freeswitch/branches/knhor/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c (original)
+++ freeswitch/branches/knhor/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c Wed Nov 22 20:43:42 2006
@@ -167,7 +167,8 @@
TFLAG_XFER = (1 << 19),
TFLAG_NOMEDIA = (1 << 20),
TFLAG_BUGGY_2833 = (1 << 21),
- TFLAG_SIP_HOLD = (1 << 22)
+ TFLAG_SIP_HOLD = (1 << 22),
+ TFLAG_RWLOCK = (1 << 23)
} TFLAGS;
static struct {
@@ -806,7 +807,6 @@
tech_pvt->session = session;
tech_pvt->home = su_home_new(sizeof(*tech_pvt->home));
- su_home_init(tech_pvt->home);
switch_core_session_set_private(session, tech_pvt);
@@ -981,7 +981,7 @@
tech_pvt->chat_to = tech_pvt->dest;
tech_pvt->hash_key = switch_core_session_strdup(tech_pvt->session, hash_key);
switch_core_hash_insert(tech_pvt->profile->chat_hash, tech_pvt->hash_key, tech_pvt);
-
+ free(e_dest);
}
holdstr = switch_test_flag(tech_pvt, TFLAG_SIP_HOLD) ? "*" : "";
@@ -1266,7 +1266,7 @@
switch_clear_flag_locked(tech_pvt, TFLAG_IO);
if (tech_pvt->home) {
- su_home_deinit(tech_pvt->home);
+ su_home_unref(tech_pvt->home);
tech_pvt->home = NULL;
}
@@ -2071,7 +2071,7 @@
tech_pvt->dest = switch_core_session_strdup(nsession, buf);
} else {
- terminate_session(&nsession, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER, __LINE__);
+ terminate_session(&nsession, SWITCH_CAUSE_NO_ROUTE_DESTINATION, __LINE__);
goto done;
}
} else if (!strchr(dest, '@')) {
@@ -2081,7 +2081,7 @@
tech_pvt->dest = switch_core_session_strdup(nsession, buf);
} else {
- terminate_session(&nsession, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER, __LINE__);
+ terminate_session(&nsession, SWITCH_CAUSE_NO_ROUTE_DESTINATION, __LINE__);
goto done;
}
} else {
@@ -2591,6 +2591,11 @@
nua_ack(nh, TAG_END());
break;
case nua_callstate_received:
+ if (session && switch_core_session_running(session)) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Re-Entering Call State Received!\n");
+ return;
+ }
+
if (channel) {
if (r_sdp) {
if (switch_test_flag(tech_pvt, TFLAG_NOMEDIA)) {
@@ -2754,7 +2759,12 @@
break;
case nua_callstate_terminated:
if (session) {
+ if (switch_test_flag(tech_pvt, TFLAG_RWLOCK)) {
+ switch_core_session_rwunlock(session);
+ switch_clear_flag(tech_pvt, TFLAG_RWLOCK);
+ }
if (!switch_test_flag(tech_pvt, TFLAG_BYE)) {
+
switch_set_flag_locked(tech_pvt, TFLAG_BYE);
if (switch_test_flag(tech_pvt, TFLAG_NOHUP)) {
switch_clear_flag_locked(tech_pvt, TFLAG_NOHUP);
@@ -3977,7 +3987,8 @@
}
attach_private(session, profile, tech_pvt, username);
-
+ switch_core_session_read_lock(session);
+ switch_set_flag(tech_pvt, TFLAG_RWLOCK);
channel = switch_core_session_get_channel(session);
switch_channel_set_variable(channel, "endpoint_disposition", "INBOUND CALL");
set_chat_hash(tech_pvt, sip);
@@ -4105,13 +4116,35 @@
sip_t const *sip,
tagi_t tags[])
{
+ if (sofia_private && sofia_private->oreg) {
+ if (status == 200) {
+ sofia_private->oreg->state = REG_STATE_REGISTER;
+ } else {
+ sofia_private->oreg->state = REG_STATE_FAILED;
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "received %d on register!\n", status);
+ }
+ }
+}
+
+static void sip_r_challenge(int status,
+ char const *phrase,
+ nua_t *nua,
+ sofia_profile_t *profile,
+ nua_handle_t *nh,
+ sofia_private_t *sofia_private,
+ sip_t const *sip,
+ tagi_t tags[])
+{
outbound_reg_t *oreg = NULL;
sip_www_authenticate_t const *authenticate = NULL;
switch_core_session_t *session = sofia_private ? sofia_private->session : NULL;
- char const *realm = NULL;
+ char const *realm = NULL;
+ char *p = NULL, *duprealm = NULL, *qrealm = NULL;
char const *scheme = NULL;
int index;
char *cur;
+ char authentication[256] = "";
+ int ss_state;
if (session) {
private_object_t *tech_pvt;
@@ -4121,78 +4154,78 @@
}
}
- if (status == 401 || status == 407) {
- if (sip->sip_www_authenticate) {
- authenticate = sip->sip_www_authenticate;
- } else if (sip->sip_proxy_authenticate) {
- authenticate = sip->sip_proxy_authenticate;
- } else {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Missing Authenticate Header!\n");
- return;
- }
- scheme = (char const *) authenticate->au_scheme;
- if (authenticate->au_params) {
- for(index = 0; (cur=(char*)authenticate->au_params[index]); index++) {
- if ((realm = strstr(cur, "realm="))) {
- realm += 6;
- break;
- }
+
+ if (sip->sip_www_authenticate) {
+ authenticate = sip->sip_www_authenticate;
+ } else if (sip->sip_proxy_authenticate) {
+ authenticate = sip->sip_proxy_authenticate;
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Missing Authenticate Header!\n");
+ return;
+ }
+ scheme = (char const *) authenticate->au_scheme;
+ if (authenticate->au_params) {
+ for(index = 0; (cur=(char*)authenticate->au_params[index]); index++) {
+ if ((realm = strstr(cur, "realm="))) {
+ realm += 6;
+ break;
}
}
+ }
- if (!(scheme && realm)) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No scheme and realm!\n");
- return;
- }
+ if (!(scheme && realm)) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No scheme and realm!\n");
+ return;
}
+ if (profile) {
+ outbound_reg_t *oregp;
- if (sofia_private) {
- if (sofia_private->oreg) {
- oreg = sofia_private->oreg;
- } else if (profile) {
- outbound_reg_t *oregp;
+ if ((duprealm = strdup(realm))) {
+ qrealm = duprealm;
+
+ while(*qrealm && *qrealm == '"') {
+ qrealm++;
+ }
+
+ if ((p = strchr(qrealm, '"'))) {
+ *p = '\0';
+ }
+
for (oregp = profile->registrations; oregp; oregp = oregp->next) {
- if (scheme && realm && !strcasecmp(oregp->register_scheme, scheme) && !strcasecmp(oregp->register_realm, realm)) {
+ if (scheme && qrealm && !strcasecmp(oregp->register_scheme, scheme) && !strcasecmp(oregp->register_realm, qrealm)) {
oreg = oregp;
break;
}
}
+ if (!oreg) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No Match for Scheme [%s] Realm [%s]\n", scheme, qrealm);
+ return;
+ }
+ switch_safe_free(duprealm);
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Memory Error!\n");
+ return;
}
}
-
- if (!oreg) {
- //switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No Register handle to associate!\n");
- return;
- }
-
- if (status == 200) {
- oreg->state = REG_STATE_REGISTER;
- } else if (authenticate) {
- char authentication[256] = "";
- int ss_state;
-
- if (realm) {
- snprintf(authentication, sizeof(authentication), "%s:%s:%s:%s", scheme, realm,
- oreg->register_username,
- oreg->register_password);
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Authenticating '%s' with '%s'.\n",
- profile->username, authentication);
+ snprintf(authentication, sizeof(authentication), "%s:%s:%s:%s", scheme, realm,
+ oreg->register_username,
+ oreg->register_password);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Authenticating '%s' with '%s'.\n",
+ profile->username, authentication);
- ss_state = nua_callstate_authenticating;
- tl_gets(tags,
- NUTAG_CALLSTATE_REF(ss_state),
- SIPTAG_WWW_AUTHENTICATE_REF(authenticate),
- TAG_END());
+ ss_state = nua_callstate_authenticating;
-
-
- nua_authenticate(nh, SIPTAG_EXPIRES_STR(oreg->expires_str), NUTAG_AUTH(authentication), TAG_END());
- }
- }
+ tl_gets(tags,
+ NUTAG_CALLSTATE_REF(ss_state),
+ SIPTAG_WWW_AUTHENTICATE_REF(authenticate),
+ TAG_END());
+
+ nua_authenticate(nh, SIPTAG_EXPIRES_STR(oreg->expires_str), NUTAG_AUTH(authentication), TAG_END());
+
}
static void event_callback(nua_event_t event,
@@ -4245,6 +4278,11 @@
goto done;
}
}
+
+ if (status == 401 || status == 407) {
+ sip_r_challenge(status, phrase, nua, profile, nh, sofia_private, sip, tags);
+ goto done;
+ }
switch (event) {
case nua_r_shutdown:
@@ -4256,6 +4294,8 @@
break;
case nua_r_invite:
+ break;
+
case nua_r_register:
sip_r_register(status, phrase, nua, profile, nh, sofia_private, sip, tags);
break;
@@ -4406,24 +4446,29 @@
oregp->state = REG_STATE_REGED;
break;
case REG_STATE_UNREGED:
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "registering %s\n", oregp->name);
if ((oregp->nh = nua_handle(oregp->profile->nua, NULL,
NUTAG_URL(oregp->register_proxy),
SIPTAG_TO_STR(oregp->register_to),
NUTAG_CALLSTATE_REF(ss_state),
SIPTAG_FROM_STR(oregp->register_from), TAG_END()))) {
-
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "registering %s\n", oregp->name);
oregp->sofia_private.oreg = oregp;
nua_handle_bind(oregp->nh, &oregp->sofia_private);
nua_register(oregp->nh,
- SIPTAG_FROM_STR(oregp->register_from),
- SIPTAG_CONTACT_STR(oregp->register_from),
- SIPTAG_EXPIRES_STR(oregp->expires_str),
- NUTAG_REGISTRAR(oregp->register_proxy),
- TAG_NULL());
+ SIPTAG_FROM_STR(oregp->register_from),
+ SIPTAG_CONTACT_STR(oregp->register_from),
+ SIPTAG_EXPIRES_STR(oregp->expires_str),
+ NUTAG_REGISTRAR(oregp->register_proxy),
+ NUTAG_OUTBOUND("no-options-keepalive"),
+ NUTAG_OUTBOUND("no-validate"),
+ NUTAG_KEEPALIVE(0),
+ TAG_NULL());
oregp->retry = now + 10;
oregp->state = REG_STATE_TRYING;
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error registering %s\n", oregp->name);
+ oregp->state = REG_STATE_FAILED;
}
break;
@@ -4458,7 +4503,6 @@
profile->s_root = su_root_create(NULL);
profile->home = su_home_new(sizeof(*profile->home));
- su_home_init(profile->home);
profile->nua = nua_create(profile->s_root, /* Event loop */
event_callback, /* Callback for processing events */
@@ -4566,7 +4610,7 @@
}
unreg(profile);
- su_home_deinit(profile->home);
+ su_home_unref(profile->home);
if (switch_event_create(&s_event, SWITCH_EVENT_UNPUBLISH) == SWITCH_STATUS_SUCCESS) {
Modified: freeswitch/branches/knhor/trunk/src/mod/endpoints/mod_sofia/mod_sofia.vcproj
==============================================================================
--- freeswitch/branches/knhor/trunk/src/mod/endpoints/mod_sofia/mod_sofia.vcproj (original)
+++ freeswitch/branches/knhor/trunk/src/mod/endpoints/mod_sofia/mod_sofia.vcproj Wed Nov 22 20:43:42 2006
@@ -42,7 +42,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories=""$(InputDir)..\..\..\include";"$(InputDir)..\..\..\..\libs\include";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.10\libsofia-sip-ua\su";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.10\libsofia-sip-ua\nua";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.10\win32";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.10\libsofia-sip-ua\url";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.10\libsofia-sip-ua\sip";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.10\libsofia-sip-ua\msg";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.10\libsofia-sip-ua\sdp";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.10\libsofia-sip-ua\nta";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.10\libsofia-sip-ua\nea";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.10\libsofia-sip-ua\soa";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.10\libsofia-sip-ua\iptsec";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.10\libsofia-sip-ua\bnf""
+ AdditionalIncludeDirectories=""$(InputDir)..\..\..\include";"$(InputDir)..\..\..\..\libs\include";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.11\libsofia-sip-ua\su";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.11\libsofia-sip-ua\nua";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.11\win32";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.11\libsofia-sip-ua\url";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.11\libsofia-sip-ua\sip";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.11\libsofia-sip-ua\msg";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.11\libsofia-sip-ua\sdp";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.11\libsofia-sip-ua\nta";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.11\libsofia-sip-ua\nea";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.11\libsofia-sip-ua\soa";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.11\libsofia-sip-ua\iptsec";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.11\libsofia-sip-ua\bnf""
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;LIBSOFIA_SIP_UA_STATIC;PTW32_STATIC_LIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
@@ -126,7 +126,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=""$(InputDir)..\..\..\include";"$(InputDir)..\..\..\..\libs\include";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.10\libsofia-sip-ua\su";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.10\libsofia-sip-ua\nua";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.10\win32";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.10\libsofia-sip-ua\url";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.10\libsofia-sip-ua\sip";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.10\libsofia-sip-ua\msg";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.10\libsofia-sip-ua\sdp";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.10\libsofia-sip-ua\nta";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.10\libsofia-sip-ua\nea";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.10\libsofia-sip-ua\soa";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.10\libsofia-sip-ua\iptsec";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.10\libsofia-sip-ua\bnf""
+ AdditionalIncludeDirectories=""$(InputDir)..\..\..\include";"$(InputDir)..\..\..\..\libs\include";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.11\libsofia-sip-ua\su";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.11\libsofia-sip-ua\nua";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.11\win32";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.11\libsofia-sip-ua\url";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.11\libsofia-sip-ua\sip";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.11\libsofia-sip-ua\msg";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.11\libsofia-sip-ua\sdp";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.11\libsofia-sip-ua\nta";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.11\libsofia-sip-ua\nea";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.11\libsofia-sip-ua\soa";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.11\libsofia-sip-ua\iptsec";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.11\libsofia-sip-ua\bnf""
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;LIBSOFIA_SIP_UA_STATIC;PTW32_STATIC_LIB"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
Modified: freeswitch/branches/knhor/trunk/src/mod/formats/mod_native_file/mod_native_file.c
==============================================================================
--- freeswitch/branches/knhor/trunk/src/mod/formats/mod_native_file/mod_native_file.c (original)
+++ freeswitch/branches/knhor/trunk/src/mod/formats/mod_native_file/mod_native_file.c Wed Nov 22 20:43:42 2006
@@ -75,7 +75,7 @@
handle->channels = 1;
handle->format = 0;
handle->sections = 0;
- handle->seekable = 0;
+ handle->seekable = 1;
handle->speed = 0;
handle->private_info = context;
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Opening File [%s] %dhz\n", path, handle->samplerate);
@@ -98,8 +98,10 @@
static switch_status_t native_file_file_seek(switch_file_handle_t *handle, unsigned int *cur_sample, int64_t samples, int whence)
{
- //native_file_context *context = handle->private_info;
-
+ native_file_context *context = handle->private_info;
+
+ switch_file_seek(context->fd, whence, &samples);
+
return SWITCH_STATUS_FALSE;
}
Modified: freeswitch/branches/knhor/trunk/src/mod/languages/mod_perl/mod_perl.c
==============================================================================
--- freeswitch/branches/knhor/trunk/src/mod/languages/mod_perl/mod_perl.c (original)
+++ freeswitch/branches/knhor/trunk/src/mod/languages/mod_perl/mod_perl.c Wed Nov 22 20:43:42 2006
@@ -118,7 +118,6 @@
if (!(my_perl = perl_alloc())) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not allocate perl intrepreter\n");
- switch_core_destroy();
return SWITCH_STATUS_MEMERR;
}
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Allocated perl intrepreter.\n");
Modified: freeswitch/branches/knhor/trunk/src/mod/languages/mod_spidermonkey_teletone/mod_spidermonkey_teletone.c
==============================================================================
--- freeswitch/branches/knhor/trunk/src/mod/languages/mod_spidermonkey_teletone/mod_spidermonkey_teletone.c (original)
+++ freeswitch/branches/knhor/trunk/src/mod/languages/mod_spidermonkey_teletone/mod_spidermonkey_teletone.c Wed Nov 22 20:43:42 2006
@@ -75,7 +75,6 @@
/*********************************************************************************/
static JSBool teletone_construct(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
- int32 memory = 65535;
JSObject *session_obj;
struct teletone_obj *tto = NULL;
struct js_session *jss = NULL;
@@ -101,12 +100,6 @@
timer_name = JS_GetStringBytes(JS_ValueToString(cx, argv[1]));
}
- if (argc > 2) {
- if (!JS_ValueToInt32(cx, argv[2], &memory)) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot Convert to INT\n");
- return JS_FALSE;
- }
- }
switch_core_new_memory_pool(&pool);
if (!(tto = switch_core_alloc(pool, sizeof(*tto)))) {
@@ -149,7 +142,7 @@
tto->obj = obj;
tto->cx = cx;
tto->session = jss->session;
- teletone_init_session(&tto->ts, memory, teletone_handler, tto);
+ teletone_init_session(&tto->ts, 0, teletone_handler, tto);
JS_SetPrivate(cx, obj, tto);
return JS_TRUE;
Modified: freeswitch/branches/knhor/trunk/src/switch.c
==============================================================================
--- freeswitch/branches/knhor/trunk/src/switch.c (original)
+++ freeswitch/branches/knhor/trunk/src/switch.c Wed Nov 22 20:43:42 2006
@@ -139,7 +139,7 @@
case SERVICE_CONTROL_SHUTDOWN:
case SERVICE_CONTROL_STOP:
//Shutdown freeswitch
- switch_core_destroy();
+ switch_core_destroy(0);
//set service status valuse
status.dwCurrentState = SERVICE_STOPPED;
status.dwWin32ExitCode = 0;
@@ -195,6 +195,7 @@
char pid_path[256] = ""; // full path to the pid file
const char *err = NULL; // error value for return from freeswitch initialization
int bg = 0; // TRUE if we are running in background mode
+ int vg = 0; // TRUE if we are running in vg mode
FILE *f; // file handle to the pid file
pid_t pid = 0; //
int x; //
@@ -265,6 +266,10 @@
if (argv[x] && !strcmp(argv[x], "-nc")) {
bg++;
}
+
+ if (argv[x] && !strcmp(argv[x], "-vg")) {
+ vg++;
+ }
}
if (die) {
@@ -302,5 +307,5 @@
switch_core_runtime_loop(bg);
- return switch_core_destroy();
+ return switch_core_destroy(vg);
}
Modified: freeswitch/branches/knhor/trunk/src/switch_channel.c
==============================================================================
--- freeswitch/branches/knhor/trunk/src/switch_channel.c (original)
+++ freeswitch/branches/knhor/trunk/src/switch_channel.c Wed Nov 22 20:43:42 2006
@@ -344,7 +344,7 @@
SWITCH_DECLARE(char *) switch_channel_get_variable(switch_channel_t *channel, char *varname)
{
- char *v;
+ char *v = NULL;
assert(channel != NULL);
if (!(v=switch_core_hash_find(channel->variables, varname))) {
@@ -352,6 +352,7 @@
if (!strcmp(varname, "base_dir")) {
return SWITCH_GLOBAL_dirs.base_dir;
}
+ v = switch_core_get_variable(varname);
}
}
@@ -1113,10 +1114,10 @@
{
char *p, *c;
char *data, *indup;
- size_t sp = 0, len = 0, olen = 0, vtype = 0, br = 0, vnamepos, vvalpos, cpos, ppos, block = 128;
+ size_t sp = 0, len = 0, olen = 0, vtype = 0, br = 0, cpos, block = 128;
char *sub_val = NULL, *func_val = NULL;
- if (!strchr(in, '$') && !strchr(in, '&')) {
+ if (!strchr(in, '$') && !strchr(in, '^')) {
return in;
}
@@ -1132,7 +1133,7 @@
if (*p == '$') {
vtype = 1;
}
- if (*p == '&') {
+ if (*p == '^') {
vtype = 2;
}
@@ -1140,7 +1141,7 @@
char *s = p, *e, *vname, *vval = NULL;
size_t nlen;
s++;
- if (*s == '{') {
+ if (vtype == 1 && *s == '{') {
br = 1;
s++;
}
@@ -1195,36 +1196,35 @@
return in;
}
}
- nlen = strlen(sub_val);
+ nlen = sub_val ? strlen(sub_val) : 0;
+
if (len + nlen >= olen) {
- olen += block;
+ olen = (olen + len + nlen + block);
cpos = c - data;
- ppos = p - data;
- vnamepos = vname - data;
- vvalpos = vval - data;
data = realloc(data, olen);
-
c = data + cpos;
- p = data + ppos;
- vname = data + vnamepos;
- vname = data + vvalpos;
+ memset(c, 0, olen - cpos);
}
-
- len += nlen;
- strcat(c, sub_val);
- c += nlen;
-
- if (func_val) {
- free(func_val);
- func_val = NULL;
+ if (nlen) {
+ len += nlen;
+ strcat(c, sub_val);
+ c += nlen;
}
+
+ switch_safe_free(func_val);
}
if (sp) {
*c++ = ' ';
sp = 0;
+ len++;
}
- *c++ = *p;
- len++;
+
+ if (*p == '$' || *p == '^') {
+ p--;
+ } else {
+ *c++ = *p;
+ len++;
+ }
}
}
free(indup);
Modified: freeswitch/branches/knhor/trunk/src/switch_core.c
==============================================================================
--- freeswitch/branches/knhor/trunk/src/switch_core.c (original)
+++ freeswitch/branches/knhor/trunk/src/switch_core.c Wed Nov 22 20:43:42 2006
@@ -120,6 +120,7 @@
uint32_t session_id;
apr_pool_t *memory_pool;
switch_hash_t *session_table;
+ switch_hash_t *global_vars;
switch_mutex_t *session_table_mutex;
#ifdef CRASH_PROT
switch_hash_t *stack_table;
@@ -558,6 +559,11 @@
}
+SWITCH_DECLARE(char *) switch_core_get_variable(char *varname)
+{
+ return (char *) switch_core_hash_find(runtime.global_vars, varname);
+}
+
SWITCH_DECLARE(switch_core_session_t *) switch_core_session_locate(char *uuid_str)
{
switch_core_session_t *session;
@@ -2619,11 +2625,26 @@
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't get profile!\n");
switch_channel_hangup(session->channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
} else {
+ char *dp[25];
+ int argc, x, count = 0;
+
if (!switch_strlen_zero(caller_profile->dialplan)) {
- dialplan_interface = switch_loadable_module_get_dialplan_interface(caller_profile->dialplan);
+ argc = switch_separate_string(caller_profile->dialplan, ',', dp, (sizeof(dp) / sizeof(dp[0])));
+ for (x = 0; x < argc; x++) {
+ if (!(dialplan_interface = switch_loadable_module_get_dialplan_interface(dp[x]))) {
+ continue;
+ }
+
+ count++;
+
+ if ((extension = dialplan_interface->hunt_function(session)) != 0) {
+ switch_channel_set_caller_extension(session->channel, extension);
+ break;
+ }
+ }
}
- if (!dialplan_interface) {
+ if (!count) {
if (switch_channel_test_flag(session->channel, CF_OUTBOUND)) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "No Dialplan, changing state to HOLD\n");
switch_channel_set_state(session->channel, CS_HOLD);
@@ -2632,12 +2653,9 @@
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "No Dialplan, Aborting\n");
switch_channel_hangup(session->channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
}
- } else {
- if ((extension = dialplan_interface->hunt_function(session)) != 0) {
- switch_channel_set_caller_extension(session->channel, extension);
- }
}
}
+
}
static void switch_core_standard_on_execute(switch_core_session_t *session)
@@ -3849,6 +3867,8 @@
return SWITCH_STATUS_MEMERR;
}
+ switch_core_hash_init(&runtime.global_vars, runtime.memory_pool);
+
if (switch_xml_init(runtime.memory_pool, err) != SWITCH_STATUS_SUCCESS) {
apr_terminate();
return SWITCH_STATUS_MEMERR;
@@ -3868,6 +3888,18 @@
}
}
}
+
+ if ((settings = switch_xml_child(cfg, "variables"))) {
+ for (param = switch_xml_child(settings, "variable"); param; param = param->next) {
+ char *var = (char *) switch_xml_attr_soft(param, "name");
+ char *val = (char *) switch_xml_attr_soft(param, "value");
+ char *varr = NULL, *vall = NULL;
+
+ varr = switch_core_strdup(runtime.memory_pool, var);
+ vall = switch_core_strdup(runtime.memory_pool, val);
+ switch_core_hash_insert(runtime.global_vars, varr, vall);
+ }
+ }
switch_xml_free(xml);
}
@@ -3967,6 +3999,7 @@
runtime.initiated = switch_time_now();
return SWITCH_STATUS_SUCCESS;
}
+
#ifdef SIGPIPE
static void handle_SIGPIPE(int sig)
{
@@ -3975,6 +4008,25 @@
return;
}
#endif
+
+#ifdef SIGPOLL
+static void handle_SIGPOLL(int sig)
+{
+ if(sig);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Sig Poll!\n");
+ return;
+}
+#endif
+
+#ifdef SIGIO
+static void handle_SIGIO(int sig)
+{
+ if(sig);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Sig I/O!\n");
+ return;
+}
+#endif
+
#ifdef TRAP_BUS
static void handle_SIGBUS(int sig)
{
@@ -4001,6 +4053,12 @@
#ifdef SIGPIPE
signal(SIGPIPE, handle_SIGPIPE);
#endif
+#ifdef SIGPOLL
+ signal(SIGPIPE, handle_SIGPOLL);
+#endif
+#ifdef SIGIO
+ signal(SIGPIPE, handle_SIGIO);
+#endif
#ifdef TRAP_BUS
signal(SIGBUS, handle_SIGBUS);
#endif
@@ -4070,7 +4128,7 @@
return 0;
}
-SWITCH_DECLARE(switch_status_t) switch_core_destroy(void)
+SWITCH_DECLARE(switch_status_t) switch_core_destroy(int vg)
{
switch_event_t *event;
if (switch_event_create(&event, SWITCH_EVENT_SHUTDOWN) == SWITCH_STATUS_SUCCESS) {
@@ -4097,7 +4155,9 @@
switch_core_db_close(runtime.db);
switch_core_db_close(runtime.event_db);
switch_xml_destroy();
-
+ if (vg) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Full destruction of the core disabled for memory debugging purposes.\n");
+ }
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Finalizing Shutdown.\n");
switch_log_shutdown();
@@ -4108,7 +4168,9 @@
if (runtime.memory_pool) {
apr_pool_destroy(runtime.memory_pool);
- apr_terminate();
+ if (!vg) {
+ apr_terminate();
+ }
}
#ifdef WIN32
Modified: freeswitch/branches/knhor/trunk/src/switch_ivr.c
==============================================================================
--- freeswitch/branches/knhor/trunk/src/switch_ivr.c (original)
+++ freeswitch/branches/knhor/trunk/src/switch_ivr.c Wed Nov 22 20:43:42 2006
@@ -32,6 +32,7 @@
*/
#include <switch.h>
#include <switch_ivr.h>
+#include <libteletone.h>
static const switch_state_handler_table_t audio_bridge_peer_state_handlers;
@@ -2199,6 +2200,31 @@
}
+struct ringback {
+ switch_buffer_t *audio_buffer;
+ switch_buffer_t *loop_buffer;
+ teletone_generation_session_t ts;
+ switch_file_handle_t fhb;
+ switch_file_handle_t *fh;
+ uint8_t asis;
+};
+
+typedef struct ringback ringback_t;
+
+static int teletone_handler(teletone_generation_session_t *ts, teletone_tone_map_t *map)
+{
+ ringback_t *tto = ts->user_data;
+ int wrote;
+
+ if (!tto) {
+ return -1;
+ }
+ wrote = teletone_mux_tones(ts, map);
+ switch_buffer_write(tto->audio_buffer, ts->buffer, wrote * 2);
+
+ return 0;
+}
+
#define MAX_PEERS 256
SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *session,
switch_core_session_t **bleg,
@@ -2221,6 +2247,7 @@
switch_caller_profile_t *caller_profiles[MAX_PEERS] = {0}, *caller_caller_profile;
char *chan_type = NULL, *chan_data;
switch_channel_t *peer_channel = NULL, *peer_channels[MAX_PEERS] = {0};
+ ringback_t ringback = {0};
time_t start;
switch_frame_t *read_frame = NULL;
switch_memory_pool_t *pool = NULL;
@@ -2232,6 +2259,10 @@
char *file = NULL, *key = NULL, *odata, *var;
switch_call_cause_t reason = SWITCH_CAUSE_UNALLOCATED;
uint8_t to = 0;
+ char *ringback_data = NULL;
+ switch_codec_t *read_codec = NULL;
+ uint8_t sent_ring = 0;
+
write_frame.data = fdata;
*bleg = NULL;
@@ -2262,6 +2293,7 @@
caller_channel = switch_core_session_get_channel(session);
assert(caller_channel != NULL);
+ ringback_data = switch_channel_get_variable(caller_channel, "ringback");
switch_channel_set_variable(caller_channel, "originate_disposition", "failure");
if ((var = switch_channel_get_variable(caller_channel, "group_confirm_key"))) {
@@ -2280,6 +2312,11 @@
or_argc = switch_separate_string(data, '|', pipe_names, (sizeof(pipe_names) / sizeof(pipe_names[0])));
+ if (caller_channel && or_argc > 1 && !ringback_data) {
+ switch_channel_ringback(caller_channel);
+ sent_ring = 1;
+ }
+
for (r = 0; r < or_argc; r++) {
memset(peer_names, 0, sizeof(peer_names));
peer_session = NULL;
@@ -2300,6 +2337,11 @@
and_argc = switch_separate_string(pipe_names[r], '&', peer_names, (sizeof(peer_names) / sizeof(peer_names[0])));
+ if (caller_channel && !sent_ring && and_argc > 1 && !ringback_data) {
+ switch_channel_ringback(caller_channel);
+ sent_ring = 1;
+ }
+
for (i = 0; i < and_argc; i++) {
chan_type = peer_names[i];
@@ -2450,12 +2492,15 @@
}
endfor1:
-
- if (session && !switch_channel_test_flag(caller_channel, CF_NOMEDIA)) {
- switch_codec_t *read_codec = NULL;
+ if (ringback_data && !switch_channel_test_flag(caller_channel, CF_ANSWERED) && !switch_channel_test_flag(caller_channel, CF_EARLY_MEDIA)) {
+ switch_channel_pre_answer(caller_channel);
+ }
+
+ if (session && !switch_channel_test_flag(caller_channel, CF_NOMEDIA)) {
read_codec = switch_core_session_get_read_codec(session);
assert(read_codec != NULL);
+
if (!(pass = (uint8_t)switch_test_flag(read_codec, SWITCH_CODEC_FLAG_PASSTHROUGH))) {
if (switch_core_codec_init(&write_codec,
"L16",
@@ -2466,6 +2511,8 @@
SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE,
NULL,
pool) == SWITCH_STATUS_SUCCESS) {
+
+
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Raw Codec Activation Success L16@%uhz 1 channel %dms\n",
read_codec->implementation->samples_per_second,
read_codec->implementation->microseconds_per_frame / 1000);
@@ -2473,9 +2520,60 @@
write_frame.datalen = read_codec->implementation->bytes_per_frame;
write_frame.samples = write_frame.datalen / 2;
memset(write_frame.data, 255, write_frame.datalen);
+
+ if (ringback_data) {
+ char *tmp_data = NULL;
+ switch_buffer_create_dynamic(&ringback.audio_buffer, 512, 1024, 0);
+ switch_buffer_create_dynamic(&ringback.loop_buffer, 512, 1024, 0);
+
+ if (*ringback_data == '/') {
+ char *ext;
+
+ if ((ext = strrchr(ringback_data, '.'))) {
+ switch_core_session_set_read_codec(session, &write_codec);
+ ext++;
+ } else {
+ ringback.asis++;
+ write_frame.codec = read_codec;
+ ext = read_codec->implementation->iananame;
+ tmp_data = switch_mprintf("%s.%s", ringback_data, ext);
+ ringback_data = tmp_data;
+ }
+
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Play Ringback File [%s]\n", ringback_data);
+
+ ringback.fhb.channels = read_codec->implementation->number_of_channels;
+ ringback.fhb.samplerate = read_codec->implementation->samples_per_second;
+ if (switch_core_file_open(&ringback.fhb,
+ ringback_data,
+ SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT,
+ switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Playing File\n");
+ switch_safe_free(tmp_data);
+ goto notready;
+ }
+ ringback.fh = &ringback.fhb;
+
+
+ } else {
+ teletone_init_session(&ringback.ts, 0, teletone_handler, &ringback);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Play Ringback Tone [%s]\n", ringback_data);
+ //ringback.ts.debug = 1;
+ //ringback.ts.debug_stream = switch_core_get_console();
+ if (teletone_run(&ringback.ts, ringback_data)) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Playing Tone\n");
+ teletone_destroy_session(&ringback.ts);
+ switch_buffer_destroy(&ringback.audio_buffer);
+ switch_buffer_destroy(&ringback.loop_buffer);
+ ringback_data = NULL;
+ }
+ }
+ switch_safe_free(tmp_data);
+ }
} else {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Codec Error!");
switch_channel_hangup(caller_channel, SWITCH_CAUSE_NORMAL_TEMPORARY_FAILURE);
+ read_codec = NULL;
}
}
}
@@ -2506,10 +2604,56 @@
if (!SWITCH_READ_ACCEPTABLE(status)) {
break;
}
- if (read_frame && !pass) {
+ if (read_frame && !pass && !switch_test_flag(read_frame, SFF_CNG) && read_frame->datalen > 1) {
+ if (ringback.fh) {
+ uint8_t abuf[1024];
+ switch_size_t mlen, olen;
+ unsigned int pos = 0;
+
+ if (ringback.asis) {
+ mlen = read_frame->datalen;
+ } else {
+ mlen = read_frame->datalen / 2;
+ }
+
+ olen = mlen;
+ switch_core_file_read(ringback.fh, abuf, &olen);
+
+ if (olen == 0) {
+ olen = mlen;
+ ringback.fh->speed = 0;
+ switch_core_file_seek(ringback.fh, &pos, 0, SEEK_SET);
+ switch_core_file_read(ringback.fh, abuf, &olen);
+ if (olen == 0) {
+ break;
+ }
+ }
+ write_frame.data = abuf;
+ write_frame.datalen = (uint32_t) (ringback.asis ? olen : olen * 2);
+ if (switch_core_session_write_frame(session, &write_frame, 1000, 0) != SWITCH_STATUS_SUCCESS) {
+ break;
+ }
+ } else if (ringback.audio_buffer) {
+ if ((write_frame.datalen = (uint32_t)switch_buffer_read(ringback.audio_buffer,
+ write_frame.data,
+ write_frame.codec->implementation->bytes_per_frame)) <= 0) {
+ switch_buffer_t *tmp;
+ tmp = ringback.audio_buffer;
+ ringback.audio_buffer = ringback.loop_buffer;
+ ringback.loop_buffer = tmp;
+ if ((write_frame.datalen = (uint32_t)switch_buffer_read(ringback.audio_buffer,
+ write_frame.data,
+ write_frame.codec->implementation->bytes_per_frame)) <= 0) {
+ break;
+ }
+ }
+ }
if (switch_core_session_write_frame(session, &write_frame, 1000, 0) != SWITCH_STATUS_SUCCESS) {
break;
}
+ if (ringback.loop_buffer) {
+ switch_buffer_write(ringback.loop_buffer, write_frame.data, write_frame.datalen);
+ }
}
} else {
@@ -2616,6 +2760,19 @@
if (!pass && write_codec.implementation) {
switch_core_codec_destroy(&write_codec);
+ }
+
+ if (ringback.fh) {
+ switch_core_file_close(ringback.fh);
+ ringback.fh = NULL;
+ if (read_codec && !ringback.asis) {
+ switch_core_session_set_read_codec(session, read_codec);
+ switch_core_session_reset(session);
+ }
+ } else if (ringback.audio_buffer) {
+ teletone_destroy_session(&ringback.ts);
+ switch_buffer_destroy(&ringback.audio_buffer);
+ switch_buffer_destroy(&ringback.loop_buffer);
}
for (i = 0; i < and_argc; i++) {
Modified: freeswitch/branches/knhor/trunk/src/switch_log.c
==============================================================================
--- freeswitch/branches/knhor/trunk/src/switch_log.c (original)
+++ freeswitch/branches/knhor/trunk/src/switch_log.c Wed Nov 22 20:43:42 2006
@@ -238,6 +238,8 @@
node->content = content;
node->timestamp = now;
switch_queue_push(LOG_QUEUE, node);
+ } else {
+ free(data);
}
}
}
Modified: freeswitch/branches/knhor/trunk/src/switch_rtp.c
==============================================================================
--- freeswitch/branches/knhor/trunk/src/switch_rtp.c (original)
+++ freeswitch/branches/knhor/trunk/src/switch_rtp.c Wed Nov 22 20:43:42 2006
@@ -757,7 +757,7 @@
static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_type, switch_frame_flag_t *flags)
{
- switch_size_t bytes;
+ switch_size_t bytes = 0;
switch_status_t status;
uint8_t check = 1;
@@ -765,7 +765,7 @@
rtp_session->last_time = switch_time_now();
}
- for(;;) {
+ while(rtp_session->ready) {
bytes = sizeof(rtp_msg_t);
status = switch_socket_recvfrom(rtp_session->from_addr, rtp_session->sock, 0, (void *)&rtp_session->recv_msg, &bytes);
Modified: freeswitch/branches/knhor/trunk/src/switch_swig.c
==============================================================================
--- freeswitch/branches/knhor/trunk/src/switch_swig.c (original)
+++ freeswitch/branches/knhor/trunk/src/switch_swig.c Wed Nov 22 20:43:42 2006
@@ -64,7 +64,7 @@
{
switch_status_t status;
- status = switch_core_destroy();
+ status = switch_core_destroy(0);
return status == SWITCH_STATUS_SUCCESS ? 1 : 0;
}
Modified: freeswitch/branches/knhor/trunk/w32/Library/FreeSwitchCore.vcproj
==============================================================================
--- freeswitch/branches/knhor/trunk/w32/Library/FreeSwitchCore.vcproj (original)
+++ freeswitch/branches/knhor/trunk/w32/Library/FreeSwitchCore.vcproj Wed Nov 22 20:43:42 2006
@@ -43,7 +43,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\src\include;..\..\libs\include;..\..\libs\srtp\include;..\..\libs\srtp\crypto\include;..\..\libs\libresample\include"
+ AdditionalIncludeDirectories="..\..\src\include;..\..\libs\include;..\..\libs\srtp\include;..\..\libs\srtp\crypto\include;..\..\libs\libresample\include;..\..\libs\libteletone\src"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FREESWITCHCORE_EXPORTS"
MinimalRebuild="true"
BasicRuntimeChecks="3"
@@ -136,7 +136,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="..\..\src\include;..\..\libs\include;..\..\libs\srtp\include;..\..\libs\srtp\crypto\include;..\..\libs\libresample\include"
+ AdditionalIncludeDirectories="..\..\src\include;..\..\libs\include;..\..\libs\srtp\include;..\..\libs\srtp\crypto\include;..\..\libs\libresample\include;..\..\libs\libteletone\src"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FREESWITCHCORE_EXPORTS;CRASH_PROT"
RuntimeLibrary="2"
UsePrecompiledHeader="2"
1
0
[commit] r3440 - freeswitch/branches/knhor/trunk/src/mod/applications/mod_conference
by Freeswitch SVN 23 Nov '06
by Freeswitch SVN 23 Nov '06
23 Nov '06
Author: knhor
Date: Wed Nov 22 20:40:14 2006
New Revision: 3440
Modified:
freeswitch/branches/knhor/trunk/src/mod/applications/mod_conference/mod_conference.c
Log:
mostly complete support or ivr menus with caller control callbacks
Modified: freeswitch/branches/knhor/trunk/src/mod/applications/mod_conference/mod_conference.c
==============================================================================
--- freeswitch/branches/knhor/trunk/src/mod/applications/mod_conference/mod_conference.c (original)
+++ freeswitch/branches/knhor/trunk/src/mod/applications/mod_conference/mod_conference.c Wed Nov 22 20:40:14 2006
@@ -56,12 +56,23 @@
FILE_STOP_ALL
} file_stop_t;
+/* Global Values */
+static struct {
+ switch_memory_pool_t *conference_pool;
+ switch_mutex_t *conference_mutex;
+ switch_hash_t *conference_hash;
+ switch_mutex_t *id_mutex;
+ switch_mutex_t *hash_mutex;
+ uint32_t id_pool;
+ int32_t running;
+ uint32_t threads;
+} globals;
+
typedef enum {
- CALLER_CONTROL_NOEVENT,
CALLER_CONTROL_MUTE,
CALLER_CONTROL_DEAF_MUTE,
CALLER_CONTROL_ENERGY_UP,
- CALLER_CONTROL_ENERGY_EQU_CONFERENCE,
+ CALLER_CONTROL_ENERGY_EQU_CONF,
CALLER_CONTROL_ENERGEY_DN,
CALLER_CONTROL_VOL_TALK_UP,
CALLER_CONTROL_VOL_TALK_ZERO,
@@ -70,44 +81,23 @@
CALLER_CONTROL_VOL_LISTEN_ZERO,
CALLER_CONTROL_VOL_LISTEN_DN,
CALLER_CONTROL_HANGUP,
+ CALLER_CONTROL_MENU,
} caller_control_t;
-static struct _caller_control_actions_struct {
- char *key;
- char *default_digits;
- caller_control_t action;
-} caller_control_actions[] = {
- {"mute", "0", CALLER_CONTROL_MUTE},
- {"deaf mute", "*", CALLER_CONTROL_DEAF_MUTE},
- {"energy up", "9", CALLER_CONTROL_ENERGY_UP},
- {"energy equ", "8", CALLER_CONTROL_ENERGY_EQU_CONFERENCE},
- {"energy dn", "7", CALLER_CONTROL_ENERGEY_DN},
- {"vol talk up", "3", CALLER_CONTROL_VOL_TALK_UP},
- {"vol talk zero", "2", CALLER_CONTROL_VOL_TALK_ZERO},
- {"vol talk dn", "1", CALLER_CONTROL_VOL_TALK_DN},
- {"vol listen up", "6", CALLER_CONTROL_VOL_LISTEN_UP},
- {"vol listen zero", "5", CALLER_CONTROL_VOL_LISTEN_ZERO},
- {"vol listen dn", "4", CALLER_CONTROL_VOL_LISTEN_DN},
- {"hangup", "#", CALLER_CONTROL_HANGUP},
-};
-#define CALLER_CONTROL_ACTIONS_QTY (sizeof(caller_control_actions)/sizeof(caller_control_actions[0]))
-
-/* Global Values */
-static struct {
- switch_memory_pool_t *conference_pool;
- switch_mutex_t *conference_mutex;
- switch_hash_t *conference_hash;
- switch_mutex_t *id_mutex;
- switch_mutex_t *hash_mutex;
- uint32_t id_pool;
- int32_t running;
- uint32_t threads;
-} globals;
-
-// forward declaration for conference_obj structure
+// forward declaration for conference_obj and caller_control
struct conference_member;
typedef struct conference_member conference_member_t;
+typedef struct caller_control_actions {
+ void (*handler)(conference_member_t *, void *);
+ void *data;
+} caller_control_action_t;
+
+typedef struct caller_control_menu_info {
+ switch_ivr_menu_t *stack;
+ char *name;
+} caller_control_menu_info_t;
+
typedef enum {
MFLAG_RUNNING = (1 << 0),
MFLAG_CAN_SPEAK = (1 << 1),
@@ -117,7 +107,6 @@
MFLAG_NOCHANNEL = (1 << 5)
} member_flag_t;
-
typedef enum {
CFLAG_RUNNING = (1 << 0),
CFLAG_DYNAMIC = (1 << 1),
@@ -137,7 +126,7 @@
NODE_TYPE_SPEECH
} node_type_t;
-struct confernce_file_node {
+typedef struct confernce_file_node {
switch_file_handle_t fh;
switch_speech_handle_t sh;
node_type_t type;
@@ -145,12 +134,10 @@
switch_memory_pool_t *pool;
uint32_t leadin;
struct confernce_file_node *next;
-};
+} confernce_file_node_t;
-typedef struct confernce_file_node confernce_file_node_t;
-
/* Conference Object */
-struct conference_obj {
+typedef struct conference_obj {
char *name;
char *timer_name;
char *tts_engine;
@@ -186,16 +173,14 @@
uint32_t count;
int32_t energy_level;
uint8_t min;
-};
-typedef struct conference_obj conference_obj_t;
+} conference_obj_t;
/* Relationship with another member */
-struct conference_relationship {
+typedef struct conference_relationship {
uint32_t id;
uint32_t flags;
struct conference_relationship *next;
-};
-typedef struct conference_relationship conference_relationship_t;
+} conference_relationship_t;
/* Conference Member Object */
struct conference_member {
@@ -231,12 +216,11 @@
};
/* Record Node */
-struct conference_record {
+typedef struct conference_record {
conference_obj_t *conference;
char *path;
switch_memory_pool_t *pool;
-};
-typedef struct conference_record conference_record_t;
+} conference_record_t;
// API command parser
typedef struct api_command {
@@ -272,7 +256,6 @@
static void conference_function(switch_core_session_t *session, char *data);
static void launch_conference_thread(conference_obj_t *conference);
static void *SWITCH_THREAD_FUNC input_thread_run(switch_thread_t *thread, void *obj);
-static void launch_input_thread(conference_member_t *member, switch_memory_pool_t *pool);
static switch_status_t conference_local_play_file(switch_core_session_t *session, char *path, uint32_t leadin, char *buf, switch_size_t len);
static switch_status_t conference_member_play_file(conference_member_t *member, char *file, uint32_t leadin);
static switch_status_t conference_member_say(conference_obj_t *conference, conference_member_t *member, char *text, uint32_t leadin);
@@ -807,7 +790,7 @@
return NULL;
}
-static void conference_loop_fn_mute_toggle(conference_member_t *member)
+static void conference_loop_fn_mute_toggle(conference_member_t *member, void *data)
{
if (switch_test_flag(member, MFLAG_CAN_SPEAK)) {
conf_api_sub_mute(member, NULL, NULL);
@@ -817,7 +800,7 @@
}
}
-static void conference_loop_fn_deafmute_toggle(conference_member_t *member)
+static void conference_loop_fn_deafmute_toggle(conference_member_t *member, void *data)
{
if (switch_test_flag(member, MFLAG_CAN_SPEAK)) {
conf_api_sub_mute(member, NULL, NULL);
@@ -828,7 +811,7 @@
}
}
-static void conference_loop_fn_energy_up(conference_member_t *member)
+static void conference_loop_fn_energy_up(conference_member_t *member, void *data)
{
char msg[512];
@@ -842,7 +825,7 @@
conference_member_say(member->conference, member, msg, 0);
}
-static void conference_loop_fn_energy_equ_conference(conference_member_t *member)
+static void conference_loop_fn_energy_equ_conf(conference_member_t *member, void *data)
{
char msg[512];
@@ -853,7 +836,7 @@
conference_member_say(member->conference, member, msg, 0);
}
-static void conference_loop_fn_energy_dn(conference_member_t *member)
+static void conference_loop_fn_energy_dn(conference_member_t *member, void *data)
{
char msg[512];
@@ -867,7 +850,7 @@
conference_member_say(member->conference, member, msg, 0);
}
-static void conference_loop_fn_volume_talk_up(conference_member_t *member)
+static void conference_loop_fn_volume_talk_up(conference_member_t *member, void *data)
{
char msg[512];
@@ -879,7 +862,7 @@
conference_member_say(member->conference, member, msg, 0);
}
-static void conference_loop_fn_volume_talk_zero(conference_member_t *member)
+static void conference_loop_fn_volume_talk_zero(conference_member_t *member, void *data)
{
char msg[512];
@@ -890,7 +873,7 @@
conference_member_say(member->conference, member, msg, 0);
}
-static void conference_loop_fn_volume_talk_dn(conference_member_t *member)
+static void conference_loop_fn_volume_talk_dn(conference_member_t *member, void *data)
{
char msg[512];
@@ -902,7 +885,7 @@
conference_member_say(member->conference, member, msg, 0);
}
-static void conference_loop_fn_volume_listen_up(conference_member_t *member)
+static void conference_loop_fn_volume_listen_up(conference_member_t *member, void *data)
{
char msg[512];
@@ -914,7 +897,7 @@
conference_member_say(member->conference, member, msg, 0);
}
-static void conference_loop_fn_volume_listen_zero(conference_member_t *member)
+static void conference_loop_fn_volume_listen_zero(conference_member_t *member, void *data)
{
char msg[512];
@@ -925,7 +908,7 @@
conference_member_say(member->conference, member, msg, 0);
}
-static void conference_loop_fn_volume_listen_dn(conference_member_t *member)
+static void conference_loop_fn_volume_listen_dn(conference_member_t *member, void *data)
{
char msg[512];
@@ -937,11 +920,34 @@
conference_member_say(member->conference, member, msg, 0);
}
-static void conference_loop_fn_hangup(conference_member_t *member)
+static void conference_loop_fn_hangup(conference_member_t *member, void *data)
{
switch_clear_flag_locked(member, MFLAG_RUNNING);
}
+typedef struct caller_control_menu_ctx {
+ switch_ivr_menu_xml_ctx_t *xml_ctx;
+ switch_ivr_menu_t *menu_stack;
+ char *name;
+} caller_control_menu_ctx_t;
+
+static void conference_loop_fn_menu(conference_member_t *member, void *data)
+{
+ if (data != NULL) {
+ caller_control_menu_ctx_t *menu_ctx = (caller_control_menu_ctx_t *)data;
+
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "conference_loop_fn_menu handler '%s'\n",menu_ctx->name);
+ if (menu_ctx->menu_stack != NULL && menu_ctx->xml_ctx != NULL) {
+ switch_ivr_menu_execute(member->session,menu_ctx->menu_stack,menu_ctx->name,NULL);
+ } else {
+ if(menu_ctx->menu_stack == NULL)
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "conference_loop_fn_menu handler NULL menu_stack\n");
+ if(menu_ctx->xml_ctx == NULL)
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "conference_loop_fn_menu handler NULL xml_ctx\n");
+ }
+ }
+}
+
/* Create a thread for the conference and launch it */
static void launch_input_thread(conference_member_t *member, switch_memory_pool_t *pool)
{
@@ -1038,51 +1044,13 @@
switch_channel_dequeue_dtmf(channel, dtmf, sizeof(dtmf));
if(member->conference->dtmf_parser != NULL) {
- for (digit = dtmf; *digit; digit++) {
- int *action = (int *)switch_ivr_digit_stream_parser_feed(member->conference->dtmf_parser, *digit);
+ caller_control_action_t *action;
- if (action != NULL) {
- switch(*action) {
- case CALLER_CONTROL_NOEVENT:
- // the digit string collected so far has not been recognized
- break;
- case CALLER_CONTROL_MUTE:
- conference_loop_fn_mute_toggle(member);
- break;
- case CALLER_CONTROL_DEAF_MUTE:
- conference_loop_fn_deafmute_toggle(member);
- break;
- case CALLER_CONTROL_ENERGY_UP:
- conference_loop_fn_energy_up(member);
- break;
- case CALLER_CONTROL_ENERGY_EQU_CONFERENCE:
- conference_loop_fn_energy_equ_conference(member);
- break;
- case CALLER_CONTROL_ENERGEY_DN:
- conference_loop_fn_energy_dn(member);
- break;
- case CALLER_CONTROL_VOL_TALK_UP:
- conference_loop_fn_volume_talk_up(member);
- break;
- case CALLER_CONTROL_VOL_TALK_ZERO:
- conference_loop_fn_volume_talk_zero(member);
- break;
- case CALLER_CONTROL_VOL_TALK_DN:
- conference_loop_fn_volume_talk_dn(member);
- break;
- case CALLER_CONTROL_VOL_LISTEN_UP:
- conference_loop_fn_volume_listen_up(member);
- break;
- case CALLER_CONTROL_VOL_LISTEN_ZERO:
- conference_loop_fn_volume_listen_zero(member);
- break;
- case CALLER_CONTROL_VOL_LISTEN_DN:
- conference_loop_fn_volume_listen_dn(member);
- break;
- case CALLER_CONTROL_HANGUP:
- conference_loop_fn_hangup(member);
- break;
- }
+ for (digit = dtmf; *digit; digit++) {
+ action = (caller_control_action_t *)switch_ivr_digit_stream_parser_feed(member->conference->dtmf_parser, *digit);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "digit_stream_parser_feed result != NULL %u\n",action != NULL);
+ if (action != NULL && action->handler != NULL) {
+ action->handler(member,action->data);
}
}
}
@@ -3254,11 +3222,71 @@
/*.chat_interface */ &conference_chat_interface
};
+static switch_ivr_action_t conference_caller_control_menu_handler(switch_ivr_menu_t *menu, char *param, char *buf, size_t buflen, void *obj)
+{
+ switch_ivr_action_t action = SWITCH_IVR_ACTION_NOOP;
+
+ if (param != NULL) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "caller control menu action '%s'\n",param);
+ }
+
+ return action;
+}
+
+static switch_status_t conference_caller_control_menu_build(caller_control_menu_ctx_t **ctx, conference_obj_t *conference, switch_xml_t profile, char *menu_name)
+{
+ switch_status_t status = SWITCH_STATUS_FALSE;
+
+ if (ctx != NULL && conference != NULL && profile != NULL && menu_name != NULL) {
+ switch_xml_t xml_menus = switch_xml_child(profile, "menus");
+ switch_xml_t xml_menu = (xml_menus != NULL ? switch_xml_find_child(xml_menus, "menu", "name", menu_name) : NULL);
+
+ // if we found the requested menu in our profile
+ if (xml_menu != NULL && xml_menu != NULL) {
+ *ctx = (caller_control_menu_ctx_t *)switch_core_alloc(conference->pool,sizeof(caller_control_menu_ctx_t));
+
+ if (*ctx != NULL) {
+ memset(*ctx,0,sizeof(caller_control_menu_ctx_t));
+
+ // setup an xml parser context, and a menu stack context for the specified menu in our memory pool
+ status = switch_ivr_menu_stack_xml_init(&(*ctx)->xml_ctx, conference->pool);
+ if (status == SWITCH_STATUS_SUCCESS) {
+ (*ctx)->name = switch_core_strdup(conference->pool,menu_name);
+ // add our xml menu handler to the xml stack parser
+ status = switch_ivr_menu_stack_xml_add_custom((*ctx)->xml_ctx, "control", &conference_caller_control_menu_handler);
+ if (status != SWITCH_STATUS_SUCCESS)
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "unable to add custom xml handler\n");
+ // parse the xml stack to build the menu stack
+ status = switch_ivr_menu_stack_xml_build((*ctx)->xml_ctx, &(*ctx)->menu_stack, xml_menus, xml_menu, conference->timer_name);
+ if (status != SWITCH_STATUS_SUCCESS)
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "unable to build xml menu stack\n");
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "unable to init xml menu context\n");
+ }
+ if (status != SWITCH_STATUS_SUCCESS)
+ *ctx = NULL;
+ }
+ } else {
+ if(xml_menus == NULL)
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "caller control menu unable to find xml menus\n");
+ if(xml_menu == NULL)
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "caller control menu unable to find xml menu '%s'\n",menu_name);
+ }
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "null parameters!\n");
+ }
+
+ return status;
+}
+
/* create a new conferene with a specific profile */
static conference_obj_t *conference_new(char *name, switch_xml_t profile, switch_memory_pool_t *pool)
{
conference_obj_t *conference;
switch_xml_t xml_kvp;
+ switch_xml_t xml_controls;
+ switch_xml_t xml_menus;
+ char *controls_set = NULL;
char *rate_name = NULL;
char *interval_name = NULL;
char *timer_name = NULL;
@@ -3470,46 +3498,125 @@
conference->rate = rate;
conference->interval = interval;
- if(switch_ivr_digit_stream_parser_new(conference->pool,&conference->dtmf_parser) == SWITCH_STATUS_SUCCESS) {
- int i;
+ xml_controls = switch_xml_child(profile, "controls");
+ controls_set = (xml_controls != NULL ? (char *) switch_xml_attr_soft(xml_controls, "set") : NULL);
- // count the number of caller control definitons in the profile
- for (i=0,xml_kvp = switch_xml_child(profile, "control"); xml_kvp; xml_kvp = xml_kvp->next) {
- i++;
- }
- // map in the default control handler strings only if the profile has no caller control definitions
- if (i == 0) {
- for(i=0,status=SWITCH_STATUS_SUCCESS; status == SWITCH_STATUS_SUCCESS && i<CALLER_CONTROL_ACTIONS_QTY; i++) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Installing default caller control action name '%s' bound to '%s' digits.\n",
- caller_control_actions[i].key,caller_control_actions[i].default_digits);
- status = switch_ivr_digit_stream_parser_set_event(conference->dtmf_parser,caller_control_actions[i].default_digits,(void *)&(caller_control_actions[i].action));
- }
- }
+ // try to build caller control if the set has been specified and != "none"
+ if (xml_controls != NULL && controls_set != NULL && strcasecmp(controls_set,"none") != 0) {
+ struct default_caller_control_table {
+ char *key;
+ char *digits;
+ caller_control_t action;
+ void (*handler)(conference_member_t *, void *);
+ } dcctbl[] = {
+ {"mute", "0", CALLER_CONTROL_MUTE, conference_loop_fn_mute_toggle},
+ {"deaf mute", "*", CALLER_CONTROL_DEAF_MUTE, conference_loop_fn_deafmute_toggle},
+ {"energy up", "9", CALLER_CONTROL_ENERGY_UP, conference_loop_fn_energy_up},
+ {"energy equ", "8", CALLER_CONTROL_ENERGY_EQU_CONF, conference_loop_fn_energy_equ_conf},
+ {"energy dn", "7", CALLER_CONTROL_ENERGEY_DN, conference_loop_fn_energy_dn},
+ {"vol talk up", "3", CALLER_CONTROL_VOL_TALK_UP, conference_loop_fn_volume_talk_up},
+ {"vol talk zero", "2", CALLER_CONTROL_VOL_TALK_ZERO, conference_loop_fn_volume_talk_zero},
+ {"vol talk dn", "1", CALLER_CONTROL_VOL_TALK_DN, conference_loop_fn_volume_talk_dn},
+ {"vol listen up", "6", CALLER_CONTROL_VOL_LISTEN_UP, conference_loop_fn_volume_listen_up},
+ {"vol listen zero", "5", CALLER_CONTROL_VOL_LISTEN_ZERO, conference_loop_fn_volume_listen_zero},
+ {"vol listen dn", "4", CALLER_CONTROL_VOL_LISTEN_DN, conference_loop_fn_volume_listen_dn},
+ {"hangup", "#", CALLER_CONTROL_HANGUP, conference_loop_fn_hangup},
+ {"menu", NULL, CALLER_CONTROL_MENU, conference_loop_fn_menu},
+ };
+ int dcctbl_qty = (sizeof(dcctbl)/sizeof(dcctbl[0]));
- // parse the profile tree for caller control digit strings
- for (xml_kvp = switch_xml_child(profile, "control"); xml_kvp; xml_kvp = xml_kvp->next) {
- char *key = (char *) switch_xml_attr(xml_kvp, "action");
- char *val = (char *) switch_xml_attr(xml_kvp, "digits");
+ if(switch_ivr_digit_stream_parser_new(conference->pool,&conference->dtmf_parser) == SWITCH_STATUS_SUCCESS) {
+
+ // map in the default control handler strings if specified
+ if (strcasecmp(controls_set,"default") == 0) {
+ int i;
+ caller_control_action_t *action;
- if(key != NULL && val != NULL && *key && *val) {
- // scan through all of the valid actions, and if found,
- // set the new caller control action digit string, then
- // stop scanning the table, and go to the next xml kvp.
- for(i=0,status=SWITCH_STATUS_NOOP; i<CALLER_CONTROL_ACTIONS_QTY && status == SWITCH_STATUS_NOOP; i++) {
- if(strcasecmp(caller_control_actions[i].key,key) == 0) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Installing caller control action name '%s' bound to '%s' digits.\n",key,val);
- status = switch_ivr_digit_stream_parser_set_event(conference->dtmf_parser,val,(void *)&caller_control_actions[i].action);
+ for(i=0,status=SWITCH_STATUS_SUCCESS; status == SWITCH_STATUS_SUCCESS && i<dcctbl_qty; i++) {
+ switch(dcctbl[i].action)
+ {
+ case CALLER_CONTROL_MENU:
+ // default caller control, has no menu specification
+ break;
+ default:
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Installing default caller control action '%s' bound to '%s'.\n",
+ dcctbl[i].key,
+ dcctbl[i].digits);
+ action = (caller_control_action_t *)switch_core_alloc(conference->pool,sizeof(caller_control_action_t));
+ if (action != NULL) {
+ action->handler = dcctbl[i].handler;
+ action->data = NULL;
+ status = switch_ivr_digit_stream_parser_set_event(conference->dtmf_parser,dcctbl[i].digits,action);
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "unable to alloc memory for caller control binding '%s' to '%s'\n",dcctbl[i].key,dcctbl[i].digits);
+ status = SWITCH_STATUS_MEMERR;
+ }
+ break;
}
}
- if(status == SWITCH_STATUS_NOOP) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Invalid caller control action name '%s'.\n",key);
+ } else if (strcasecmp(controls_set,"custom") == 0) {
+ // parse the controls tree for caller control digit strings
+ for (xml_kvp = switch_xml_child(xml_controls, "control"); xml_kvp; xml_kvp = xml_kvp->next) {
+ char *key = (char *) switch_xml_attr(xml_kvp, "action");
+ char *val = (char *) switch_xml_attr(xml_kvp, "digits");
+
+ if(!switch_strlen_zero(key) && !switch_strlen_zero(val)) {
+ int i;
+ caller_control_action_t *action;
+
+ // scan through all of the valid actions, and if found,
+ // set the new caller control action digit string, then
+ // stop scanning the table, and go to the next xml kvp.
+ for(i=0,status=SWITCH_STATUS_NOOP; i<dcctbl_qty && status == SWITCH_STATUS_NOOP; i++) {
+ caller_control_menu_ctx_t *menu_ctx = NULL;
+
+ if(strcasecmp(dcctbl[i].key,key) == 0) {
+ switch(dcctbl[i].action)
+ {
+ case CALLER_CONTROL_MENU:
+ {
+ char *menu_name = (char *)switch_xml_attr_soft(xml_kvp, "menu-name");
+
+ status = conference_caller_control_menu_build(&menu_ctx,conference,profile,menu_name);
+ if (status != SWITCH_STATUS_SUCCESS) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "unable to build menu '%s' bound to '%s'\n", menu_name, val);
+ break;
+ }
+ }
+ // deliberate fall through to default case
+ default:
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Installing caller control action '%s' bound to '%s'.\n",key,val);
+ action = (caller_control_action_t *)switch_core_alloc(conference->pool,sizeof(caller_control_action_t));
+ if (action != NULL) {
+ action->handler = dcctbl[i].handler;
+ action->data = (void *)menu_ctx;
+ status = switch_ivr_digit_stream_parser_set_event(conference->dtmf_parser,val,action);
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "unable to alloc memory for caller control binding '%s' to '%s'\n",dcctbl[i].key,dcctbl[i].digits);
+ status = SWITCH_STATUS_MEMERR;
+ }
+ break;
+ }
+ }
+ }
+ if(status == SWITCH_STATUS_NOOP) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Invalid caller control action name '%s'.\n",key);
+ }
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Invalid caller control config entry pair action='%s' digits='%s'\n",key,val);
+ }
}
- } else {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Invalid caller control config entry pair action='%s' digits='%s'\n",key,val);
}
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unable to allocate caller control digit parser.\n");
}
} else {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unable to allocate caller control digit parser.\n");
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "no caller controls intalled.\n");
+ }
+
+ xml_menus = switch_xml_child(profile, "menus");
+ if (xml_menus != NULL) {
+// switch_xml_t xml_menu;
}
/* Activate the conference mutex for exclusivity */
1
0
23 Nov '06
Author: knhor
Date: Wed Nov 22 20:37:55 2006
New Revision: 3439
Modified:
freeswitch/branches/knhor/trunk/src/include/switch_ivr.h
freeswitch/branches/knhor/trunk/src/switch_ivr.c
Log:
rename switch_ivr_find_menu -> switch_ivr_menu_find
rename switch_ivr_menu_free_stack -> switch_ivr_menu_stack_free
add timer_name parameter to play_or_say and switch_ivr_menu_stack_xml_build
add arg parameter to switch_ivr_menu_bind_function
add switch_ivr_menu_stack_xml_add
add switch_ivr_menu_stack_xml_init
add switch_ivr_menu_stack_xml_add_custom
add exit-sound to ivr_menu
Modified: freeswitch/branches/knhor/trunk/src/include/switch_ivr.h
==============================================================================
--- freeswitch/branches/knhor/trunk/src/include/switch_ivr.h (original)
+++ freeswitch/branches/knhor/trunk/src/include/switch_ivr.h Wed Nov 22 20:37:55 2006
@@ -479,15 +479,16 @@
typedef enum {
SWITCH_IVR_ACTION_DIE, /* Exit the menu. */
SWITCH_IVR_ACTION_EXECMENU, /* Goto another menu in the stack. */
- SWITCH_IVR_ACTION_EXECAPP, /* Execute an application. */
+ SWITCH_IVR_ACTION_EXECAPP, /* Execute an application. */
SWITCH_IVR_ACTION_PLAYSOUND, /* Play a sound. */
- SWITCH_IVR_ACTION_SAYTEXT, /* say text. */
+ SWITCH_IVR_ACTION_SAYTEXT, /* say text. */
SWITCH_IVR_ACTION_BACK, /* Go back 1 menu. */
- SWITCH_IVR_ACTION_TOMAIN, /* Go back to the top level menu. */
+ SWITCH_IVR_ACTION_TOMAIN, /* Go back to the top level menu. */
SWITCH_IVR_ACTION_TRANSFER, /* Transfer caller to another ext. */
+ SWITCH_IVR_ACTION_NOOP, /* No operation */
} switch_ivr_action_t;
struct switch_ivr_menu;
-typedef switch_ivr_action_t switch_ivr_menu_action_function_t(struct switch_ivr_menu *, char *, size_t, void *);
+typedef switch_ivr_action_t switch_ivr_menu_action_function_t(struct switch_ivr_menu *, char *, char *, size_t, void *);
typedef struct switch_ivr_menu switch_ivr_menu_t;
typedef struct switch_ivr_menu_action switch_ivr_menu_action_t;
/******************************************************************************************************/
@@ -499,11 +500,13 @@
*\param name A pointer to the name of this menu.
*\param greeting_sound Optional pointer to a main sound (press 1 for this 2 for that).
*\param short_greeting_sound Optional pointer to a shorter main sound for subsequent loops.
+ *\param exit_sound Optional pointer to a sound to play upon exiting the menu
*\param invalid_sound Optional pointer to a sound to play after invalid input.
*\param tts_engine Text To Speech engine name
*\param tts_voice Text To Speech engine voice name
*\param timeout A number of milliseconds to pause before looping.
*\param max_failures Maximum number of failures to withstand before hangingup This resets everytime you enter the menu.
+ *\param timer_name A pointer to a timer name
*\param pool memory pool (NULL to create one)
*\return SWITCH_STATUS_SUCCESS if the menu was created
*/
@@ -512,11 +515,13 @@
char *name,
char *greeting_sound,
char *short_greeting_sound,
+ char *exit_sound,
char *invalid_sound,
char *tts_engine,
char *tts_voice,
int timeout,
int max_failures,
+ char *timer_name,
switch_memory_pool_t *pool);
/*!
@@ -534,13 +539,14 @@
*\brief Bind a keystroke to a callback function.
*\param menu The menu obj you wish to bind to.
*\param function The function to call [int proto(struct switch_ivr_menu *, char *, size_t, void *)]
+ *\param arg Optional (sometimes necessary) string arguement.
*\param bind KeyStrokes to bind the action to.
*\note The function is passed a buffer to fill in with any required argument data.
*\note The function is also passed an optional void pointer to an object set upon menu execution. (think threads)
*\note The function returns an switch_ivr_action_t enum of what you want to do. and looks to your buffer for args.
*\return SWUTCH_STATUS_SUCCESS if the function was binded
*/
-SWITCH_DECLARE(switch_status_t) switch_ivr_menu_bind_function(switch_ivr_menu_t *menu, switch_ivr_menu_action_function_t *function, char *bind);
+SWITCH_DECLARE(switch_status_t) switch_ivr_menu_bind_function(switch_ivr_menu_t *menu, switch_ivr_menu_action_function_t *function, char *arg, char *bind);
/*!
@@ -558,20 +564,31 @@
*\param stack The top level menu you wish to destroy.
*\return SWITCH_STATUS_SUCCESS if the object was a top level menu and it was freed
*/
-SWITCH_DECLARE(switch_status_t) switch_ivr_menu_free_stack(switch_ivr_menu_t *stack);
+SWITCH_DECLARE(switch_status_t) switch_ivr_menu_stack_free(switch_ivr_menu_t *stack);
+
+struct switch_ivr_menu_xml_ctx;
+typedef struct switch_ivr_menu_xml_ctx switch_ivr_menu_xml_ctx_t;
/*!
- *\brief build a menu stack from an xml source
+ *\brief Build a menu stack from an xml source
*\param menu_stack The menu stack object that will be created for you
*\param xml_menus The xml Menus source
*\param xml_menu The xml Menu source of the menu to be created
*\param pool memory pool (NULL to create one)
*\return SWITCH_STATUS_SUCCESS if all is well
*/
-SWITCH_DECLARE(switch_status_t) switch_ivr_build_xml_menu_stack(switch_ivr_menu_t **menu_stack,
+SWITCH_DECLARE(switch_status_t) switch_ivr_menu_stack_xml_build(switch_ivr_menu_xml_ctx_t *xml_menu_ctx,
+ switch_ivr_menu_t **menu_stack,
switch_xml_t xml_menus,
switch_xml_t xml_menu,
- switch_memory_pool_t *pool);
+ char *timer_name);
+
+SWITCH_DECLARE(switch_status_t) switch_ivr_menu_stack_xml_add_custom(switch_ivr_menu_xml_ctx_t *xml_menu_ctx,
+ char *name,
+ switch_ivr_menu_action_function_t *function);
+
+SWITCH_DECLARE(switch_status_t) switch_ivr_menu_stack_xml_init(switch_ivr_menu_xml_ctx_t **xml_menu_ctx, switch_memory_pool_t *pool);
+
/** @} */
SWITCH_END_EXTERN_C
Modified: freeswitch/branches/knhor/trunk/src/switch_ivr.c
==============================================================================
--- freeswitch/branches/knhor/trunk/src/switch_ivr.c (original)
+++ freeswitch/branches/knhor/trunk/src/switch_ivr.c Wed Nov 22 20:37:55 2006
@@ -186,7 +186,7 @@
uint32_t elapsed;
channel = switch_core_session_get_channel(session);
- assert(channel != NULL);
+ assert(channel != NULL);
if (!input_callback) {
return SWITCH_STATUS_GENERR;
@@ -1005,6 +1005,7 @@
switch_channel_set_variable(channel, "RECORD_DATE", (char *)p);
}
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "timer name '%s'\n",timer_name);
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
"OPEN FILE %s %uhz %u channels\n"
"TITLE=%s\n"
@@ -3364,7 +3365,7 @@
if (digit != parser->terminator) {
// if collected digits length >= the max length of the keys
// in the hash table, then left shift the digit string
- if ( len > 1 && parser->maxlen != 0 && len >= parser->maxlen) {
+ if ( len > 0 && parser->maxlen != 0 && len >= parser->maxlen) {
char *src = parser->digits + 1;
char *dst = parser->digits;
@@ -3425,10 +3426,12 @@
char *greeting_sound;
char *short_greeting_sound;
char *invalid_sound;
+ char *exit_sound;
char *tts_engine;
char *tts_voice;
char *buf;
char *ptr;
+ char *timer_name;
int max_failures;
int timeout;
uint32_t inlen;
@@ -3438,7 +3441,6 @@
switch_memory_pool_t *pool;
};
-
struct switch_ivr_menu_action {
switch_ivr_menu_action_function_t *function;
switch_ivr_action_t ivr_action;
@@ -3447,7 +3449,7 @@
struct switch_ivr_menu_action *next;
};
-static switch_ivr_menu_t *switch_ivr_find_menu(switch_ivr_menu_t *stack, char *name) {
+static switch_ivr_menu_t *switch_ivr_menu_find(switch_ivr_menu_t *stack, char *name) {
switch_ivr_menu_t *ret;
for(ret = stack; ret ; ret = ret->next) {
if (!name || !strcmp(ret->name, name))
@@ -3456,8 +3458,7 @@
return ret;
}
-
-static void switch_ivr_menu_stack(switch_ivr_menu_t **top, switch_ivr_menu_t *bottom)
+static void switch_ivr_menu_stack_add(switch_ivr_menu_t **top, switch_ivr_menu_t *bottom)
{
switch_ivr_menu_t *ptr;
@@ -3477,10 +3478,12 @@
char *greeting_sound,
char *short_greeting_sound,
char *invalid_sound,
+ char *exit_sound,
char *tts_engine,
char *tts_voice,
int timeout,
int max_failures,
+ char *timer_name,
switch_memory_pool_t *pool)
{
switch_ivr_menu_t *menu;
@@ -3504,30 +3507,38 @@
menu->pool = pool;
- if (name) {
+ if (!switch_strlen_zero(name)) {
menu->name = switch_core_strdup(menu->pool, name);
}
- if (greeting_sound) {
+ if (!switch_strlen_zero(greeting_sound)) {
menu->greeting_sound = switch_core_strdup(menu->pool, greeting_sound);
}
- if (short_greeting_sound) {
+ if (!switch_strlen_zero(short_greeting_sound)) {
menu->short_greeting_sound = switch_core_strdup(menu->pool, short_greeting_sound);
}
- if (invalid_sound) {
+ if (!switch_strlen_zero(invalid_sound)) {
menu->invalid_sound = switch_core_strdup(menu->pool, invalid_sound);
}
- if (tts_engine) {
+ if (!switch_strlen_zero(exit_sound)) {
+ menu->exit_sound = switch_core_strdup(menu->pool, exit_sound);
+ }
+
+ if (!switch_strlen_zero(tts_engine)) {
menu->tts_engine = switch_core_strdup(menu->pool, tts_engine);
}
- if (tts_voice) {
+ if (!switch_strlen_zero(tts_voice)) {
menu->tts_voice = switch_core_strdup(menu->pool, tts_voice);
}
+ if (!switch_strlen_zero(timer_name)) {
+ menu->timer_name = switch_core_strdup(menu->pool, timer_name);
+ }
+
menu->max_failures = max_failures;
menu->timeout = timeout;
@@ -3543,7 +3554,7 @@
}
if (main) {
- switch_ivr_menu_stack(&main, menu);
+ switch_ivr_menu_stack_add(&main, menu);
} else {
menu->flags |= SWITCH_IVR_MENU_FLAG_STACK;
}
@@ -3558,6 +3569,7 @@
{
switch_ivr_menu_action_t *action;
uint32_t len;
+
if ((action = switch_core_alloc(menu->pool, sizeof(*action)))) {
action->bind = switch_core_strdup(menu->pool, bind);
action->next = menu->actions;
@@ -3575,15 +3587,20 @@
}
-SWITCH_DECLARE(switch_status_t) switch_ivr_menu_bind_function(switch_ivr_menu_t *menu, switch_ivr_menu_action_function_t *function, char *bind)
+SWITCH_DECLARE(switch_status_t) switch_ivr_menu_bind_function(switch_ivr_menu_t *menu, switch_ivr_menu_action_function_t *function, char *arg, char *bind)
{
switch_ivr_menu_action_t *action;
+ uint32_t len;
-
if ((action = switch_core_alloc(menu->pool, sizeof(*action)))) {
action->bind = bind;
- action->function = function;
action->next = menu->actions;
+ action->arg = switch_core_strdup(menu->pool, arg);
+ len = (uint32_t)strlen(action->bind);
+ if (len > menu->inlen) {
+ menu->inlen = len;
+ }
+ action->function = function;
menu->actions = action;
return SWITCH_STATUS_SUCCESS;
}
@@ -3591,57 +3608,60 @@
return SWITCH_STATUS_MEMERR;
}
-SWITCH_DECLARE(switch_status_t) switch_ivr_menu_free_stack(switch_ivr_menu_t *stack)
+SWITCH_DECLARE(switch_status_t) switch_ivr_menu_stack_free(switch_ivr_menu_t *stack)
{
- switch_memory_pool_t *pool;
+ switch_status_t status = SWITCH_STATUS_FALSE;
- if (!switch_test_flag(stack, SWITCH_IVR_MENU_FLAG_STACK) || switch_test_flag(stack, SWITCH_IVR_MENU_FLAG_FREEPOOL)) {
- return SWITCH_STATUS_FALSE;
+ if (stack != NULL && stack->pool != NULL) {
+ if (switch_test_flag(stack, SWITCH_IVR_MENU_FLAG_STACK) && switch_test_flag(stack, SWITCH_IVR_MENU_FLAG_FREEPOOL)) {
+ switch_memory_pool_t *pool = stack->pool;
+ status = switch_core_destroy_memory_pool(&pool);
+ } else {
+ status = SWITCH_STATUS_SUCCESS;
+ }
}
- pool = stack->pool;
- switch_core_destroy_memory_pool(&pool);
- pool = NULL;
-
- return SWITCH_STATUS_SUCCESS;
-
+ return status;
}
-static switch_status_t play_or_say(switch_core_session_t *session, switch_ivr_menu_t *menu, char *sound, uint32_t need)
+static switch_status_t play_or_say(switch_core_session_t *session, switch_ivr_menu_t *menu, char *sound, uint32_t need, char *timer_name)
{
char terminator;
uint32_t len;
char *ptr;
- switch_status_t status = SWITCH_STATUS_SUCCESS;
+ switch_status_t status = SWITCH_STATUS_FALSE;
- memset(menu->buf, 0, menu->inlen);
- menu->ptr = menu->buf;
+ if (session != NULL && menu != NULL && !switch_strlen_zero(sound)) {
+ memset(menu->buf, 0, menu->inlen);
+ menu->ptr = menu->buf;
- if (!need) {
- len = 1;
- ptr = NULL;
- } else {
- len = menu->inlen + 1;
- ptr = menu->ptr;
- }
+ if (!need) {
+ len = 1;
+ ptr = NULL;
+ } else {
+ len = menu->inlen + 1;
+ ptr = menu->ptr;
+ }
- if (*sound == '/' || *sound == '\\') {
- switch_ivr_play_file(session, NULL, sound, NULL, NULL, ptr, len);
- } else {
- if (menu->tts_engine && menu->tts_voice) {
- switch_ivr_speak_text(session, menu->tts_engine, menu->tts_voice, NULL, 0, NULL, sound, ptr, len);
+ if (*sound == '/' || *sound == '\\') {
+ status = switch_ivr_play_file(session, NULL, sound, timer_name, NULL, ptr, need ? 1 : 0);
+ } else {
+ if (menu->tts_engine && menu->tts_voice) {
+ status = switch_ivr_speak_text(session, menu->tts_engine, menu->tts_voice, NULL, 0, NULL, sound, ptr, len);
+ }
}
- }
- if (need) {
- menu->ptr += strlen(menu->buf);
- if (strlen(menu->buf) < need) {
- status = switch_ivr_collect_digits_count(session, menu->ptr, menu->inlen - strlen(menu->buf), need, "#", &terminator, menu->timeout);
+ if (need) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "waiting for %u digits\n",need);
+ menu->ptr += strlen(menu->buf);
+ if (strlen(menu->buf) < need) {
+ status = switch_ivr_collect_digits_count(session, menu->ptr, menu->inlen - strlen(menu->buf), need, "#", &terminator, menu->timeout);
+ }
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "digits '%s'\n",menu->buf);
}
}
return status;
-
}
SWITCH_DECLARE(switch_status_t) switch_ivr_menu_execute(switch_core_session_t *session, switch_ivr_menu_t *stack, char *name, void *obj)
@@ -3655,21 +3675,27 @@
switch_channel_t *channel;
switch_status_t status = SWITCH_STATUS_SUCCESS;
+ if (session == NULL || stack == NULL || switch_strlen_zero(name)) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid menu context\n");
+ return SWITCH_STATUS_FALSE;
+ }
+
channel = switch_core_session_get_channel(session);
assert(channel != NULL);
-
- if (!(menu = switch_ivr_find_menu(stack, name))) {
+ if (!(menu = switch_ivr_menu_find(stack, name))) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Menu!\n");
- return -1;
+ return SWITCH_STATUS_FALSE;
}
if (!(menu->buf = malloc(menu->inlen))) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No Memory!\n");
- return -1;
+ return SWITCH_STATUS_FALSE;
}
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Executing IVR menu %s\n", menu->name);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "stack timer name '%s'\n",stack->timer_name);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "menu timer name '%s'\n",menu->timer_name);
for (reps = 0 ; (running && status == SWITCH_STATUS_SUCCESS && errs < menu->max_failures) ; reps++) {
if (!switch_channel_ready(channel)) {
@@ -3687,10 +3713,9 @@
memset(arg, 0, sizeof(arg));
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "want %d digits\n",menu->inlen);
+ play_or_say(session, menu, greeting_sound, menu->inlen, stack->timer_name);
- play_or_say(session, menu, greeting_sound, menu->inlen);
-
-
if (!switch_strlen_zero(menu->buf)) {
for(ap = menu->actions; ap ; ap = ap->next) {
if (!strcmp(menu->buf, ap->bind)) {
@@ -3699,9 +3724,9 @@
match++;
errs = 0;
if (ap->function) {
- todo = ap->function(menu, arg, sizeof(arg), obj);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "IVR function on menu '%s' matched '%s' param '%s'\n", menu->name, menu->buf, ap->arg);
+ todo = ap->function(menu, ap->arg, arg, sizeof(arg), obj);
aptr = arg;
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "IVR function on menu '%s' matched '%s'\n", menu->name, menu->buf);
} else {
todo = ap->ivr_action;
aptr = ap->arg;
@@ -3713,7 +3738,7 @@
status = SWITCH_STATUS_FALSE;
break;
case SWITCH_IVR_ACTION_PLAYSOUND:
- status = switch_ivr_play_file(session, NULL, aptr, NULL, NULL, NULL, 0);
+ status = switch_ivr_play_file(session, NULL, aptr, stack->timer_name, NULL, NULL, 0);
break;
case SWITCH_IVR_ACTION_SAYTEXT:
if (menu->tts_engine && menu->tts_voice) {
@@ -3758,6 +3783,9 @@
switch_set_flag(stack, SWITCH_IVR_MENU_FLAG_FALLTOMAIN);
status = SWITCH_STATUS_BREAK;
break;
+ case SWITCH_IVR_ACTION_NOOP:
+ status = SWITCH_STATUS_SUCCESS;
+ break;
default:
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Invalid TODO!\n");
break;
@@ -3766,8 +3794,8 @@
}
- if (switch_test_flag(menu, SWITCH_IVR_MENU_FLAG_STACK)) { /* top level */
- if (switch_test_flag(stack, SWITCH_IVR_MENU_FLAG_FALLTOMAIN)) { /* catch the fallback and recover */
+ if (switch_test_flag(menu, SWITCH_IVR_MENU_FLAG_STACK)) { // top level
+ if (switch_test_flag(stack, SWITCH_IVR_MENU_FLAG_FALLTOMAIN)) { // catch the fallback and recover
switch_clear_flag(stack, SWITCH_IVR_MENU_FLAG_FALLTOMAIN);
status = SWITCH_STATUS_SUCCESS;
running = 1;
@@ -3776,10 +3804,10 @@
}
}
if (!match) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "IVR menu %s caught invalid input %s\n", menu->name, menu->buf);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "IVR menu '%s' caught invalid input '%s'\n", menu->name, menu->buf);
if (menu->invalid_sound) {
- play_or_say(session, menu, menu->invalid_sound, 0);
+ play_or_say(session, menu, menu->invalid_sound, 0, stack->timer_name);
}
errs++;
@@ -3787,99 +3815,236 @@
status = switch_ivr_sleep(session, 1000);
}
}
-
}
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "exit-sound '%s'\n",menu->exit_sound);
+ if (!switch_strlen_zero(menu->exit_sound))
+ status = switch_ivr_play_file(session, NULL, menu->exit_sound, stack->timer_name, NULL, NULL, 0);
+
switch_safe_free(menu->buf);
return status;
}
-SWITCH_DECLARE(switch_status_t) switch_ivr_build_xml_menu_stack(switch_ivr_menu_t **menu_stack,
- switch_xml_t xml_menus,
- switch_xml_t xml_menu,
- switch_memory_pool_t *pool)
+typedef struct switch_ivr_menu_xml_map {
+ char *name;
+ switch_ivr_action_t action;
+ switch_ivr_menu_action_function_t *function;
+ struct switch_ivr_menu_xml_map *next;
+} switch_ivr_menu_xml_map_t;
+
+struct switch_ivr_menu_xml_ctx {
+ switch_memory_pool_t *pool;
+ struct switch_ivr_menu_xml_map *map;
+ int autocreated;
+};
+
+static switch_ivr_menu_xml_map_t *switch_ivr_menu_stack_xml_find(switch_ivr_menu_xml_ctx_t *xml_ctx, char *name)
{
+ switch_ivr_menu_xml_map_t *map = (xml_ctx != NULL ? xml_ctx->map : NULL);
+ int rc = -1;
+
+ while (map != NULL && (rc = strcasecmp(map->name,name)) != 0) {
+ map = map->next;
+ }
+
+ return (rc == 0 ? map : NULL);
+}
+
+static switch_status_t switch_ivr_menu_stack_xml_add(switch_ivr_menu_xml_ctx_t *xml_ctx, char*name, int action, switch_ivr_menu_action_function_t *function)
+{
+ switch_status_t status = SWITCH_STATUS_FALSE;
+
+ // if this action/function does not exist yet
+ if (xml_ctx != NULL && name != NULL && xml_ctx->pool != NULL && switch_ivr_menu_stack_xml_find(xml_ctx,name) == NULL) {
+ switch_ivr_menu_xml_map_t *map = switch_core_alloc(xml_ctx->pool,sizeof(switch_ivr_menu_xml_map_t));
+
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
+ "switch_ivr_menu_stack_xml_add bindng '%s'\n",name);
+ // and we have memory
+ if (map != NULL) {
+ map->name = switch_core_strdup(xml_ctx->pool,name);
+ map->action = action;
+ map->function = function;
+
+ if (map->name != NULL) {
+ // insert map item at top of list
+ map->next = xml_ctx->map;
+ xml_ctx->map = map;
+ status = SWITCH_STATUS_SUCCESS;
+ } else {
+ status = SWITCH_STATUS_MEMERR;
+ }
+ } else {
+ status = SWITCH_STATUS_MEMERR;
+ }
+ }
+
+ return status;
+}
+
+SWITCH_DECLARE(switch_status_t) switch_ivr_menu_stack_xml_init(switch_ivr_menu_xml_ctx_t **xml_menu_ctx, switch_memory_pool_t *pool)
+{
switch_status_t status = SWITCH_STATUS_FALSE;
- char *menu_name = (char *)switch_xml_attr_soft(xml_menu,"name"); // if the attr doesn't exist, return ""
- char *greet_long = (char *)switch_xml_attr(xml_menu,"greet-long"); // if the attr doesn't exist, return NULL
- char *greet_short = (char *)switch_xml_attr(xml_menu,"greet-short"); // if the attr doesn't exist, return NULL
- char *invalid_sound = (char *)switch_xml_attr(xml_menu,"invalid-sound"); // if the attr doesn't exist, return NULL
- char *tts_engine = (char *)switch_xml_attr(xml_menu,"tts-engine"); // if the attr doesn't exist, return NULL
- char *tts_voice = (char *)switch_xml_attr(xml_menu,"tts-voice"); // if the attr doesn't exist, return NULL
- char *timeout = (char *)switch_xml_attr_soft(xml_menu,"timeout"); // if the attr doesn't exist, return ""
- char *max_failures = (char *)switch_xml_attr_soft(xml_menu,"max-failures"); // if the attr doesn't exist, return ""
- switch_ivr_menu_t *menu = NULL;
+ int autocreated = 0;
- status = switch_ivr_menu_init(&menu,
- *menu_stack,
- menu_name,
- greet_long,
- greet_short,
- invalid_sound,
- tts_engine,
- tts_voice,
- atoi(timeout)*1000,
- atoi(max_failures),
- pool
- );
- if (status == SWITCH_STATUS_SUCCESS) {
- switch_xml_t xml_kvp;
- struct ivr_action_map {
+ // build a memory pool ?
+ if (pool == NULL) {
+ status = switch_core_new_memory_pool(&pool);
+ autocreated = 1;
+ }
+
+ // allocate the xml context
+ if (xml_menu_ctx != NULL && pool != NULL) {
+ *xml_menu_ctx = switch_core_alloc(pool,sizeof(switch_ivr_menu_xml_ctx_t));
+ if (*xml_menu_ctx != NULL) {
+ (*xml_menu_ctx)->pool = pool;
+ (*xml_menu_ctx)->autocreated = autocreated;
+ (*xml_menu_ctx)->map = NULL;
+ status = SWITCH_STATUS_SUCCESS;
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unable to alloc xml_ctx\n");
+ status = SWITCH_STATUS_FALSE;
+ }
+ }
+
+ // build the standard/default xml menu handler mappings
+ if (status == SWITCH_STATUS_SUCCESS && xml_menu_ctx != NULL && *xml_menu_ctx != NULL) {
+ struct iam_s {
char *name;
switch_ivr_action_t action;
} iam [] = {
- {"exit", SWITCH_IVR_ACTION_DIE},
+ {"menu-exit", SWITCH_IVR_ACTION_DIE},
{"menu-sub", SWITCH_IVR_ACTION_EXECMENU},
- {"exec-api", SWITCH_IVR_ACTION_EXECAPP},
- {"play-sound", SWITCH_IVR_ACTION_PLAYSOUND},
- {"say-text", SWITCH_IVR_ACTION_SAYTEXT},
+ {"menu-exec-api", SWITCH_IVR_ACTION_EXECAPP},
+ {"menu-play-sound", SWITCH_IVR_ACTION_PLAYSOUND},
+ {"menu-say-text", SWITCH_IVR_ACTION_SAYTEXT},
{"menu-back", SWITCH_IVR_ACTION_BACK},
{"menu-top", SWITCH_IVR_ACTION_TOMAIN},
- {"call-transfer", SWITCH_IVR_ACTION_TRANSFER},
+ {"menu-call-transfer", SWITCH_IVR_ACTION_TRANSFER},
};
- int iam_qty = sizeof(iam)/sizeof(iam[0]);
+ int iam_qty = (sizeof(iam)/sizeof(iam[0]));
+ int i;
- // set the menu stack for the caller
- if (*menu_stack == NULL) {
+ for(i=0; i<iam_qty && status == SWITCH_STATUS_SUCCESS; i++) {
+ status = switch_ivr_menu_stack_xml_add(*xml_menu_ctx,iam[i].name,iam[i].action,NULL);
+ }
+ }
+
+ return status;
+}
+
+SWITCH_DECLARE(switch_status_t) switch_ivr_menu_stack_xml_add_custom(switch_ivr_menu_xml_ctx_t *xml_menu_ctx, char *name, switch_ivr_menu_action_function_t *function)
+{
+ return switch_ivr_menu_stack_xml_add(xml_menu_ctx, name, -1, function);
+}
+
+SWITCH_DECLARE(switch_status_t) switch_ivr_menu_stack_xml_build(switch_ivr_menu_xml_ctx_t *xml_menu_ctx,
+ switch_ivr_menu_t **menu_stack,
+ switch_xml_t xml_menus,
+ switch_xml_t xml_menu,
+ char *timer_name)
+{
+ switch_status_t status = SWITCH_STATUS_FALSE;
+
+ if (xml_menu_ctx != NULL && menu_stack != NULL && xml_menu != NULL) {
+ char *menu_name = (char *)switch_xml_attr_soft(xml_menu,"name"); // if the attr doesn't exist, return ""
+ char *greet_long = (char *)switch_xml_attr(xml_menu,"greet-long"); // if the attr doesn't exist, return NULL
+ char *greet_short = (char *)switch_xml_attr(xml_menu,"greet-short"); // if the attr doesn't exist, return NULL
+ char *invalid_sound = (char *)switch_xml_attr(xml_menu,"invalid-sound"); // if the attr doesn't exist, return NULL
+ char *exit_sound = (char *)switch_xml_attr(xml_menu,"exit-sound"); // if the attr doesn't exist, return NULL
+ char *tts_engine = (char *)switch_xml_attr(xml_menu,"tts-engine"); // if the attr doesn't exist, return NULL
+ char *tts_voice = (char *)switch_xml_attr(xml_menu,"tts-voice"); // if the attr doesn't exist, return NULL
+ char *timeout = (char *)switch_xml_attr_soft(xml_menu,"timeout"); // if the attr doesn't exist, return ""
+ char *max_failures = (char *)switch_xml_attr_soft(xml_menu,"max-failures"); // if the attr doesn't exist, return ""
+ switch_ivr_menu_t *menu = NULL;
+
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "building menu '%s'\n",menu_name);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "timer_name '%s'\n",timer_name);
+ status = switch_ivr_menu_init(&menu,
+ *menu_stack,
+ menu_name,
+ greet_long,
+ greet_short,
+ invalid_sound,
+ exit_sound,
+ tts_engine,
+ tts_voice,
+ atoi(timeout)*1000,
+ atoi(max_failures),
+ timer_name,
+ xml_menu_ctx->pool
+ );
+ // set the menu_stack for the caller
+ if (status == SWITCH_STATUS_SUCCESS && *menu_stack == NULL) {
*menu_stack = menu;
}
- // build menu entries
- for(xml_kvp = switch_xml_child(xml_menu, "entry"); xml_kvp != NULL && status == SWITCH_STATUS_SUCCESS; xml_kvp = xml_kvp->next) {
- char *action = (char *)switch_xml_attr(xml_kvp, "action");
- char *digits = (char *)switch_xml_attr(xml_kvp, "digits");
- char *param = (char *)switch_xml_attr_soft(xml_kvp, "param");
+ if (status == SWITCH_STATUS_SUCCESS && menu != NULL) {
+ switch_xml_t xml_kvp;
- if (!switch_strlen_zero(action) && !switch_strlen_zero(digits)) {
- int i,found;
+ // build menu entries
+ for(xml_kvp = switch_xml_child(xml_menu, "entry"); xml_kvp != NULL && status == SWITCH_STATUS_SUCCESS; xml_kvp = xml_kvp->next) {
+ char *action = (char *)switch_xml_attr(xml_kvp, "action");
+ char *digits = (char *)switch_xml_attr(xml_kvp, "digits");
+ char *param = (char *)switch_xml_attr_soft(xml_kvp, "param");
- for(i=0,found=0; i<iam_qty && !found; i++) {
- found = (strcasecmp(iam[i].name,action) == 0);
- }
+ if (!switch_strlen_zero(action) && !switch_strlen_zero(digits)) {
+ switch_ivr_menu_xml_map_t *xml_map = xml_menu_ctx->map;
+ int found = 0;
- if (found) {
- i--;
- // do we need to build a new sub-menu ?
- if (iam[i].action == SWITCH_IVR_ACTION_EXECMENU && switch_ivr_find_menu(*menu_stack, param) == NULL) {
- if ((xml_menu = switch_xml_find_child(xml_menus, "menu", "name", param)) != NULL) {
- status = switch_ivr_build_xml_menu_stack(menu_stack, xml_menus, xml_menu, pool);
+ // find and appropriate xml handler
+ while(xml_map != NULL && !found) {
+ if (!(found = (strcasecmp(xml_map->name,action) == 0))) {
+ xml_map = xml_map->next;
}
}
- // finally bind the menu entry
- if (status == SWITCH_STATUS_SUCCESS) {
- status = switch_ivr_menu_bind_action(menu, iam[i].action, param, digits);
+
+ if (found && xml_map != NULL) {
+ // do we need to build a new sub-menu ?
+ if (xml_map->action == SWITCH_IVR_ACTION_EXECMENU && switch_ivr_menu_find(*menu_stack, param) == NULL) {
+ if ((xml_menu = switch_xml_find_child(xml_menus, "menu", "name", param)) != NULL) {
+ status = switch_ivr_menu_stack_xml_build(xml_menu_ctx, menu_stack, xml_menus, xml_menu, timer_name);
+ }
+ }
+
+ // finally bind the menu entry
+ if (status == SWITCH_STATUS_SUCCESS) {
+ if (xml_map->function != NULL) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
+ "binding menu caller control '%s'/'%s' to '%s'\n", xml_map->name, param, digits);
+ status = switch_ivr_menu_bind_function(menu, xml_map->function, param, digits);
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
+ "binding menu action '%s' to '%s'\n", xml_map->name, digits);
+ status = switch_ivr_menu_bind_action(menu, xml_map->action, param, digits);
+ }
+ }
}
+ } else {
+ status = SWITCH_STATUS_FALSE;
}
- } else {
- status = SWITCH_STATUS_FALSE;
}
}
}
if (status != SWITCH_STATUS_SUCCESS) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unable to build xml menu '%s'\n",menu_name);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unable to build xml menu\n");
}
return status;
}
+/*
+SWITCH_DECLARE(switch_status_t) switch_ivr_menu_stack_xml_free(switch_ivr_menu_xml_ctx_t **xml_menu_ctx,
+ switch_ivr_menu_t **menu_stack)
+{
+ switch_status_t status = SWITCH_STATUS_FALSE;
+
+ if (xml_menu_ctx != NULL && *xml_menu_ctx != NULL ) {
+ }
+
+ status = switch_ivr_menu_stack_free(menu_stack);
+
+ return status
+}
+*/
1
0
[commit] r3438 - freeswitch/branches/knhor/trunk/src/mod/applications/mod_ivr
by Freeswitch SVN 23 Nov '06
by Freeswitch SVN 23 Nov '06
23 Nov '06
Author: knhor
Date: Wed Nov 22 20:29:46 2006
New Revision: 3438
Modified:
freeswitch/branches/knhor/trunk/src/mod/applications/mod_ivr/mod_ivr.c
Log:
update for new xml api. add ifdef for custom callback handlers
Modified: freeswitch/branches/knhor/trunk/src/mod/applications/mod_ivr/mod_ivr.c
==============================================================================
--- freeswitch/branches/knhor/trunk/src/mod/applications/mod_ivr/mod_ivr.c (original)
+++ freeswitch/branches/knhor/trunk/src/mod/applications/mod_ivr/mod_ivr.c Wed Nov 22 20:29:46 2006
@@ -60,6 +60,19 @@
/*.chat_interface */ NULL
};
+#ifdef _TEST_CALLBACK_
+static switch_ivr_action_t menu_handler(switch_ivr_menu_t *menu, char *param, char *buf, size_t buflen, void *obj)
+{
+ switch_ivr_action_t action = SWITCH_IVR_ACTION_NOOP;
+
+ if (param != NULL) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "menu_handler '%s'\n",param);
+ }
+
+ return action;
+}
+#endif
+
static void ivr_application_function(switch_core_session_t *session, char *data)
{
switch_channel_t *channel = switch_core_session_get_channel(session);
@@ -76,12 +89,19 @@
// if the menu was found
if (xml_menu != NULL) {
+ switch_ivr_menu_xml_ctx_t *xml_ctx = NULL;
switch_ivr_menu_t *menu_stack = NULL;
// build a menu tree and execute it
- if (switch_ivr_build_xml_menu_stack(&menu_stack,xml_menus,xml_menu,NULL) == SWITCH_STATUS_SUCCESS) {
+ if (switch_ivr_menu_stack_xml_init(&xml_ctx,NULL) == SWITCH_STATUS_SUCCESS
+#ifdef _TEST_CALLBACK_
+ && switch_ivr_menu_stack_xml_add_custom(xml_ctx, "custom", &menu_handler) == SWITCH_STATUS_SUCCESS
+#endif
+ && switch_ivr_menu_stack_xml_build(xml_ctx,&menu_stack,xml_menus,xml_menu,NULL) == SWITCH_STATUS_SUCCESS)
+ {
switch_channel_answer(channel);
switch_ivr_menu_execute(session,menu_stack,params,NULL);
+ switch_ivr_menu_stack_free(menu_stack);
} else {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unable to create menu '%s'\n", params);
}
1
0
[commit] r3436 - freeswitch/branches/mishehu/src/mod/event_handlers/mod_cdr
by Freeswitch SVN 22 Nov '06
by Freeswitch SVN 22 Nov '06
22 Nov '06
Author: mishehu
Date: Wed Nov 22 00:43:05 2006
New Revision: 3436
Modified:
freeswitch/branches/mishehu/src/mod/event_handlers/mod_cdr/cdrcontainer.cpp
freeswitch/branches/mishehu/src/mod/event_handlers/mod_cdr/cdrcontainer.h
freeswitch/branches/mishehu/src/mod/event_handlers/mod_cdr/mod_cdr.cpp
freeswitch/branches/mishehu/src/mod/event_handlers/mod_cdr/mysqlcdr.cpp
freeswitch/branches/mishehu/src/mod/event_handlers/mod_cdr/pddcdr.cpp
Log:
Made a reload capability for mod_cdr (depends on changes yet unpublished to apr-util's apr_queue), but have not yet tested it. Also fixed lingering ani2's in mysqlcdr.cpp that somehow stuck around in this branch.
Modified: freeswitch/branches/mishehu/src/mod/event_handlers/mod_cdr/cdrcontainer.cpp
==============================================================================
--- freeswitch/branches/mishehu/src/mod/event_handlers/mod_cdr/cdrcontainer.cpp (original)
+++ freeswitch/branches/mishehu/src/mod/event_handlers/mod_cdr/cdrcontainer.cpp Wed Nov 22 00:43:05 2006
@@ -45,8 +45,7 @@
// Create the APR threadsafe queue, though I don't know if this is the current memory pool.
switch_queue_create(&cdrqueue,5224288, module_pool);
- char *configfile = "mod_cdr.conf";
- switch_xml_t cfg, xml, settings, param;
+ strcpy(configfile,"mod_cdr.conf");
switch_mod_cdr_newchannel_t *newchannel; // = new switch_mod_cdr_newchannel_t;
newchannel = 0;
@@ -89,6 +88,45 @@
}
switch_console_printf(SWITCH_CHANNEL_LOG,"mod_cdr shutdown gracefully.");
+}
+
+void CDRContainer::reload()
+{
+ // Something tells me I still need to figure out what to do if there are items still in queue after reload that are no longer active in the configuration.
+ switch_queue_isempty(cdrqueue); // Waits for the queue to be empty
+
+ switch_mod_cdr_newchannel_t *newchannel; // = new switch_mod_cdr_newchannel_t;
+ newchannel = 0;
+
+ if (!(xml = switch_xml_open_cfg(configfile, &cfg, NULL)))
+ switch_console_printf(SWITCH_CHANNEL_LOG,"open of %s failed\n", configfile);
+ else
+ {
+ BaseRegistry& registry(BaseRegistry::get());
+ registry.reset_active();
+ for(BaseRegistry::iterator it = registry.active_begin(); it != registry.active_end(); ++it)
+ {
+ basecdr_creator func = *it;
+ BaseCDR* _ptr = func(newchannel);
+ std::auto_ptr<BaseCDR> ptr(_ptr);
+ ptr->disconnect();
+ }
+
+ for(BaseRegistry::iterator it = registry.begin(); it != registry.end(); ++it)
+ {
+ basecdr_creator func = *it;
+ BaseCDR* _ptr = func(newchannel);
+ std::auto_ptr<BaseCDR> ptr(_ptr);
+ ptr->connect(cfg,xml,settings,param);
+
+ if(ptr->is_activated())
+ registry.add_active(it);
+ }
+ }
+
+ switch_xml_free(xml);
+ switch_queue_unblockpop(cdrqueue);
+ switch_console_printf(SWITCH_CHANNEL_LOG,"mod_cdr configuration reloaded.");
}
void CDRContainer::add_cdr(switch_core_session_t *session)
Modified: freeswitch/branches/mishehu/src/mod/event_handlers/mod_cdr/cdrcontainer.h
==============================================================================
--- freeswitch/branches/mishehu/src/mod/event_handlers/mod_cdr/cdrcontainer.h (original)
+++ freeswitch/branches/mishehu/src/mod/event_handlers/mod_cdr/cdrcontainer.h Wed Nov 22 00:43:05 2006
@@ -58,10 +58,13 @@
~CDRContainer();
void add_cdr(switch_core_session_t *session);
void process_records();
+ void reload();
protected:
private:
+ switch_xml_t cfg, xml, settings, param;
switch_queue_t *cdrqueue;
std::string tempfilepath;
+ char configfile[13];
};
#ifdef __cplusplus
Modified: freeswitch/branches/mishehu/src/mod/event_handlers/mod_cdr/mod_cdr.cpp
==============================================================================
--- freeswitch/branches/mishehu/src/mod/event_handlers/mod_cdr/mod_cdr.cpp (original)
+++ freeswitch/branches/mishehu/src/mod/event_handlers/mod_cdr/mod_cdr.cpp Wed Nov 22 00:43:05 2006
@@ -44,6 +44,8 @@
static CDRContainer *newcdrcontainer;
static switch_memory_pool_t *module_pool;
static switch_status_t my_on_hangup(switch_core_session_t *session);
+static switch_status_t modcdr_reload(char *dest, switch_core_session_t *isession, switch_stream_handle_t *stream);
+static switch_thread_rwlock_t *cdr_rwlock;
/* Now begins the glue that will tie this into the system.
*/
@@ -57,18 +59,29 @@
/*.on_transmit */ NULL
};
+static switch_api_interface_t modcdr_reload_interface = {
+ /*.interface_name */ "modcdr_reload",
+ /*.desc */ "Reload mod_cdr's configuration",
+ /*.function */ modcdr_reload,
+ /*.syntax */ "modcdr_reload",
+ /*.next */ 0
+};
+
static const switch_loadable_module_interface_t cdr_module_interface = {
/*.module_name */ modname,
/*.endpoint_interface */ NULL,
/*.timer_interface */ NULL,
/*.dialplan_interface */ NULL,
/*.codec_interface */ NULL,
- /*.application_interface */ NULL
+ /*.application_interface */ NULL,
+ /* api_interface */ &modcdr_reload_interface
};
static switch_status_t my_on_hangup(switch_core_session_t *session)
{
+ switch_thread_rwlock_rdlock(cdr_rwlock);
newcdrcontainer->add_cdr(session);
+ switch_thread_rwlock_unlock(cdr_rwlock);
return SWITCH_STATUS_SUCCESS;
}
@@ -85,6 +98,7 @@
return SWITCH_STATUS_TERM;
}
+ switch_thread_rwlock_create(&cdr_rwlock,module_pool);
newcdrcontainer = new CDRContainer(module_pool); // Instantiates the new object, automatically loads config
/* indicate that the module should continue to be loaded */
@@ -100,8 +114,17 @@
return RUNNING ? SWITCH_STATUS_SUCCESS : SWITCH_STATUS_TERM;
}
+static switch_status_t modcdr_reload(char *dest=0, switch_core_session_t *isession=0, switch_stream_handle_t *stream=0)
+{
+ switch_thread_rwlock_wrlock(cdr_rwlock);
+ newcdrcontainer->reload();
+ switch_thread_rwlock_unlock(cdr_rwlock);
+ return SWITCH_STATUS_SUCCESS;
+}
+
SWITCH_MOD_DECLARE(switch_status_t) switch_module_shutdown(void)
{
delete newcdrcontainer;
+ switch_thread_rwlock_destroy(cdr_rwlock);
return SWITCH_STATUS_SUCCESS;
}
Modified: freeswitch/branches/mishehu/src/mod/event_handlers/mod_cdr/mysqlcdr.cpp
==============================================================================
--- freeswitch/branches/mishehu/src/mod/event_handlers/mod_cdr/mysqlcdr.cpp (original)
+++ freeswitch/branches/mishehu/src/mod/event_handlers/mod_cdr/mysqlcdr.cpp Wed Nov 22 00:43:05 2006
@@ -54,7 +54,7 @@
src_length = (long unsigned int)strlen(src);
dst_length = (long unsigned int)strlen(dst);
ani_length = (long unsigned int)strlen(ani);
- ani2_length = (long unsigned int)strlen(ani2);
+ aniii_length = (long unsigned int)strlen(aniii);
dialplan_length = (long unsigned int)strlen(dialplan);
myuuid_length = (long unsigned int)strlen(myuuid);
destuuid_length = (long unsigned int)strlen(destuuid);
@@ -181,7 +181,7 @@
if(activated)
{
- tmp_sql_query = "INSERT INTO freeswitchcdr (callstartdate,callanswerdate,callenddate,originated,clid,src,dst,ani,ani2,dialplan,myuuid,destuuid,srcchannel,dstchannel,lastapp,lastdata,billusec,disposition,hangupcause,amaflags";
+ tmp_sql_query = "INSERT INTO freeswitchcdr (callstartdate,callanswerdate,callenddate,originated,clid,src,dst,ani,aniii,dialplan,myuuid,destuuid,srcchannel,dstchannel,lastapp,lastdata,billusec,disposition,hangupcause,amaflags";
int items_appended = 0;
@@ -324,7 +324,7 @@
add_string_parameter(src,src_length,MYSQL_TYPE_VAR_STRING,0);
add_string_parameter(dst,dst_length,MYSQL_TYPE_VAR_STRING,0);
add_string_parameter(ani,ani_length,MYSQL_TYPE_VAR_STRING,0);
- add_string_parameter(ani2,ani2_length,MYSQL_TYPE_VAR_STRING,0);
+ add_string_parameter(aniii,aniii_length,MYSQL_TYPE_VAR_STRING,0);
add_string_parameter(dialplan,dialplan_length,MYSQL_TYPE_VAR_STRING,0);
add_string_parameter(myuuid,myuuid_length,MYSQL_TYPE_VAR_STRING,0);
add_string_parameter(destuuid,destuuid_length,MYSQL_TYPE_VAR_STRING,0);
Modified: freeswitch/branches/mishehu/src/mod/event_handlers/mod_cdr/pddcdr.cpp
==============================================================================
--- freeswitch/branches/mishehu/src/mod/event_handlers/mod_cdr/pddcdr.cpp (original)
+++ freeswitch/branches/mishehu/src/mod/event_handlers/mod_cdr/pddcdr.cpp Wed Nov 22 00:43:05 2006
@@ -210,6 +210,11 @@
void PddCDR::disconnect()
{
+ activated = 0;
+ connectionstate = 0;
+ logchanvars = 0;
+ outputfile_path.clear();
+ chanvars_supp_list.clear();
switch_console_printf(SWITCH_CHANNEL_LOG,"Shutting down PddCDR... Done!");
}
1
0
Author: sphere
Date: Tue Nov 21 19:28:22 2006
New Revision: 3435
Added:
freeswitch/branches/jfknighton/
Log:
Creating empty folder for jfknighton
1
0
Author: sphere
Date: Tue Nov 21 17:18:18 2006
New Revision: 3434
Added:
freeswitch/branches/j2kramer/
Log:
Creating empty folder for j2kramer
1
0
Author: sphere
Date: Tue Nov 21 10:45:21 2006
New Revision: 3431
Added:
freeswitch/branches/keatj/
Log:
Creating empty folder for keatj
1
0
Author: sphere
Date: Mon Nov 20 22:02:18 2006
New Revision: 3429
Added:
freeswitch/branches/hantruong/
Log:
Creating empty folder for hantruong
1
0
[commit] r3427 - in freeswitch/branches/jkr888/trunk: scripts src src/mod/languages/mod_python
by Freeswitch SVN 20 Nov '06
by Freeswitch SVN 20 Nov '06
20 Nov '06
Author: jkr888
Date: Mon Nov 20 17:34:19 2006
New Revision: 3427
Modified:
freeswitch/branches/jkr888/trunk/scripts/mytest.py
freeswitch/branches/jkr888/trunk/scripts/testapi.py
freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/freeswitch.py
freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/switch_swig_wrap.c
freeswitch/branches/jkr888/trunk/src/switch_swig.c
freeswitch/branches/jkr888/trunk/src/switch_swig.i
Log:
Modified: freeswitch/branches/jkr888/trunk/scripts/mytest.py
==============================================================================
--- freeswitch/branches/jkr888/trunk/scripts/mytest.py (original)
+++ freeswitch/branches/jkr888/trunk/scripts/mytest.py Mon Nov 20 17:34:19 2006
@@ -16,6 +16,19 @@
fs_channel_answer(session)
#fs_switch_ivr_session_transfer(session, "1234", "XML", "default")
-fs_ivr_play_file2(session, "/root/call-quality-menu.gsm")
+fs_ivr_play_file2(session, "/root/test.gsm")
+#fs_switch_ivr_speak_text2(session, "cepstral", "david", "<break time='1s' />Welcome to my first python scripts running from <emphasis level='strong'>free switch </emphasis>application.")
+
+fs_switch_ivr_speak_text(session,
+ "cepstral",
+ "david",
+ None,
+ 0,
+ None,
+ "Welcome to my first python application",
+ None,
+ 0)
+
+fs_channel_hangup(session, "")
Modified: freeswitch/branches/jkr888/trunk/scripts/testapi.py
==============================================================================
--- freeswitch/branches/jkr888/trunk/scripts/testapi.py (original)
+++ freeswitch/branches/jkr888/trunk/scripts/testapi.py Mon Nov 20 17:34:19 2006
@@ -5,3 +5,4 @@
print sys.path
print dir()
+print CS_DONE
Modified: freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/freeswitch.py
==============================================================================
--- freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/freeswitch.py (original)
+++ freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/freeswitch.py Mon Nov 20 17:34:19 2006
@@ -85,18 +85,11 @@
fs_switch_ivr_speak_text = _freeswitch.fs_switch_ivr_speak_text
+fs_switch_ivr_speak_text2 = _freeswitch.fs_switch_ivr_speak_text2
+
fs_switch_channel_get_variable = _freeswitch.fs_switch_channel_get_variable
fs_switch_channel_set_variable = _freeswitch.fs_switch_channel_set_variable
-SWITCH_LOG_CONSOLE = _freeswitch.SWITCH_LOG_CONSOLE
-SWITCH_LOG_DEBUG = _freeswitch.SWITCH_LOG_DEBUG
-SWITCH_LOG_INFO = _freeswitch.SWITCH_LOG_INFO
-SWITCH_LOG_NOTICE = _freeswitch.SWITCH_LOG_NOTICE
-SWITCH_LOG_WARNING = _freeswitch.SWITCH_LOG_WARNING
-SWITCH_LOG_ERROR = _freeswitch.SWITCH_LOG_ERROR
-SWITCH_LOG_CRIT = _freeswitch.SWITCH_LOG_CRIT
-SWITCH_LOG_ALERT = _freeswitch.SWITCH_LOG_ALERT
-SWITCH_LOG_EMERG = _freeswitch.SWITCH_LOG_EMERG
CS_NEW = _freeswitch.CS_NEW
CS_INIT = _freeswitch.CS_INIT
CS_RING = _freeswitch.CS_RING
Modified: freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/switch_swig_wrap.c
==============================================================================
--- freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/switch_swig_wrap.c (original)
+++ freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/switch_swig_wrap.c Mon Nov 20 17:34:19 2006
@@ -1421,12 +1421,10 @@
#define SWIGTYPE_p_switch_core_session_t swig_types[4]
#define SWIGTYPE_p_switch_file_handle_t swig_types[5]
#define SWIGTYPE_p_switch_input_callback_function_t swig_types[6]
-#define SWIGTYPE_p_switch_log_level_t swig_types[7]
-#define SWIGTYPE_p_uint32_t swig_types[8]
-#define SWIGTYPE_ptrdiff_t swig_types[9]
-#define SWIGTYPE_size_t swig_types[10]
-static swig_type_info *swig_types[12];
-static swig_module_info swig_module = {swig_types, 11, 0, 0, 0, 0};
+#define SWIGTYPE_ptrdiff_t swig_types[7]
+#define SWIGTYPE_size_t swig_types[8]
+static swig_type_info *swig_types[10];
+static swig_module_info swig_module = {swig_types, 9, 0, 0, 0, 0};
#define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
#define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
@@ -2008,7 +2006,7 @@
static PyObject *_wrap_fs_switch_ivr_sleep(PyObject *self, PyObject *args) {
PyObject *resultobj = NULL;
switch_core_session_t *arg1 = (switch_core_session_t *) 0 ;
- uint32_t arg2 ;
+ unsigned int arg2 ;
int result;
PyObject * obj0 = 0 ;
PyObject * obj1 = 0 ;
@@ -2017,14 +2015,8 @@
SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_switch_core_session_t, SWIG_POINTER_EXCEPTION | 0);
if (SWIG_arg_fail(1)) SWIG_fail;
{
- uint32_t * argp;
- SWIG_Python_ConvertPtr(obj1, (void **)&argp, SWIGTYPE_p_uint32_t, SWIG_POINTER_EXCEPTION);
+ arg2 = (unsigned int)(SWIG_As_unsigned_SS_int(obj1));
if (SWIG_arg_fail(2)) SWIG_fail;
- if (argp == NULL) {
- SWIG_null_ref("uint32_t");
- }
- if (SWIG_arg_fail(2)) SWIG_fail;
- arg2 = *argp;
}
result = (int)fs_switch_ivr_sleep(arg1,arg2);
@@ -2171,7 +2163,7 @@
switch_core_session_t *arg1 = (switch_core_session_t *) 0 ;
switch_core_session_t **arg2 = (switch_core_session_t **) 0 ;
char *arg3 = (char *) 0 ;
- uint32_t arg4 ;
+ unsigned int arg4 ;
int result;
PyObject * obj0 = 0 ;
PyObject * obj1 = 0 ;
@@ -2187,14 +2179,8 @@
SWIG_arg_fail(3);SWIG_fail;
}
{
- uint32_t * argp;
- SWIG_Python_ConvertPtr(obj3, (void **)&argp, SWIGTYPE_p_uint32_t, SWIG_POINTER_EXCEPTION);
+ arg4 = (unsigned int)(SWIG_As_unsigned_SS_int(obj3));
if (SWIG_arg_fail(4)) SWIG_fail;
- if (argp == NULL) {
- SWIG_null_ref("uint32_t");
- }
- if (SWIG_arg_fail(4)) SWIG_fail;
- arg4 = *argp;
}
result = (int)fs_switch_ivr_originate(arg1,arg2,arg3,arg4);
@@ -2248,7 +2234,7 @@
char *arg2 = (char *) 0 ;
char *arg3 = (char *) 0 ;
char *arg4 = (char *) 0 ;
- uint32_t arg5 ;
+ unsigned int arg5 ;
switch_input_callback_function_t arg6 ;
char *arg7 = (char *) 0 ;
void *arg8 = (void *) 0 ;
@@ -2277,14 +2263,8 @@
SWIG_arg_fail(4);SWIG_fail;
}
{
- uint32_t * argp;
- SWIG_Python_ConvertPtr(obj4, (void **)&argp, SWIGTYPE_p_uint32_t, SWIG_POINTER_EXCEPTION);
+ arg5 = (unsigned int)(SWIG_As_unsigned_SS_int(obj4));
if (SWIG_arg_fail(5)) SWIG_fail;
- if (argp == NULL) {
- SWIG_null_ref("uint32_t");
- }
- if (SWIG_arg_fail(5)) SWIG_fail;
- arg5 = *argp;
}
{
switch_input_callback_function_t * argp;
@@ -2319,6 +2299,41 @@
}
+static PyObject *_wrap_fs_switch_ivr_speak_text2(PyObject *self, PyObject *args) {
+ PyObject *resultobj = NULL;
+ switch_core_session_t *arg1 = (switch_core_session_t *) 0 ;
+ char *arg2 = (char *) 0 ;
+ char *arg3 = (char *) 0 ;
+ char *arg4 = (char *) 0 ;
+ int result;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+ PyObject * obj2 = 0 ;
+ PyObject * obj3 = 0 ;
+
+ if(!PyArg_ParseTuple(args,(char *)"OOOO:fs_switch_ivr_speak_text2",&obj0,&obj1,&obj2,&obj3)) goto fail;
+ SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_switch_core_session_t, SWIG_POINTER_EXCEPTION | 0);
+ if (SWIG_arg_fail(1)) SWIG_fail;
+ if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) {
+ SWIG_arg_fail(2);SWIG_fail;
+ }
+ if (!SWIG_AsCharPtr(obj2, (char**)&arg3)) {
+ SWIG_arg_fail(3);SWIG_fail;
+ }
+ if (!SWIG_AsCharPtr(obj3, (char**)&arg4)) {
+ SWIG_arg_fail(4);SWIG_fail;
+ }
+ result = (int)fs_switch_ivr_speak_text2(arg1,arg2,arg3,arg4);
+
+ {
+ resultobj = SWIG_From_int((int)(result));
+ }
+ return resultobj;
+ fail:
+ return NULL;
+}
+
+
static PyObject *_wrap_fs_switch_channel_get_variable(PyObject *self, PyObject *args) {
PyObject *resultobj = NULL;
switch_channel_t *arg1 = (switch_channel_t *) 0 ;
@@ -2397,6 +2412,7 @@
{ (char *)"fs_switch_ivr_originate", _wrap_fs_switch_ivr_originate, METH_VARARGS, NULL},
{ (char *)"fs_switch_ivr_session_transfer", _wrap_fs_switch_ivr_session_transfer, METH_VARARGS, NULL},
{ (char *)"fs_switch_ivr_speak_text", _wrap_fs_switch_ivr_speak_text, METH_VARARGS, NULL},
+ { (char *)"fs_switch_ivr_speak_text2", _wrap_fs_switch_ivr_speak_text2, METH_VARARGS, NULL},
{ (char *)"fs_switch_channel_get_variable", _wrap_fs_switch_channel_get_variable, METH_VARARGS, NULL},
{ (char *)"fs_switch_channel_set_variable", _wrap_fs_switch_channel_set_variable, METH_VARARGS, NULL},
{ NULL, NULL, 0, NULL }
@@ -2412,8 +2428,6 @@
static swig_type_info _swigt__p_switch_core_session_t = {"_p_switch_core_session_t", "switch_core_session_t *", 0, 0, 0};
static swig_type_info _swigt__p_switch_file_handle_t = {"_p_switch_file_handle_t", "switch_file_handle_t *", 0, 0, 0};
static swig_type_info _swigt__p_switch_input_callback_function_t = {"_p_switch_input_callback_function_t", "switch_input_callback_function_t *", 0, 0, 0};
-static swig_type_info _swigt__p_switch_log_level_t = {"_p_switch_log_level_t", "enum switch_log_level_t *|switch_log_level_t *", 0, 0, 0};
-static swig_type_info _swigt__p_uint32_t = {"_p_uint32_t", "uint32_t *", 0, 0, 0};
static swig_type_info _swigt__ptrdiff_t = {"_ptrdiff_t", "ptrdiff_t", 0, 0, 0};
static swig_type_info _swigt__size_t = {"_size_t", "size_t", 0, 0, 0};
@@ -2425,8 +2439,6 @@
&_swigt__p_switch_core_session_t,
&_swigt__p_switch_file_handle_t,
&_swigt__p_switch_input_callback_function_t,
- &_swigt__p_switch_log_level_t,
- &_swigt__p_uint32_t,
&_swigt__ptrdiff_t,
&_swigt__size_t,
};
@@ -2438,8 +2450,6 @@
static swig_cast_info _swigc__p_switch_core_session_t[] = { {&_swigt__p_switch_core_session_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_switch_file_handle_t[] = { {&_swigt__p_switch_file_handle_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_switch_input_callback_function_t[] = { {&_swigt__p_switch_input_callback_function_t, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_switch_log_level_t[] = { {&_swigt__p_switch_log_level_t, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_uint32_t[] = { {&_swigt__p_uint32_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__ptrdiff_t[] = { {&_swigt__ptrdiff_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__size_t[] = { {&_swigt__size_t, 0, 0, 0},{0, 0, 0, 0}};
@@ -2451,8 +2461,6 @@
_swigc__p_switch_core_session_t,
_swigc__p_switch_file_handle_t,
_swigc__p_switch_input_callback_function_t,
- _swigc__p_switch_log_level_t,
- _swigc__p_uint32_t,
_swigc__ptrdiff_t,
_swigc__size_t,
};
@@ -2891,33 +2899,6 @@
SWIG_InitializeModule(0);
SWIG_InstallConstants(d,swig_const_table);
- {
- PyDict_SetItemString(d,"SWITCH_LOG_CONSOLE", SWIG_From_int((int)(SWITCH_LOG_CONSOLE)));
- }
- {
- PyDict_SetItemString(d,"SWITCH_LOG_DEBUG", SWIG_From_int((int)(SWITCH_LOG_DEBUG)));
- }
- {
- PyDict_SetItemString(d,"SWITCH_LOG_INFO", SWIG_From_int((int)(SWITCH_LOG_INFO)));
- }
- {
- PyDict_SetItemString(d,"SWITCH_LOG_NOTICE", SWIG_From_int((int)(SWITCH_LOG_NOTICE)));
- }
- {
- PyDict_SetItemString(d,"SWITCH_LOG_WARNING", SWIG_From_int((int)(SWITCH_LOG_WARNING)));
- }
- {
- PyDict_SetItemString(d,"SWITCH_LOG_ERROR", SWIG_From_int((int)(SWITCH_LOG_ERROR)));
- }
- {
- PyDict_SetItemString(d,"SWITCH_LOG_CRIT", SWIG_From_int((int)(SWITCH_LOG_CRIT)));
- }
- {
- PyDict_SetItemString(d,"SWITCH_LOG_ALERT", SWIG_From_int((int)(SWITCH_LOG_ALERT)));
- }
- {
- PyDict_SetItemString(d,"SWITCH_LOG_EMERG", SWIG_From_int((int)(SWITCH_LOG_EMERG)));
- }
{
PyDict_SetItemString(d,"CS_NEW", SWIG_From_int((int)(CS_NEW)));
}
Modified: freeswitch/branches/jkr888/trunk/src/switch_swig.c
==============================================================================
--- freeswitch/branches/jkr888/trunk/src/switch_swig.c (original)
+++ freeswitch/branches/jkr888/trunk/src/switch_swig.c Mon Nov 20 17:34:19 2006
@@ -187,7 +187,7 @@
}
int fs_switch_ivr_sleep(switch_core_session_t *session,
- uint32_t ms)
+ unsigned int ms)
{
switch_status_t status;
status = switch_ivr_sleep(session, ms);
@@ -247,7 +247,7 @@
int fs_switch_ivr_originate (switch_core_session_t *session,
switch_core_session_t **bleg,
char * bridgeto,
- uint32_t timelimit_sec)
+ unsigned int timelimit_sec)
/*const switch_state_handler_table_t *table,
char * cid_name_override,
char * cid_num_override,
@@ -293,7 +293,7 @@
char *tts_name,
char *voice_name,
char *timer_name,
- uint32_t rate,
+ unsigned int rate,
switch_input_callback_function_t dtmf_callback,
char *text,
void *buf,
@@ -302,6 +302,17 @@
switch_status_t status;
status = switch_ivr_speak_text(session,tts_name,voice_name,timer_name,rate,dtmf_callback,text,buf,buflen);
+ return status == SWITCH_STATUS_SUCCESS ? 1 : 0;
+}
+
+int fs_switch_ivr_speak_text2 (switch_core_session_t *session,
+ char *tts_name,
+ char *voice_name,
+ char *text)
+{
+ switch_status_t status;
+
+ status = switch_ivr_speak_text(session,tts_name,voice_name,NULL,0,NULL,text,NULL,0);
return status == SWITCH_STATUS_SUCCESS ? 1 : 0;
}
Modified: freeswitch/branches/jkr888/trunk/src/switch_swig.i
==============================================================================
--- freeswitch/branches/jkr888/trunk/src/switch_swig.i (original)
+++ freeswitch/branches/jkr888/trunk/src/switch_swig.i Mon Nov 20 17:34:19 2006
@@ -1,21 +1,9 @@
-%module fs_elmoscript
+%module freeswitch
%{
#include "switch.h"
%}
%include "/usr/local/freeswitch/include/switch.h"
-
-typedef enum {
- SWITCH_LOG_CONSOLE = 8,
- SWITCH_LOG_DEBUG = 7,
- SWITCH_LOG_INFO = 6,
- SWITCH_LOG_NOTICE = 5,
- SWITCH_LOG_WARNING = 4,
- SWITCH_LOG_ERROR = 3,
- SWITCH_LOG_CRIT = 2,
- SWITCH_LOG_ALERT = 1,
- SWITCH_LOG_EMERG = 0
-} switch_log_level_t;
typedef enum {
CS_NEW,
1
0