updated iax build for msvc
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@8324 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
385528394e
commit
c4a4a1de6e
|
@ -125,9 +125,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "directory", "directory", "{
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sip_profiles", "sip_profiles", "{8E2E8798-8B6F-4A55-8E4F-4E6FDE40ED26}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sip_profiles", "sip_profiles", "{8E2E8798-8B6F-4A55-8E4F-4E6FDE40ED26}"
|
||||||
ProjectSection(SolutionItems) = preProject
|
ProjectSection(SolutionItems) = preProject
|
||||||
conf\sip_profiles\default.xml = conf\sip_profiles\default.xml
|
|
||||||
conf\sip_profiles\nat.xml = conf\sip_profiles\nat.xml
|
conf\sip_profiles\nat.xml = conf\sip_profiles\nat.xml
|
||||||
conf\sip_profiles\outbound.xml = conf\sip_profiles\outbound.xml
|
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "lang", "lang", "{09455AA9-C243-4F16-A1A1-A016881A2765}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "lang", "lang", "{09455AA9-C243-4F16-A1A1-A016881A2765}"
|
||||||
|
@ -409,7 +407,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_iax", "src\mod\endpoint
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
|
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
|
||||||
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
|
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
|
||||||
{5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E} = {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}
|
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_PortAudio", "src\mod\endpoints\mod_portaudio\mod_PortAudio.2008.vcproj", "{5FD31A25-5D83-4794-8BEE-904DAD84CE71}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_PortAudio", "src\mod\endpoints\mod_portaudio\mod_PortAudio.2008.vcproj", "{5FD31A25-5D83-4794-8BEE-904DAD84CE71}"
|
||||||
|
@ -541,8 +538,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_event_socket", "src\mod
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libilbc", "libs\codec\ilbc\libilbc.2008.vcproj", "{989BB874-7AF1-44CB-8E5C-CC8113D267E8}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libilbc", "libs\codec\ilbc\libilbc.2008.vcproj", "{989BB874-7AF1-44CB-8E5C-CC8113D267E8}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libiax2", "libs\iax\libiax2.2008.vcproj", "{5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libdingaling", "libs\libdingaling\libdingaling.2008.vcproj", "{1906D736-08BD-4EE1-924F-B536249B9A54}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libdingaling", "libs\libdingaling\libdingaling.2008.vcproj", "{1906D736-08BD-4EE1-924F-B536249B9A54}"
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
{F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
|
{F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
|
||||||
|
@ -1036,12 +1031,6 @@ Global
|
||||||
{989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|Win32.ActiveCfg = Release|Win32
|
{989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
{989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|Win32.Build.0 = Release|Win32
|
{989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|Win32.Build.0 = Release|Win32
|
||||||
{989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|x64.ActiveCfg = Release|Win32
|
{989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|x64.ActiveCfg = Release|Win32
|
||||||
{5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Debug|Win32.ActiveCfg = Debug|Win32
|
|
||||||
{5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Debug|Win32.Build.0 = Debug|Win32
|
|
||||||
{5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Debug|x64.ActiveCfg = Debug|Win32
|
|
||||||
{5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Release|x64.ActiveCfg = Release|Win32
|
|
||||||
{1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.ActiveCfg = Debug|Win32
|
{1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
{1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.Build.0 = Debug|Win32
|
{1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
{1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|x64.ActiveCfg = Debug|Win32
|
{1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|x64.ActiveCfg = Debug|Win32
|
||||||
|
@ -1502,7 +1491,6 @@ Global
|
||||||
{ACFD96F2-58AA-491D-B4C0-33BD0BD57FDE} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
{ACFD96F2-58AA-491D-B4C0-33BD0BD57FDE} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||||
{89385C74-5860-4174-9CAF-A39E7C48909C} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
{89385C74-5860-4174-9CAF-A39E7C48909C} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||||
{989BB874-7AF1-44CB-8E5C-CC8113D267E8} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
{989BB874-7AF1-44CB-8E5C-CC8113D267E8} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||||
{5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
|
||||||
{1906D736-08BD-4EE1-924F-B536249B9A54} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
{1906D736-08BD-4EE1-924F-B536249B9A54} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||||
{EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
{EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||||
{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||||
|
|
|
@ -15,7 +15,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FreeSwitchCoreLib", "w32\Li
|
||||||
{F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
|
{F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
|
||||||
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
|
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
|
||||||
{EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EEF031CB-FED8-451E-A471-91EC8D4F6750}
|
{EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EEF031CB-FED8-451E-A471-91EC8D4F6750}
|
||||||
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
|
|
||||||
{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
|
{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
|
@ -35,7 +34,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_iax", "src\mod\endpoint
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
|
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
|
||||||
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
|
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
|
||||||
{5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E} = {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}
|
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_PortAudio", "src\mod\endpoints\mod_portaudio\mod_PortAudio.vcproj", "{5FD31A25-5D83-4794-8BEE-904DAD84CE71}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_PortAudio", "src\mod\endpoints\mod_portaudio\mod_PortAudio.vcproj", "{5FD31A25-5D83-4794-8BEE-904DAD84CE71}"
|
||||||
|
@ -193,8 +191,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Libraries", "_Libraries",
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libilbc", "libs\codec\ilbc\libilbc.vcproj", "{989BB874-7AF1-44CB-8E5C-CC8113D267E8}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libilbc", "libs\codec\ilbc\libilbc.vcproj", "{989BB874-7AF1-44CB-8E5C-CC8113D267E8}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libiax2", "libs\iax\libiax2.vcproj", "{5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libdingaling", "libs\libdingaling\libdingaling.vcproj", "{1906D736-08BD-4EE1-924F-B536249B9A54}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libdingaling", "libs\libdingaling\libdingaling.vcproj", "{1906D736-08BD-4EE1-924F-B536249B9A54}"
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
{F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
|
{F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
|
||||||
|
@ -216,15 +212,9 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libresample", "libs\win32\l
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libapr", "libs\win32\apr\libapr.vcproj", "{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libapr", "libs\win32\apr\libapr.vcproj", "{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libapriconv", "libs\win32\apr-iconv\libapriconv.vcproj", "{101130D1-3EA6-4ED2-B65D-CEB5243A20ED}"
|
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
|
||||||
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
|
|
||||||
EndProjectSection
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libaprutil", "libs\win32\apr-util\libaprutil.vcproj", "{F057DA7F-79E5-4B00-845C-EF446EF055E3}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libaprutil", "libs\win32\apr-util\libaprutil.vcproj", "{F057DA7F-79E5-4B00-845C-EF446EF055E3}"
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
|
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
|
||||||
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
|
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Downloads", "_Downloads", "{C120A020-773F-4EA3-923F-B67AF28B750D}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Downloads", "_Downloads", "{C120A020-773F-4EA3-923F-B67AF28B750D}"
|
||||||
|
@ -1046,12 +1036,6 @@ Global
|
||||||
{989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|Win32.ActiveCfg = Release|Win32
|
{989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
{989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|Win32.Build.0 = Release|Win32
|
{989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|Win32.Build.0 = Release|Win32
|
||||||
{989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|x64.ActiveCfg = Release|Win32
|
{989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|x64.ActiveCfg = Release|Win32
|
||||||
{5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Debug|Win32.ActiveCfg = Debug|Win32
|
|
||||||
{5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Debug|Win32.Build.0 = Debug|Win32
|
|
||||||
{5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Debug|x64.ActiveCfg = Debug|Win32
|
|
||||||
{5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Release|x64.ActiveCfg = Release|Win32
|
|
||||||
{1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.ActiveCfg = Debug|Win32
|
{1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
{1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.Build.0 = Debug|Win32
|
{1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
{1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|x64.ActiveCfg = Debug|Win32
|
{1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|x64.ActiveCfg = Debug|Win32
|
||||||
|
@ -1094,12 +1078,6 @@ Global
|
||||||
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.ActiveCfg = Release|Win32
|
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.Build.0 = Release|Win32
|
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.Build.0 = Release|Win32
|
||||||
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x64.ActiveCfg = Release|Win32
|
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x64.ActiveCfg = Release|Win32
|
||||||
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED}.Debug|Win32.ActiveCfg = Debug|Win32
|
|
||||||
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED}.Debug|Win32.Build.0 = Debug|Win32
|
|
||||||
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED}.Debug|x64.ActiveCfg = Debug|Win32
|
|
||||||
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED}.Release|x64.ActiveCfg = Release|Win32
|
|
||||||
{F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.ActiveCfg = Debug|Win32
|
{F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
{F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.Build.0 = Debug|Win32
|
{F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
{F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|x64.ActiveCfg = Debug|Win32
|
{F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|x64.ActiveCfg = Debug|Win32
|
||||||
|
@ -1503,7 +1481,6 @@ Global
|
||||||
{EC3E5C7F-EE09-47E2-80FE-546363D14A98} = {B8F5B47B-8568-46EB-B320-64C17D2A98BC}
|
{EC3E5C7F-EE09-47E2-80FE-546363D14A98} = {B8F5B47B-8568-46EB-B320-64C17D2A98BC}
|
||||||
{89385C74-5860-4174-9CAF-A39E7C48909C} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
{89385C74-5860-4174-9CAF-A39E7C48909C} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||||
{989BB874-7AF1-44CB-8E5C-CC8113D267E8} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
{989BB874-7AF1-44CB-8E5C-CC8113D267E8} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||||
{5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
|
||||||
{1906D736-08BD-4EE1-924F-B536249B9A54} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
{1906D736-08BD-4EE1-924F-B536249B9A54} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||||
{EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
{EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||||
{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||||
|
@ -1511,7 +1488,6 @@ Global
|
||||||
{1CED5987-A529-46DC-B30F-870D85FF9C94} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
{1CED5987-A529-46DC-B30F-870D85FF9C94} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||||
{50AD0E28-B8D7-4FCC-8FC3-599F6AC69761} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
{50AD0E28-B8D7-4FCC-8FC3-599F6AC69761} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||||
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||||
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
|
||||||
{F057DA7F-79E5-4B00-845C-EF446EF055E3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
{F057DA7F-79E5-4B00-845C-EF446EF055E3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||||
{1C469CDD-A3AF-4A94-A592-B2CF12F2D918} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
{1C469CDD-A3AF-4A94-A592-B2CF12F2D918} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||||
{E727E8F6-935D-46FE-8B0E-37834748A0E3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
{E727E8F6-935D-46FE-8B0E-37834748A0E3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||||
|
|
|
@ -230,6 +230,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -239,6 +240,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -252,6 +254,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -261,6 +264,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -274,6 +278,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -283,6 +288,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -296,6 +302,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -305,6 +312,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -318,6 +326,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -327,6 +336,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -340,6 +350,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -349,6 +360,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -362,6 +374,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -371,6 +384,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -384,6 +398,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -393,6 +408,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -406,6 +422,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -415,6 +432,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -428,6 +446,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -437,6 +456,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -450,6 +470,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -459,6 +480,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -472,6 +494,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -481,6 +504,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -494,6 +518,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -503,6 +528,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -520,6 +546,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -529,6 +556,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -542,6 +570,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -551,6 +580,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -564,6 +594,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -573,6 +604,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -634,6 +666,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -643,6 +676,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -656,6 +690,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -665,6 +700,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -678,6 +714,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -687,6 +724,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -700,6 +738,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -709,6 +748,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -726,6 +766,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -735,6 +776,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -748,6 +790,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -757,6 +800,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -770,6 +814,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -779,6 +824,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -792,6 +838,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -801,6 +848,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -818,6 +866,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -827,6 +876,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -844,6 +894,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -853,6 +904,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -870,6 +922,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -879,6 +932,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -892,6 +946,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -901,6 +956,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -914,6 +970,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -923,6 +980,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -940,6 +998,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -949,6 +1008,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -984,6 +1044,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -993,6 +1054,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -1006,6 +1068,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -1015,6 +1078,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -1032,6 +1096,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -1041,6 +1106,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -1054,6 +1120,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -1063,6 +1130,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -1076,6 +1144,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -1085,6 +1154,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -1098,6 +1168,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -1107,6 +1178,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -1118,14 +1190,62 @@
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\apr-util\dbm\sdbm\sdbm_pair.h"
|
RelativePath="..\..\apr-util\dbm\sdbm\sdbm_pair.h"
|
||||||
>
|
>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\apr-util\dbm\sdbm\sdbm_private.h"
|
RelativePath="..\..\apr-util\dbm\sdbm\sdbm_private.h"
|
||||||
>
|
>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\apr-util\dbm\sdbm\sdbm_tune.h"
|
RelativePath="..\..\apr-util\dbm\sdbm\sdbm_tune.h"
|
||||||
>
|
>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
</Filter>
|
</Filter>
|
||||||
<Filter
|
<Filter
|
||||||
|
@ -1136,6 +1256,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -1145,6 +1266,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -1162,6 +1284,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -1171,6 +1294,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -1188,6 +1312,7 @@
|
||||||
>
|
>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
@ -1197,6 +1322,7 @@
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
|
|
@ -302,6 +302,7 @@ struct conference_member {
|
||||||
uint32_t resample_out_len;
|
uint32_t resample_out_len;
|
||||||
conference_file_node_t *fnode;
|
conference_file_node_t *fnode;
|
||||||
conference_relationship_t *relationships;
|
conference_relationship_t *relationships;
|
||||||
|
switch_ivr_digit_stream_parser_t *dtmf_parser;
|
||||||
switch_ivr_digit_stream_t *digit_stream;
|
switch_ivr_digit_stream_t *digit_stream;
|
||||||
switch_speech_handle_t lsh;
|
switch_speech_handle_t lsh;
|
||||||
switch_speech_handle_t *sh;
|
switch_speech_handle_t *sh;
|
||||||
|
@ -4195,6 +4196,12 @@ SWITCH_STANDARD_APP(conference_function)
|
||||||
profile_name = "default";
|
profile_name = "default";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (0) {
|
||||||
|
member.dtmf_parser = conference->dtmf_parser;
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
switch_event_create(¶ms, SWITCH_EVENT_MESSAGE);
|
switch_event_create(¶ms, SWITCH_EVENT_MESSAGE);
|
||||||
switch_assert(params);
|
switch_assert(params);
|
||||||
switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "conf_name", conf_name);
|
switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "conf_name", conf_name);
|
||||||
|
@ -4514,6 +4521,9 @@ SWITCH_STANDARD_APP(conference_function)
|
||||||
switch_buffer_destroy(&member.resample_buffer);
|
switch_buffer_destroy(&member.resample_buffer);
|
||||||
switch_buffer_destroy(&member.audio_buffer);
|
switch_buffer_destroy(&member.audio_buffer);
|
||||||
switch_buffer_destroy(&member.mux_buffer);
|
switch_buffer_destroy(&member.mux_buffer);
|
||||||
|
if (member.dtmf_parser != conference->dtmf_parser) {
|
||||||
|
switch_ivr_digit_stream_parser_destroy(member.dtmf_parser);
|
||||||
|
}
|
||||||
|
|
||||||
if (conference) {
|
if (conference) {
|
||||||
switch_mutex_lock(conference->mutex);
|
switch_mutex_lock(conference->mutex);
|
||||||
|
|
|
@ -684,13 +684,13 @@ static unsigned char get_n_bits_at(unsigned char *data, int n, int bit)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (rem < n) {
|
if (rem < n) {
|
||||||
ret = (data[byte] << (n - rem));
|
ret = (unsigned char)(data[byte] << (n - rem));
|
||||||
ret |= (data[byte + 1] >> (8 - n + rem));
|
ret |= (data[byte + 1] >> (8 - n + rem));
|
||||||
} else {
|
} else {
|
||||||
ret = (data[byte] >> (rem - n));
|
ret = (unsigned char)(data[byte] >> (rem - n));
|
||||||
}
|
}
|
||||||
|
|
||||||
return (ret & (0xff >> (8 - n)));
|
return (unsigned char)(ret & (0xff >> (8 - n)));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int speex_get_wb_sz_at(unsigned char *data, int len, int bit)
|
static int speex_get_wb_sz_at(unsigned char *data, int len, int bit)
|
||||||
|
@ -957,7 +957,7 @@ int iax_init(char *ip, int preferredportno)
|
||||||
{
|
{
|
||||||
int portno = preferredportno;
|
int portno = preferredportno;
|
||||||
struct sockaddr_in sin;
|
struct sockaddr_in sin;
|
||||||
unsigned int sinlen;
|
int sinlen;
|
||||||
int flags;
|
int flags;
|
||||||
|
|
||||||
init_time();
|
init_time();
|
||||||
|
@ -1060,7 +1060,7 @@ static unsigned char compress_subclass(int subclass)
|
||||||
int power=-1;
|
int power=-1;
|
||||||
/* If it's 128 or smaller, just return it */
|
/* If it's 128 or smaller, just return it */
|
||||||
if (subclass < IAX_FLAG_SC_LOG)
|
if (subclass < IAX_FLAG_SC_LOG)
|
||||||
return subclass;
|
return (unsigned char)subclass;
|
||||||
/* Otherwise find its power */
|
/* Otherwise find its power */
|
||||||
for (x = 0; x < IAX_MAX_SHIFT; x++) {
|
for (x = 0; x < IAX_MAX_SHIFT; x++) {
|
||||||
if (subclass & (1 << x)) {
|
if (subclass & (1 << x)) {
|
||||||
|
@ -1071,7 +1071,7 @@ static unsigned char compress_subclass(int subclass)
|
||||||
power = x;
|
power = x;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return power | IAX_FLAG_SC_LOG;
|
return (unsigned char)(power | IAX_FLAG_SC_LOG);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int iax_send(struct iax_session *pvt, struct ast_frame *f, time_in_ms_t ts, int seqno, int now, int transfer, int final)
|
static int iax_send(struct iax_session *pvt, struct ast_frame *f, time_in_ms_t ts, int seqno, int now, int transfer, int final)
|
||||||
|
@ -1131,7 +1131,7 @@ static int iax_send(struct iax_session *pvt, struct ast_frame *f, time_in_ms_t t
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
fr->callno = pvt->callno;
|
fr->callno = (unsigned short)pvt->callno;
|
||||||
fr->transfer = transfer;
|
fr->transfer = transfer;
|
||||||
fr->final = final;
|
fr->final = final;
|
||||||
fr->session = pvt;
|
fr->session = pvt;
|
||||||
|
@ -1145,19 +1145,19 @@ static int iax_send(struct iax_session *pvt, struct ast_frame *f, time_in_ms_t t
|
||||||
fh = (struct ast_iax2_full_hdr *)(((char *)fr->af.data) - sizeof(struct ast_iax2_full_hdr));
|
fh = (struct ast_iax2_full_hdr *)(((char *)fr->af.data) - sizeof(struct ast_iax2_full_hdr));
|
||||||
fh->scallno = htons(fr->callno | IAX_FLAG_FULL);
|
fh->scallno = htons(fr->callno | IAX_FLAG_FULL);
|
||||||
fh->ts = htonl((long)(fr->ts));
|
fh->ts = htonl((long)(fr->ts));
|
||||||
fh->oseqno = fr->oseqno;
|
fh->oseqno = (unsigned char)fr->oseqno;
|
||||||
if (transfer) {
|
if (transfer) {
|
||||||
fh->iseqno = 0;
|
fh->iseqno = 0;
|
||||||
} else
|
} else
|
||||||
fh->iseqno = fr->iseqno;
|
fh->iseqno = (unsigned char)fr->iseqno;
|
||||||
/* Keep track of the last thing we've acknowledged */
|
/* Keep track of the last thing we've acknowledged */
|
||||||
pvt->aseqno = fr->iseqno;
|
pvt->aseqno = (unsigned char)fr->iseqno;
|
||||||
fh->type = fr->af.frametype & 0xFF;
|
fh->type = (char)(fr->af.frametype & 0xFF);
|
||||||
fh->csub = compress_subclass(fr->af.subclass);
|
fh->csub = compress_subclass(fr->af.subclass);
|
||||||
if (transfer) {
|
if (transfer) {
|
||||||
fr->dcallno = pvt->transfercallno;
|
fr->dcallno = (unsigned short)pvt->transfercallno;
|
||||||
} else
|
} else
|
||||||
fr->dcallno = pvt->peercallno;
|
fr->dcallno = (unsigned short)pvt->peercallno;
|
||||||
fh->dcallno = htons(fr->dcallno);
|
fh->dcallno = htons(fr->dcallno);
|
||||||
fr->datalen = fr->af.datalen + sizeof(struct ast_iax2_full_hdr);
|
fr->datalen = fr->af.datalen + sizeof(struct ast_iax2_full_hdr);
|
||||||
fr->data = fh;
|
fr->data = fh;
|
||||||
|
@ -1370,11 +1370,11 @@ int iax_setup_transfer(struct iax_session *org_session, struct iax_session *new_
|
||||||
|
|
||||||
/* reversed setup */
|
/* reversed setup */
|
||||||
iax_ie_append_addr(&ied0, IAX_IE_APPARENT_ADDR, &s1->peeraddr);
|
iax_ie_append_addr(&ied0, IAX_IE_APPARENT_ADDR, &s1->peeraddr);
|
||||||
iax_ie_append_short(&ied0, IAX_IE_CALLNO, s1->peercallno);
|
iax_ie_append_short(&ied0, IAX_IE_CALLNO, (unsigned short)s1->peercallno);
|
||||||
iax_ie_append_int(&ied0, IAX_IE_TRANSFERID, transfer_id);
|
iax_ie_append_int(&ied0, IAX_IE_TRANSFERID, transfer_id);
|
||||||
|
|
||||||
iax_ie_append_addr(&ied1, IAX_IE_APPARENT_ADDR, &s0->peeraddr);
|
iax_ie_append_addr(&ied1, IAX_IE_APPARENT_ADDR, &s0->peeraddr);
|
||||||
iax_ie_append_short(&ied1, IAX_IE_CALLNO, s0->peercallno);
|
iax_ie_append_short(&ied1, IAX_IE_CALLNO, (unsigned short)s0->peercallno);
|
||||||
iax_ie_append_int(&ied1, IAX_IE_TRANSFERID, transfer_id);
|
iax_ie_append_int(&ied1, IAX_IE_TRANSFERID, transfer_id);
|
||||||
|
|
||||||
s0->transfer = s1->peeraddr;
|
s0->transfer = s1->peeraddr;
|
||||||
|
@ -1460,15 +1460,15 @@ static int iax_handle_txready(struct iax_session *s)
|
||||||
s->transferring = TRANSFER_REL;
|
s->transferring = TRANSFER_REL;
|
||||||
|
|
||||||
s0 = s;
|
s0 = s;
|
||||||
s1 = iax_find_session2(s0->transferpeer);
|
s1 = iax_find_session2((short)s0->transferpeer);
|
||||||
|
|
||||||
if (s1 != NULL &&
|
if (s1 != NULL &&
|
||||||
s1->callno == s0->transferpeer &&
|
s1->callno == s0->transferpeer &&
|
||||||
s0->transferring == TRANSFER_REL &&
|
s0->transferring == TRANSFER_REL &&
|
||||||
s1->transferring == TRANSFER_REL) {
|
s1->transferring == TRANSFER_REL) {
|
||||||
|
|
||||||
s0_org_peer = s0->peercallno;
|
s0_org_peer = (short)s0->peercallno;
|
||||||
s1_org_peer = s1->peercallno;
|
s1_org_peer = (short)s1->peercallno;
|
||||||
|
|
||||||
iax_finish_transfer(s0, s1_org_peer);
|
iax_finish_transfer(s0, s1_org_peer);
|
||||||
iax_finish_transfer(s1, s0_org_peer);
|
iax_finish_transfer(s1, s0_org_peer);
|
||||||
|
@ -1483,7 +1483,7 @@ static void iax_handle_txreject(struct iax_session *s)
|
||||||
struct iax_session *s0, *s1;
|
struct iax_session *s0, *s1;
|
||||||
|
|
||||||
s0 = s;
|
s0 = s;
|
||||||
s1 = iax_find_session2(s0->transferpeer);
|
s1 = iax_find_session2((short)s0->transferpeer);
|
||||||
if (s1 != NULL &&
|
if (s1 != NULL &&
|
||||||
s0->transferpeer == s1->callno &&
|
s0->transferpeer == s1->callno &&
|
||||||
s1->transferring) {
|
s1->transferring) {
|
||||||
|
@ -1662,12 +1662,12 @@ int iax_register(struct iax_session *session, char *server, char *peer, char *se
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
memcpy(&session->peeraddr.sin_addr, hp->h_addr, sizeof(session->peeraddr.sin_addr));
|
memcpy(&session->peeraddr.sin_addr, hp->h_addr, sizeof(session->peeraddr.sin_addr));
|
||||||
session->peeraddr.sin_port = htons(portno);
|
session->peeraddr.sin_port = htons((unsigned short)portno);
|
||||||
session->peeraddr.sin_family = AF_INET;
|
session->peeraddr.sin_family = AF_INET;
|
||||||
strncpy(session->username, peer, sizeof(session->username) - 1);
|
strncpy(session->username, peer, sizeof(session->username) - 1);
|
||||||
session->refresh = refresh;
|
session->refresh = refresh;
|
||||||
iax_ie_append_str(&ied, IAX_IE_USERNAME, (unsigned char *) peer);
|
iax_ie_append_str(&ied, IAX_IE_USERNAME, (unsigned char *) peer);
|
||||||
iax_ie_append_short(&ied, IAX_IE_REFRESH, refresh);
|
iax_ie_append_short(&ied, IAX_IE_REFRESH, (unsigned short)refresh);
|
||||||
res = send_command(session, AST_FRAME_IAX, IAX_COMMAND_REGREQ, 0, ied.buf, ied.pos, -1);
|
res = send_command(session, AST_FRAME_IAX, IAX_COMMAND_REGREQ, 0, ied.buf, ied.pos, -1);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
@ -1854,7 +1854,7 @@ static int iax_send_txready(struct iax_session *session)
|
||||||
struct iax_ie_data ied;
|
struct iax_ie_data ied;
|
||||||
memset(&ied, 0, sizeof(ied));
|
memset(&ied, 0, sizeof(ied));
|
||||||
/* see asterisk chan_iax2.c */
|
/* see asterisk chan_iax2.c */
|
||||||
iax_ie_append_short(&ied, IAX_IE_CALLNO, session->callno);
|
iax_ie_append_short(&ied, IAX_IE_CALLNO, (unsigned short)session->callno);
|
||||||
return send_command(session, AST_FRAME_IAX, IAX_COMMAND_TXREADY, 0, ied.buf, ied.pos, -1);
|
return send_command(session, AST_FRAME_IAX, IAX_COMMAND_TXREADY, 0, ied.buf, ied.pos, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1887,7 +1887,7 @@ static int iax_regauth_reply(struct iax_session *session, char *password, char *
|
||||||
struct iax_ie_data ied;
|
struct iax_ie_data ied;
|
||||||
memset(&ied, 0, sizeof(ied));
|
memset(&ied, 0, sizeof(ied));
|
||||||
iax_ie_append_str(&ied, IAX_IE_USERNAME, (unsigned char *) session->username);
|
iax_ie_append_str(&ied, IAX_IE_USERNAME, (unsigned char *) session->username);
|
||||||
iax_ie_append_short(&ied, IAX_IE_REFRESH, session->refresh);
|
iax_ie_append_short(&ied, IAX_IE_REFRESH, (unsigned short)session->refresh);
|
||||||
if ((methods & IAX_AUTHMETHOD_MD5) && challenge) {
|
if ((methods & IAX_AUTHMETHOD_MD5) && challenge) {
|
||||||
MD5Init(&md5);
|
MD5Init(&md5);
|
||||||
MD5Update(&md5, (const unsigned char *) challenge, (unsigned int)strlen(challenge));
|
MD5Update(&md5, (const unsigned char *) challenge, (unsigned int)strlen(challenge));
|
||||||
|
@ -1931,9 +1931,9 @@ int iax_dialplan_request(struct iax_session *session, char *number)
|
||||||
|
|
||||||
static inline int which_bit(unsigned int i)
|
static inline int which_bit(unsigned int i)
|
||||||
{
|
{
|
||||||
char x;
|
unsigned char x;
|
||||||
for(x = 0; x < 32; x++) {
|
for(x = 0; x < 32; x++) {
|
||||||
if ((1 << x) == i) {
|
if ((unsigned)(1 << x) == i) {
|
||||||
return x + 1;
|
return x + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1943,7 +1943,7 @@ static inline int which_bit(unsigned int i)
|
||||||
char iax_pref_codec_add(struct iax_session *session, unsigned int format)
|
char iax_pref_codec_add(struct iax_session *session, unsigned int format)
|
||||||
{
|
{
|
||||||
int diff = (int) 'A';
|
int diff = (int) 'A';
|
||||||
session->codec_order[session->codec_order_len++] = (which_bit(format)) + diff;
|
session->codec_order[session->codec_order_len++] = (char)((which_bit(format)) + diff);
|
||||||
session->codec_order[session->codec_order_len] = '\0';
|
session->codec_order[session->codec_order_len] = '\0';
|
||||||
return session->codec_order[session->codec_order_len-1];
|
return session->codec_order[session->codec_order_len-1];
|
||||||
}
|
}
|
||||||
|
@ -1954,7 +1954,7 @@ void iax_pref_codec_del(struct iax_session *session, unsigned int format)
|
||||||
int diff = (int) 'A';
|
int diff = (int) 'A';
|
||||||
size_t x;
|
size_t x;
|
||||||
char old[32];
|
char old[32];
|
||||||
char remove = which_bit(format) + diff;
|
char remove = (char)(which_bit(format) + diff);
|
||||||
|
|
||||||
strncpy(old, session->codec_order, sizeof(old));
|
strncpy(old, session->codec_order, sizeof(old));
|
||||||
session->codec_order_len = 0;
|
session->codec_order_len = 0;
|
||||||
|
@ -2083,7 +2083,7 @@ int iax_call(struct iax_session *session, const char *cidnum, const char *cidnam
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
memcpy(&session->peeraddr.sin_addr, hp->h_addr, sizeof(session->peeraddr.sin_addr));
|
memcpy(&session->peeraddr.sin_addr, hp->h_addr, sizeof(session->peeraddr.sin_addr));
|
||||||
session->peeraddr.sin_port = htons(portno);
|
session->peeraddr.sin_port = htons((unsigned short)portno);
|
||||||
session->peeraddr.sin_family = AF_INET;
|
session->peeraddr.sin_family = AF_INET;
|
||||||
res = send_command(session, AST_FRAME_IAX, IAX_COMMAND_NEW, 0, ied.buf, ied.pos, -1);
|
res = send_command(session, AST_FRAME_IAX, IAX_COMMAND_NEW, 0, ied.buf, ied.pos, -1);
|
||||||
if (res < 0)
|
if (res < 0)
|
||||||
|
@ -2984,7 +2984,7 @@ static struct iax_event *iax_net_read(void)
|
||||||
struct sockaddr_in sin;
|
struct sockaddr_in sin;
|
||||||
|
|
||||||
sinlen = sizeof(sin);
|
sinlen = sizeof(sin);
|
||||||
res = iax_recvfrom(netfd, buf, sizeof(buf), 0, (struct sockaddr *) &sin, &sinlen);
|
res = iax_recvfrom(netfd, (char *)buf, sizeof(buf), 0, (struct sockaddr *) &sin, &sinlen);
|
||||||
|
|
||||||
if (res < 0) {
|
if (res < 0) {
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
|
@ -3024,7 +3024,7 @@ static struct iax_session *iax_txcnt_session(struct ast_iax2_full_hdr *fh, int d
|
||||||
}
|
}
|
||||||
iax_mutex_lock(session_mutex);
|
iax_mutex_lock(session_mutex);
|
||||||
for( cur=sessions; cur; cur=cur->next ) {
|
for( cur=sessions; cur; cur=cur->next ) {
|
||||||
if ((cur->transferring) && (cur->transferid == ies.transferid) &&
|
if ((cur->transferring) && (cur->transferid == (int)ies.transferid) &&
|
||||||
(cur->callno == dcallno) && (cur->transfercallno == callno)) {
|
(cur->callno == dcallno) && (cur->transfercallno == callno)) {
|
||||||
/* We're transferring ---
|
/* We're transferring ---
|
||||||
* skip address/port checking which would fail while remote peer behind symmetric NAT
|
* skip address/port checking which would fail while remote peer behind symmetric NAT
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
#include "iax2.h"
|
#include "iax2.h"
|
||||||
#include "iax2-parser.h"
|
#include "iax2-parser.h"
|
||||||
|
|
||||||
static int frames = 0;
|
static int frame_count = 0;
|
||||||
static int iframes = 0;
|
static int iframes = 0;
|
||||||
static int oframes = 0;
|
static int oframes = 0;
|
||||||
|
|
||||||
|
@ -391,7 +391,7 @@ void iax_showframe(struct iax_frame *f, struct ast_iax2_full_hdr *fhi, int rx, s
|
||||||
/* Don't mess with mini-frames */
|
/* Don't mess with mini-frames */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (fh->type > (int)sizeof(frames)/(int)sizeof(char *)) {
|
if (fh->type > ((int)sizeof(frames)/(int)sizeof(char *)) - 1) {
|
||||||
snprintf(class2, (int)sizeof(class2), "(%d?)", fh->type);
|
snprintf(class2, (int)sizeof(class2), "(%d?)", fh->type);
|
||||||
class = class2;
|
class = class2;
|
||||||
} else {
|
} else {
|
||||||
|
@ -442,7 +442,7 @@ int iax_ie_append_raw(struct iax_ie_data *ied, unsigned char ie, const void *dat
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
ied->buf[ied->pos++] = ie;
|
ied->buf[ied->pos++] = ie;
|
||||||
ied->buf[ied->pos++] = datalen;
|
ied->buf[ied->pos++] = (unsigned char)datalen;
|
||||||
memcpy(ied->buf + ied->pos, data, datalen);
|
memcpy(ied->buf + ied->pos, data, datalen);
|
||||||
ied->pos += datalen;
|
ied->pos += datalen;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -492,19 +492,19 @@ void iax_set_error(void (*func)(const char *))
|
||||||
errorf = func;
|
errorf = func;
|
||||||
}
|
}
|
||||||
|
|
||||||
int iax_parse_ies(struct iax_ies *ies, unsigned char *data, int datalen)
|
int iax_parse_ies(struct iax_ies *my_ies, unsigned char *data, int datalen)
|
||||||
{
|
{
|
||||||
/* Parse data into information elements */
|
/* Parse data into information elements */
|
||||||
int len;
|
int len;
|
||||||
int ie;
|
int ie;
|
||||||
char tmp[256];
|
char tmp[256];
|
||||||
memset(ies, 0, (int)sizeof(struct iax_ies));
|
memset(my_ies, 0, (int)sizeof(struct iax_ies));
|
||||||
ies->msgcount = -1;
|
my_ies->msgcount = -1;
|
||||||
ies->firmwarever = -1;
|
my_ies->firmwarever = -1;
|
||||||
ies->calling_ton = -1;
|
my_ies->calling_ton = -1;
|
||||||
ies->calling_tns = -1;
|
my_ies->calling_tns = -1;
|
||||||
ies->calling_pres = -1;
|
my_ies->calling_pres = -1;
|
||||||
ies->samprate = IAX_RATE_8KHZ;
|
my_ies->samprate = IAX_RATE_8KHZ;
|
||||||
while(datalen >= 2) {
|
while(datalen >= 2) {
|
||||||
ie = data[0];
|
ie = data[0];
|
||||||
len = data[1];
|
len = data[1];
|
||||||
|
@ -514,127 +514,127 @@ int iax_parse_ies(struct iax_ies *ies, unsigned char *data, int datalen)
|
||||||
}
|
}
|
||||||
switch(ie) {
|
switch(ie) {
|
||||||
case IAX_IE_CALLED_NUMBER:
|
case IAX_IE_CALLED_NUMBER:
|
||||||
ies->called_number = (char *) data + 2;
|
my_ies->called_number = (char *) data + 2;
|
||||||
break;
|
break;
|
||||||
case IAX_IE_CALLING_NUMBER:
|
case IAX_IE_CALLING_NUMBER:
|
||||||
ies->calling_number = (char *) data + 2;
|
my_ies->calling_number = (char *) data + 2;
|
||||||
break;
|
break;
|
||||||
case IAX_IE_CALLING_ANI:
|
case IAX_IE_CALLING_ANI:
|
||||||
ies->calling_ani = (char *) data + 2;
|
my_ies->calling_ani = (char *) data + 2;
|
||||||
break;
|
break;
|
||||||
case IAX_IE_CALLING_NAME:
|
case IAX_IE_CALLING_NAME:
|
||||||
ies->calling_name = (char *) data + 2;
|
my_ies->calling_name = (char *) data + 2;
|
||||||
break;
|
break;
|
||||||
case IAX_IE_CALLED_CONTEXT:
|
case IAX_IE_CALLED_CONTEXT:
|
||||||
ies->called_context = (char *) data + 2;
|
my_ies->called_context = (char *) data + 2;
|
||||||
break;
|
break;
|
||||||
case IAX_IE_USERNAME:
|
case IAX_IE_USERNAME:
|
||||||
ies->username = (char *) data + 2;
|
my_ies->username = (char *) data + 2;
|
||||||
break;
|
break;
|
||||||
case IAX_IE_PASSWORD:
|
case IAX_IE_PASSWORD:
|
||||||
ies->password = (char *) data + 2;
|
my_ies->password = (char *) data + 2;
|
||||||
break;
|
break;
|
||||||
case IAX_IE_CAPABILITY:
|
case IAX_IE_CAPABILITY:
|
||||||
if (len != (int)sizeof(unsigned int)) {
|
if (len != (int)sizeof(unsigned int)) {
|
||||||
snprintf(tmp, (int)sizeof(tmp), "Expecting capability to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len);
|
snprintf(tmp, (int)sizeof(tmp), "Expecting capability to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len);
|
||||||
errorf(tmp);
|
errorf(tmp);
|
||||||
} else
|
} else
|
||||||
ies->capability = ntohl(get_uint32(data + 2));
|
my_ies->capability = ntohl(get_uint32(data + 2));
|
||||||
break;
|
break;
|
||||||
case IAX_IE_FORMAT:
|
case IAX_IE_FORMAT:
|
||||||
if (len != (int)sizeof(unsigned int)) {
|
if (len != (int)sizeof(unsigned int)) {
|
||||||
snprintf(tmp, (int)sizeof(tmp), "Expecting format to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len);
|
snprintf(tmp, (int)sizeof(tmp), "Expecting format to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len);
|
||||||
errorf(tmp);
|
errorf(tmp);
|
||||||
} else
|
} else
|
||||||
ies->format = ntohl(get_uint32(data + 2));
|
my_ies->format = ntohl(get_uint32(data + 2));
|
||||||
break;
|
break;
|
||||||
case IAX_IE_LANGUAGE:
|
case IAX_IE_LANGUAGE:
|
||||||
ies->language = (char *) data + 2;
|
my_ies->language = (char *) data + 2;
|
||||||
break;
|
break;
|
||||||
case IAX_IE_CODEC_PREFS:
|
case IAX_IE_CODEC_PREFS:
|
||||||
ies->codec_prefs = (char *) data + 2;
|
my_ies->codec_prefs = (char *) data + 2;
|
||||||
break;
|
break;
|
||||||
case IAX_IE_VERSION:
|
case IAX_IE_VERSION:
|
||||||
if (len != (int)sizeof(unsigned short)) {
|
if (len != (int)sizeof(unsigned short)) {
|
||||||
snprintf(tmp, (int)sizeof(tmp), "Expecting version to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len);
|
snprintf(tmp, (int)sizeof(tmp), "Expecting version to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len);
|
||||||
errorf(tmp);
|
errorf(tmp);
|
||||||
} else
|
} else
|
||||||
ies->version = ntohs(get_uint16(data + 2));
|
my_ies->version = ntohs(get_uint16(data + 2));
|
||||||
break;
|
break;
|
||||||
case IAX_IE_ADSICPE:
|
case IAX_IE_ADSICPE:
|
||||||
if (len != (int)sizeof(unsigned short)) {
|
if (len != (int)sizeof(unsigned short)) {
|
||||||
snprintf(tmp, (int)sizeof(tmp), "Expecting adsicpe to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len);
|
snprintf(tmp, (int)sizeof(tmp), "Expecting adsicpe to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len);
|
||||||
errorf(tmp);
|
errorf(tmp);
|
||||||
} else
|
} else
|
||||||
ies->adsicpe = ntohs(get_uint16(data + 2));
|
my_ies->adsicpe = ntohs(get_uint16(data + 2));
|
||||||
break;
|
break;
|
||||||
case IAX_IE_SAMPLINGRATE:
|
case IAX_IE_SAMPLINGRATE:
|
||||||
if (len != (int)sizeof(unsigned short)) {
|
if (len != (int)sizeof(unsigned short)) {
|
||||||
snprintf(tmp, (int)sizeof(tmp), "Expecting samplingrate to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len);
|
snprintf(tmp, (int)sizeof(tmp), "Expecting samplingrate to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len);
|
||||||
errorf(tmp);
|
errorf(tmp);
|
||||||
} else
|
} else
|
||||||
ies->samprate = ntohs(get_uint16(data + 2));
|
my_ies->samprate = ntohs(get_uint16(data + 2));
|
||||||
break;
|
break;
|
||||||
case IAX_IE_DNID:
|
case IAX_IE_DNID:
|
||||||
ies->dnid = (char *) data + 2;
|
my_ies->dnid = (char *) data + 2;
|
||||||
break;
|
break;
|
||||||
case IAX_IE_RDNIS:
|
case IAX_IE_RDNIS:
|
||||||
ies->rdnis = (char *) data + 2;
|
my_ies->rdnis = (char *) data + 2;
|
||||||
break;
|
break;
|
||||||
case IAX_IE_AUTHMETHODS:
|
case IAX_IE_AUTHMETHODS:
|
||||||
if (len != (int)sizeof(unsigned short)) {
|
if (len != (int)sizeof(unsigned short)) {
|
||||||
snprintf(tmp, (int)sizeof(tmp), "Expecting authmethods to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len);
|
snprintf(tmp, (int)sizeof(tmp), "Expecting authmethods to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len);
|
||||||
errorf(tmp);
|
errorf(tmp);
|
||||||
} else
|
} else
|
||||||
ies->authmethods = ntohs(get_uint16(data + 2));
|
my_ies->authmethods = ntohs(get_uint16(data + 2));
|
||||||
break;
|
break;
|
||||||
case IAX_IE_CHALLENGE:
|
case IAX_IE_CHALLENGE:
|
||||||
ies->challenge = (char *) data + 2;
|
my_ies->challenge = (char *) data + 2;
|
||||||
break;
|
break;
|
||||||
case IAX_IE_MD5_RESULT:
|
case IAX_IE_MD5_RESULT:
|
||||||
ies->md5_result = (char *) data + 2;
|
my_ies->md5_result = (char *) data + 2;
|
||||||
break;
|
break;
|
||||||
case IAX_IE_RSA_RESULT:
|
case IAX_IE_RSA_RESULT:
|
||||||
ies->rsa_result = (char *) data + 2;
|
my_ies->rsa_result = (char *) data + 2;
|
||||||
break;
|
break;
|
||||||
case IAX_IE_APPARENT_ADDR:
|
case IAX_IE_APPARENT_ADDR:
|
||||||
ies->apparent_addr = ((struct sockaddr_in *)(data + 2));
|
my_ies->apparent_addr = ((struct sockaddr_in *)(data + 2));
|
||||||
break;
|
break;
|
||||||
case IAX_IE_REFRESH:
|
case IAX_IE_REFRESH:
|
||||||
if (len != (int)sizeof(unsigned short)) {
|
if (len != (int)sizeof(unsigned short)) {
|
||||||
snprintf(tmp, (int)sizeof(tmp), "Expecting refresh to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len);
|
snprintf(tmp, (int)sizeof(tmp), "Expecting refresh to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len);
|
||||||
errorf(tmp);
|
errorf(tmp);
|
||||||
} else
|
} else
|
||||||
ies->refresh = ntohs(get_uint16(data + 2));
|
my_ies->refresh = ntohs(get_uint16(data + 2));
|
||||||
break;
|
break;
|
||||||
case IAX_IE_DPSTATUS:
|
case IAX_IE_DPSTATUS:
|
||||||
if (len != (int)sizeof(unsigned short)) {
|
if (len != (int)sizeof(unsigned short)) {
|
||||||
snprintf(tmp, (int)sizeof(tmp), "Expecting dpstatus to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len);
|
snprintf(tmp, (int)sizeof(tmp), "Expecting dpstatus to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len);
|
||||||
errorf(tmp);
|
errorf(tmp);
|
||||||
} else
|
} else
|
||||||
ies->dpstatus = ntohs(get_uint16(data + 2));
|
my_ies->dpstatus = ntohs(get_uint16(data + 2));
|
||||||
break;
|
break;
|
||||||
case IAX_IE_CALLNO:
|
case IAX_IE_CALLNO:
|
||||||
if (len != (int)sizeof(unsigned short)) {
|
if (len != (int)sizeof(unsigned short)) {
|
||||||
snprintf(tmp, (int)sizeof(tmp), "Expecting callno to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len);
|
snprintf(tmp, (int)sizeof(tmp), "Expecting callno to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len);
|
||||||
errorf(tmp);
|
errorf(tmp);
|
||||||
} else
|
} else
|
||||||
ies->callno = ntohs(get_uint16(data + 2));
|
my_ies->callno = ntohs(get_uint16(data + 2));
|
||||||
break;
|
break;
|
||||||
case IAX_IE_CAUSE:
|
case IAX_IE_CAUSE:
|
||||||
ies->cause = (char *) data + 2;
|
my_ies->cause = (char *) data + 2;
|
||||||
break;
|
break;
|
||||||
case IAX_IE_CAUSECODE:
|
case IAX_IE_CAUSECODE:
|
||||||
if (len != 1) {
|
if (len != 1) {
|
||||||
snprintf(tmp, (int)sizeof(tmp), "Expecting causecode to be single byte but was %d\n", len);
|
snprintf(tmp, (int)sizeof(tmp), "Expecting causecode to be single byte but was %d\n", len);
|
||||||
errorf(tmp);
|
errorf(tmp);
|
||||||
} else {
|
} else {
|
||||||
ies->causecode = data[2];
|
my_ies->causecode = data[2];
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case IAX_IE_IAX_UNKNOWN:
|
case IAX_IE_IAX_UNKNOWN:
|
||||||
if (len == 1)
|
if (len == 1)
|
||||||
ies->iax_unknown = data[2];
|
my_ies->iax_unknown = data[2];
|
||||||
else {
|
else {
|
||||||
snprintf(tmp, (int)sizeof(tmp), "Expected single byte Unknown command, but was %d long\n", len);
|
snprintf(tmp, (int)sizeof(tmp), "Expected single byte Unknown command, but was %d long\n", len);
|
||||||
errorf(tmp);
|
errorf(tmp);
|
||||||
|
@ -645,64 +645,64 @@ int iax_parse_ies(struct iax_ies *ies, unsigned char *data, int datalen)
|
||||||
snprintf(tmp, (int)sizeof(tmp), "Expecting msgcount to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len);
|
snprintf(tmp, (int)sizeof(tmp), "Expecting msgcount to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len);
|
||||||
errorf(tmp);
|
errorf(tmp);
|
||||||
} else
|
} else
|
||||||
ies->msgcount = ntohs(get_uint16(data + 2));
|
my_ies->msgcount = ntohs(get_uint16(data + 2));
|
||||||
break;
|
break;
|
||||||
case IAX_IE_AUTOANSWER:
|
case IAX_IE_AUTOANSWER:
|
||||||
ies->autoanswer = 1;
|
my_ies->autoanswer = 1;
|
||||||
break;
|
break;
|
||||||
case IAX_IE_MUSICONHOLD:
|
case IAX_IE_MUSICONHOLD:
|
||||||
ies->musiconhold = 1;
|
my_ies->musiconhold = 1;
|
||||||
break;
|
break;
|
||||||
case IAX_IE_TRANSFERID:
|
case IAX_IE_TRANSFERID:
|
||||||
if (len != (int)sizeof(unsigned int)) {
|
if (len != (int)sizeof(unsigned int)) {
|
||||||
snprintf(tmp, (int)sizeof(tmp), "Expecting transferid to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len);
|
snprintf(tmp, (int)sizeof(tmp), "Expecting transferid to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len);
|
||||||
errorf(tmp);
|
errorf(tmp);
|
||||||
} else
|
} else
|
||||||
ies->transferid = ntohl(get_uint32(data + 2));
|
my_ies->transferid = ntohl(get_uint32(data + 2));
|
||||||
break;
|
break;
|
||||||
case IAX_IE_DATETIME:
|
case IAX_IE_DATETIME:
|
||||||
if (len != (int)sizeof(unsigned int)) {
|
if (len != (int)sizeof(unsigned int)) {
|
||||||
snprintf(tmp, (int)sizeof(tmp), "Expecting date/time to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len);
|
snprintf(tmp, (int)sizeof(tmp), "Expecting date/time to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len);
|
||||||
errorf(tmp);
|
errorf(tmp);
|
||||||
} else
|
} else
|
||||||
ies->datetime = ntohl(get_uint32(data + 2));
|
my_ies->datetime = ntohl(get_uint32(data + 2));
|
||||||
break;
|
break;
|
||||||
case IAX_IE_FIRMWAREVER:
|
case IAX_IE_FIRMWAREVER:
|
||||||
if (len != (int)sizeof(unsigned short)) {
|
if (len != (int)sizeof(unsigned short)) {
|
||||||
snprintf(tmp, (int)sizeof(tmp), "Expecting firmwarever to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len);
|
snprintf(tmp, (int)sizeof(tmp), "Expecting firmwarever to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len);
|
||||||
errorf(tmp);
|
errorf(tmp);
|
||||||
} else
|
} else
|
||||||
ies->firmwarever = ntohs(get_uint16(data + 2));
|
my_ies->firmwarever = ntohs(get_uint16(data + 2));
|
||||||
break;
|
break;
|
||||||
case IAX_IE_DEVICETYPE:
|
case IAX_IE_DEVICETYPE:
|
||||||
ies->devicetype = (char *) data + 2;
|
my_ies->devicetype = (char *) data + 2;
|
||||||
break;
|
break;
|
||||||
case IAX_IE_SERVICEIDENT:
|
case IAX_IE_SERVICEIDENT:
|
||||||
ies->serviceident = (char *) data + 2;
|
my_ies->serviceident = (char *) data + 2;
|
||||||
break;
|
break;
|
||||||
case IAX_IE_FWBLOCKDESC:
|
case IAX_IE_FWBLOCKDESC:
|
||||||
if (len != (int)sizeof(unsigned int)) {
|
if (len != (int)sizeof(unsigned int)) {
|
||||||
snprintf(tmp, (int)sizeof(tmp), "Expected block desc to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len);
|
snprintf(tmp, (int)sizeof(tmp), "Expected block desc to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len);
|
||||||
errorf(tmp);
|
errorf(tmp);
|
||||||
} else
|
} else
|
||||||
ies->fwdesc = ntohl(get_uint32(data + 2));
|
my_ies->fwdesc = ntohl(get_uint32(data + 2));
|
||||||
break;
|
break;
|
||||||
case IAX_IE_FWBLOCKDATA:
|
case IAX_IE_FWBLOCKDATA:
|
||||||
ies->fwdata = data + 2;
|
my_ies->fwdata = data + 2;
|
||||||
ies->fwdatalen = len;
|
my_ies->fwdatalen = (unsigned char)len;
|
||||||
break;
|
break;
|
||||||
case IAX_IE_PROVVER:
|
case IAX_IE_PROVVER:
|
||||||
if (len != (int)sizeof(unsigned int)) {
|
if (len != (int)sizeof(unsigned int)) {
|
||||||
snprintf(tmp, (int)sizeof(tmp), "Expected provisioning version to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len);
|
snprintf(tmp, (int)sizeof(tmp), "Expected provisioning version to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len);
|
||||||
errorf(tmp);
|
errorf(tmp);
|
||||||
} else {
|
} else {
|
||||||
ies->provverpres = 1;
|
my_ies->provverpres = 1;
|
||||||
ies->provver = ntohl(get_uint32(data + 2));
|
my_ies->provver = ntohl(get_uint32(data + 2));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case IAX_IE_CALLINGPRES:
|
case IAX_IE_CALLINGPRES:
|
||||||
if (len == 1)
|
if (len == 1)
|
||||||
ies->calling_pres = data[2];
|
my_ies->calling_pres = data[2];
|
||||||
else {
|
else {
|
||||||
snprintf(tmp, (int)sizeof(tmp), "Expected single byte callingpres, but was %d long\n", len);
|
snprintf(tmp, (int)sizeof(tmp), "Expected single byte callingpres, but was %d long\n", len);
|
||||||
errorf(tmp);
|
errorf(tmp);
|
||||||
|
@ -710,7 +710,7 @@ int iax_parse_ies(struct iax_ies *ies, unsigned char *data, int datalen)
|
||||||
break;
|
break;
|
||||||
case IAX_IE_CALLINGTON:
|
case IAX_IE_CALLINGTON:
|
||||||
if (len == 1)
|
if (len == 1)
|
||||||
ies->calling_ton = data[2];
|
my_ies->calling_ton = data[2];
|
||||||
else {
|
else {
|
||||||
snprintf(tmp, (int)sizeof(tmp), "Expected single byte callington, but was %d long\n", len);
|
snprintf(tmp, (int)sizeof(tmp), "Expected single byte callington, but was %d long\n", len);
|
||||||
errorf(tmp);
|
errorf(tmp);
|
||||||
|
@ -721,14 +721,14 @@ int iax_parse_ies(struct iax_ies *ies, unsigned char *data, int datalen)
|
||||||
snprintf(tmp, (int)sizeof(tmp), "Expecting callingtns to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len);
|
snprintf(tmp, (int)sizeof(tmp), "Expecting callingtns to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len);
|
||||||
errorf(tmp);
|
errorf(tmp);
|
||||||
} else
|
} else
|
||||||
ies->calling_tns = ntohs(get_uint16(data + 2));
|
my_ies->calling_tns = ntohs(get_uint16(data + 2));
|
||||||
break;
|
break;
|
||||||
case IAX_IE_RR_JITTER:
|
case IAX_IE_RR_JITTER:
|
||||||
if (len != (int)sizeof(unsigned int)) {
|
if (len != (int)sizeof(unsigned int)) {
|
||||||
snprintf(tmp, (int)sizeof(tmp), "Expected jitter rr to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len);
|
snprintf(tmp, (int)sizeof(tmp), "Expected jitter rr to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len);
|
||||||
errorf(tmp);
|
errorf(tmp);
|
||||||
} else {
|
} else {
|
||||||
ies->rr_jitter = ntohl(get_uint32(data + 2));
|
my_ies->rr_jitter = ntohl(get_uint32(data + 2));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case IAX_IE_RR_LOSS:
|
case IAX_IE_RR_LOSS:
|
||||||
|
@ -736,7 +736,7 @@ int iax_parse_ies(struct iax_ies *ies, unsigned char *data, int datalen)
|
||||||
snprintf(tmp, (int)sizeof(tmp), "Expected loss rr to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len);
|
snprintf(tmp, (int)sizeof(tmp), "Expected loss rr to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len);
|
||||||
errorf(tmp);
|
errorf(tmp);
|
||||||
} else {
|
} else {
|
||||||
ies->rr_loss = ntohl(get_uint32(data + 2));
|
my_ies->rr_loss = ntohl(get_uint32(data + 2));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case IAX_IE_RR_PKTS:
|
case IAX_IE_RR_PKTS:
|
||||||
|
@ -744,7 +744,7 @@ int iax_parse_ies(struct iax_ies *ies, unsigned char *data, int datalen)
|
||||||
snprintf(tmp, (int)sizeof(tmp), "Expected packets rr to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len);
|
snprintf(tmp, (int)sizeof(tmp), "Expected packets rr to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len);
|
||||||
errorf(tmp);
|
errorf(tmp);
|
||||||
} else {
|
} else {
|
||||||
ies->rr_pkts = ntohl(get_uint32(data + 2));
|
my_ies->rr_pkts = ntohl(get_uint32(data + 2));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case IAX_IE_RR_DELAY:
|
case IAX_IE_RR_DELAY:
|
||||||
|
@ -752,7 +752,7 @@ int iax_parse_ies(struct iax_ies *ies, unsigned char *data, int datalen)
|
||||||
snprintf(tmp, (int)sizeof(tmp), "Expected loss rr to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len);
|
snprintf(tmp, (int)sizeof(tmp), "Expected loss rr to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len);
|
||||||
errorf(tmp);
|
errorf(tmp);
|
||||||
} else {
|
} else {
|
||||||
ies->rr_delay = ntohs(get_uint16(data + 2));
|
my_ies->rr_delay = ntohs(get_uint16(data + 2));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case IAX_IE_RR_DROPPED:
|
case IAX_IE_RR_DROPPED:
|
||||||
|
@ -760,7 +760,7 @@ int iax_parse_ies(struct iax_ies *ies, unsigned char *data, int datalen)
|
||||||
snprintf(tmp, (int)sizeof(tmp), "Expected packets rr to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len);
|
snprintf(tmp, (int)sizeof(tmp), "Expected packets rr to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len);
|
||||||
errorf(tmp);
|
errorf(tmp);
|
||||||
} else {
|
} else {
|
||||||
ies->rr_dropped = ntohl(get_uint32(data + 2));
|
my_ies->rr_dropped = ntohl(get_uint32(data + 2));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case IAX_IE_RR_OOO:
|
case IAX_IE_RR_OOO:
|
||||||
|
@ -768,7 +768,7 @@ int iax_parse_ies(struct iax_ies *ies, unsigned char *data, int datalen)
|
||||||
snprintf(tmp, (int)sizeof(tmp), "Expected packets rr to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len);
|
snprintf(tmp, (int)sizeof(tmp), "Expected packets rr to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len);
|
||||||
errorf(tmp);
|
errorf(tmp);
|
||||||
} else {
|
} else {
|
||||||
ies->rr_ooo = ntohl(get_uint32(data + 2));
|
my_ies->rr_ooo = ntohl(get_uint32(data + 2));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -810,7 +810,7 @@ struct iax_frame *iax_frame_new(int direction, int datalen)
|
||||||
if (fr) {
|
if (fr) {
|
||||||
fr->direction = direction;
|
fr->direction = direction;
|
||||||
fr->retrans = -1;
|
fr->retrans = -1;
|
||||||
frames++;
|
frame_count++;
|
||||||
if (fr->direction == DIRECTION_INGRESS)
|
if (fr->direction == DIRECTION_INGRESS)
|
||||||
iframes++;
|
iframes++;
|
||||||
else
|
else
|
||||||
|
@ -832,9 +832,9 @@ void iax_frame_free(struct iax_frame *fr)
|
||||||
}
|
}
|
||||||
fr->direction = 0;
|
fr->direction = 0;
|
||||||
free(fr);
|
free(fr);
|
||||||
frames--;
|
frame_count--;
|
||||||
}
|
}
|
||||||
|
|
||||||
int iax_get_frames(void) { return frames; }
|
int iax_get_frames(void) { return frame_count; }
|
||||||
int iax_get_iframes(void) { return iframes; }
|
int iax_get_iframes(void) { return iframes; }
|
||||||
int iax_get_oframes(void) { return oframes; }
|
int iax_get_oframes(void) { return oframes; }
|
||||||
|
|
|
@ -84,23 +84,20 @@ void jb_reset(jitterbuf *jb)
|
||||||
|
|
||||||
jitterbuf * jb_new()
|
jitterbuf * jb_new()
|
||||||
{
|
{
|
||||||
jitterbuf *jb;
|
jitterbuf *jb = (jitterbuf *)malloc(sizeof(*jb));
|
||||||
|
|
||||||
if (!(jb = (jitterbuf *)malloc(sizeof(*jb))))
|
if (!jb) return NULL;
|
||||||
return NULL;
|
|
||||||
|
|
||||||
jb->info.conf.target_extra = JB_TARGET_EXTRA;
|
jb->info.conf.target_extra = JB_TARGET_EXTRA;
|
||||||
|
|
||||||
jb_reset(jb);
|
jb_reset(jb);
|
||||||
|
|
||||||
jb_dbg2("jb_new() = %x\n", jb);
|
|
||||||
return jb;
|
return jb;
|
||||||
}
|
}
|
||||||
|
|
||||||
void jb_destroy(jitterbuf *jb)
|
void jb_destroy(jitterbuf *jb)
|
||||||
{
|
{
|
||||||
jb_frame *frame;
|
jb_frame *frame;
|
||||||
jb_dbg2("jb_destroy(%x)\n", jb);
|
|
||||||
|
|
||||||
/* free all the frames on the "free list" */
|
/* free all the frames on the "free list" */
|
||||||
frame = jb->free;
|
frame = jb->free;
|
||||||
|
@ -127,7 +124,7 @@ static int longcmp(const void *a, const void *b)
|
||||||
/* maybe later we can make the history buckets variable size, or something? */
|
/* maybe later we can make the history buckets variable size, or something? */
|
||||||
/* drop parameter determines whether we will drop outliers to minimize
|
/* drop parameter determines whether we will drop outliers to minimize
|
||||||
* delay */
|
* delay */
|
||||||
static int history_put(jitterbuf *jb, time_in_ms_t ts, time_in_ms_t now, long ms)
|
static int history_put(jitterbuf *jb, time_in_ms_t ts, time_in_ms_t now)
|
||||||
{
|
{
|
||||||
time_in_ms_t delay = now - (ts - jb->info.resync_offset);
|
time_in_ms_t delay = now - (ts - jb->info.resync_offset);
|
||||||
time_in_ms_t threshold = 2 * jb->info.jitter + jb->info.conf.resync_threshold;
|
time_in_ms_t threshold = 2 * jb->info.jitter + jb->info.conf.resync_threshold;
|
||||||
|
@ -326,17 +323,20 @@ static void history_get(jitterbuf *jb)
|
||||||
/* returns 1 if frame was inserted into head of queue, 0 otherwise */
|
/* returns 1 if frame was inserted into head of queue, 0 otherwise */
|
||||||
static int queue_put(jitterbuf *jb, void *data, const enum jb_frame_type type, long ms, time_in_ms_t ts)
|
static int queue_put(jitterbuf *jb, void *data, const enum jb_frame_type type, long ms, time_in_ms_t ts)
|
||||||
{
|
{
|
||||||
jb_frame *frame;
|
jb_frame *frame = jb->free;
|
||||||
jb_frame *p;
|
jb_frame *p;
|
||||||
int head = 0;
|
int head = 0;
|
||||||
time_in_ms_t resync_ts = ts - jb->info.resync_offset;
|
time_in_ms_t resync_ts = ts - jb->info.resync_offset;
|
||||||
|
|
||||||
if ((frame = jb->free)) {
|
if (frame) {
|
||||||
jb->free = frame->next;
|
jb->free = frame->next;
|
||||||
} else if (!(frame = (jb_frame *)malloc(sizeof(*frame)))) {
|
} else {
|
||||||
|
frame = (jb_frame *)malloc(sizeof(*frame));
|
||||||
|
if (!frame) {
|
||||||
jb_err("cannot allocate frame\n");
|
jb_err("cannot allocate frame\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
jb->info.frames_cur++;
|
jb->info.frames_cur++;
|
||||||
|
|
||||||
|
@ -514,8 +514,6 @@ static void jb_dbgqueue(jitterbuf *jb)
|
||||||
|
|
||||||
enum jb_return_code jb_put(jitterbuf *jb, void *data, const enum jb_frame_type type, long ms, time_in_ms_t ts, time_in_ms_t now)
|
enum jb_return_code jb_put(jitterbuf *jb, void *data, const enum jb_frame_type type, long ms, time_in_ms_t ts, time_in_ms_t now)
|
||||||
{
|
{
|
||||||
jb_dbg2("jb_put(%x,%x,%ld,%ld,%ld)\n", jb, data, ms, ts, now);
|
|
||||||
|
|
||||||
jb->info.frames_in++;
|
jb->info.frames_in++;
|
||||||
|
|
||||||
if (type == JB_TYPE_VOICE) {
|
if (type == JB_TYPE_VOICE) {
|
||||||
|
@ -524,7 +522,7 @@ enum jb_return_code jb_put(jitterbuf *jb, void *data, const enum jb_frame_type t
|
||||||
* sending retransmitted control frames with their awkward
|
* sending retransmitted control frames with their awkward
|
||||||
* timestamps through
|
* timestamps through
|
||||||
*/
|
*/
|
||||||
if (history_put(jb,ts,now,ms))
|
if (history_put(jb,ts,now))
|
||||||
return JB_DROP;
|
return JB_DROP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,10 +40,10 @@
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories=""$(InputDir)..\..\..\..\libs\iax\src""
|
AdditionalIncludeDirectories="."
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS"
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;WIN32_TIME_GET_TIME;LIBIAX;NEWJB;_CRT_SECURE_NO_DEPRECATE;DEBUG_SUPPORT"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
DisableSpecificWarnings="4201"
|
DisableSpecificWarnings="4201;4200;4100;4127;6246;6053;6031;6262;4706"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCManagedResourceCompilerTool"
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
@ -105,9 +105,10 @@
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalIncludeDirectories=""$(InputDir)..\..\..\..\libs\iax\src""
|
AdditionalIncludeDirectories="."
|
||||||
|
PreprocessorDefinitions="WIN32;_WINDOWS;_USRDLL;MOD_EXPORTS;LIBIAX;WIN32_TIME_GET_TIME;DEBUG_SUPPORT;NEWJB;_CRT_SECURE_NO_DEPRECATE"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
DisableSpecificWarnings="4201"
|
DisableSpecificWarnings="4201;4200;4100;4127;6246;6053;6031;6262;4706"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCManagedResourceCompilerTool"
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
@ -150,6 +151,26 @@
|
||||||
<References>
|
<References>
|
||||||
</References>
|
</References>
|
||||||
<Files>
|
<Files>
|
||||||
|
<File
|
||||||
|
RelativePath=".\iax-mutex.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\iax.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\iax2-parser.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\jitterbuf.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\md5.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\mod_iax.c"
|
RelativePath=".\mod_iax.c"
|
||||||
>
|
>
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
ProjectGUID="{3A5B9131-F20C-4A85-9447-6C1610941CEE}"
|
ProjectGUID="{3A5B9131-F20C-4A85-9447-6C1610941CEE}"
|
||||||
RootNamespace="mod_iax"
|
RootNamespace="mod_iax"
|
||||||
Keyword="Win32Proj"
|
Keyword="Win32Proj"
|
||||||
|
TargetFrameworkVersion="131072"
|
||||||
>
|
>
|
||||||
<Platforms>
|
<Platforms>
|
||||||
<Platform
|
<Platform
|
||||||
|
@ -21,17 +22,64 @@
|
||||||
InheritedPropertySheets="..\..\..\..\w32\module_debug.vsprops"
|
InheritedPropertySheets="..\..\..\..\w32\module_debug.vsprops"
|
||||||
CharacterSet="2"
|
CharacterSet="2"
|
||||||
>
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories=""$(InputDir)..\..\..\..\libs\iax\src""
|
AdditionalIncludeDirectories="."
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS"
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;WIN32_TIME_GET_TIME;LIBIAX;NEWJB;_CRT_SECURE_NO_DEPRECATE;DEBUG_SUPPORT"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
DisableSpecificWarnings="4201"
|
DisableSpecificWarnings="4201;4200;4100;4127;6246;6053;6031;6262;4706"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCLinkerTool"
|
Name="VCLinkerTool"
|
||||||
AdditionalLibraryDirectories=""..\..\..\..\libs\iax\$(OutDir)""
|
AdditionalLibraryDirectories=""..\..\..\..\libs\iax\$(OutDir)""
|
||||||
|
RandomizedBaseAddress="1"
|
||||||
|
DataExecutionPrevention="0"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
</Configuration>
|
</Configuration>
|
||||||
<Configuration
|
<Configuration
|
||||||
|
@ -40,21 +88,89 @@
|
||||||
InheritedPropertySheets="..\..\..\..\w32\module_release.vsprops"
|
InheritedPropertySheets="..\..\..\..\w32\module_release.vsprops"
|
||||||
CharacterSet="2"
|
CharacterSet="2"
|
||||||
>
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalIncludeDirectories=""$(InputDir)..\..\..\..\libs\iax\src""
|
AdditionalIncludeDirectories="."
|
||||||
|
PreprocessorDefinitions="WIN32;_WINDOWS;_USRDLL;MOD_EXPORTS;LIBIAX;WIN32_TIME_GET_TIME;DEBUG_SUPPORT;NEWJB;_CRT_SECURE_NO_DEPRECATE"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
DisableSpecificWarnings="4201"
|
DisableSpecificWarnings="4201;4200;4100;4127;6246;6053;6031;6262;4706"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCLinkerTool"
|
Name="VCLinkerTool"
|
||||||
AdditionalLibraryDirectories=""..\..\..\..\libs\iax\$(OutDir)""
|
AdditionalLibraryDirectories=""..\..\..\..\libs\iax\$(OutDir)""
|
||||||
|
RandomizedBaseAddress="1"
|
||||||
|
DataExecutionPrevention="0"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
</Configuration>
|
</Configuration>
|
||||||
</Configurations>
|
</Configurations>
|
||||||
<References>
|
<References>
|
||||||
</References>
|
</References>
|
||||||
<Files>
|
<Files>
|
||||||
|
<File
|
||||||
|
RelativePath=".\iax-mutex.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\iax.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\iax2-parser.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\jitterbuf.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\md5.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\mod_iax.c"
|
RelativePath=".\mod_iax.c"
|
||||||
>
|
>
|
||||||
|
|
|
@ -1,761 +0,0 @@
|
||||||
/*
|
|
||||||
* Miniphone: A simple, command line telephone
|
|
||||||
*
|
|
||||||
* IAX Support for talking to Asterisk and other Gnophone clients
|
|
||||||
*
|
|
||||||
* Copyright (C) 1999, Linux Support Services, Inc.
|
|
||||||
*
|
|
||||||
* Mark Spencer <markster@linux-support.net>
|
|
||||||
*
|
|
||||||
* This program is free software, distributed under the terms of
|
|
||||||
* the GNU General Public License
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* #define PRINTCHUCK /* enable this to indicate chucked incomming packets */
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <io.h>
|
|
||||||
#include <conio.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <process.h>
|
|
||||||
#include <windows.h>
|
|
||||||
#include <winsock.h>
|
|
||||||
#include <mmsystem.h>
|
|
||||||
#include <malloc.h>
|
|
||||||
#include "gsm.h"
|
|
||||||
#include "iax-client.h"
|
|
||||||
#include "frame.h"
|
|
||||||
#include "miniphone.h"
|
|
||||||
|
|
||||||
|
|
||||||
struct peer {
|
|
||||||
int time;
|
|
||||||
gsm gsmin;
|
|
||||||
gsm gsmout;
|
|
||||||
|
|
||||||
struct iax_session *session;
|
|
||||||
struct peer *next;
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct peer *peers;
|
|
||||||
static int answered_call = 0;
|
|
||||||
|
|
||||||
/* stuff for wave audio device */
|
|
||||||
HWAVEOUT wout;
|
|
||||||
HWAVEIN win;
|
|
||||||
|
|
||||||
typedef struct whout {
|
|
||||||
WAVEHDR w;
|
|
||||||
short data[160];
|
|
||||||
struct whout *next;
|
|
||||||
} WHOUT;
|
|
||||||
|
|
||||||
WHOUT *outqueue = NULL;
|
|
||||||
|
|
||||||
/* parameters for audio in */
|
|
||||||
#define NWHIN 8 /* number of input buffer entries */
|
|
||||||
/* NOTE the OUT_INTERVAL parameter *SHOULD* be more around 18 to 20 or so, since the packets should
|
|
||||||
be spaced by 20 milliseconds. However, in practice, especially in Windoze-95, setting it that high
|
|
||||||
caused underruns. 10 is just ever so slightly agressive, and the receiver has to chuck a packet
|
|
||||||
every now and then. Thats about the way it should be to be happy. */
|
|
||||||
#define OUT_INTERVAL 10 /* number of ms to wait before sending more data to peer */
|
|
||||||
/* parameters for audio out */
|
|
||||||
#define OUT_DEPTH 12 /* number of outbut buffer entries */
|
|
||||||
#define OUT_PAUSE_THRESHOLD 2 /* number of active entries needed to start output (for smoothing) */
|
|
||||||
|
|
||||||
/* audio input buffer headers */
|
|
||||||
WAVEHDR whin[NWHIN];
|
|
||||||
/* audio input buffers */
|
|
||||||
char bufin[NWHIN][320];
|
|
||||||
|
|
||||||
/* initialize the sequence variables for the audio in stuff */
|
|
||||||
unsigned int whinserial = 1,nextwhin = 1;
|
|
||||||
|
|
||||||
static struct peer *find_peer(struct iax_session *);
|
|
||||||
static void parse_args(FILE *, unsigned char *);
|
|
||||||
void do_iax_event(FILE *);
|
|
||||||
void call(FILE *, char *);
|
|
||||||
void answer_call(void);
|
|
||||||
void reject_call(void);
|
|
||||||
static void handle_event(FILE *, struct iax_event *e, struct peer *p);
|
|
||||||
void parse_cmd(FILE *, int, char **);
|
|
||||||
void issue_prompt(FILE *);
|
|
||||||
void dump_array(FILE *, char **);
|
|
||||||
|
|
||||||
static char *help[] = {
|
|
||||||
"Welcome to the miniphone telephony client, the commands are as follows:\n",
|
|
||||||
"Help\t\t-\tDisplays this screen.",
|
|
||||||
"Call <Number>\t-\tDials the number supplied.",
|
|
||||||
"Answer\t\t-\tAnswers an Inbound call.",
|
|
||||||
"Reject\t\t-\tRejects an Inbound call.",
|
|
||||||
"Dump\t\t-\tDumps (disconnects) the current call.",
|
|
||||||
"Dtmf <Digit>\t-\tSends specified DTMF digit.",
|
|
||||||
"Status\t\t-\tLists the current sessions and their current status.",
|
|
||||||
"Quit\t\t-\tShuts down the client.",
|
|
||||||
"",
|
|
||||||
0
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct peer *most_recent_answer;
|
|
||||||
static struct iax_session *newcall = 0;
|
|
||||||
|
|
||||||
/* holder of the time, relative to startup in system ticks. See our
|
|
||||||
gettimeofday() implementation */
|
|
||||||
time_t startuptime;
|
|
||||||
|
|
||||||
/* routine called at exit to shutdown audio I/O and close nicely.
|
|
||||||
NOTE: If all this isnt done, the system doesnt not handle this
|
|
||||||
cleanly and has to be rebooted. What a pile of doo doo!! */
|
|
||||||
void killem(void)
|
|
||||||
{
|
|
||||||
waveInStop(win);
|
|
||||||
waveInReset(win);
|
|
||||||
waveInClose(win);
|
|
||||||
waveOutReset(wout);
|
|
||||||
waveOutClose(wout);
|
|
||||||
WSACleanup(); /* dont forget socket stuff too */
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Win-doze doenst have gettimeofday(). This sux. So, what we did is
|
|
||||||
provide some gettimeofday-like functionality that works for our purposes.
|
|
||||||
In the main(), we take a sample of the system tick counter (into startuptime).
|
|
||||||
This function returns the relative time since program startup, more or less,
|
|
||||||
which is certainly good enough for our purposes. */
|
|
||||||
void gettimeofday(struct timeval *tv, struct timezone *tz)
|
|
||||||
{
|
|
||||||
long l = startuptime + GetTickCount();
|
|
||||||
|
|
||||||
tv->tv_sec = l / 1000;
|
|
||||||
tv->tv_usec = (l % 1000) * 1000;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static struct peer *find_peer(struct iax_session *session)
|
|
||||||
{
|
|
||||||
struct peer *cur = peers;
|
|
||||||
while(cur) {
|
|
||||||
if (cur->session == session)
|
|
||||||
return cur;
|
|
||||||
cur = cur->next;
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
parse_args(FILE *f, unsigned char *cmd)
|
|
||||||
{
|
|
||||||
static char *argv[MAXARGS];
|
|
||||||
unsigned char *parse = cmd;
|
|
||||||
int argc = 0, t = 0;
|
|
||||||
|
|
||||||
// Don't mess with anything that doesn't exist...
|
|
||||||
if(!*parse)
|
|
||||||
return;
|
|
||||||
|
|
||||||
memset(argv, 0, sizeof(argv));
|
|
||||||
while(*parse) {
|
|
||||||
if(*parse < 33 || *parse > 128) {
|
|
||||||
*parse = 0, t++;
|
|
||||||
if(t > MAXARG) {
|
|
||||||
fprintf(f, "Warning: Argument exceeds maximum argument size, command ignored!\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else if(t || !argc) {
|
|
||||||
if(argc == MAXARGS) {
|
|
||||||
fprintf(f, "Warning: Command ignored, too many arguments\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
argv[argc++] = parse;
|
|
||||||
t = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
parse++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(argc)
|
|
||||||
parse_cmd(f, argc, argv);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* handle all network requests, and a pending scheduled event, if any */
|
|
||||||
void service_network(int netfd, FILE *f)
|
|
||||||
{
|
|
||||||
fd_set readfd;
|
|
||||||
struct timeval dumbtimer;
|
|
||||||
|
|
||||||
/* set up a timer that falls-through */
|
|
||||||
dumbtimer.tv_sec = 0;
|
|
||||||
dumbtimer.tv_usec = 0;
|
|
||||||
|
|
||||||
|
|
||||||
for(;;) /* suck everything outa network stuff */
|
|
||||||
{
|
|
||||||
FD_ZERO(&readfd);
|
|
||||||
FD_SET(netfd, &readfd);
|
|
||||||
if (select(netfd + 1, &readfd, 0, 0, &dumbtimer) > 0)
|
|
||||||
{
|
|
||||||
if (FD_ISSET(netfd,&readfd))
|
|
||||||
{
|
|
||||||
do_iax_event(f);
|
|
||||||
(void) iax_time_to_next_event();
|
|
||||||
} else break;
|
|
||||||
} else break;
|
|
||||||
}
|
|
||||||
do_iax_event(f); /* do pending event if any */
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
int port;
|
|
||||||
int netfd;
|
|
||||||
int c, i;
|
|
||||||
FILE *f;
|
|
||||||
char rcmd[RBUFSIZE];
|
|
||||||
gsm_frame fo;
|
|
||||||
WSADATA foop;
|
|
||||||
time_t t;
|
|
||||||
WAVEFORMATEX wf;
|
|
||||||
WHOUT *wh,*wh1,*wh2;
|
|
||||||
unsigned long lastouttick = 0;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* get time of day in milliseconds, offset by tick count (see our
|
|
||||||
gettimeofday() implementation) */
|
|
||||||
time(&t);
|
|
||||||
startuptime = ((t % 86400) * 1000) - GetTickCount();
|
|
||||||
|
|
||||||
f = stdout;
|
|
||||||
_dup2(fileno(stdout),fileno(stderr));
|
|
||||||
|
|
||||||
/* start up the windoze-socket layer stuff */
|
|
||||||
if (WSAStartup(0x0101,&foop)) {
|
|
||||||
fprintf(stderr,"Fatal error: Falied to startup windows sockets\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* setup the format for opening audio channels */
|
|
||||||
wf.wFormatTag = WAVE_FORMAT_PCM;
|
|
||||||
wf.nChannels = 1;
|
|
||||||
wf.nSamplesPerSec = 8000;
|
|
||||||
wf.nAvgBytesPerSec = 16000;
|
|
||||||
wf.nBlockAlign = 2;
|
|
||||||
wf.wBitsPerSample = 16;
|
|
||||||
wf.cbSize = 0;
|
|
||||||
/* open the audio out channel */
|
|
||||||
if (waveOutOpen(&wout,0,&wf,0,0,CALLBACK_NULL) != MMSYSERR_NOERROR)
|
|
||||||
{
|
|
||||||
fprintf(stderr,"Fatal Error: Failed to open wave output device\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
/* open the audio in channel */
|
|
||||||
if (waveInOpen(&win,0,&wf,0,0,CALLBACK_NULL) != MMSYSERR_NOERROR)
|
|
||||||
{
|
|
||||||
fprintf(stderr,"Fatal Error: Failed to open wave input device\n");
|
|
||||||
waveOutReset(wout);
|
|
||||||
waveOutClose(wout);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
/* activate the exit handler */
|
|
||||||
atexit(killem);
|
|
||||||
/* initialize the audio in buffer structures */
|
|
||||||
memset(&whin,0,sizeof(whin));
|
|
||||||
|
|
||||||
if ( (port = iax_init(0) < 0)) {
|
|
||||||
fprintf(stderr, "Fatal error: failed to initialize iax with port %d\n", port);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
iax_set_formats(AST_FORMAT_GSM);
|
|
||||||
netfd = iax_get_fd();
|
|
||||||
|
|
||||||
fprintf(f, "Text Based Telephony Client.\n\n");
|
|
||||||
issue_prompt(f);
|
|
||||||
|
|
||||||
/* main tight loop */
|
|
||||||
while(1) {
|
|
||||||
/* service the network stuff */
|
|
||||||
service_network(netfd,f);
|
|
||||||
if (outqueue) /* if stuff in audio output queue, free it up if its available */
|
|
||||||
{
|
|
||||||
/* go through audio output queue */
|
|
||||||
for(wh = outqueue,wh1 = wh2 = NULL,i = 0; wh != NULL; wh = wh->next)
|
|
||||||
{
|
|
||||||
service_network(netfd,f); /* service network here for better performance */
|
|
||||||
/* if last one was removed from queue, zot it here */
|
|
||||||
if (i && wh1)
|
|
||||||
{
|
|
||||||
free(wh1);
|
|
||||||
wh1 = wh2;
|
|
||||||
}
|
|
||||||
i = 0; /* reset "last one removed" flag */
|
|
||||||
if (wh->w.dwFlags & WHDR_DONE) /* if this one is done */
|
|
||||||
{
|
|
||||||
/* prepare audio header */
|
|
||||||
if ((c = waveOutUnprepareHeader(wout,&wh->w,sizeof(WAVEHDR))) != MMSYSERR_NOERROR)
|
|
||||||
{
|
|
||||||
fprintf(stderr,"Cannot unprepare audio out header, error %d\n",c);
|
|
||||||
exit(255);
|
|
||||||
}
|
|
||||||
if (wh1 != NULL) /* if there was a last one */
|
|
||||||
{
|
|
||||||
wh1->next = wh->next;
|
|
||||||
}
|
|
||||||
if (outqueue == wh) /* is first one, so set outqueue to next one */
|
|
||||||
{
|
|
||||||
outqueue = wh->next;
|
|
||||||
}
|
|
||||||
i = 1; /* set 'to free' flag */
|
|
||||||
}
|
|
||||||
wh2 = wh1; /* save old,old wh pointer */
|
|
||||||
wh1 = wh; /* save the old wh pointer */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* go through all audio in buffers, and prepare and queue ones that are currently idle */
|
|
||||||
for(i = 0; i < NWHIN; i++)
|
|
||||||
{
|
|
||||||
service_network(netfd,f); /* service network stuff here for better performance */
|
|
||||||
if (!(whin[i].dwFlags & WHDR_PREPARED)) /* if not prepared, do so */
|
|
||||||
{
|
|
||||||
/* setup this input buffer header */
|
|
||||||
memset(&whin[i],0,sizeof(WAVEHDR));
|
|
||||||
whin[i].lpData = bufin[i];
|
|
||||||
whin[i].dwBufferLength = 320;
|
|
||||||
whin[i].dwUser = whinserial++; /* set 'user data' to current serial number */
|
|
||||||
/* prepare the buffer */
|
|
||||||
if (waveInPrepareHeader(win,&whin[i],sizeof(WAVEHDR)))
|
|
||||||
{
|
|
||||||
fprintf(stderr,"Unable to prepare header for input\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
/* add it to device (queue) */
|
|
||||||
if (waveInAddBuffer(win,&whin[i],sizeof(WAVEHDR)))
|
|
||||||
{
|
|
||||||
fprintf(stderr,"Unable to prepare header for input\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
waveInStart(win); /* start it (if not already started) */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* if key pressed, do command stuff */
|
|
||||||
if(_kbhit())
|
|
||||||
{
|
|
||||||
if ( ( fgets(&*rcmd, 256, stdin))) {
|
|
||||||
rcmd[strlen(rcmd)-1] = 0;
|
|
||||||
parse_args(f, &*rcmd);
|
|
||||||
} else fprintf(f, "Fatal error: failed to read data!\n");
|
|
||||||
|
|
||||||
issue_prompt(f);
|
|
||||||
}
|
|
||||||
/* do audio input stuff for buffers that have received data from audio in device already. Must
|
|
||||||
do them in serial number order (the order in which they were originally queued). */
|
|
||||||
if(answered_call) /* send audio only if call answered */
|
|
||||||
{
|
|
||||||
for(;;) /* loop until all are found */
|
|
||||||
{
|
|
||||||
for(i = 0; i < NWHIN; i++) /* find an available one that's the one we are looking for */
|
|
||||||
{
|
|
||||||
service_network(netfd,f); /* service network here for better performance */
|
|
||||||
/* if not time to send any more, dont */
|
|
||||||
if (GetTickCount() < (lastouttick + OUT_INTERVAL))
|
|
||||||
{
|
|
||||||
i = NWHIN; /* set to value that WILL exit loop */
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if ((whin[i].dwUser == nextwhin) && (whin[i].dwFlags & WHDR_DONE)) { /* if audio is ready */
|
|
||||||
|
|
||||||
/* must have read exactly 320 bytes */
|
|
||||||
if (whin[i].dwBytesRecorded != whin[i].dwBufferLength)
|
|
||||||
{
|
|
||||||
fprintf(stderr,"Short audio read, got %d bytes, expected %d bytes\n", whin[i].dwBytesRecorded,
|
|
||||||
whin[i].dwBufferLength);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if(!most_recent_answer->gsmout)
|
|
||||||
most_recent_answer->gsmout = gsm_create();
|
|
||||||
|
|
||||||
service_network(netfd,f); /* service network here for better performance */
|
|
||||||
/* encode the audio from the buffer into GSM format */
|
|
||||||
gsm_encode(most_recent_answer->gsmout, (short *) ((char *) whin[i].lpData), fo);
|
|
||||||
if(iax_send_voice(most_recent_answer->session,
|
|
||||||
AST_FORMAT_GSM, (char *)fo, sizeof(gsm_frame)) == -1)
|
|
||||||
puts("Failed to send voice!");
|
|
||||||
lastouttick = GetTickCount(); /* save time of last output */
|
|
||||||
|
|
||||||
/* unprepare (free) the header */
|
|
||||||
waveInUnprepareHeader(win,&whin[i],sizeof(WAVEHDR));
|
|
||||||
/* initialize the buffer */
|
|
||||||
memset(&whin[i],0,sizeof(WAVEHDR));
|
|
||||||
/* bump the serial number to look for the next time */
|
|
||||||
nextwhin++;
|
|
||||||
/* exit the loop so that we can start at lowest buffer again */
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (i >= NWHIN) break; /* if all found, get out of loop */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
do_iax_event(FILE *f) {
|
|
||||||
int sessions = 0;
|
|
||||||
struct iax_event *e = 0;
|
|
||||||
struct peer *peer;
|
|
||||||
|
|
||||||
while ( (e = iax_get_event(0))) {
|
|
||||||
peer = find_peer(e->session);
|
|
||||||
if(peer) {
|
|
||||||
handle_event(f, e, peer);
|
|
||||||
} else {
|
|
||||||
if(e->etype != IAX_EVENT_CONNECT) {
|
|
||||||
fprintf(stderr, "Huh? This is an event for a non-existant session?\n");
|
|
||||||
}
|
|
||||||
sessions++;
|
|
||||||
|
|
||||||
if(sessions >= MAX_SESSIONS) {
|
|
||||||
fprintf(f, "Missed a call... too many sessions open.\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if(e->event.connect.callerid && e->event.connect.dnid)
|
|
||||||
fprintf(f, "Call from '%s' for '%s'", e->event.connect.callerid,
|
|
||||||
e->event.connect.dnid);
|
|
||||||
else if(e->event.connect.dnid) {
|
|
||||||
fprintf(f, "Call from '%s'", e->event.connect.dnid);
|
|
||||||
} else if(e->event.connect.callerid) {
|
|
||||||
fprintf(f, "Call from '%s'", e->event.connect.callerid);
|
|
||||||
} else printf("Call from");
|
|
||||||
fprintf(f, " (%s)\n", inet_ntoa(iax_get_peer_addr(e->session).sin_addr));
|
|
||||||
|
|
||||||
if(most_recent_answer) {
|
|
||||||
fprintf(f, "Incoming call ignored, there's already a call waiting for answer... \
|
|
||||||
please accept or reject first\n");
|
|
||||||
iax_reject(e->session, "Too many calls, we're busy!");
|
|
||||||
} else {
|
|
||||||
if ( !(peer = malloc(sizeof(struct peer)))) {
|
|
||||||
fprintf(f, "Warning: Unable to allocate memory!\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
peer->time = time(0);
|
|
||||||
peer->session = e->session;
|
|
||||||
peer->gsmin = 0;
|
|
||||||
peer->gsmout = 0;
|
|
||||||
|
|
||||||
peer->next = peers;
|
|
||||||
peers = peer;
|
|
||||||
|
|
||||||
iax_accept(peer->session);
|
|
||||||
iax_ring_announce(peer->session);
|
|
||||||
most_recent_answer = peer;
|
|
||||||
fprintf(f, "Incoming call!\n");
|
|
||||||
}
|
|
||||||
iax_event_free(e);
|
|
||||||
issue_prompt(f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
call(FILE *f, char *num)
|
|
||||||
{
|
|
||||||
struct peer *peer;
|
|
||||||
|
|
||||||
if(!newcall)
|
|
||||||
newcall = iax_session_new();
|
|
||||||
else {
|
|
||||||
fprintf(f, "Already attempting to call somewhere, please cancel first!\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( !(peer = malloc(sizeof(struct peer)))) {
|
|
||||||
fprintf(f, "Warning: Unable to allocate memory!\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
peer->time = time(0);
|
|
||||||
peer->session = newcall;
|
|
||||||
peer->gsmin = 0;
|
|
||||||
peer->gsmout = 0;
|
|
||||||
|
|
||||||
peer->next = peers;
|
|
||||||
peers = peer;
|
|
||||||
|
|
||||||
most_recent_answer = peer;
|
|
||||||
|
|
||||||
iax_call(peer->session, num, 10);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
answer_call(void)
|
|
||||||
{
|
|
||||||
if(most_recent_answer)
|
|
||||||
iax_answer(most_recent_answer->session);
|
|
||||||
printf("Answering call!\n");
|
|
||||||
answered_call = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
dump_call(void)
|
|
||||||
{
|
|
||||||
if(most_recent_answer)
|
|
||||||
{
|
|
||||||
iax_hangup(most_recent_answer->session,"");
|
|
||||||
free(most_recent_answer);
|
|
||||||
}
|
|
||||||
printf("Dumping call!\n");
|
|
||||||
answered_call = 0;
|
|
||||||
most_recent_answer = 0;
|
|
||||||
answered_call = 0;
|
|
||||||
peers = 0;
|
|
||||||
newcall = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
reject_call(void)
|
|
||||||
{
|
|
||||||
iax_reject(most_recent_answer->session, "Call rejected manually.");
|
|
||||||
most_recent_answer = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
handle_event(FILE *f, struct iax_event *e, struct peer *p)
|
|
||||||
{
|
|
||||||
int len,n;
|
|
||||||
WHOUT *wh,*wh1;
|
|
||||||
short fr[160];
|
|
||||||
static paused_xmit = 0;
|
|
||||||
|
|
||||||
|
|
||||||
switch(e->etype) {
|
|
||||||
case IAX_EVENT_HANGUP:
|
|
||||||
iax_hangup(most_recent_answer->session, "Byeee!");
|
|
||||||
fprintf(f, "Call disconnected by peer\n");
|
|
||||||
free(most_recent_answer);
|
|
||||||
most_recent_answer = 0;
|
|
||||||
answered_call = 0;
|
|
||||||
peers = 0;
|
|
||||||
newcall = 0;
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IAX_EVENT_REJECT:
|
|
||||||
fprintf(f, "Authentication was rejected\n");
|
|
||||||
break;
|
|
||||||
case IAX_EVENT_ACCEPT:
|
|
||||||
fprintf(f, "Waiting for answer... RING RING\n");
|
|
||||||
issue_prompt(f);
|
|
||||||
break;
|
|
||||||
case IAX_EVENT_ANSWER:
|
|
||||||
answer_call();
|
|
||||||
break;
|
|
||||||
case IAX_EVENT_VOICE:
|
|
||||||
switch(e->event.voice.format) {
|
|
||||||
case AST_FORMAT_GSM:
|
|
||||||
if(e->event.voice.datalen % 33) {
|
|
||||||
fprintf(stderr, "Weird gsm frame, not a multiple of 33.\n");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!p->gsmin)
|
|
||||||
p->gsmin = gsm_create();
|
|
||||||
|
|
||||||
len = 0;
|
|
||||||
while(len < e->event.voice.datalen) {
|
|
||||||
if(gsm_decode(p->gsmin, (char *) e->event.voice.data + len, fr)) {
|
|
||||||
fprintf(stderr, "Bad GSM data\n");
|
|
||||||
break;
|
|
||||||
} else { /* its an audio packet to be output to user */
|
|
||||||
|
|
||||||
/* get count of pending items in audio output queue */
|
|
||||||
n = 0;
|
|
||||||
if (outqueue)
|
|
||||||
{ /* determine number of pending out queue items */
|
|
||||||
for(wh = outqueue; wh != NULL; wh = wh->next)
|
|
||||||
{
|
|
||||||
if (!(wh->w.dwFlags & WHDR_DONE)) n++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* if not too many, send to user, otherwise chuck packet */
|
|
||||||
if (n <= OUT_DEPTH) /* if not to chuck packet */
|
|
||||||
{
|
|
||||||
/* malloc the memory for the queue item */
|
|
||||||
wh = (WHOUT *) malloc(sizeof(WHOUT));
|
|
||||||
if (wh == (WHOUT *) NULL) /* if error, bail */
|
|
||||||
{
|
|
||||||
fprintf(stderr,"Outa memory!!!!\n");
|
|
||||||
exit(255);
|
|
||||||
}
|
|
||||||
/* initialize the queue entry */
|
|
||||||
memset(wh,0,sizeof(WHOUT));
|
|
||||||
/* copy the PCM data from the gsm conversion buffer */
|
|
||||||
memcpy((char *)wh->data,(char *)fr,sizeof(fr));
|
|
||||||
/* set parameters for data */
|
|
||||||
wh->w.lpData = (char *) wh->data;
|
|
||||||
wh->w.dwBufferLength = 320;
|
|
||||||
|
|
||||||
/* prepare buffer for output */
|
|
||||||
if (waveOutPrepareHeader(wout,&wh->w,sizeof(WAVEHDR)))
|
|
||||||
{
|
|
||||||
fprintf(stderr,"Cannot prepare header for audio out\n");
|
|
||||||
exit(255);
|
|
||||||
}
|
|
||||||
/* if not currently transmitting, hold off a couple of packets for
|
|
||||||
smooth sounding output */
|
|
||||||
if ((!n) && (!paused_xmit))
|
|
||||||
{
|
|
||||||
/* pause output (before starting) */
|
|
||||||
waveOutPause(wout);
|
|
||||||
/* indicate as such */
|
|
||||||
paused_xmit = 1;
|
|
||||||
}
|
|
||||||
/* queue packet for output on audio device */
|
|
||||||
if (waveOutWrite(wout,&wh->w,sizeof(WAVEHDR)))
|
|
||||||
{
|
|
||||||
fprintf(stderr,"Cannot output to wave output device\n");
|
|
||||||
exit(255);
|
|
||||||
}
|
|
||||||
/* if we are paused, and we have enough packets, start audio */
|
|
||||||
if ((n > OUT_PAUSE_THRESHOLD) && paused_xmit)
|
|
||||||
{
|
|
||||||
/* start the output */
|
|
||||||
waveOutRestart(wout);
|
|
||||||
/* indicate as such */
|
|
||||||
paused_xmit = 0;
|
|
||||||
}
|
|
||||||
/* insert it onto tail of outqueue */
|
|
||||||
if (outqueue == NULL) /* if empty queue */
|
|
||||||
outqueue = wh; /* point queue to new entry */
|
|
||||||
else /* otherwise is non-empty queue */
|
|
||||||
{
|
|
||||||
wh1 = outqueue;
|
|
||||||
while(wh1->next) wh1 = wh1->next; /* find last entry in queue */
|
|
||||||
wh1->next = wh; /* point it to new entry */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#ifdef PRINTCHUCK
|
|
||||||
else printf("Chucking packet!!\n");
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
len += 33;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default :
|
|
||||||
fprintf(f, "Don't know how to handle that format %d\n", e->event.voice.format);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case IAX_EVENT_RINGA:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
fprintf(f, "Unknown event: %d\n", e->etype);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
parse_cmd(FILE *f, int argc, char **argv)
|
|
||||||
{
|
|
||||||
_strupr(argv[0]);
|
|
||||||
if(!strcmp(argv[0], "HELP")) {
|
|
||||||
if(argc == 1)
|
|
||||||
dump_array(f, help);
|
|
||||||
else if(argc == 2) {
|
|
||||||
if(!strcmp(argv[1], "HELP"))
|
|
||||||
fprintf(f, "Help <Command>\t-\tDisplays general help or specific help on command if supplied an arguement\n");
|
|
||||||
else if(!strcmp(argv[1], "QUIT"))
|
|
||||||
fprintf(f, "Quit\t\t-\tShuts down the miniphone\n");
|
|
||||||
else fprintf(f, "No help available on %s\n", argv[1]);
|
|
||||||
} else {
|
|
||||||
fprintf(f, "Too many arguements for command help.\n");
|
|
||||||
}
|
|
||||||
} else if(!strcmp(argv[0], "STATUS")) {
|
|
||||||
if(argc == 1) {
|
|
||||||
int c = 0;
|
|
||||||
struct peer *peerptr = peers;
|
|
||||||
|
|
||||||
if(!peerptr)
|
|
||||||
fprintf(f, "No session matches found.\n");
|
|
||||||
else while(peerptr) {
|
|
||||||
fprintf(f, "Listing sessions:\n\n");
|
|
||||||
fprintf(f, "Session %d\n", ++c);
|
|
||||||
fprintf(f, "Session existed for %d seconds\n", (int)time(0)-peerptr->time);
|
|
||||||
if(answered_call)
|
|
||||||
fprintf(f, "Call answered.\n");
|
|
||||||
else fprintf(f, "Call ringing.\n");
|
|
||||||
|
|
||||||
peerptr = peerptr->next;
|
|
||||||
}
|
|
||||||
} else fprintf(f, "Too many arguments for command status.\n");
|
|
||||||
} else if(!strcmp(argv[0], "ANSWER")) {
|
|
||||||
if(argc > 1)
|
|
||||||
fprintf(f, "Too many arguements for command answer\n");
|
|
||||||
else answer_call();
|
|
||||||
} else if(!strcmp(argv[0], "REJECT")) {
|
|
||||||
if(argc > 1)
|
|
||||||
fprintf(f, "Too many arguements for command reject\n");
|
|
||||||
else {
|
|
||||||
fprintf(f, "Rejecting current phone call.\n");
|
|
||||||
reject_call();
|
|
||||||
}
|
|
||||||
} else if(!strcmp(argv[0], "CALL")) {
|
|
||||||
if(argc > 2)
|
|
||||||
fprintf(f, "Too many arguements for command call\n");
|
|
||||||
else {
|
|
||||||
call(f, argv[1]);
|
|
||||||
}
|
|
||||||
} else if(!strcmp(argv[0], "DUMP")) {
|
|
||||||
if(argc > 1)
|
|
||||||
fprintf(f, "Too many arguements for command dump\n");
|
|
||||||
else {
|
|
||||||
dump_call();
|
|
||||||
}
|
|
||||||
} else if(!strcmp(argv[0], "DTMF")) {
|
|
||||||
if(argc > 2)
|
|
||||||
{
|
|
||||||
fprintf(f, "Too many arguements for command dtmf\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (argc < 1)
|
|
||||||
{
|
|
||||||
fprintf(f, "Too many arguements for command dtmf\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(most_recent_answer)
|
|
||||||
iax_send_dtmf(most_recent_answer->session,*argv[1]);
|
|
||||||
} else if(!strcmp(argv[0], "QUIT")) {
|
|
||||||
if(argc > 1)
|
|
||||||
fprintf(f, "Too many arguements for command quit\n");
|
|
||||||
else {
|
|
||||||
fprintf(f, "Good bye!\n");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
} else fprintf(f, "Unknown command of %s\n", argv[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
issue_prompt(FILE *f)
|
|
||||||
{
|
|
||||||
fprintf(f, "TeleClient> ");
|
|
||||||
fflush(f);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
dump_array(FILE *f, char **array) {
|
|
||||||
while(*array)
|
|
||||||
fprintf(f, "%s\n", *array++);
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue