[commit] r3005 - in freeswitch/branches/mishehu: . libs/win32 libs/win32/pthread libs/win32/sofia src src/dotnet src/dotnet/Marshaling/Types src/dotnet/Modules src/include src/mod/applications/mod_bridgecall src/mod/applications/mod_commands src/mod/applications/mod_conference src/mod/applications/mod_dptools src/mod/dialplans/mod_dialplan_xml src/mod/endpoints/mod_dingaling src/mod/endpoints/mod_portaudio src/mod/endpoints/mod_sofia src/mod/event_handlers/mod_cdr src/mod/languages/mod
Author: mishehu Date: Sun Oct 8 20:25:31 2006 New Revision: 3005 Modified: freeswitch/branches/mishehu/Freeswitch.sln freeswitch/branches/mishehu/libs/win32/Download SOFIA.vcproj freeswitch/branches/mishehu/libs/win32/pthread/pthread.vcproj freeswitch/branches/mishehu/libs/win32/sofia/libsofia_sip_ua_static.vcproj freeswitch/branches/mishehu/src/dotnet/Marshaling/Types/ApiInterfaceMarshal.cs freeswitch/branches/mishehu/src/dotnet/Module.cs freeswitch/branches/mishehu/src/dotnet/Modules/Api.cs freeswitch/branches/mishehu/src/include/switch_channel.h freeswitch/branches/mishehu/src/include/switch_ivr.h freeswitch/branches/mishehu/src/include/switch_module_interfaces.h freeswitch/branches/mishehu/src/include/switch_types.h freeswitch/branches/mishehu/src/include/switch_utils.h freeswitch/branches/mishehu/src/mod/applications/mod_bridgecall/mod_bridgecall.c freeswitch/branches/mishehu/src/mod/applications/mod_commands/mod_commands.c freeswitch/branches/mishehu/src/mod/applications/mod_conference/mod_conference.c freeswitch/branches/mishehu/src/mod/applications/mod_dptools/mod_dptools.c freeswitch/branches/mishehu/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c freeswitch/branches/mishehu/src/mod/endpoints/mod_dingaling/mod_dingaling.c freeswitch/branches/mishehu/src/mod/endpoints/mod_portaudio/mod_portaudio.c freeswitch/branches/mishehu/src/mod/endpoints/mod_sofia/Makefile freeswitch/branches/mishehu/src/mod/endpoints/mod_sofia/mod_sofia.c freeswitch/branches/mishehu/src/mod/endpoints/mod_sofia/mod_sofia.vcproj freeswitch/branches/mishehu/src/mod/event_handlers/mod_cdr/basecdr.cpp freeswitch/branches/mishehu/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c freeswitch/branches/mishehu/src/mod/loggers/mod_console/mod_console.c freeswitch/branches/mishehu/src/switch_caller.c freeswitch/branches/mishehu/src/switch_channel.c freeswitch/branches/mishehu/src/switch_console.c freeswitch/branches/mishehu/src/switch_core.c freeswitch/branches/mishehu/src/switch_ivr.c freeswitch/branches/mishehu/src/switch_loadable_module.c freeswitch/branches/mishehu/src/switch_log.c freeswitch/branches/mishehu/src/switch_rtp.c freeswitch/branches/mishehu/src/switch_utils.c freeswitch/branches/mishehu/w32/Setup/Setup.vdproj Log: Made a change to basecdr.cpp that removed the number from BaseCDR::clid. BaseCDR::clid is now just the caller id name, removing the redundant data as per request. Merged to trunk r3004. Modified: freeswitch/branches/mishehu/Freeswitch.sln ============================================================================== --- freeswitch/branches/mishehu/Freeswitch.sln (original) +++ freeswitch/branches/mishehu/Freeswitch.sln Sun Oct 8 20:25:31 2006 @@ -891,8 +891,8 @@ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|Win32.Build.0 = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|Win32.ActiveCfg = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|Win32.Build.0 = Release|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Win32.ActiveCfg = Debug|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Win32.Build.0 = Debug|Win32 + {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Win32.ActiveCfg = Debug DLL|Win32 + {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Win32.Build.0 = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|Win32.ActiveCfg = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|Win32.Build.0 = Release DLL|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32 @@ -936,9 +936,9 @@ {C24FB505-05D7-4319-8485-7540B44C8603} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} {B5881A85-FE70-4F64-8607-2CAAE52669C6} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} {2740F45C-475A-4DE0-BCED-6E2E5F6C4B8B} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} - {3A5B9131-F20C-4A85-9447-6C1610941CEE} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C} {5FD31A25-5D83-4794-8BEE-904DAD84CE71} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C} {FE3540C5-3303-46E0-A69E-D92F775687F1} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C} + {3A5B9131-F20C-4A85-9447-6C1610941CEE} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C} {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C} {0DF3ABD0-DDC0-4265-B778-07C66780979B} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C} {DCC13474-28DF-47CA-A8EB-72F8CE9A78C5} = {2D57D093-3F8D-4729-AD9A-68E945C200A5} Modified: freeswitch/branches/mishehu/libs/win32/Download SOFIA.vcproj ============================================================================== --- freeswitch/branches/mishehu/libs/win32/Download SOFIA.vcproj (original) +++ freeswitch/branches/mishehu/libs/win32/Download SOFIA.vcproj Sun Oct 8 20:25:31 2006 @@ -76,8 +76,8 @@ <Tool Name="VCCustomBuildTool" Description="Downloading SOFIA." - CommandLine="if not exist "$(ProjectDir)..\sofia-sip-1.12.3" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://svn.freeswitch.org/downloads/libs/sofia-sip-1.12.3.tar.gz "$(ProjectDir).." " - Outputs="$(ProjectDir)..\sofia-sip-1.12.3" + CommandLine="if not exist "$(ProjectDir)..\sofia-sip-1.12.3.2" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://svn.freeswitch.org/downloads/libs/sofia-sip-1.12.3.2.tar.gz "$(ProjectDir).." " + Outputs="$(ProjectDir)..\sofia-sip-1.12.3.2" /> </FileConfiguration> <FileConfiguration @@ -86,8 +86,8 @@ <Tool Name="VCCustomBuildTool" Description="Downloading SOFIA." - CommandLine="if not exist "$(ProjectDir)..\sofia-sip-1.12.3" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://svn.freeswitch.org/downloads/libs/sofia-sip-1.12.3.tar.gz "$(ProjectDir).." " - Outputs="$(ProjectDir)..\sofia-sip-1.12.3" + CommandLine="if not exist "$(ProjectDir)..\sofia-sip-1.12.3.2" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://svn.freeswitch.org/downloads/libs/sofia-sip-1.12.3.2.tar.gz "$(ProjectDir).." " + Outputs="$(ProjectDir)..\sofia-sip-1.12.3.2" /> </FileConfiguration> </File> Modified: freeswitch/branches/mishehu/libs/win32/pthread/pthread.vcproj ============================================================================== --- freeswitch/branches/mishehu/libs/win32/pthread/pthread.vcproj (original) +++ freeswitch/branches/mishehu/libs/win32/pthread/pthread.vcproj Sun Oct 8 20:25:31 2006 @@ -131,8 +131,8 @@ Optimization="0" AdditionalIncludeDirectories="../../pthreads-w32-2-7-0-release/" PreprocessorDefinitions="__CLEANUP_C;WIN32;_DEBUG;_WINDOWS;_USRDLL;PTW32_BUILD;_CRT_SECURE_NO_DEPRECATE;PTW32_STATIC_LIB" - MinimalRebuild="true" - BasicRuntimeChecks="3" + MinimalRebuild="false" + BasicRuntimeChecks="0" RuntimeLibrary="3" PrecompiledHeaderFile=".\./pthread.pch" AssemblerListingLocation="$(IntDir)\" @@ -178,7 +178,7 @@ </Configuration> <Configuration Name="Debug DLL|Win32" - OutputDirectory="$(ConfigurationName)" + OutputDirectory="$(SolutionDir)Debug" IntermediateDirectory="$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" @@ -239,7 +239,7 @@ <Tool Name="VCLinkerTool" AdditionalDependencies="ws2_32.lib" - OutputFile=".\pthreadVC2.dll" + OutputFile="$(OutDir)\pthreadVC2.dll" LinkIncremental="2" SuppressStartupBanner="true" GenerateDebugInformation="true" @@ -278,7 +278,7 @@ </Configuration> <Configuration Name="Release DLL|Win32" - OutputDirectory="$(ConfigurationName)" + OutputDirectory="$(SolutionDir)Debug" IntermediateDirectory="$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" @@ -339,7 +339,7 @@ <Tool Name="VCLinkerTool" AdditionalDependencies="ws2_32.lib" - OutputFile=".\pthreadVC2.dll" + OutputFile="$(OutDir)\pthreadVC2.dll" LinkIncremental="1" SuppressStartupBanner="true" ImportLibrary=".\./pthreadVC2.lib" Modified: freeswitch/branches/mishehu/libs/win32/sofia/libsofia_sip_ua_static.vcproj ============================================================================== --- freeswitch/branches/mishehu/libs/win32/sofia/libsofia_sip_ua_static.vcproj (original) +++ freeswitch/branches/mishehu/libs/win32/sofia/libsofia_sip_ua_static.vcproj Sun Oct 8 20:25:31 2006 @@ -26,7 +26,7 @@ > <Tool Name="VCPreBuildEventTool" - CommandLine="if not exist "$(ProjectDir)..\..\sofia-sip-1.12.3\win32\gawk.exe" cscript /nologo "$(ProjectDir)..\util.vbs" Get http://svn.freeswitch.org/downloads/win32/gawk.exe "$(ProjectDir)..\..\sofia-sip-1.12.3\win32\" cd /D "$(ProjectDir)..\..\sofia-sip-1.12.3\win32\" "autogen.cmd" " + CommandLine="if not exist "$(ProjectDir)..\..\sofia-sip-1.12.3.2\win32\gawk.exe" cscript /nologo "$(ProjectDir)..\util.vbs" Get http://svn.freeswitch.org/downloads/win32/gawk.exe "$(ProjectDir)..\..\sofia-sip-1.12.3.2\win32\" cd /D "$(ProjectDir)..\..\sofia-sip-1.12.3.2\win32\" "autogen.cmd" " /> <Tool Name="VCCustomBuildTool" @@ -43,7 +43,7 @@ <Tool Name="VCCLCompilerTool" Optimization="0" - AdditionalIncludeDirectories=""..\..\sofia-sip-1.12.3\win32";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\su";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\ipt";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\sresolv";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\bnf";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\url";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\nta";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\nua";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\iptsec";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\http";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\nth";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\nea";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\sdp";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\soa";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\stun";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\tport";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\features";"..\..\pthreads-w32-2-7-0-release";." + AdditionalIncludeDirectories=""..\..\sofia-sip-1.12.3.2\win32";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\ipt";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sresolv";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\bnf";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\url";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nta";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nua";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\iptsec";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\http";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nth";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nea";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sdp";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\soa";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\stun";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\tport";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\features";"..\..\pthreads-w32-2-7-0-release";." PreprocessorDefinitions="WIN32;_DEBUG;_LIB;IN_LIBSOFIA_SIP_UA_STATIC;LIBSOFIA_SIP_UA_STATIC;LIBSRES_STATIC;PTW32_STATIC_LIB" MinimalRebuild="true" BasicRuntimeChecks="3" @@ -103,7 +103,7 @@ > <Tool Name="VCPreBuildEventTool" - CommandLine="if not exist "$(ProjectDir)..\..\sofia-sip-1.12.3\win32\gawk.exe" cscript /nologo "$(ProjectDir)..\util.vbs" Get http://svn.freeswitch.org/downloads/win32/gawk.exe "$(ProjectDir)..\..\sofia-sip-1.12.3\win32\" cd /D "$(ProjectDir)..\..\sofia-sip-1.12.3\win32\" "autogen.cmd" " + CommandLine="if not exist "$(ProjectDir)..\..\sofia-sip-1.12.3.2\win32\gawk.exe" cscript /nologo "$(ProjectDir)..\util.vbs" Get http://svn.freeswitch.org/downloads/win32/gawk.exe "$(ProjectDir)..\..\sofia-sip-1.12.3.2\win32\" cd /D "$(ProjectDir)..\..\sofia-sip-1.12.3.2\win32\" "autogen.cmd" " /> <Tool Name="VCCustomBuildTool" @@ -121,7 +121,7 @@ Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="1" - AdditionalIncludeDirectories=""..\..\sofia-sip-1.12.3\win32";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\su";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\ipt";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\sresolv";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\bnf";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\url";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\nta";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\nua";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\iptsec";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\http";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\nth";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\nea";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\sdp";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\soa";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\stun";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\tport";"..\..\sofia-sip-1.12.3\libsofia-sip-ua\features";"..\..\pthreads-w32-2-7-0-release";." + AdditionalIncludeDirectories=""..\..\sofia-sip-1.12.3.2\win32";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\ipt";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sresolv";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\bnf";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\url";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nta";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nua";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\iptsec";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\http";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nth";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nea";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sdp";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\soa";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\stun";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\tport";"..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\features";"..\..\pthreads-w32-2-7-0-release";." PreprocessorDefinitions="WIN32;NDEBUG;_LIB;IN_LIBSOFIA_SIP_UA_STATIC;LIBSOFIA_SIP_UA_STATIC;LIBSRES_STATIC;PTW32_STATIC_LIB" StringPooling="true" RuntimeLibrary="2" @@ -181,7 +181,7 @@ Filter="su*.c" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\inet_ntop.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\inet_ntop.c" > <FileConfiguration Name="Debug|Win32" @@ -203,7 +203,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\inet_pton.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\inet_pton.c" > <FileConfiguration Name="Debug|Win32" @@ -225,7 +225,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su.c" > <FileConfiguration Name="Debug|Win32" @@ -247,7 +247,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_addrinfo.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_addrinfo.c" > <FileConfiguration Name="Debug|Win32" @@ -269,7 +269,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_alloc.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_alloc.c" > <FileConfiguration Name="Debug|Win32" @@ -291,7 +291,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_alloc_lock.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_alloc_lock.c" > <FileConfiguration Name="Debug|Win32" @@ -313,7 +313,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_bm.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_bm.c" > <FileConfiguration Name="Debug|Win32" @@ -335,7 +335,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_default_log.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_default_log.c" > <FileConfiguration Name="Debug|Win32" @@ -357,7 +357,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_errno.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_errno.c" > <FileConfiguration Name="Debug|Win32" @@ -379,7 +379,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_global_log.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_global_log.c" > <FileConfiguration Name="Debug|Win32" @@ -401,7 +401,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_localinfo.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_localinfo.c" > <FileConfiguration Name="Debug|Win32" @@ -423,7 +423,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_log.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_log.c" > <FileConfiguration Name="Debug|Win32" @@ -445,7 +445,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_md5.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_md5.c" > <FileConfiguration Name="Debug|Win32" @@ -467,11 +467,11 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_os_nw.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_os_nw.c" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_port.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_port.c" > <FileConfiguration Name="Debug|Win32" @@ -493,7 +493,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_root.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_root.c" > <FileConfiguration Name="Debug|Win32" @@ -515,7 +515,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_sprintf.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_sprintf.c" > <FileConfiguration Name="Debug|Win32" @@ -537,7 +537,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_strdup.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_strdup.c" > <FileConfiguration Name="Debug|Win32" @@ -559,7 +559,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_strlst.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_strlst.c" > <FileConfiguration Name="Debug|Win32" @@ -581,7 +581,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_tag.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_tag.c" > <FileConfiguration Name="Debug|Win32" @@ -603,7 +603,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_tag_io.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_tag_io.c" > <FileConfiguration Name="Debug|Win32" @@ -625,7 +625,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_taglist.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_taglist.c" > <FileConfiguration Name="Debug|Win32" @@ -647,7 +647,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_time.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_time.c" > <FileConfiguration Name="Debug|Win32" @@ -669,7 +669,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_time0.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_time0.c" > <FileConfiguration Name="Debug|Win32" @@ -691,7 +691,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_timer.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_timer.c" > <FileConfiguration Name="Debug|Win32" @@ -713,7 +713,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_uniqueid.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_uniqueid.c" > <FileConfiguration Name="Debug|Win32" @@ -735,7 +735,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_vector.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_vector.c" > <FileConfiguration Name="Debug|Win32" @@ -757,7 +757,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_wait.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_wait.c" > <FileConfiguration Name="Debug|Win32" @@ -783,7 +783,7 @@ Name="ipt" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\ipt\base64.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\ipt\base64.c" > <FileConfiguration Name="Debug|Win32" @@ -805,7 +805,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\ipt\rc4.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\ipt\rc4.c" > <FileConfiguration Name="Debug|Win32" @@ -827,7 +827,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\ipt\string0.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\ipt\string0.c" > <FileConfiguration Name="Debug|Win32" @@ -849,7 +849,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\ipt\token64.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\ipt\token64.c" > <FileConfiguration Name="Debug|Win32" @@ -876,7 +876,7 @@ Filter="url*.c" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\url\url.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\url\url.c" > <FileConfiguration Name="Debug|Win32" @@ -898,7 +898,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\url\url_tag.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\url\url_tag.c" > <FileConfiguration Name="Debug|Win32" @@ -920,7 +920,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\url\url_tag_ref.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\url\url_tag_ref.c" > <FileConfiguration Name="Debug|Win32" @@ -947,7 +947,7 @@ Filter="features*.c" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\features\features.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\features\features.c" > <FileConfiguration Name="Debug|Win32" @@ -974,7 +974,7 @@ Filter="bnf*.c" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\bnf\bnf.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\bnf\bnf.c" > <FileConfiguration Name="Debug|Win32" @@ -1001,7 +1001,7 @@ Filter="msg*.c" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\msg.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\msg.c" > <FileConfiguration Name="Debug|Win32" @@ -1023,7 +1023,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\msg_auth.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\msg_auth.c" > <FileConfiguration Name="Debug|Win32" @@ -1045,7 +1045,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\msg_basic.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\msg_basic.c" > <FileConfiguration Name="Debug|Win32" @@ -1067,7 +1067,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\msg_date.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\msg_date.c" > <FileConfiguration Name="Debug|Win32" @@ -1089,7 +1089,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\msg_generic.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\msg_generic.c" > <FileConfiguration Name="Debug|Win32" @@ -1111,7 +1111,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\msg_header_copy.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\msg_header_copy.c" > <FileConfiguration Name="Debug|Win32" @@ -1133,7 +1133,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\msg_header_make.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\msg_header_make.c" > <FileConfiguration Name="Debug|Win32" @@ -1155,7 +1155,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\msg_mclass.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\msg_mclass.c" > <FileConfiguration Name="Debug|Win32" @@ -1177,7 +1177,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\msg_mime.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\msg_mime.c" > <FileConfiguration Name="Debug|Win32" @@ -1199,7 +1199,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\msg_mime_table.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\msg_mime_table.c" > <FileConfiguration Name="Debug|Win32" @@ -1221,7 +1221,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\msg_parser.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\msg_parser.c" > <FileConfiguration Name="Debug|Win32" @@ -1243,7 +1243,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\msg_parser_util.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\msg_parser_util.c" > <FileConfiguration Name="Debug|Win32" @@ -1265,7 +1265,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\msg_tag.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\msg_tag.c" > <FileConfiguration Name="Debug|Win32" @@ -1291,7 +1291,7 @@ Name="clib replacement" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\memcspn.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\memcspn.c" > <FileConfiguration Name="Debug|Win32" @@ -1313,7 +1313,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\memmem.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\memmem.c" > <FileConfiguration Name="Debug|Win32" @@ -1335,7 +1335,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\memspn.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\memspn.c" > <FileConfiguration Name="Debug|Win32" @@ -1357,7 +1357,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\strcasestr.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\strcasestr.c" > <FileConfiguration Name="Debug|Win32" @@ -1379,7 +1379,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\strtoull.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\strtoull.c" > <FileConfiguration Name="Debug|Win32" @@ -1405,7 +1405,7 @@ Name="sip" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sip_basic.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sip_basic.c" > <FileConfiguration Name="Debug|Win32" @@ -1427,7 +1427,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sip_caller_prefs.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sip_caller_prefs.c" > <FileConfiguration Name="Debug|Win32" @@ -1449,7 +1449,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sip_event.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sip_event.c" > <FileConfiguration Name="Debug|Win32" @@ -1471,7 +1471,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sip_extra.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sip_extra.c" > <FileConfiguration Name="Debug|Win32" @@ -1493,7 +1493,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sip_feature.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sip_feature.c" > <FileConfiguration Name="Debug|Win32" @@ -1515,7 +1515,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sip_header.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sip_header.c" > <FileConfiguration Name="Debug|Win32" @@ -1537,7 +1537,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sip_mime.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sip_mime.c" > <FileConfiguration Name="Debug|Win32" @@ -1559,7 +1559,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sip_parser.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sip_parser.c" > <FileConfiguration Name="Debug|Win32" @@ -1581,7 +1581,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sip_parser_table.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sip_parser_table.c" > <FileConfiguration Name="Debug|Win32" @@ -1603,7 +1603,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sip_prack.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sip_prack.c" > <FileConfiguration Name="Debug|Win32" @@ -1625,7 +1625,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sip_pref_util.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sip_pref_util.c" > <FileConfiguration Name="Debug|Win32" @@ -1647,7 +1647,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sip_reason.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sip_reason.c" > <FileConfiguration Name="Debug|Win32" @@ -1669,7 +1669,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sip_refer.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sip_refer.c" > <FileConfiguration Name="Debug|Win32" @@ -1691,7 +1691,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sip_security.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sip_security.c" > <FileConfiguration Name="Debug|Win32" @@ -1713,7 +1713,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sip_session.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sip_session.c" > <FileConfiguration Name="Debug|Win32" @@ -1735,7 +1735,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sip_status.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sip_status.c" > <FileConfiguration Name="Debug|Win32" @@ -1757,7 +1757,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sip_tag.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sip_tag.c" > <FileConfiguration Name="Debug|Win32" @@ -1779,7 +1779,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sip_tag_class.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sip_tag_class.c" > <FileConfiguration Name="Debug|Win32" @@ -1801,7 +1801,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sip_tag_ref.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sip_tag_ref.c" > <FileConfiguration Name="Debug|Win32" @@ -1823,7 +1823,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sip_time.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sip_time.c" > <FileConfiguration Name="Debug|Win32" @@ -1845,7 +1845,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sip_util.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sip_util.c" > <FileConfiguration Name="Debug|Win32" @@ -1871,7 +1871,7 @@ Name="http" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\http\http_basic.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\http\http_basic.c" > <FileConfiguration Name="Debug|Win32" @@ -1893,7 +1893,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\http\http_extra.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\http\http_extra.c" > <FileConfiguration Name="Debug|Win32" @@ -1915,7 +1915,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\http\http_header.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\http\http_header.c" > <FileConfiguration Name="Debug|Win32" @@ -1937,7 +1937,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\http\http_parser.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\http\http_parser.c" > <FileConfiguration Name="Debug|Win32" @@ -1959,7 +1959,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\http\http_parser_table.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\http\http_parser_table.c" > <FileConfiguration Name="Debug|Win32" @@ -1981,7 +1981,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\http\http_status.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\http\http_status.c" > <FileConfiguration Name="Debug|Win32" @@ -2003,7 +2003,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\http\http_tag.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\http\http_tag.c" > <FileConfiguration Name="Debug|Win32" @@ -2025,7 +2025,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\http\http_tag_class.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\http\http_tag_class.c" > <FileConfiguration Name="Debug|Win32" @@ -2047,7 +2047,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\http\http_tag_ref.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\http\http_tag_ref.c" > <FileConfiguration Name="Debug|Win32" @@ -2073,7 +2073,7 @@ Name="nth" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nth\nth_client.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nth\nth_client.c" > <FileConfiguration Name="Debug|Win32" @@ -2095,7 +2095,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nth\nth_server.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nth\nth_server.c" > <FileConfiguration Name="Debug|Win32" @@ -2117,7 +2117,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nth\nth_tag.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nth\nth_tag.c" > <FileConfiguration Name="Debug|Win32" @@ -2139,7 +2139,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nth\nth_tag_ref.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nth\nth_tag_ref.c" > <FileConfiguration Name="Debug|Win32" @@ -2165,7 +2165,7 @@ Name="sresolv" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sresolv\sres.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sresolv\sres.c" > <FileConfiguration Name="Debug|Win32" @@ -2187,7 +2187,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sresolv\sres_blocking.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sresolv\sres_blocking.c" > <FileConfiguration Name="Debug|Win32" @@ -2209,7 +2209,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sresolv\sres_cache.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sresolv\sres_cache.c" > <FileConfiguration Name="Debug|Win32" @@ -2231,7 +2231,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sresolv\sresolv.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sresolv\sresolv.c" > <FileConfiguration Name="Debug|Win32" @@ -2257,7 +2257,7 @@ Name="nea" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nea\nea.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nea\nea.c" > <FileConfiguration Name="Debug|Win32" @@ -2279,7 +2279,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nea\nea_debug.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nea\nea_debug.c" > <FileConfiguration Name="Debug|Win32" @@ -2301,7 +2301,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nea\nea_event.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nea\nea_event.c" > <FileConfiguration Name="Debug|Win32" @@ -2323,7 +2323,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nea\nea_server.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nea\nea_server.c" > <FileConfiguration Name="Debug|Win32" @@ -2345,7 +2345,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nea\nea_tag.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nea\nea_tag.c" > <FileConfiguration Name="Debug|Win32" @@ -2367,7 +2367,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nea\nea_tag_ref.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nea\nea_tag_ref.c" > <FileConfiguration Name="Debug|Win32" @@ -2393,7 +2393,7 @@ Name="iptsec" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\iptsec\auth_client.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\iptsec\auth_client.c" > <FileConfiguration Name="Debug|Win32" @@ -2415,7 +2415,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\iptsec\auth_common.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\iptsec\auth_common.c" > <FileConfiguration Name="Debug|Win32" @@ -2437,7 +2437,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\iptsec\auth_digest.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\iptsec\auth_digest.c" > <FileConfiguration Name="Debug|Win32" @@ -2459,7 +2459,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\iptsec\auth_module.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\iptsec\auth_module.c" > <FileConfiguration Name="Debug|Win32" @@ -2481,7 +2481,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\iptsec\auth_module_http.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\iptsec\auth_module_http.c" > <FileConfiguration Name="Debug|Win32" @@ -2503,7 +2503,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\iptsec\auth_module_sip.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\iptsec\auth_module_sip.c" > <FileConfiguration Name="Debug|Win32" @@ -2525,7 +2525,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\iptsec\auth_plugin.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\iptsec\auth_plugin.c" > <FileConfiguration Name="Debug|Win32" @@ -2547,7 +2547,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\iptsec\auth_plugin_delayed.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\iptsec\auth_plugin_delayed.c" > <FileConfiguration Name="Debug|Win32" @@ -2569,7 +2569,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\iptsec\auth_tag.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\iptsec\auth_tag.c" > <FileConfiguration Name="Debug|Win32" @@ -2591,7 +2591,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\iptsec\auth_tag_ref.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\iptsec\auth_tag_ref.c" > <FileConfiguration Name="Debug|Win32" @@ -2613,7 +2613,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\iptsec\iptsec_debug.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\iptsec\iptsec_debug.c" > <FileConfiguration Name="Debug|Win32" @@ -2639,7 +2639,7 @@ Name="stun" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\stun\stun.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\stun\stun.c" > <FileConfiguration Name="Debug|Win32" @@ -2661,7 +2661,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\stun\stun_common.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\stun\stun_common.c" > <FileConfiguration Name="Debug|Win32" @@ -2683,7 +2683,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\stun\stun_dns.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\stun\stun_dns.c" > <FileConfiguration Name="Debug|Win32" @@ -2705,11 +2705,11 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\stun\stun_internal.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\stun\stun_internal.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\stun\stun_mini.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\stun\stun_mini.c" > <FileConfiguration Name="Debug|Win32" @@ -2731,7 +2731,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\stun\stun_tag.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\stun\stun_tag.c" > <FileConfiguration Name="Debug|Win32" @@ -2753,7 +2753,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\stun\stun_tag_ref.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\stun\stun_tag_ref.c" > <FileConfiguration Name="Debug|Win32" @@ -2779,7 +2779,7 @@ Name="nua" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nua\nua.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nua\nua.c" > <FileConfiguration Name="Debug|Win32" @@ -2801,7 +2801,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nua\nua_common.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nua\nua_common.c" > <FileConfiguration Name="Debug|Win32" @@ -2823,7 +2823,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nua\nua_dialog.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nua\nua_dialog.c" > <FileConfiguration Name="Debug|Win32" @@ -2845,11 +2845,11 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nua\nua_dialog.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nua\nua_dialog.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nua\nua_event_server.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nua\nua_event_server.c" > <FileConfiguration Name="Debug|Win32" @@ -2871,7 +2871,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nua\nua_message.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nua\nua_message.c" > <FileConfiguration Name="Debug|Win32" @@ -2893,11 +2893,11 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nua\nua_notifier.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nua\nua_notifier.c" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nua\nua_options.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nua\nua_options.c" > <FileConfiguration Name="Debug|Win32" @@ -2919,7 +2919,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nua\nua_params.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nua\nua_params.c" > <FileConfiguration Name="Debug|Win32" @@ -2941,11 +2941,11 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nua\nua_params.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nua\nua_params.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nua\nua_publish.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nua\nua_publish.c" > <FileConfiguration Name="Debug|Win32" @@ -2967,7 +2967,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nua\nua_register.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nua\nua_register.c" > <FileConfiguration Name="Debug|Win32" @@ -2989,11 +2989,11 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nua\nua_registrar.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nua\nua_registrar.c" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nua\nua_session.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nua\nua_session.c" > <FileConfiguration Name="Debug|Win32" @@ -3015,7 +3015,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nua\nua_stack.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nua\nua_stack.c" > <FileConfiguration Name="Debug|Win32" @@ -3037,11 +3037,11 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nua\nua_stack.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nua\nua_stack.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nua\nua_subnotref.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nua\nua_subnotref.c" > <FileConfiguration Name="Debug|Win32" @@ -3063,7 +3063,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nua\nua_tag.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nua\nua_tag.c" > <FileConfiguration Name="Debug|Win32" @@ -3085,7 +3085,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nua\nua_tag_ref.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nua\nua_tag_ref.c" > <FileConfiguration Name="Debug|Win32" @@ -3107,7 +3107,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nua\outbound.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nua\outbound.c" > </File> </Filter> @@ -3115,7 +3115,7 @@ Name="nta" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nta\nta.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nta\nta.c" > <FileConfiguration Name="Debug|Win32" @@ -3137,7 +3137,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nta\nta_check.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nta\nta_check.c" > <FileConfiguration Name="Debug|Win32" @@ -3159,7 +3159,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nta\nta_tag.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nta\nta_tag.c" > <FileConfiguration Name="Debug|Win32" @@ -3181,7 +3181,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nta\nta_tag_ref.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nta\nta_tag_ref.c" > <FileConfiguration Name="Debug|Win32" @@ -3203,7 +3203,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nta\sl_read_payload.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nta\sl_read_payload.c" > <FileConfiguration Name="Debug|Win32" @@ -3225,7 +3225,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nta\sl_utils_log.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nta\sl_utils_log.c" > <FileConfiguration Name="Debug|Win32" @@ -3247,7 +3247,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nta\sl_utils_print.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nta\sl_utils_print.c" > <FileConfiguration Name="Debug|Win32" @@ -3273,7 +3273,7 @@ Name="tport" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\tport\tport.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\tport\tport.c" > <FileConfiguration Name="Debug|Win32" @@ -3295,11 +3295,11 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\tport\tport_internal.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\tport\tport_internal.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\tport\tport_logging.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\tport\tport_logging.c" > <FileConfiguration Name="Debug|Win32" @@ -3321,7 +3321,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\tport\tport_stub_sigcomp.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\tport\tport_stub_sigcomp.c" > <FileConfiguration Name="Debug|Win32" @@ -3343,7 +3343,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\tport\tport_stub_stun.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\tport\tport_stub_stun.c" > <FileConfiguration Name="Debug|Win32" @@ -3365,7 +3365,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\tport\tport_tag.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\tport\tport_tag.c" > <FileConfiguration Name="Debug|Win32" @@ -3387,7 +3387,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\tport\tport_tag_ref.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\tport\tport_tag_ref.c" > <FileConfiguration Name="Debug|Win32" @@ -3409,7 +3409,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\tport\tport_type_connect.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\tport\tport_type_connect.c" > <FileConfiguration Name="Debug|Win32" @@ -3431,7 +3431,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\tport\tport_type_tcp.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\tport\tport_type_tcp.c" > <FileConfiguration Name="Debug|Win32" @@ -3453,7 +3453,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\tport\tport_type_udp.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\tport\tport_type_udp.c" > <FileConfiguration Name="Debug|Win32" @@ -3479,7 +3479,7 @@ Name="sdp" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sdp\sdp.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sdp\sdp.c" > <FileConfiguration Name="Debug|Win32" @@ -3501,7 +3501,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sdp\sdp_parse.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sdp\sdp_parse.c" > <FileConfiguration Name="Debug|Win32" @@ -3523,7 +3523,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sdp\sdp_print.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sdp\sdp_print.c" > <FileConfiguration Name="Debug|Win32" @@ -3545,7 +3545,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sdp\sdp_tag.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sdp\sdp_tag.c" > <FileConfiguration Name="Debug|Win32" @@ -3567,7 +3567,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sdp\sdp_tag_ref.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sdp\sdp_tag_ref.c" > <FileConfiguration Name="Debug|Win32" @@ -3593,7 +3593,7 @@ Name="soa" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\soa\soa.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\soa\soa.c" > <FileConfiguration Name="Debug|Win32" @@ -3615,11 +3615,11 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\soa\sofia-sip-1.12.3\soa_session.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\soa\sofia-sip-1.12.3.2\soa_session.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\soa\soa_static.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\soa\soa_static.c" > <FileConfiguration Name="Debug|Win32" @@ -3641,7 +3641,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\soa\soa_tag.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\soa\soa_tag.c" > <FileConfiguration Name="Debug|Win32" @@ -3663,7 +3663,7 @@ </FileConfiguration> </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\soa\soa_tag_ref.c" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\soa\soa_tag_ref.c" > <FileConfiguration Name="Debug|Win32" @@ -3695,123 +3695,123 @@ Filter="su*.h" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\htable.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\htable.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\htable2.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\htable2.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\rbtree.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\rbtree.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\su.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\su.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\su_addrinfo.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\su_addrinfo.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\su_alloc.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\su_alloc.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\su_alloc_stat.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\su_alloc_stat.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\su_bm.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\su_bm.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\su_config.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\su_config.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\su_debug.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\su_debug.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\su_errno.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\su_errno.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\su_localinfo.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\su_localinfo.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\su_log.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\su_log.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\su_md5.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\su_md5.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_module_debug.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_module_debug.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\su_os_nw.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\su_os_nw.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\su_port.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\su_port.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\su_source.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\su_source.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\su_strlst.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\su_strlst.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\su_tag.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\su_tag.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\su_tag_class.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\su_tag_class.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\su_tag_inline.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\su_tag_inline.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\su_tag_io.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\su_tag_io.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\su_tagarg.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\su_tagarg.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\su_time.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\su_time.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\su_types.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\su_types.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\su_uniqueid.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\su_uniqueid.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\su_vector.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\su_vector.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\su_wait.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\su_wait.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\su\sofia-sip-1.12.3\tstdef.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\su\sofia-sip-1.12.3.2\tstdef.h" > </File> </Filter> @@ -3823,7 +3823,7 @@ > </File> <File - RelativePath="..\sofia-sip-1.12.3\su_configure.h" + RelativePath="..\sofia-sip-1.12.3.2\su_configure.h" > </File> <File @@ -3835,19 +3835,19 @@ Name="ipt headers" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\ipt\sofia-sip-1.12.3\base64.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\ipt\sofia-sip-1.12.3.2\base64.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\ipt\sofia-sip-1.12.3\rc4.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\ipt\sofia-sip-1.12.3.2\rc4.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\ipt\sofia-sip-1.12.3\string0.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\ipt\sofia-sip-1.12.3.2\string0.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\ipt\sofia-sip-1.12.3\token64.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\ipt\sofia-sip-1.12.3.2\token64.h" > </File> </Filter> @@ -3856,15 +3856,15 @@ Filter="url*.h" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\url\sofia-sip-1.12.3\url.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\url\sofia-sip-1.12.3.2\url.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\url\sofia-sip-1.12.3\url_tag.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\url\sofia-sip-1.12.3.2\url_tag.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\url\sofia-sip-1.12.3\url_tag_class.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\url\sofia-sip-1.12.3.2\url_tag_class.h" > </File> </Filter> @@ -3873,7 +3873,7 @@ Filter="features*.h" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\features\sofia-sip-1.12.3\sofia_features.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\features\sofia-sip-1.12.3.2\sofia_features.h" > </File> </Filter> @@ -3882,11 +3882,11 @@ Filter="bnf*.h" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\bnf\sofia-sip-1.12.3\bnf.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\bnf\sofia-sip-1.12.3.2\bnf.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\bnf\sofia-sip-1.12.3\hostdomain.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\bnf\sofia-sip-1.12.3.2\hostdomain.h" > </File> </Filter> @@ -3894,63 +3894,63 @@ Name="msg headers" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\sofia-sip-1.12.3\msg.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\sofia-sip-1.12.3.2\msg.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\sofia-sip-1.12.3\msg_addr.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\sofia-sip-1.12.3.2\msg_addr.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\msg_bnf.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\msg_bnf.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\sofia-sip-1.12.3\msg_buffer.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\sofia-sip-1.12.3.2\msg_buffer.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\sofia-sip-1.12.3\msg_date.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\sofia-sip-1.12.3.2\msg_date.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\sofia-sip-1.12.3\msg_header.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\sofia-sip-1.12.3.2\msg_header.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\msg_internal.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\msg_internal.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\sofia-sip-1.12.3\msg_mclass.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\sofia-sip-1.12.3.2\msg_mclass.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\sofia-sip-1.12.3\msg_mclass_hash.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\sofia-sip-1.12.3.2\msg_mclass_hash.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\sofia-sip-1.12.3\msg_mime.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\sofia-sip-1.12.3.2\msg_mime.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\sofia-sip-1.12.3\msg_mime_protos.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\sofia-sip-1.12.3.2\msg_mime_protos.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\sofia-sip-1.12.3\msg_parser.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\sofia-sip-1.12.3.2\msg_parser.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\sofia-sip-1.12.3\msg_protos.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\sofia-sip-1.12.3.2\msg_protos.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\sofia-sip-1.12.3\msg_tag_class.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\sofia-sip-1.12.3.2\msg_tag_class.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\msg\sofia-sip-1.12.3\msg_types.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\msg\sofia-sip-1.12.3.2\msg_types.h" > </File> </Filter> @@ -3958,47 +3958,47 @@ Name="sip headers" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sofia-sip-1.12.3\sip.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sofia-sip-1.12.3.2\sip.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sip_extensions.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sip_extensions.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sofia-sip-1.12.3\sip_hclasses.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sofia-sip-1.12.3.2\sip_hclasses.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sofia-sip-1.12.3\sip_header.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sofia-sip-1.12.3.2\sip_header.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sip_internal.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sip_internal.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sofia-sip-1.12.3\sip_parser.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sofia-sip-1.12.3.2\sip_parser.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sofia-sip-1.12.3\sip_protos.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sofia-sip-1.12.3.2\sip_protos.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sofia-sip-1.12.3\sip_status.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sofia-sip-1.12.3.2\sip_status.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sofia-sip-1.12.3\sip_tag.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sofia-sip-1.12.3.2\sip_tag.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sofia-sip-1.12.3\sip_tag_class.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sofia-sip-1.12.3.2\sip_tag_class.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sip\sofia-sip-1.12.3\sip_util.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sip\sofia-sip-1.12.3.2\sip_util.h" > </File> </Filter> @@ -4006,35 +4006,35 @@ Name="http headers" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\http\sofia-sip-1.12.3\http.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\http\sofia-sip-1.12.3.2\http.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\http\sofia-sip-1.12.3\http_hclasses.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\http\sofia-sip-1.12.3.2\http_hclasses.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\http\sofia-sip-1.12.3\http_header.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\http\sofia-sip-1.12.3.2\http_header.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\http\sofia-sip-1.12.3\http_parser.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\http\sofia-sip-1.12.3.2\http_parser.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\http\sofia-sip-1.12.3\http_protos.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\http\sofia-sip-1.12.3.2\http_protos.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\http\sofia-sip-1.12.3\http_status.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\http\sofia-sip-1.12.3.2\http_status.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\http\sofia-sip-1.12.3\http_tag.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\http\sofia-sip-1.12.3.2\http_tag.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\http\sofia-sip-1.12.3\http_tag_class.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\http\sofia-sip-1.12.3.2\http_tag_class.h" > </File> </Filter> @@ -4042,11 +4042,11 @@ Name="nth headers" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nth\sofia-sip-1.12.3\nth.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nth\sofia-sip-1.12.3.2\nth.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nth\sofia-sip-1.12.3\nth_tag.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nth\sofia-sip-1.12.3.2\nth_tag.h" > </File> </Filter> @@ -4054,23 +4054,23 @@ Name="sresolv headers" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sresolv\sofia-resolv\sres.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sresolv\sofia-resolv\sres.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sresolv\sofia-resolv\sres_async.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sresolv\sofia-resolv\sres_async.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sresolv\sofia-resolv\sres_cache.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sresolv\sofia-resolv\sres_cache.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sresolv\sofia-resolv\sres_record.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sresolv\sofia-resolv\sres_record.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sresolv\sofia-sip-1.12.3\sresolv.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sresolv\sofia-sip-1.12.3.2\sresolv.h" > </File> </Filter> @@ -4078,15 +4078,15 @@ Name="nea headers" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nea\sofia-sip-1.12.3\nea.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nea\sofia-sip-1.12.3.2\nea.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nea\nea_debug.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nea\nea_debug.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nea\sofia-sip-1.12.3\nea_tag.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nea\sofia-sip-1.12.3.2\nea_tag.h" > </File> </Filter> @@ -4094,27 +4094,27 @@ Name="iptsec headers" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\iptsec\sofia-sip-1.12.3\auth_client.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\iptsec\sofia-sip-1.12.3.2\auth_client.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\iptsec\sofia-sip-1.12.3\auth_digest.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\iptsec\sofia-sip-1.12.3.2\auth_digest.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\iptsec\sofia-sip-1.12.3\auth_module.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\iptsec\sofia-sip-1.12.3.2\auth_module.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\iptsec\sofia-sip-1.12.3\auth_ntlm.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\iptsec\sofia-sip-1.12.3.2\auth_ntlm.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\iptsec\sofia-sip-1.12.3\auth_plugin.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\iptsec\sofia-sip-1.12.3.2\auth_plugin.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\iptsec\iptsec_debug.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\iptsec\iptsec_debug.h" > </File> </Filter> @@ -4122,15 +4122,15 @@ Name="stun headers" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\stun\sofia-sip-1.12.3\stun.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\stun\sofia-sip-1.12.3.2\stun.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\stun\sofia-sip-1.12.3\stun_common.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\stun\sofia-sip-1.12.3.2\stun_common.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\stun\sofia-sip-1.12.3\stun_tag.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\stun\sofia-sip-1.12.3.2\stun_tag.h" > </File> </Filter> @@ -4138,11 +4138,11 @@ Name="nua headers" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nua\sofia-sip-1.12.3\nua.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nua\sofia-sip-1.12.3.2\nua.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nua\sofia-sip-1.12.3\nua_tag.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nua\sofia-sip-1.12.3.2\nua_tag.h" > </File> </Filter> @@ -4150,27 +4150,27 @@ Name="nta headers" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nta\sofia-sip-1.12.3\nta.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nta\sofia-sip-1.12.3.2\nta.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nta\nta_internal.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nta\nta_internal.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nta\sofia-sip-1.12.3\nta_stateless.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nta\sofia-sip-1.12.3.2\nta_stateless.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nta\sofia-sip-1.12.3\nta_tag.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nta\sofia-sip-1.12.3.2\nta_tag.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nta\sofia-sip-1.12.3\nta_tport.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nta\sofia-sip-1.12.3.2\nta_tport.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\nta\sofia-sip-1.12.3\sl_utils.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\nta\sofia-sip-1.12.3.2\sl_utils.h" > </File> </Filter> @@ -4178,19 +4178,19 @@ Name="tport headers" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\tport\sofia-sip-1.12.3\tport.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\tport\sofia-sip-1.12.3.2\tport.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\tport\sofia-sip-1.12.3\tport_plugins.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\tport\sofia-sip-1.12.3.2\tport_plugins.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\tport\sofia-sip-1.12.3\tport_tag.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\tport\sofia-sip-1.12.3.2\tport_tag.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\tport\tport_tls.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\tport\tport_tls.h" > </File> </Filter> @@ -4198,11 +4198,11 @@ Name="sdp headers" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sdp\sofia-sip-1.12.3\sdp.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sdp\sofia-sip-1.12.3.2\sdp.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\sdp\sofia-sip-1.12.3\sdp_tag.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\sdp\sofia-sip-1.12.3.2\sdp_tag.h" > </File> </Filter> @@ -4210,15 +4210,15 @@ Name="soa headers" > <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\soa\sofia-sip-1.12.3\soa.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\soa\sofia-sip-1.12.3.2\soa.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\soa\sofia-sip-1.12.3\soa_add.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\soa\sofia-sip-1.12.3.2\soa_add.h" > </File> <File - RelativePath="..\..\sofia-sip-1.12.3\libsofia-sip-ua\soa\sofia-sip-1.12.3\soa_tag.h" + RelativePath="..\..\sofia-sip-1.12.3.2\libsofia-sip-ua\soa\sofia-sip-1.12.3.2\soa_tag.h" > </File> </Filter> Modified: freeswitch/branches/mishehu/src/dotnet/Marshaling/Types/ApiInterfaceMarshal.cs ============================================================================== --- freeswitch/branches/mishehu/src/dotnet/Marshaling/Types/ApiInterfaceMarshal.cs (original) +++ freeswitch/branches/mishehu/src/dotnet/Marshaling/Types/ApiInterfaceMarshal.cs Sun Oct 8 20:25:31 2006 @@ -42,7 +42,8 @@ internal IntPtr interface_name; //[MarshalAs(UnmanagedType.LPStr)] internal IntPtr desc; - internal ApiFunction function; + internal ApiFunction function; + internal IntPtr syntax; internal IntPtr next; } } Modified: freeswitch/branches/mishehu/src/dotnet/Module.cs ============================================================================== --- freeswitch/branches/mishehu/src/dotnet/Module.cs (original) +++ freeswitch/branches/mishehu/src/dotnet/Module.cs Sun Oct 8 20:25:31 2006 @@ -130,6 +130,7 @@ /* Allocate umanaged mem to to interface fields so GC doesn't disturb them */ apiInterfaceMarshal.interface_name = Marshal.StringToHGlobalAnsi(apiInterface.Name); apiInterfaceMarshal.desc = Marshal.StringToHGlobalAnsi(apiInterface.Description); + apiInterfaceMarshal.syntax = Marshal.StringToHGlobalAnsi(apiInterface.Syntax); apiInterfaceMarshal.function = new ApiFunction(apiInterface.ApiFunction); /* Set the handle of the managed object */ Modified: freeswitch/branches/mishehu/src/dotnet/Modules/Api.cs ============================================================================== --- freeswitch/branches/mishehu/src/dotnet/Modules/Api.cs (original) +++ freeswitch/branches/mishehu/src/dotnet/Modules/Api.cs Sun Oct 8 20:25:31 2006 @@ -41,6 +41,7 @@ { private string name; private string description; + private string syntax; private ApiFunction apiFunction; public HandleRef handle; @@ -54,6 +55,12 @@ { set { description = value; } get { return description; } + } + + public string Syntax + { + set { syntax = value; } + get { return syntax; } } public ApiFunction ApiFunction Modified: freeswitch/branches/mishehu/src/include/switch_channel.h ============================================================================== --- freeswitch/branches/mishehu/src/include/switch_channel.h (original) +++ freeswitch/branches/mishehu/src/include/switch_channel.h Sun Oct 8 20:25:31 2006 @@ -400,6 +400,14 @@ */ SWITCH_DECLARE(void) switch_channel_event_set_data(switch_channel_t *channel, switch_event_t *event); +/*! + \brief Expand varaibles in a string based on the variables in a paticular channel + \param channel channel to expand the variables from + \param in the original string + \return the original string if no expansion takes place otherwise a new string that must be freed + \note it's necessary to test if the return val is the same as the input and free the string if it is not. +*/ +SWITCH_DECLARE(char *) switch_channel_expand_variables(switch_channel_t *channel, char *in); // These may go away SWITCH_DECLARE(switch_status_t) switch_channel_set_raw_mode (switch_channel_t *channel, int freq, int bits, int channels, int ms, int kbps); Modified: freeswitch/branches/mishehu/src/include/switch_ivr.h ============================================================================== --- freeswitch/branches/mishehu/src/include/switch_ivr.h (original) +++ freeswitch/branches/mishehu/src/include/switch_ivr.h Sun Oct 8 20:25:31 2006 @@ -223,6 +223,13 @@ void *session_data, void *peer_session_data); +/*! + \brief Bridge Signalling from one session to another + \param session one session + \param peer_session the other session + \return SWITCH_STATUS_SUCCESS if all is well +*/ +SWITCH_DECLARE(switch_status_t) switch_ivr_signal_bridge(switch_core_session_t *session, switch_core_session_t *peer_session); /*! \brief Transfer an existing session to another location Modified: freeswitch/branches/mishehu/src/include/switch_module_interfaces.h ============================================================================== --- freeswitch/branches/mishehu/src/include/switch_module_interfaces.h (original) +++ freeswitch/branches/mishehu/src/include/switch_module_interfaces.h Sun Oct 8 20:25:31 2006 @@ -537,6 +537,8 @@ const char *desc; /*! function the api call uses */ switch_api_function_t function; + /*! an example of the application syntax */ + const char *syntax; const struct switch_api_interface *next; }; Modified: freeswitch/branches/mishehu/src/include/switch_types.h ============================================================================== --- freeswitch/branches/mishehu/src/include/switch_types.h (original) +++ freeswitch/branches/mishehu/src/include/switch_types.h Sun Oct 8 20:25:31 2006 @@ -72,6 +72,11 @@ #define SWITCH_HTDOCS_DIR SWITCH_PREFIX_DIR SWITCH_PATH_SEPARATOR "htdocs" #endif +#define SWITCH_R_SDP_VARIABLE "_switch_r_sdp_" +#define SWITCH_L_SDP_VARIABLE "_switch_l_sdp_" +#define SWITCH_BRIDGE_VARIABLE "BRIDGETO" +#define SWITCH_SIGNAL_BRIDGE_VARIABLE "SIGNAL_BRIDGETO" + #define SWITCH_BITS_PER_BYTE 8 typedef uint8_t switch_byte_t; @@ -232,7 +237,8 @@ SWITCH_MESSAGE_TRANSMIT_TEXT - A text message SWITCH_MESSAGE_INDICATE_PROGRESS - indicate progress SWITCH_MESSAGE_INDICATE_BRIDGE - indicate a bridge starting - SWITCH_MESSAGE_INDICATE_UNBRIDGE - indicate a bridge ending + SWITCH_MESSAGE_INDICATE_UNBRIDGE - indicate a bridge ending + SWITCH_MESSAGE_INDICATE_TRANSFER - indicate a transfer is taking place </pre> */ typedef enum { @@ -240,7 +246,8 @@ SWITCH_MESSAGE_TRANSMIT_TEXT, SWITCH_MESSAGE_INDICATE_PROGRESS, SWITCH_MESSAGE_INDICATE_BRIDGE, - SWITCH_MESSAGE_INDICATE_UNBRIDGE + SWITCH_MESSAGE_INDICATE_UNBRIDGE, + SWITCH_MESSAGE_INDICATE_TRANSFER } switch_core_session_message_types_t; @@ -392,6 +399,7 @@ CF_TAGGED = (1 << 10) - Channel is tagged CF_WINNER = (1 << 11) - Channel is the winner CF_CONTROLLED = (1 << 12) - Channel is under control +CF_NOMEDIA = (1 << 13) - Channel has no media </pre> */ @@ -408,7 +416,8 @@ CF_SERVICE = (1 << 9), CF_TAGGED = (1 << 10), CF_WINNER = (1 << 11), - CF_CONTROLLED = (1 << 12) + CF_CONTROLLED = (1 << 12), + CF_NOMEDIA = (1 << 13) } switch_channel_flag_t; Modified: freeswitch/branches/mishehu/src/include/switch_utils.h ============================================================================== --- freeswitch/branches/mishehu/src/include/switch_utils.h (original) +++ freeswitch/branches/mishehu/src/include/switch_utils.h Sun Oct 8 20:25:31 2006 @@ -151,7 +151,7 @@ /*! - \brief Free a pointer and set it to NULL unles it already is NULL + \brief Free a pointer and set it to NULL unless it already is NULL \param it the pointer */ #define switch_safe_free(it) if (it) {free(it);it=NULL;} @@ -191,6 +191,16 @@ \return the number of elements added to the array */ SWITCH_DECLARE(unsigned int) switch_separate_string(char *buf, char delim, char **array, int arraylen); + +/*! + \brief Escape a string by prefixing a list of characters with an escape character + \param pool a memory pool to use + \param in the string + \param delim the list of characters to escape + \param esc the escape character + \return the escaped string +*/ +SWITCH_DECLARE(char *) switch_escape_char(switch_memory_pool_t *pool, char *in, char *delim, char esc); /*! \brief Create a set of file descriptors to poll Modified: freeswitch/branches/mishehu/src/mod/applications/mod_bridgecall/mod_bridgecall.c ============================================================================== --- freeswitch/branches/mishehu/src/mod/applications/mod_bridgecall/mod_bridgecall.c (original) +++ freeswitch/branches/mishehu/src/mod/applications/mod_bridgecall/mod_bridgecall.c Sun Oct 8 20:25:31 2006 @@ -51,22 +51,31 @@ timelimit = atoi(var); } + if ((var = switch_channel_get_variable(caller_channel, "no_media"))) { + switch_channel_set_flag(caller_channel, CF_NOMEDIA); + } + if (switch_ivr_originate(session, &peer_session, &cause, data, timelimit, NULL, NULL, NULL, NULL) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot Create Outgoing Channel!\n"); /* Hangup the channel with the cause code from the failed originate.*/ switch_channel_hangup(caller_channel, cause); return; } else { - switch_ivr_multi_threaded_bridge(session, peer_session, NULL, NULL, NULL); + if (switch_channel_test_flag(caller_channel, CF_NOMEDIA)) { + switch_ivr_signal_bridge(session, peer_session); + } else { + switch_ivr_multi_threaded_bridge(session, peer_session, NULL, NULL, NULL); + } } } - static const switch_application_interface_t bridge_application_interface = { /*.interface_name */ "bridge", - /*.application_function */ audio_bridge_function + /*.application_function */ audio_bridge_function, + /* long_desc */ "Bridge the audio between two sessions", + /* short_desc */ "Bridge Audio", + /* syntax */ "<channel_url>", }; - static const switch_loadable_module_interface_t mod_bridgecall_module_interface = { /*.module_name = */ modname, Modified: freeswitch/branches/mishehu/src/mod/applications/mod_commands/mod_commands.c ============================================================================== --- freeswitch/branches/mishehu/src/mod/applications/mod_commands/mod_commands.c (original) +++ freeswitch/branches/mishehu/src/mod/applications/mod_commands/mod_commands.c Sun Oct 8 20:25:31 2006 @@ -34,6 +34,16 @@ #include <switch.h> static const char modname[] = "mod_commands"; +static switch_api_interface_t ctl_api_interface; +static switch_api_interface_t uuid_bridge_api_interface; +static switch_api_interface_t status_api_interface; +static switch_api_interface_t show_api_interface; +static switch_api_interface_t pause_api_interface; +static switch_api_interface_t transfer_api_interface; +static switch_api_interface_t load_api_interface; +static switch_api_interface_t reload_api_interface; +static switch_api_interface_t kill_api_interface; +static switch_api_interface_t originate_api_interface; static switch_status_t status_function(char *cmd, switch_core_session_t *session, switch_stream_handle_t *stream) { @@ -94,7 +104,7 @@ uint32_t arg = 0; if (switch_strlen_zero(data)) { - stream->write_function(stream, "USAGE: fsctl [hupall|pause|resume|shutdown]\n"); + stream->write_function(stream, "USAGE: %s\n", ctl_api_interface.syntax); return SWITCH_STATUS_SUCCESS; } @@ -114,7 +124,7 @@ arg = 0; switch_core_session_ctl(SCSC_SHUTDOWN, &arg); } else { - stream->write_function(stream, "INVALID COMMAND [%s]\n", argv[0]); + stream->write_function(stream, "INVALID COMMAND [%s]\nUSAGE: fsctl [hupall|pause|resume|shutdown]\n", argv[0]); goto end; } @@ -136,6 +146,10 @@ if (session) { return SWITCH_STATUS_FALSE; } + if (switch_strlen_zero(mod)) { + stream->write_function(stream, "USAGE: %s\n", load_api_interface.syntax); + return SWITCH_STATUS_SUCCESS; + } switch_loadable_module_load_module((char *) SWITCH_GLOBAL_dirs.mod_dir, (char *) mod); stream->write_function(stream, "OK\n"); return SWITCH_STATUS_SUCCESS; @@ -167,7 +181,9 @@ return SWITCH_STATUS_FALSE; } - if (dest && (session = switch_core_session_locate(dest))) { + if (!dest) { + stream->write_function(stream, "USAGE: %s\n", kill_api_interface.syntax); + } else if ((session = switch_core_session_locate(dest))) { switch_channel_t *channel = switch_core_session_get_channel(session); switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); switch_core_session_rwunlock(session); @@ -193,7 +209,7 @@ argc = switch_separate_string(cmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); if (argc < 2 || argc > 4) { - stream->write_function(stream, "USAGE: transfer <uuid> <dest-exten> [<dialplan>] [<context>]\n"); + stream->write_function(stream, "USAGE: %s\n", transfer_api_interface.syntax); } else { char *uuid = argv[0]; char *dest = argv[1]; @@ -232,9 +248,11 @@ argc = switch_separate_string(cmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); if (argc != 2) { - stream->write_function(stream, "Invalid Parameters\nUsage: uuid_bridge <uuid> <other_uuid>\n"); + stream->write_function(stream, "USAGE: %s\n", uuid_bridge_api_interface.syntax); } else { - switch_ivr_uuid_bridge(argv[0], argv[1]); + if (switch_ivr_uuid_bridge(argv[0], argv[1]) != SWITCH_STATUS_SUCCESS) { + stream->write_function(stream, "Invalid uuid\n"); + } } return SWITCH_STATUS_SUCCESS; @@ -255,7 +273,7 @@ argc = switch_separate_string(cmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); if (argc < 2) { - stream->write_function(stream, "USAGE: pause <uuid> <on|off>\n"); + stream->write_function(stream, "USAGE: %s\n", pause_api_interface.syntax); } else { char *uuid = argv[0]; char *dest = argv[1]; @@ -293,13 +311,13 @@ return SWITCH_STATUS_SUCCESS; } - if (switch_strlen_zero(cmd)) { - stream->write_function(stream, "Usage: originate <call url> <exten> [<dialplan>] [<context>] [<cid_name>] [<cid_num>] [<timeout_sec>]\n"); + argc = switch_separate_string(cmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); + + if (switch_strlen_zero(cmd) || argc < 2 || argc > 7) { + stream->write_function(stream, "USAGE: %s\n", originate_api_interface.syntax); return SWITCH_STATUS_SUCCESS; } - argc = switch_separate_string(cmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); - for(x = 0; x < argc; x++) { if (!strcasecmp(argv[x], "undef")) { argv[x] = NULL; @@ -325,11 +343,6 @@ timeout = atoi(argv[6]); } - if (!aleg || !exten) { - stream->write_function(stream, "Invalid Arguements\n"); - return SWITCH_STATUS_SUCCESS; - } - if (switch_ivr_originate(NULL, &caller_session, &cause, aleg, timeout, &noop_state_handler, cid_name, cid_num, NULL) != SWITCH_STATUS_SUCCESS) { stream->write_function(stream, "Cannot Create Outgoing Channel! [%s]\n", aleg); return SWITCH_STATUS_SUCCESS; @@ -339,7 +352,6 @@ assert(caller_channel != NULL); switch_channel_clear_state_handler(caller_channel, NULL); - if (*exten == '&') { switch_caller_extension_t *extension = NULL; char *app_name = switch_core_session_strdup(caller_session, (exten + 1)); @@ -372,6 +384,7 @@ switch_stream_handle_t *stream; char *http; uint32_t count; + int print_title; }; static int show_callback(void *pArg, int argc, char **argv, char **columnNames){ @@ -379,7 +392,7 @@ int x; - if (holder->count == 0) { + if (holder->print_title && holder->count == 0) { if (holder->http) { holder->stream->write_function(holder->stream, "\n<tr>"); } @@ -420,6 +433,7 @@ char *errmsg; switch_core_db_t *db = switch_core_db_handle(); struct holder holder = {0}; + int help = 0; if (session) { return SWITCH_STATUS_FALSE; @@ -429,13 +443,17 @@ holder.http = switch_event_get_header(stream->event, "http-host"); } + holder.print_title = 1; + if (!cmd) { sprintf (sql, "select * from interfaces"); } - else if ( !strcmp(cmd,"codec") || !strcmp(cmd,"application") || - !strcmp(cmd,"api") || !strcmp(cmd,"dialplan") || + else if ( !strcmp(cmd,"codec") || !strcmp(cmd,"dialplan") || !strcmp(cmd,"file") || !strcmp(cmd,"timer") ) { + sprintf (sql, "select type, name from interfaces where type = '%s'", cmd); + } + else if (!strcmp(cmd,"application") || !strcmp(cmd,"api")) { sprintf (sql, "select * from interfaces where type = '%s'", cmd); } else if ( !strcmp(cmd,"calls")) { @@ -444,10 +462,19 @@ else if ( !strcmp(cmd,"channels")) { sprintf (sql, "select * from channels"); } + else if (!strncasecmp(cmd, "help", 4)) { + char *cmdname = NULL; + help = 1; + holder.print_title = 0; + if ((cmdname = strchr(cmd, ' ')) != 0) { + *cmdname++ = '\0'; + sprintf (sql, "select name, description, syntax from interfaces where type = 'api' and name = '%s'", cmdname); + } else { + sprintf (sql, "select name, description, syntax from interfaces where type = 'api'"); + } + } else { - stream->write_function(stream, "Invalid interfaces type!\n"); - stream->write_function(stream, "Example:\n"); - stream->write_function(stream, "show <blank>|codec|application|api|dialplan|file|timer|calls|channels\n"); + stream->write_function(stream, "USAGE: %s\n", show_api_interface.syntax); return SWITCH_STATUS_SUCCESS; } @@ -464,11 +491,13 @@ holder.stream->write_function(holder.stream, "</table>"); } - if (errmsg) { stream->write_function(stream, "SQL ERR [%s]\n",errmsg); switch_core_db_free(errmsg); errmsg = NULL; + } else if (help) { + if (holder.count == 0) + stream->write_function(stream, "No such command.\n"); } else { stream->write_function(stream, "\n%u total.\n", holder.count); } @@ -477,19 +506,46 @@ return SWITCH_STATUS_SUCCESS; } +static switch_status_t help_function(char *cmd, switch_core_session_t *session, switch_stream_handle_t *stream) +{ + char showcmd[1024]; + int all = 0; + if (switch_strlen_zero(cmd)) { + sprintf (showcmd, "help"); + all = 1; + } else { + sprintf (showcmd, "help %s", cmd); + } + if (all) + stream->write_function(stream, "\nValid Commands:\n\n"); + show_function(showcmd, session, stream); + if (all) + stream->write_function(stream, "version\n" "shutdown - stop the program\n"); + return SWITCH_STATUS_SUCCESS; +} +static switch_api_interface_t help_api_interface = { + /*.interface_name */ "help", + /*.desc */ "Show help for all the api commands", + /*.function */ help_function, + /*.syntax */ "help", + /*.next */ NULL +}; + static switch_api_interface_t ctl_api_interface = { /*.interface_name */ "fsctl", /*.desc */ "control messages", /*.function */ ctl_function, - /*.next */ + /*.syntax */ "fsctl [hupall|pause|resume|shutdown]", + /*.next */ &help_api_interface }; static switch_api_interface_t uuid_bridge_api_interface = { /*.interface_name */ "uuid_bridge", /*.desc */ "uuid_bridge", /*.function */ uuid_bridge_function, + /*.syntax */ "uuid_bridge <uuid> <other_uuid>", /*.next */ &ctl_api_interface }; @@ -497,6 +553,7 @@ /*.interface_name */ "status", /*.desc */ "status", /*.function */ status_function, + /*.syntax */ "status", /*.next */ &uuid_bridge_api_interface }; @@ -504,6 +561,7 @@ /*.interface_name */ "show", /*.desc */ "Show", /*.function */ show_function, + /*.syntax */ "show <blank>|codec|application|api|dialplan|file|timer|calls|channels", /*.next */ &status_api_interface }; @@ -511,6 +569,7 @@ /*.interface_name */ "pause", /*.desc */ "Pause", /*.function */ pause_function, + /*.syntax */ "pause <uuid> <on|off>", /*.next */ &show_api_interface }; @@ -518,6 +577,7 @@ /*.interface_name */ "transfer", /*.desc */ "Transfer", /*.function */ transfer_function, + /*.syntax */ "transfer <uuid> <dest-exten> [<dialplan>] [<context>]", /*.next */ &pause_api_interface }; @@ -525,6 +585,7 @@ /*.interface_name */ "load", /*.desc */ "Load Module", /*.function */ load_function, + /*.syntax */ "load <mod_name>", /*.next */ &transfer_api_interface }; @@ -532,14 +593,16 @@ /*.interface_name */ "reloadxml", /*.desc */ "Reload XML", /*.function */ reload_function, + /*.syntax */ "reloadxml", /*.next */ &load_api_interface, }; -static switch_api_interface_t commands_api_interface = { +static switch_api_interface_t kill_api_interface = { /*.interface_name */ "killchan", /*.desc */ "Kill Channel", /*.function */ kill_function, + /*.syntax */ "killchan <uuid>", /*.next */ &reload_api_interface }; @@ -547,7 +610,8 @@ /*.interface_name */ "originate", /*.desc */ "Originate a Call", /*.function */ originate_function, - /*.next */ &commands_api_interface + /*.syntax */ "originate <call url> <exten>|&<application_name>(<app_args>) [<dialplan>] [<context>] [<cid_name>] [<cid_num>] [<timeout_sec>]", + /*.next */ &kill_api_interface }; Modified: freeswitch/branches/mishehu/src/mod/applications/mod_conference/mod_conference.c ============================================================================== --- freeswitch/branches/mishehu/src/mod/applications/mod_conference/mod_conference.c (original) +++ freeswitch/branches/mishehu/src/mod/applications/mod_conference/mod_conference.c Sun Oct 8 20:25:31 2006 @@ -34,6 +34,7 @@ static const char modname[] = "mod_conference"; static const char global_app_name[] = "conference"; static char *global_cf_name = "conference.conf"; +static switch_api_interface_t conf_api_interface; /* Size to allocate for audio buffers */ #define CONF_BUFFER_SIZE 1024 * 128 @@ -1317,29 +1318,6 @@ char *lbuf = NULL; switch_status_t status = SWITCH_STATUS_SUCCESS; char *http = NULL; - char *topusage = "Available Commands:\n" - "--------------------------------------------------------------------------------\n" - "conference commands\n" - "conference list [delim <string>]\n" - "conference <confname> list [delim <string>]\n" - "conference <confname> energy <member_id> [<newval>]\n" - "conference <confname> volume_in <member_id> [<newval>]\n" - "conference <confname> volume_out <member_id> [<newval>]\n" - "conference <confname> play <file_path> [<member_id>]\n" - "conference <confname> say <text>\n" - "conference <confname> saymember <member_id><text>\n" - "conference <confname> stop <[current|all]> [<member_id>]\n" - "conference <confname> kick <member_id>\n" - "conference <confname> mute <member_id>\n" - "conference <confname> unmute <member_id>\n" - "conference <confname> deaf <member_id>\n" - "conference <confname> undef <member_id>\n" - "conference <confname> relate <member_id> <other_member_id> [nospeak|nohear]\n" - "conference <confname> lock\n" - "conference <confname> unlock\n" - "conference <confname> dial <endpoint_module_name>/<destination>\n" - "conference <confname> transfer <member_id> <conference_name>\n" - ; if (session) { return SWITCH_STATUS_FALSE; @@ -1355,7 +1333,7 @@ } if (!buf) { - stream->write_function(stream, topusage); + stream->write_function(stream, "%s", conf_api_interface.syntax); return status; } @@ -1370,7 +1348,7 @@ /* Figure out what conference */ if (argc) { if (!strcasecmp(argv[0], "commands")) { - stream->write_function(stream, topusage); + stream->write_function(stream, "%s", conf_api_interface.syntax); goto done; } else if (!strcasecmp(argv[0], "list")) { switch_hash_index_t *hi; @@ -2020,7 +1998,7 @@ goto done; } } else { - stream->write_function(stream, topusage); + stream->write_function(stream, "USAGE: %s\n", conf_api_interface.syntax); } } else { stream->write_function(stream, "Memory Error!\n"); @@ -2665,7 +2643,28 @@ static switch_api_interface_t conf_api_interface = { /*.interface_name */ "conference", /*.desc */ "Conference", - /*.function */ conf_function + /*.function */ conf_function, + /*.syntax */ + "conference commands\n" + "conference list [delim <string>]\n" + "conference <confname> list [delim <string>]\n" + "conference <confname> energy <member_id> [<newval>]\n" + "conference <confname> volume_in <member_id> [<newval>]\n" + "conference <confname> volume_out <member_id> [<newval>]\n" + "conference <confname> play <file_path> [<member_id>]\n" + "conference <confname> say <text>\n" + "conference <confname> saymember <member_id><text>\n" + "conference <confname> stop <[current|all]> [<member_id>]\n" + "conference <confname> kick <member_id>\n" + "conference <confname> mute <member_id>\n" + "conference <confname> unmute <member_id>\n" + "conference <confname> deaf <member_id>\n" + "conference <confname> undef <member_id>\n" + "conference <confname> relate <member_id> <other_member_id> [nospeak|nohear]\n" + "conference <confname> lock\n" + "conference <confname> unlock\n" + "conference <confname> dial <endpoint_module_name>/<destination>\n" + "conference <confname> transfer <member_id> <conference_name>\n", /*.next */ }; Modified: freeswitch/branches/mishehu/src/mod/applications/mod_dptools/mod_dptools.c ============================================================================== --- freeswitch/branches/mishehu/src/mod/applications/mod_dptools/mod_dptools.c (original) +++ freeswitch/branches/mishehu/src/mod/applications/mod_dptools/mod_dptools.c Sun Oct 8 20:25:31 2006 @@ -33,7 +33,6 @@ static const char modname[] = "mod_dptools"; - static void transfer_function(switch_core_session_t *session, char *data) { int argc; @@ -133,6 +132,7 @@ /*.interface_name */ "strftime", /*.desc */ "strftime", /*.function */ strftime_api_function, + /*.syntax */ "strftime <format_string>", /*.next */ NULL }; Modified: freeswitch/branches/mishehu/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c ============================================================================== --- freeswitch/branches/mishehu/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c (original) +++ freeswitch/branches/mishehu/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c Sun Oct 8 20:25:31 2006 @@ -174,17 +174,16 @@ char *cmd = switch_core_session_strdup(session, field + 1); char *arg; + SWITCH_STANDARD_STREAM(stream); + if (cmd) { if ((arg = strchr(cmd, ' '))) { *arg++ = '\0'; } - stream.data = retbuf; - stream.end = stream.data; - stream.data_size = sizeof(retbuf); - stream.write_function = switch_console_stream_write; if (switch_api_execute(cmd, arg, session, &stream) == SWITCH_STATUS_SUCCESS) { field_data = retbuf; } + free(stream.data); } } else { field_data = switch_caller_get_field_by_name(caller_profile, field); Modified: freeswitch/branches/mishehu/src/mod/endpoints/mod_dingaling/mod_dingaling.c ============================================================================== --- freeswitch/branches/mishehu/src/mod/endpoints/mod_dingaling/mod_dingaling.c (original) +++ freeswitch/branches/mishehu/src/mod/endpoints/mod_dingaling/mod_dingaling.c Sun Oct 8 20:25:31 2006 @@ -1071,6 +1071,7 @@ /*.interface_name */ "dl_logout", /*.desc */ "DingaLing Logout", /*.function */ dl_logout, + /*.syntax */ "dl_logout <profile_name>", /*.next */ NULL }; @@ -1078,6 +1079,7 @@ /*.interface_name */ "dl_login", /*.desc */ "DingaLing Login", /*.function */ dl_login, + /*.syntax */ "dl_login <profile_name>", /*.next */ &logout_api_interface }; @@ -1398,7 +1400,7 @@ } if (!profile_name) { - stream->write_function(stream, "NO PROFILE NAME SPECIFIED\n"); + stream->write_function(stream, "USAGE: %s\n", logout_api_interface.syntax); return SWITCH_STATUS_SUCCESS; } @@ -1424,14 +1426,14 @@ return SWITCH_STATUS_FALSE; } - if (switch_strlen_zero(arg)) { - stream->write_function(stream, "FAIL\n"); - return SWITCH_STATUS_SUCCESS; - } - myarg = strdup(arg); argc = switch_separate_string(myarg, ';', argv, (sizeof(argv) / sizeof(argv[0]))); + + if (switch_strlen_zero(arg) || argc != 1) { + stream->write_function(stream, "USAGE: %s\n", login_api_interface.syntax); + return SWITCH_STATUS_SUCCESS; + } if (!strncasecmp(argv[0], "profile=", 8)) { char *profile_name = argv[0] + 8; Modified: freeswitch/branches/mishehu/src/mod/endpoints/mod_portaudio/mod_portaudio.c ============================================================================== --- freeswitch/branches/mishehu/src/mod/endpoints/mod_portaudio/mod_portaudio.c (original) +++ freeswitch/branches/mishehu/src/mod/endpoints/mod_portaudio/mod_portaudio.c Sun Oct 8 20:25:31 2006 @@ -440,6 +440,7 @@ /*.interface_name */ "padtmf", /*.desc */ "PortAudio Dial DTMF", /*.function */ send_dtmf, + /*.syntax */ "padtmf <callid> <dtmf_digits>", /*.next */ NULL }; @@ -447,6 +448,7 @@ /*.interface_name */ "paoffhook", /*.desc */ "PortAudio Answer Call", /*.function */ answer_call, + /*.syntax */ "paoffhook", /*.next */ &send_dtmf_interface }; @@ -454,6 +456,7 @@ /*.interface_name */ "painfo", /*.desc */ "PortAudio Call Info", /*.function */ call_info, + /*.syntax */ "painfo", /*.next */ &answer_call_interface }; @@ -461,6 +464,7 @@ /*.interface_name */ "pahup", /*.desc */ "PortAudio Hangup Call", /*.function */ hup_call, + /*.syntax */ "pahup [call_number]", /*.next */ &channel_info_interface }; @@ -468,6 +472,7 @@ /*.interface_name */ "pacall", /*.desc */ "PortAudio Call", /*.function */ place_call, + /*.syntax */ "pacall <exten>", /*.next */ &channel_hup_interface }; @@ -832,11 +837,9 @@ } if (!dest) { - stream->write_function(stream, "Usage: pacall <exten>"); + stream->write_function(stream, "Usage: %s\n", channel_api_interface.syntax); return SWITCH_STATUS_FALSE; } - - stream->write_function(stream, "FAIL"); if ((session = switch_core_session_request(&channel_endpoint_interface, NULL)) != 0) { struct private_object *tech_pvt; @@ -873,6 +876,8 @@ switch_channel_set_state(channel, CS_INIT); switch_core_session_thread_launch(tech_pvt->session); stream->write_function(stream, "SUCCESS:%s:%s", tech_pvt->call_id, switch_core_session_get_uuid(tech_pvt->session)); + } else { + stream->write_function(stream, "FAIL\n"); } } return status; @@ -931,16 +936,17 @@ { struct private_object *tech_pvt = NULL; switch_channel_t *channel = NULL; - char *dtmf; + char *dtmf = NULL; if (session) { return SWITCH_STATUS_FALSE; } - if ((dtmf = strchr(callid, ' ')) != 0) { - *dtmf++ = '\0'; + if (switch_strlen_zero(callid) || (dtmf = strchr(callid, ' ')) == 0) { + stream->write_function(stream, "USAGE: %s\n", send_dtmf_interface.syntax); + return SWITCH_STATUS_SUCCESS; } else { - dtmf = ""; + *dtmf++ = '\0'; } if ((tech_pvt = switch_core_hash_find(globals.call_hash, callid)) != 0) { Modified: freeswitch/branches/mishehu/src/mod/endpoints/mod_sofia/Makefile ============================================================================== --- freeswitch/branches/mishehu/src/mod/endpoints/mod_sofia/Makefile (original) +++ freeswitch/branches/mishehu/src/mod/endpoints/mod_sofia/Makefile Sun Oct 8 20:25:31 2006 @@ -1,6 +1,6 @@ OS_ARCH := $(subst /,_,$(shell uname -s | sed /\ /s//_/)) VERSION = sofia-sip-1.12 -TARBALL = sofia-sip-1.12.3.tar.gz +TARBALL = sofia-sip-1.12.3.2.tar.gz CFLAGS += -I. -I$(PREFIX)/include/$(VERSION) LDFLAGS += -lsofia-sip-ua LINKER=$(CC) Modified: freeswitch/branches/mishehu/src/mod/endpoints/mod_sofia/mod_sofia.c ============================================================================== --- freeswitch/branches/mishehu/src/mod/endpoints/mod_sofia/mod_sofia.c (original) +++ freeswitch/branches/mishehu/src/mod/endpoints/mod_sofia/mod_sofia.c Sun Oct 8 20:25:31 2006 @@ -62,6 +62,7 @@ #define MULTICAST_EVENT "multicast::event" #define SOFIA_REPLACES_HEADER "_sofia_replaces_" + #include <sofia-sip/nua.h> #include <sofia-sip/sip_status.h> #include <sofia-sip/sdp.h> @@ -131,7 +132,10 @@ TFLAG_TIMER = (1 << 14), TFLAG_READY = (1 << 15), TFLAG_REINVITE = (1 << 16), - TFLAG_REFER = (1 << 17) + TFLAG_REFER = (1 << 17), + TFLAG_NOHUP = (1 << 18), + TFLAG_XFER = (1 << 19), + TFLAG_NOMEDIA = (1 << 20) } TFLAGS; static struct { @@ -250,11 +254,14 @@ char *local_sdp_str; char *dest; char *key; + char *xferto; + char *kick; unsigned long rm_rate; switch_payload_t pt; switch_mutex_t *flag_mutex; switch_payload_t te; nua_handle_t *nh; + nua_handle_t *nh2; su_home_t *home; sip_contact_t *contact; }; @@ -594,8 +601,10 @@ char buf[1024]; switch_time_t now = switch_time_now(); - assert(tech_pvt != NULL); - + if (switch_test_flag(tech_pvt, TFLAG_NOMEDIA)) { + return; + } + snprintf(buf, sizeof(buf), "v=0\n" "o=FreeSWITCH %d%"APR_TIME_T_FMT" %d%"APR_TIME_T_FMT" IN IP4 %s\n" @@ -653,6 +662,11 @@ static void tech_set_codecs(private_object_t *tech_pvt) { + + if (switch_test_flag(tech_pvt, TFLAG_NOMEDIA)) { + return; + } + if (tech_pvt->num_codecs) { return; } @@ -734,11 +748,11 @@ char *ip = tech_pvt->profile->rtpip; switch_port_t sdp_port; char *err; - - if (tech_pvt->adv_sdp_audio_port) { + + if (switch_test_flag(tech_pvt, TFLAG_NOMEDIA) || tech_pvt->adv_sdp_audio_port) { return SWITCH_STATUS_SUCCESS; } - + tech_pvt->local_sdp_audio_ip = ip; tech_pvt->local_sdp_audio_port = switch_rtp_request_port(); sdp_port = tech_pvt->local_sdp_audio_port; @@ -787,6 +801,8 @@ caller_profile = switch_channel_get_caller_profile(channel); + + if ((tech_pvt->from_str = switch_core_db_mprintf("\"%s\" <sip:%s@%s>", (char *) caller_profile->caller_id_name, (char *) caller_profile->caller_id_number, @@ -794,21 +810,75 @@ ))) { char *rep = switch_channel_get_variable(channel, SOFIA_REPLACES_HEADER); - + tech_choose_port(tech_pvt); set_local_sdp(tech_pvt); + switch_set_flag_locked(tech_pvt, TFLAG_READY); - tech_pvt->nh = nua_handle(tech_pvt->profile->nua, NULL, + if (!tech_pvt->nh) { + tech_pvt->nh = nua_handle(tech_pvt->profile->nua, NULL, + SIPTAG_TO_STR(tech_pvt->dest), + SIPTAG_FROM_STR(tech_pvt->from_str), + SIPTAG_CONTACT_STR(tech_pvt->profile->url), + TAG_END()); + + tech_pvt->sofia_private.session = session; + nua_handle_bind(tech_pvt->nh, &tech_pvt->sofia_private); + + } + + nua_invite(tech_pvt->nh, + SOATAG_USER_SDP_STR(tech_pvt->local_sdp_str), + SOATAG_RTP_SORT(SOA_RTP_SORT_REMOTE), + SOATAG_RTP_SELECT(SOA_RTP_SELECT_ALL), + TAG_IF(rep, SIPTAG_REPLACES_STR(rep)), + TAG_END()); + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Memory Error!\n"); + } + +} + + + +static void do_xfer_invite(switch_core_session_t *session) +{ + private_object_t *tech_pvt; + switch_channel_t *channel = NULL; + switch_caller_profile_t *caller_profile; + + channel = switch_core_session_get_channel(session); + assert(channel != NULL); + + tech_pvt = (private_object_t *) switch_core_session_get_private(session); + assert(tech_pvt != NULL); + + caller_profile = switch_channel_get_caller_profile(channel); + + + + if ((tech_pvt->from_str = switch_core_db_mprintf("\"%s\" <sip:%s@%s>", + (char *) caller_profile->caller_id_name, + (char *) caller_profile->caller_id_number, + tech_pvt->profile->sipip + ))) { + + char *rep = switch_channel_get_variable(channel, SOFIA_REPLACES_HEADER); + + + tech_pvt->nh2 = nua_handle(tech_pvt->profile->nua, NULL, SIPTAG_TO_STR(tech_pvt->dest), SIPTAG_FROM_STR(tech_pvt->from_str), SIPTAG_CONTACT_STR(tech_pvt->profile->url), TAG_END()); + - tech_pvt->sofia_private.session = session; - nua_handle_bind(tech_pvt->nh, &tech_pvt->sofia_private); - - nua_invite(tech_pvt->nh, + nua_handle_bind(tech_pvt->nh2, &tech_pvt->sofia_private); + + + + nua_invite(tech_pvt->nh2, SOATAG_USER_SDP_STR(tech_pvt->local_sdp_str), SOATAG_RTP_SORT(SOA_RTP_SORT_REMOTE), SOATAG_RTP_SELECT(SOA_RTP_SELECT_ALL), @@ -829,6 +899,7 @@ { private_object_t *tech_pvt; switch_channel_t *channel = NULL; + char *sdp; channel = switch_core_session_get_channel(session); assert(channel != NULL); @@ -841,6 +912,16 @@ switch_channel_set_variable(channel, "endpoint_disposition", "INIT"); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "SOFIA INIT\n"); + if (switch_channel_test_flag(channel, CF_NOMEDIA)) { + switch_set_flag_locked(tech_pvt, TFLAG_NOMEDIA); + } + + if ((sdp = switch_channel_get_variable(channel, SWITCH_L_SDP_VARIABLE))) { + tech_pvt->local_sdp_str = switch_core_session_strdup(session, sdp); + switch_set_flag(tech_pvt, TFLAG_NOMEDIA); + switch_channel_set_flag(channel, CF_NOMEDIA); + } + if (switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) { do_invite(session); } @@ -937,6 +1018,7 @@ static switch_status_t sofia_on_hangup(switch_core_session_t *session) { + switch_core_session_t *asession; private_object_t *tech_pvt; switch_channel_t *channel = NULL; switch_call_cause_t cause; @@ -958,6 +1040,13 @@ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Channel %s hanging up, cause: %s\n", switch_channel_get_name(channel), switch_channel_cause2str(cause), sip_cause); + + if (tech_pvt->kick && (asession = switch_core_session_locate(tech_pvt->kick))) { + switch_channel_t *a_channel = switch_core_session_get_channel(asession); + switch_channel_hangup(a_channel, switch_channel_get_cause(channel)); + switch_core_session_rwunlock(asession); + } + if (tech_pvt->nh) { if (!switch_test_flag(tech_pvt, TFLAG_BYE)) { if (switch_test_flag(tech_pvt, TFLAG_ANS)) { @@ -1088,6 +1177,9 @@ channel = switch_core_session_get_channel(tech_pvt->session); assert(channel != NULL); + if (switch_test_flag(tech_pvt, TFLAG_NOMEDIA)) { + return SWITCH_STATUS_SUCCESS; + } if (switch_rtp_ready(tech_pvt->rtp_session) && !switch_test_flag(tech_pvt, TFLAG_REINVITE)) { return SWITCH_STATUS_SUCCESS; @@ -1168,7 +1260,8 @@ { private_object_t *tech_pvt; switch_channel_t *channel = NULL; - + char *sdp; + assert(session != NULL); channel = switch_core_session_get_channel(session); @@ -1177,13 +1270,25 @@ tech_pvt = (private_object_t *) switch_core_session_get_private(session); assert(tech_pvt != NULL); + if ((sdp = switch_channel_get_variable(channel, SWITCH_L_SDP_VARIABLE))) { + tech_pvt->local_sdp_str = switch_core_session_strdup(session, sdp); + switch_set_flag(tech_pvt, TFLAG_NOMEDIA); + switch_channel_set_flag(channel, CF_NOMEDIA); + } + + if (!switch_test_flag(tech_pvt, TFLAG_ANS) && !switch_channel_test_flag(channel, CF_OUTBOUND)) { switch_set_flag_locked(tech_pvt, TFLAG_ANS); + + tech_choose_port(tech_pvt); set_local_sdp(tech_pvt); activate_rtp(tech_pvt); + if (tech_pvt->nh) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Local SDP:\n%s\n", tech_pvt->local_sdp_str); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Local SDP %s:\n%s\n", + switch_channel_get_name(channel), + tech_pvt->local_sdp_str); nua_respond(tech_pvt->nh, SIP_200_OK, SOATAG_USER_SDP_STR(tech_pvt->local_sdp_str), SOATAG_AUDIO_AUX("cn telephone-event"), @@ -1203,10 +1308,6 @@ switch_channel_t *channel = NULL; int payload = 0; - //switch_time_t now, started = switch_time_now(), last_act = switch_time_now(); - //unsigned int elapsed; - //uint32_t hard_timeout = 60000 * 3; - channel = switch_core_session_get_channel(session); assert(channel != NULL); @@ -1246,7 +1347,6 @@ while (!switch_test_flag(tech_pvt, TFLAG_BYE) && switch_test_flag(tech_pvt, TFLAG_IO) && tech_pvt->read_frame.datalen == 0) { - //now = switch_time_now(); tech_pvt->read_frame.flags = SFF_NONE; status = switch_rtp_zerocopy_read_frame(tech_pvt->rtp_session, &tech_pvt->read_frame); @@ -1448,6 +1548,34 @@ switch (msg->message_id) { case SWITCH_MESSAGE_INDICATE_BRIDGE: + + if (switch_test_flag(tech_pvt, TFLAG_XFER)) { + switch_clear_flag_locked(tech_pvt, TFLAG_XFER); + if (msg->pointer_arg) { + switch_core_session_t *asession, *bsession = msg->pointer_arg; + + if ((asession = switch_core_session_locate(tech_pvt->xferto))) { + private_object_t *a_tech_pvt = switch_core_session_get_private(asession); + private_object_t *b_tech_pvt = switch_core_session_get_private(bsession); + + switch_set_flag_locked(a_tech_pvt, TFLAG_REINVITE); + a_tech_pvt->remote_sdp_audio_ip = switch_core_session_strdup(asession, b_tech_pvt->remote_sdp_audio_ip); + a_tech_pvt->remote_sdp_audio_port = b_tech_pvt->remote_sdp_audio_port; + a_tech_pvt->local_sdp_audio_ip = switch_core_session_strdup(asession, b_tech_pvt->local_sdp_audio_ip); + a_tech_pvt->local_sdp_audio_port = b_tech_pvt->local_sdp_audio_port; + activate_rtp(a_tech_pvt); + + b_tech_pvt->kick = switch_core_session_strdup(bsession, tech_pvt->xferto); + + + switch_core_session_rwunlock(asession); + } + + + msg->pointer_arg = NULL; + return SWITCH_STATUS_FALSE; + } + } if (tech_pvt->rtp_session && switch_test_flag(tech_pvt, TFLAG_TIMER)) { switch_rtp_clear_flag(tech_pvt->rtp_session, SWITCH_RTP_FLAG_USE_TIMER); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "De-activate timed RTP!\n"); @@ -1462,17 +1590,26 @@ case SWITCH_MESSAGE_INDICATE_PROGRESS: { struct private_object *tech_pvt; switch_channel_t *channel = NULL; - + char *sdp; + channel = switch_core_session_get_channel(session); assert(channel != NULL); tech_pvt = switch_core_session_get_private(session); assert(tech_pvt != NULL); - + if (!switch_test_flag(tech_pvt, TFLAG_EARLY_MEDIA)) { switch_set_flag_locked(tech_pvt, TFLAG_EARLY_MEDIA); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Asked to send early media by %s\n", msg->from); + + if ((sdp = switch_channel_get_variable(channel, SWITCH_L_SDP_VARIABLE))) { + tech_pvt->local_sdp_str = switch_core_session_strdup(session, sdp); + switch_set_flag(tech_pvt, TFLAG_NOMEDIA); + switch_channel_set_flag(channel, CF_NOMEDIA); + } + + /* Transmit 183 Progress with SDP */ tech_choose_port(tech_pvt); set_local_sdp(tech_pvt); @@ -1539,7 +1676,7 @@ sofia_profile_t *profile; switch_caller_profile_t *caller_profile = NULL; private_object_t *tech_pvt = NULL; - switch_channel_t *channel; + switch_channel_t *nchannel; char *host; *new_session = NULL; @@ -1586,19 +1723,25 @@ tech_pvt->dest = switch_core_session_alloc(nsession, strlen(dest) + 5); snprintf(tech_pvt->dest, strlen(dest) + 5, "sip:%s", dest); } + attach_private(nsession, profile, tech_pvt, dest); - channel = switch_core_session_get_channel(nsession); - attach_private(nsession, profile, tech_pvt, dest); + nchannel = switch_core_session_get_channel(nsession); caller_profile = switch_caller_profile_clone(nsession, outbound_profile); - switch_channel_set_caller_profile(channel, caller_profile); - switch_channel_set_flag(channel, CF_OUTBOUND); + switch_channel_set_caller_profile(nchannel, caller_profile); + switch_channel_set_flag(nchannel, CF_OUTBOUND); switch_set_flag_locked(tech_pvt, TFLAG_OUTBOUND); - switch_channel_set_state(channel, CS_INIT); - switch_channel_set_variable(channel, "endpoint_disposition", "OUTBOUND"); + switch_channel_set_state(nchannel, CS_INIT); + switch_channel_set_variable(nchannel, "endpoint_disposition", "OUTBOUND"); *new_session = nsession; status = SWITCH_STATUS_SUCCESS; if (session) { + char *val; + switch_channel_t *channel = switch_core_session_get_channel(session); switch_ivr_transfer_variable(session, nsession, SOFIA_REPLACES_HEADER); + + if (switch_channel_test_flag(channel, CF_NOMEDIA) && (val = switch_channel_get_variable(channel, SWITCH_R_SDP_VARIABLE))) { + switch_channel_set_variable(nchannel, SWITCH_L_SDP_VARIABLE, val); + } } done: @@ -1723,7 +1866,6 @@ { char const *l_sdp = NULL, *r_sdp = NULL; - //int audio = nua_active_inactive, video = nua_active_inactive, chat = nua_active_inactive; int offer_recv = 0, answer_recv = 0, offer_sent = 0, answer_sent = 0; int ss_state = nua_callstate_init; switch_channel_t *channel = NULL; @@ -1758,6 +1900,7 @@ if (r_sdp) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Remote SDP:\n%s\n", r_sdp); tech_pvt->remote_sdp_str = switch_core_session_strdup(session, (char *)r_sdp); + switch_channel_set_variable(channel, SWITCH_R_SDP_VARIABLE, (char *) r_sdp); } } @@ -1772,34 +1915,38 @@ case nua_callstate_proceeding: if (channel) { if (r_sdp) { - sdp_parser_t *parser = sdp_parse(tech_pvt->home, r_sdp, (int)strlen(r_sdp), 0); - sdp_session_t *sdp; - uint8_t match = 0; + if (switch_test_flag(tech_pvt, TFLAG_NOMEDIA)) { + switch_set_flag_locked(tech_pvt, TFLAG_EARLY_MEDIA); + return; + } else { + sdp_parser_t *parser = sdp_parse(tech_pvt->home, r_sdp, (int)strlen(r_sdp), 0); + sdp_session_t *sdp; + uint8_t match = 0; - if (tech_pvt->num_codecs) { - if ((sdp = sdp_session(parser))) { - match = negotiate_sdp(session, sdp); + if (tech_pvt->num_codecs) { + if ((sdp = sdp_session(parser))) { + match = negotiate_sdp(session, sdp); + } } - } - if (parser) { - sdp_parser_free(parser); - } + if (parser) { + sdp_parser_free(parser); + } - if (match) { - tech_choose_port(tech_pvt); - activate_rtp(tech_pvt); - switch_channel_set_variable(channel, "endpoint_disposition", "EARLY MEDIA"); - switch_channel_pre_answer(channel); - return; + if (match) { + tech_choose_port(tech_pvt); + activate_rtp(tech_pvt); + switch_channel_set_variable(channel, "endpoint_disposition", "EARLY MEDIA"); + switch_set_flag_locked(tech_pvt, TFLAG_EARLY_MEDIA); + return; + } + switch_channel_set_variable(channel, "endpoint_disposition", "NO CODECS"); + nua_respond(nh, SIP_488_NOT_ACCEPTABLE, + TAG_END()); } - switch_channel_set_variable(channel, "endpoint_disposition", "NO CODECS"); - nua_respond(nh, SIP_488_NOT_ACCEPTABLE, - TAG_END()); } } - break; case nua_callstate_completing: nua_ack(nh, TAG_END()); @@ -1807,60 +1954,69 @@ case nua_callstate_received: if (channel) { if (r_sdp) { - sdp_parser_t *parser = sdp_parse(tech_pvt->home, r_sdp, (int)strlen(r_sdp), 0); - sdp_session_t *sdp; - uint8_t match = 0; + if (switch_test_flag(tech_pvt, TFLAG_NOMEDIA)) { + switch_channel_set_variable(channel, "endpoint_disposition", "RECEIVED_NOMEDIA"); + switch_channel_set_state(channel, CS_INIT); + switch_set_flag_locked(tech_pvt, TFLAG_READY); + switch_core_session_thread_launch(session); + return; + } else { + sdp_parser_t *parser = sdp_parse(tech_pvt->home, r_sdp, (int)strlen(r_sdp), 0); + sdp_session_t *sdp; + uint8_t match = 0; - if (tech_pvt->num_codecs) { - if ((sdp = sdp_session(parser))) { - match = negotiate_sdp(session, sdp); + if (tech_pvt->num_codecs) { + if ((sdp = sdp_session(parser))) { + match = negotiate_sdp(session, sdp); + } } - } - if (parser) { - sdp_parser_free(parser); - } + if (parser) { + sdp_parser_free(parser); + } - if (match) { - nua_handle_t *bnh; - sip_replaces_t *replaces; + if (match) { + nua_handle_t *bnh; + sip_replaces_t *replaces; - switch_channel_set_variable(channel, "endpoint_disposition", "RECEIVED"); - switch_channel_set_state(channel, CS_INIT); - switch_set_flag_locked(tech_pvt, TFLAG_READY); - switch_core_session_thread_launch(session); + switch_channel_set_variable(channel, "endpoint_disposition", "RECEIVED"); + switch_channel_set_state(channel, CS_INIT); + switch_set_flag_locked(tech_pvt, TFLAG_READY); + switch_core_session_thread_launch(session); - if (replaces_str && (replaces = sip_replaces_make(tech_pvt->home, replaces_str)) && (bnh = nua_handle_by_replaces(nua, replaces))) { - sofia_private_t *b_private; + if (replaces_str && (replaces = sip_replaces_make(tech_pvt->home, replaces_str)) && (bnh = nua_handle_by_replaces(nua, replaces))) { + sofia_private_t *b_private; - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Processing Attended Transfer\n"); - while (switch_channel_get_state(channel) < CS_EXECUTE) { - switch_yield(10000); - } + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Processing Replaces Attended Transfer\n"); + while (switch_channel_get_state(channel) < CS_EXECUTE) { + switch_yield(10000); + } - if ((b_private = nua_handle_fetch(bnh))) { - char *br_b = switch_channel_get_variable(channel, "BRIDGETO"); - char *br_a = switch_core_session_get_uuid(b_private->session); + if ((b_private = nua_handle_magic(bnh))) { + char *br_b = switch_channel_get_variable(channel, SWITCH_BRIDGE_VARIABLE); + char *br_a = switch_core_session_get_uuid(b_private->session); - if (br_b) { - switch_ivr_uuid_bridge(br_a, br_b); - switch_channel_set_variable(channel, "endpoint_disposition", "ATTENDED_TRANSFER"); - switch_channel_hangup(channel, SWITCH_CAUSE_ATTENDED_TRANSFER); + if (br_b) { + switch_ivr_uuid_bridge(br_a, br_b); + switch_channel_set_variable(channel, "endpoint_disposition", "ATTENDED_TRANSFER"); + switch_channel_hangup(channel, SWITCH_CAUSE_ATTENDED_TRANSFER); + } else { + switch_channel_set_variable(channel, "endpoint_disposition", "ATTENDED_TRANSFER_ERROR"); + switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); + } } else { switch_channel_set_variable(channel, "endpoint_disposition", "ATTENDED_TRANSFER_ERROR"); switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); } - } else { - switch_channel_set_variable(channel, "endpoint_disposition", "ATTENDED_TRANSFER_ERROR"); - switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); + nua_handle_unref(bnh); } + return; } - return; - } - switch_channel_set_variable(channel, "endpoint_disposition", "NO CODECS"); - nua_respond(nh, SIP_488_NOT_ACCEPTABLE, - TAG_END()); + switch_channel_set_variable(channel, "endpoint_disposition", "NO CODECS"); + nua_respond(nh, SIP_488_NOT_ACCEPTABLE, + TAG_END()); + } } } @@ -1869,77 +2025,104 @@ break; case nua_callstate_completed: if (tech_pvt && r_sdp) { - sdp_parser_t *parser = sdp_parse(tech_pvt->home, r_sdp, (int)strlen(r_sdp), 0); - sdp_session_t *sdp; - uint8_t match = 0; + if (r_sdp) { + if (switch_test_flag(tech_pvt, TFLAG_NOMEDIA)) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "What should i do?\n%s\n", r_sdp); + return; + } else { + sdp_parser_t *parser = sdp_parse(tech_pvt->home, r_sdp, (int)strlen(r_sdp), 0); + sdp_session_t *sdp; + uint8_t match = 0; - if (tech_pvt->num_codecs) { - if ((sdp = sdp_session(parser))) { - match = negotiate_sdp(session, sdp); + if (tech_pvt->num_codecs) { + if ((sdp = sdp_session(parser))) { + match = negotiate_sdp(session, sdp); + } + } + tech_choose_port(tech_pvt); + set_local_sdp(tech_pvt); + tech_set_codec(tech_pvt); + switch_set_flag_locked(tech_pvt, TFLAG_REINVITE); + activate_rtp(tech_pvt); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Processing Reinvite\n"); + if (parser) { + sdp_parser_free(parser); + } } } - tech_choose_port(tech_pvt); - set_local_sdp(tech_pvt); - tech_set_codec(tech_pvt); - switch_set_flag_locked(tech_pvt, TFLAG_REINVITE); - activate_rtp(tech_pvt); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Processing Reinvite\n"); - if (parser) { - sdp_parser_free(parser); - } } break; case nua_callstate_ready: + if (nh == tech_pvt->nh2) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Cheater Reinvite!\n"); + switch_set_flag_locked(tech_pvt, TFLAG_REINVITE); + tech_pvt->nh = tech_pvt->nh2; + tech_pvt->nh2 = NULL; + tech_choose_port(tech_pvt); + activate_rtp(tech_pvt); + return; + } + if (channel) { if (r_sdp) { - sdp_parser_t *parser = sdp_parse(tech_pvt->home, r_sdp, (int)strlen(r_sdp), 0); - sdp_session_t *sdp; - uint8_t match = 0; + if (switch_test_flag(tech_pvt, TFLAG_NOMEDIA)) { + switch_set_flag_locked(tech_pvt, TFLAG_ANS); + switch_channel_set_flag(channel, CF_ANSWERED); + return; + } else { + sdp_parser_t *parser = sdp_parse(tech_pvt->home, r_sdp, (int)strlen(r_sdp), 0); + sdp_session_t *sdp; + uint8_t match = 0; - if (tech_pvt->num_codecs) { - if ((sdp = sdp_session(parser))) { - match = negotiate_sdp(session, sdp); + if (tech_pvt->num_codecs) { + if ((sdp = sdp_session(parser))) { + match = negotiate_sdp(session, sdp); + } } - } - if (parser) { - sdp_parser_free(parser); - } + if (parser) { + sdp_parser_free(parser); + } - if (match) { - switch_set_flag_locked(tech_pvt, TFLAG_ANS); - switch_channel_set_variable(channel, "endpoint_disposition", "ANSWER"); - tech_choose_port(tech_pvt); - activate_rtp(tech_pvt); - switch_channel_answer(channel); - return; + if (match) { + switch_set_flag_locked(tech_pvt, TFLAG_ANS); + switch_channel_set_variable(channel, "endpoint_disposition", "ANSWER"); + tech_choose_port(tech_pvt); + activate_rtp(tech_pvt); + switch_channel_set_flag(channel, CF_ANSWERED); + return; + } + + switch_channel_set_variable(channel, "endpoint_disposition", "NO CODECS"); + nua_respond(nh, SIP_488_NOT_ACCEPTABLE, TAG_END()); } - - switch_channel_set_variable(channel, "endpoint_disposition", "NO CODECS"); - nua_respond(nh, SIP_488_NOT_ACCEPTABLE, - TAG_END()); } else if (switch_test_flag(tech_pvt, TFLAG_EARLY_MEDIA)) { switch_set_flag_locked(tech_pvt, TFLAG_ANS); switch_channel_set_variable(channel, "endpoint_disposition", "ANSWER"); - switch_channel_answer(channel); + switch_channel_set_flag(channel, CF_ANSWERED); return; } //else probably an ack - } - + break; case nua_callstate_terminating: break; - case nua_callstate_terminated: + case nua_callstate_terminated: if (session) { switch_set_flag_locked(tech_pvt, TFLAG_BYE); - terminate_session(&session, sip_cause_to_freeswitch(status), __LINE__); + if (switch_test_flag(tech_pvt, TFLAG_NOHUP)) { + switch_clear_flag_locked(tech_pvt, TFLAG_NOHUP); + nua_handle_destroy(tech_pvt->nh); + tech_pvt->nh = NULL; + } else { + terminate_session(&session, sip_cause_to_freeswitch(status), __LINE__); + } } break; } + - } @@ -2235,9 +2418,27 @@ if (session) { private_object_t *tech_pvt = NULL; - char *exten = NULL; + char *etmp = NULL, *exten = NULL; + switch_channel_t *channel_a = NULL, *channel_b = NULL; tech_pvt = switch_core_session_get_private(session); + channel_a = switch_core_session_get_channel(session); + + + if (!sip->sip_cseq || !(etmp = switch_core_db_mprintf("refer;id=%u", sip->sip_cseq->cs_seq))) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Memory Error!\n"); + goto done; + } + + + if (switch_channel_test_flag(channel_a, CF_NOMEDIA)) { + nua_notify(tech_pvt->nh, SIPTAG_CONTENT_TYPE_STR("message/sipfrag"), + SIPTAG_PAYLOAD_STR("SIP/2.0 403 Forbidden"), + SIPTAG_EVENT_STR(etmp), + TAG_END()); + goto done; + } + from = sip->sip_from; to = sip->sip_to; @@ -2256,12 +2457,11 @@ char *rep; if ((rep = strchr(refer_to->r_url->url_headers, '='))) { - switch_channel_t *channel_a = NULL, *channel_b = NULL; char *br_a = NULL, *br_b = NULL; char *buf; rep++; - channel_a = switch_core_session_get_channel(session); + if ((buf = switch_core_session_alloc(session, strlen(rep) + 1))) { rep = url_unescape(buf, (const char *) rep); @@ -2272,45 +2472,86 @@ } if ((replaces = sip_replaces_make(tech_pvt->home, rep)) && (bnh = nua_handle_by_replaces(nua, replaces))) { sofia_private_t *b_private; - - if ((b_private = nua_handle_fetch(bnh))) { + + switch_channel_set_variable(channel_a, SOFIA_REPLACES_HEADER, rep); + if ((b_private = nua_handle_magic(bnh))) { channel_b = switch_core_session_get_channel(b_private->session); - br_a = switch_channel_get_variable(channel_a, "BRIDGETO"); - br_b = switch_channel_get_variable(channel_b, "BRIDGETO"); + br_a = switch_channel_get_variable(channel_a, SWITCH_BRIDGE_VARIABLE); + br_b = switch_channel_get_variable(channel_b, SWITCH_BRIDGE_VARIABLE); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Attended Transfer [%s][%s]\n", br_a, br_b); if (br_a && br_b) { switch_ivr_uuid_bridge(br_a, br_b); switch_channel_set_variable(channel_b, "endpoint_disposition", "ATTENDED_TRANSFER"); - switch_channel_hangup(channel_b, SWITCH_CAUSE_ATTENDED_TRANSFER); - switch_channel_set_variable(channel_a, "endpoint_disposition", "ATTENDED_TRANSFER"); - switch_channel_hangup(channel_a, SWITCH_CAUSE_ATTENDED_TRANSFER); + + nua_notify(tech_pvt->nh, SIPTAG_CONTENT_TYPE_STR("message/sipfrag"), + SIPTAG_PAYLOAD_STR("SIP/2.0 200 OK"), + SIPTAG_EVENT_STR(etmp), + TAG_END()); + } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Transfer! [%s][%s]\n", br_a, br_b); - switch_channel_set_variable(channel_b, "endpoint_disposition", "ATTENDED_TRANSFER_ERROR"); - switch_channel_hangup(channel_b, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); - switch_channel_set_variable(channel_a, "endpoint_disposition", "ATTENDED_TRANSFER_ERROR"); - switch_channel_hangup(channel_a, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); + private_object_t *tech_pvt_b = (private_object_t *) switch_core_session_get_private(b_private->session); + + if (!br_a && !br_b) { + switch_set_flag_locked(tech_pvt, TFLAG_NOHUP); + switch_set_flag_locked(tech_pvt_b, TFLAG_XFER); + tech_pvt_b->xferto = switch_core_session_strdup(b_private->session, switch_core_session_get_uuid(session)); + } else if (!br_a && br_b) { + switch_core_session_t *bsession; + + if ((bsession = switch_core_session_locate(br_b))) { + private_object_t *b_tech_pvt = switch_core_session_get_private(bsession); + switch_channel_t *b_channel = switch_core_session_get_channel(bsession); + private_object_t *bp_tech_pvt = switch_core_session_get_private(b_private->session); + + switch_core_session_get_uuid(b_private->session); + switch_set_flag_locked(tech_pvt, TFLAG_NOHUP); + + switch_channel_clear_state_handler(b_channel, NULL); + switch_channel_set_state_flag(b_channel, CF_TRANSFER); + switch_channel_set_state(b_channel, CS_TRANSMIT); + + switch_set_flag_locked(tech_pvt, TFLAG_REINVITE); + tech_pvt->local_sdp_audio_ip = switch_core_session_strdup(session, bp_tech_pvt->local_sdp_audio_ip); + tech_pvt->local_sdp_audio_port = bp_tech_pvt->local_sdp_audio_port; + + tech_pvt->remote_sdp_audio_ip = switch_core_session_strdup(session, b_tech_pvt->remote_sdp_audio_ip); + tech_pvt->remote_sdp_audio_port = b_tech_pvt->remote_sdp_audio_port; + activate_rtp(tech_pvt); + + b_tech_pvt->kick = switch_core_session_strdup(bsession, switch_core_session_get_uuid(session)); + + + switch_core_session_rwunlock(bsession); + } + + switch_channel_hangup(channel_b, SWITCH_CAUSE_ATTENDED_TRANSFER); + } + + nua_notify(tech_pvt->nh, SIPTAG_CONTENT_TYPE_STR("message/sipfrag"), + SIPTAG_PAYLOAD_STR("SIP/2.0 200 OK"), + SIPTAG_EVENT_STR(etmp), + TAG_END()); + } } - nua_handle_unref(bnh); } else { /* the other channel is on a different box, we have to go find them */ - if (exten && (br_a = switch_channel_get_variable(channel_a, "BRIDGETO"))) { - switch_core_session_t *bsession; + if (exten && (br_a = switch_channel_get_variable(channel_a, SWITCH_BRIDGE_VARIABLE))) { + switch_core_session_t *asession; switch_channel_t *channel = switch_core_session_get_channel(session); - if ((bsession = switch_core_session_locate(br_a))) { + if ((asession = switch_core_session_locate(br_a))) { switch_core_session_t *tsession; switch_call_cause_t cause = SWITCH_CAUSE_NORMAL_CLEARING; uint32_t timeout = 60; char *tuuid_str; - channel = switch_core_session_get_channel(bsession); + channel = switch_core_session_get_channel(asession); - exten = switch_core_db_mprintf("sofia/%s/%s@%s:%d", + exten = switch_core_db_mprintf("sofia/%s/%s@%s:%s", profile->name, (char *) refer_to->r_url->url_user, (char *) refer_to->r_url->url_host, @@ -2319,7 +2560,7 @@ switch_channel_set_variable(channel, SOFIA_REPLACES_HEADER, rep); - if (switch_ivr_originate(bsession, + if (switch_ivr_originate(asession, &tsession, &cause, exten, @@ -2329,14 +2570,21 @@ NULL, NULL) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot Create Outgoing Channel! [%s]\n", exten); + nua_notify(tech_pvt->nh, SIPTAG_CONTENT_TYPE_STR("message/sipfrag"), + SIPTAG_PAYLOAD_STR("SIP/2.0 403 Forbidden"), + SIPTAG_EVENT_STR(etmp), + TAG_END()); goto done; } - switch_core_session_rwunlock(bsession); + switch_core_session_rwunlock(asession); tuuid_str = switch_core_session_get_uuid(tsession); switch_ivr_uuid_bridge(br_a, tuuid_str); switch_channel_set_variable(channel_a, "endpoint_disposition", "ATTENDED_TRANSFER"); - switch_channel_hangup(channel_a, SWITCH_CAUSE_ATTENDED_TRANSFER); + nua_notify(tech_pvt->nh, SIPTAG_CONTENT_TYPE_STR("message/sipfrag"), + SIPTAG_PAYLOAD_STR("SIP/2.0 200 OK"), + SIPTAG_EVENT_STR(etmp), + TAG_END()); } else { goto error; } @@ -2344,7 +2592,10 @@ } else { error: switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Transfer! [%s]\n", br_a); switch_channel_set_variable(channel_a, "endpoint_disposition", "ATTENDED_TRANSFER_ERROR"); - switch_channel_hangup(channel_a, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); + nua_notify(tech_pvt->nh, SIPTAG_CONTENT_TYPE_STR("message/sipfrag"), + SIPTAG_PAYLOAD_STR("SIP/2.0 403 Forbidden"), + SIPTAG_EVENT_STR(etmp), + TAG_END()); } } } else { @@ -2362,26 +2613,50 @@ switch_channel_t *channel = switch_core_session_get_channel(session); char *br; - switch_channel_set_variable(channel, "endpoint_disposition", "BLIND_TRANSFER"); - switch_channel_hangup(channel, SWITCH_CAUSE_BLIND_TRANSFER); - - if ((br = switch_channel_get_variable(channel, "BRIDGETO"))) { + if ((br = switch_channel_get_variable(channel, SWITCH_BRIDGE_VARIABLE))) { switch_core_session_t *bsession; - + if ((bsession = switch_core_session_locate(br))) { channel = switch_core_session_get_channel(bsession); switch_channel_set_variable(channel, "TRANSFER_FALLBACK", (char *) from->a_user); switch_ivr_session_transfer(bsession, exten, profile->dialplan, profile->context); switch_core_session_rwunlock(bsession); } - } + switch_channel_set_variable(channel, "endpoint_disposition", "BLIND_TRANSFER"); + + nua_notify(tech_pvt->nh, SIPTAG_CONTENT_TYPE_STR("message/sipfrag"), + SIPTAG_PAYLOAD_STR("SIP/2.0 200 OK"), + SIPTAG_EVENT_STR(etmp), + TAG_END()); + } else { + exten = switch_core_db_mprintf("sip:%s@%s:%s", + (char *) refer_to->r_url->url_user, + (char *) refer_to->r_url->url_host, + refer_to->r_url->url_port); + tech_pvt->dest = switch_core_session_strdup(session, exten); + + + switch_set_flag_locked(tech_pvt, TFLAG_NOHUP); + + + nua_notify(tech_pvt->nh, SIPTAG_CONTENT_TYPE_STR("message/sipfrag"), + SIPTAG_PAYLOAD_STR("SIP/2.0 200 OK"), + SIPTAG_EVENT_STR(etmp), + TAG_END()); + + do_xfer_invite(session); + + } } done: - if (strchr(exten, '@')) { + if (exten && strchr(exten, '@')) { switch_core_db_free(exten); } + if (etmp) { + switch_core_db_free(etmp); + } } } @@ -2394,11 +2669,11 @@ tagi_t tags[]) { switch_core_session_t *session = sofia_private ? sofia_private->session : NULL; - //refer_handle_t *refer = sofia_private ? sofia_private->refer : NULL; char key[128] = ""; - if (!session) { + if (!session) { + if ((profile->pflags & PFLAG_AUTH_CALLS)) { if (handle_register(nua, profile, nh, sip, REG_INVITE, key, sizeof(key))) { return; @@ -2510,7 +2785,6 @@ sip_t const *sip, tagi_t tags[]) { - //switch_core_session_t *session = sofia_private ? sofia_private->session : NULL; handle_register(nua, profile, nh, sip, REG_REGISTER, NULL, 0); } @@ -2547,15 +2821,11 @@ if ((tech_pvt = switch_core_session_get_private(session)) && switch_test_flag(tech_pvt, TFLAG_REFER)) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "received reply from refer\n"); - if (status == 200) { - //crap - } return; } } if (!oreg) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No authentication available!\n"); if (sofia_private->oreg) { nua_handle_destroy(nh); } @@ -2906,9 +3176,7 @@ } su_root_step(profile->s_root, 1000); - //su_root_run(profile->s_root); } - if (switch_event_create(&s_event, SWITCH_EVENT_UNPUBLISH) == SWITCH_STATUS_SUCCESS) { switch_event_add_header(s_event, SWITCH_STACK_BOTTOM, "service", "_sip._udp"); Modified: freeswitch/branches/mishehu/src/mod/endpoints/mod_sofia/mod_sofia.vcproj ============================================================================== --- freeswitch/branches/mishehu/src/mod/endpoints/mod_sofia/mod_sofia.vcproj (original) +++ freeswitch/branches/mishehu/src/mod/endpoints/mod_sofia/mod_sofia.vcproj Sun Oct 8 20:25:31 2006 @@ -42,7 +42,7 @@ <Tool Name="VCCLCompilerTool" Optimization="0" - AdditionalIncludeDirectories=""$(InputDir)..\..\..\include";"$(InputDir)..\..\..\..\libs\include";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3\libsofia-sip-ua\su";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3\libsofia-sip-ua\nua";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3\win32";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3\libsofia-sip-ua\url";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3\libsofia-sip-ua\sip";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3\libsofia-sip-ua\msg";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3\libsofia-sip-ua\sdp";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3\libsofia-sip-ua\nta";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3\libsofia-sip-ua\nea";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3\libsofia-sip-ua\soa";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3\libsofia-sip-ua\iptsec";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3\libsofia-sip-ua\bnf"" + AdditionalIncludeDirectories=""$(InputDir)..\..\..\include";"$(InputDir)..\..\..\..\libs\include";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.2\libsofia-sip-ua\su";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.2\libsofia-sip-ua\nua";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.2\win32";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.2\libsofia-sip-ua\url";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.2\libsofia-sip-ua\sip";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.2\libsofia-sip-ua\msg";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.2\libsofia-sip-ua\sdp";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.2\libsofia-sip-ua\nta";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.2\libsofia-sip-ua\nea";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.2\libsofia-sip-ua\soa";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.2\libsofia-sip-ua\iptsec";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.2\libsofia-sip-ua\bnf"" PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;LIBSOFIA_SIP_UA_STATIC;PTW32_STATIC_LIB" MinimalRebuild="true" BasicRuntimeChecks="3" @@ -126,7 +126,7 @@ /> <Tool Name="VCCLCompilerTool" - AdditionalIncludeDirectories=""$(InputDir)..\..\..\include";"$(InputDir)..\..\..\..\libs\include";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3\libsofia-sip-ua\su";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3\libsofia-sip-ua\nua";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3\win32";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3\libsofia-sip-ua\url";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3\libsofia-sip-ua\sip";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3\libsofia-sip-ua\msg";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3\libsofia-sip-ua\sdp";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3\libsofia-sip-ua\nta";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3\libsofia-sip-ua\nea";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3\libsofia-sip-ua\soa";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3\libsofia-sip-ua\iptsec";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3\libsofia-sip-ua\bnf"" + AdditionalIncludeDirectories=""$(InputDir)..\..\..\include";"$(InputDir)..\..\..\..\libs\include";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.2\libsofia-sip-ua\su";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.2\libsofia-sip-ua\nua";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.2\win32";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.2\libsofia-sip-ua\url";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.2\libsofia-sip-ua\sip";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.2\libsofia-sip-ua\msg";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.2\libsofia-sip-ua\sdp";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.2\libsofia-sip-ua\nta";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.2\libsofia-sip-ua\nea";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.2\libsofia-sip-ua\soa";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.2\libsofia-sip-ua\iptsec";"$(InputDir)..\..\..\..\libs\sofia-sip-1.12.3.2\libsofia-sip-ua\bnf"" PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;LIBSOFIA_SIP_UA_STATIC;PTW32_STATIC_LIB" RuntimeLibrary="2" UsePrecompiledHeader="0" Modified: freeswitch/branches/mishehu/src/mod/event_handlers/mod_cdr/basecdr.cpp ============================================================================== --- freeswitch/branches/mishehu/src/mod/event_handlers/mod_cdr/basecdr.cpp (original) +++ freeswitch/branches/mishehu/src/mod/event_handlers/mod_cdr/basecdr.cpp Sun Oct 8 20:25:31 2006 @@ -87,10 +87,10 @@ if(newchannel->callerprofile->caller_id_name != 0) { strncpy(clid,newchannel->callerprofile->caller_id_name,sizeof(clid)); - strncat(clid," <",2); - if(newchannel->callerprofile->caller_id_number != 0 ) - strncat(clid,newchannel->callerprofile->caller_id_number,79-(strlen(clid)+strlen(newchannel->callerprofile->caller_id_number))); - strncat(clid,">",1); + //strncat(clid," <",2); + //if(newchannel->callerprofile->caller_id_number != 0 ) + // strncat(clid,newchannel->callerprofile->caller_id_number,79-(strlen(clid)+strlen(newchannel->callerprofile->caller_id_number))); + //strncat(clid,">",1); } // Get the ANI information if it's set Modified: freeswitch/branches/mishehu/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c ============================================================================== --- freeswitch/branches/mishehu/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c (original) +++ freeswitch/branches/mishehu/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c Sun Oct 8 20:25:31 2006 @@ -69,6 +69,7 @@ static int eval_some_js(char *code, JSContext *cx, JSObject *obj, jsval *rval); static void session_destroy(JSContext *cx, JSObject *obj); static JSBool session_construct(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval); +static switch_api_interface_t js_run_interface; static struct { size_t gStackChunkSize; @@ -2675,12 +2676,12 @@ { if (switch_strlen_zero(text)) { - stream->write_function(stream, "INVALID"); + stream->write_function(stream, "USAGE: %s\n", js_run_interface.syntax); return SWITCH_STATUS_SUCCESS; } js_thread_launch(text); - stream->write_function(stream, "OK"); + stream->write_function(stream, "OK\n"); return SWITCH_STATUS_SUCCESS; } @@ -2696,6 +2697,7 @@ /*.interface_name */ "jsrun", /*.desc */ "run a script", /*.function */ launch_async, + /*.syntax */ "jsrun <script>", /*.next */ NULL }; Modified: freeswitch/branches/mishehu/src/mod/loggers/mod_console/mod_console.c ============================================================================== --- freeswitch/branches/mishehu/src/mod/loggers/mod_console/mod_console.c (original) +++ freeswitch/branches/mishehu/src/mod/loggers/mod_console/mod_console.c Sun Oct 8 20:25:31 2006 @@ -128,7 +128,7 @@ } if (!log_hash || (((all_level > - 1) || lookup) && level >= node->level)) { - fprintf(handle, node->data); + fprintf(handle, "%s", node->data); } } else { fprintf(stderr, "HELP I HAVE NO CONSOLE TO LOG TO!\n"); Modified: freeswitch/branches/mishehu/src/switch_caller.c ============================================================================== --- freeswitch/branches/mishehu/src/switch_caller.c (original) +++ freeswitch/branches/mishehu/src/switch_caller.c Sun Oct 8 20:25:31 2006 @@ -145,55 +145,55 @@ if (caller_profile->username) { snprintf(header_name, sizeof(header_name), "%s-Username", prefix); - switch_event_add_header(event, SWITCH_STACK_BOTTOM, header_name, caller_profile->username); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, header_name, "%s", caller_profile->username); } if (caller_profile->dialplan) { snprintf(header_name, sizeof(header_name), "%s-Dialplan", prefix); - switch_event_add_header(event, SWITCH_STACK_BOTTOM, header_name, caller_profile->dialplan); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, header_name, "%s", caller_profile->dialplan); } if (caller_profile->caller_id_name) { snprintf(header_name, sizeof(header_name), "%s-Caller-ID-Name", prefix); - switch_event_add_header(event, SWITCH_STACK_BOTTOM, header_name, caller_profile->caller_id_name); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, header_name, "%s", caller_profile->caller_id_name); } if (caller_profile->caller_id_number) { snprintf(header_name, sizeof(header_name), "%s-Caller-ID-Number", prefix); - switch_event_add_header(event, SWITCH_STACK_BOTTOM, header_name, caller_profile->caller_id_number); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, header_name, "%s", caller_profile->caller_id_number); } if (caller_profile->network_addr) { snprintf(header_name, sizeof(header_name), "%s-Network-Addr", prefix); - switch_event_add_header(event, SWITCH_STACK_BOTTOM, header_name, caller_profile->network_addr); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, header_name, "%s", caller_profile->network_addr); } if (caller_profile->ani) { snprintf(header_name, sizeof(header_name), "%s-ANI", prefix); - switch_event_add_header(event, SWITCH_STACK_BOTTOM, header_name, caller_profile->ani); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, header_name, "%s", caller_profile->ani); } if (caller_profile->ani2) { snprintf(header_name, sizeof(header_name), "%s-ANI2", prefix); - switch_event_add_header(event, SWITCH_STACK_BOTTOM, header_name, caller_profile->ani2); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, header_name, "%s", caller_profile->ani2); } if (caller_profile->destination_number) { snprintf(header_name, sizeof(header_name), "%s-Destination-Number", prefix); - switch_event_add_header(event, SWITCH_STACK_BOTTOM, header_name, caller_profile->destination_number); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, header_name, "%s", caller_profile->destination_number); } if (caller_profile->uuid) { snprintf(header_name, sizeof(header_name), "%s-Unique-ID", prefix); - switch_event_add_header(event, SWITCH_STACK_BOTTOM, header_name, caller_profile->uuid); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, header_name, "%s", caller_profile->uuid); } if (caller_profile->source) { snprintf(header_name, sizeof(header_name), "%s-Source", prefix); - switch_event_add_header(event, SWITCH_STACK_BOTTOM, header_name, caller_profile->source); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, header_name, "%s", caller_profile->source); } if (caller_profile->context) { snprintf(header_name, sizeof(header_name), "%s-Context", prefix); - switch_event_add_header(event, SWITCH_STACK_BOTTOM, header_name, caller_profile->context); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, header_name, "%s", caller_profile->context); } if (caller_profile->rdnis) { snprintf(header_name, sizeof(header_name), "%s-RDNIS", prefix); - switch_event_add_header(event, SWITCH_STACK_BOTTOM, header_name, caller_profile->rdnis); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, header_name, "%s", caller_profile->rdnis); } if (caller_profile->chan_name) { snprintf(header_name, sizeof(header_name), "%s-Channel-Name", prefix); - switch_event_add_header(event, SWITCH_STACK_BOTTOM, header_name, caller_profile->chan_name); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, header_name, "%s", caller_profile->chan_name); } } Modified: freeswitch/branches/mishehu/src/switch_channel.c ============================================================================== --- freeswitch/branches/mishehu/src/switch_channel.c (original) +++ freeswitch/branches/mishehu/src/switch_channel.c Sun Oct 8 20:25:31 2006 @@ -950,6 +950,10 @@ return SWITCH_STATUS_SUCCESS; } + if (switch_channel_test_flag(channel, CF_EARLY_MEDIA)) { + return SWITCH_STATUS_SUCCESS; + } + msg.message_id = SWITCH_MESSAGE_INDICATE_PROGRESS; msg.from = channel->name; status = switch_core_session_message_send(uuid, &msg); @@ -998,4 +1002,126 @@ return SWITCH_STATUS_FALSE; +} + +SWITCH_DECLARE(char *) switch_channel_expand_variables(switch_channel_t *channel, char *in) +{ + char *p, *c; + char *data, *indup; + size_t sp = 0, len = 0, olen = 0, vtype = 0, br = 0, vnamepos, vvalpos, cpos, ppos, block = 128; + char *sub_val = NULL, *func_val = NULL; + + if (!strchr(in, '$') && !strchr(in, '&')) { + return in; + } + + olen = strlen(in); + indup = strdup(in); + + if ((data = malloc(olen))) { + memset(data, 0, olen); + c = data; + for(p = indup; *p; p++) { + vtype = 0; + + if (*p == '$') { + vtype = 1; + } + if (*p == '&') { + vtype = 2; + } + + if (vtype) { + char *s = p, *e, *vname, *vval = NULL; + size_t nlen; + s++; + if (*s == '{') { + br = 1; + s++; + } + + e = s; + vname = s; + while (*e) { + if (!br && *e == ' ') { + *e++ = '\0'; + sp++; + break; + } + if (br == 1 && *e == '}') { + br = 0; + *e++ = '\0'; + break; + } + if (vtype == 2) { + if (*e == '(') { + *e++ = '\0'; + vval = e; + br = 2; + } + if (br == 2 && *e == ')') { + *e++ = '\0'; + br = 0; + break; + } + } + e++; + } + p = e; + + if (vtype == 1) { + sub_val = switch_channel_get_variable(channel, vname); + } else { + switch_stream_handle_t stream = {0}; + + SWITCH_STANDARD_STREAM(stream); + + if (stream.data) { + if (switch_api_execute(vname, vval, channel->session, &stream) == SWITCH_STATUS_SUCCESS) { + func_val = stream.data; + sub_val = func_val; + } else { + free(stream.data); + } + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Memory Error!\n"); + free(data); + free(indup); + return in; + } + } + nlen = strlen(sub_val); + if (len + nlen >= olen) { + olen += block; + cpos = c - data; + ppos = p - data; + vnamepos = vname - data; + vvalpos = vval - data; + data = realloc(data, olen); + + c = data + cpos; + p = data + ppos; + vname = data + vnamepos; + vname = data + vvalpos; + } + + len += nlen; + strcat(c, sub_val); + c += nlen; + + if (func_val) { + free(func_val); + func_val = NULL; + } + } + if (sp) { + *c++ = ' '; + sp = 0; + } + *c++ = *p; + len++; + } + } + free(indup); + return data; } Modified: freeswitch/branches/mishehu/src/switch_console.c ============================================================================== --- freeswitch/branches/mishehu/src/switch_console.c (original) +++ freeswitch/branches/mishehu/src/switch_console.c Sun Oct 8 20:25:31 2006 @@ -88,7 +88,7 @@ ret = -1; } else { ret = 0; - snprintf(end, remaining, data); + snprintf(end, remaining, "%s", data); handle->data_len = strlen(buf); handle->end = (uint8_t *)(handle->data) + handle->data_len; } @@ -112,14 +112,6 @@ switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_CONSOLE, "FreeSwitch Version %s\n", SWITCH_VERSION_FULL); return 1; } - if (!strcmp(cmd, "help")) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, - "\n" - "Valid Commands:\n\n" - "version\n" "help - umm yeah..\n" "shutdown - stop the program\n\n"); - return 1; - } - if ((arg = strchr(cmd, '\r')) != 0 || (arg = strchr(cmd, '\n')) != 0 ) { *arg = '\0'; arg = NULL; Modified: freeswitch/branches/mishehu/src/switch_core.c ============================================================================== --- freeswitch/branches/mishehu/src/switch_core.c (original) +++ freeswitch/branches/mishehu/src/switch_core.c Sun Oct 8 20:25:31 2006 @@ -2435,6 +2435,7 @@ } while (switch_channel_get_state(session->channel) == CS_EXECUTE && extension->current_application) { + char *expanded; switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Execute %s(%s)\n", extension->current_application->application_name, extension->current_application->application_data); @@ -2454,13 +2455,25 @@ return; } + if ((expanded = switch_channel_expand_variables(session->channel, extension->current_application->application_data)) != + extension->current_application->application_data) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Expanded String %s(%s)\n", + extension->current_application->application_name, + expanded); + } + if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_EXECUTE) == SWITCH_STATUS_SUCCESS) { switch_channel_event_set_data(session->channel, event); - switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Application", extension->current_application->application_name); - switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Application-Data", extension->current_application->application_data); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Application", "%s", extension->current_application->application_name); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Application-Data-Orig", "%s", extension->current_application->application_data); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Application-Data", "%s", expanded); switch_event_fire(&event); } - application_interface->application_function(session, extension->current_application->application_data); + application_interface->application_function(session, expanded); + + if (expanded != extension->current_application->application_data) { + free(expanded); + } extension->current_application = extension->current_application->next; } @@ -3401,9 +3414,11 @@ case SWITCH_EVENT_LOG: return; case SWITCH_EVENT_MODULE_LOAD: - sql = switch_core_db_mprintf("insert into interfaces (type,name) values('%q','%q')", + sql = switch_core_db_mprintf("insert into interfaces (type,name,description,syntax) values('%q','%q','%q','%q')", switch_event_get_header(event, "type"), - switch_event_get_header(event, "name") + switch_event_get_header(event, "name"), + switch_event_get_header(event, "description"), + switch_event_get_header(event, "syntax") ); break; default: @@ -3648,7 +3663,9 @@ char create_interfaces_sql[] = "CREATE TABLE interfaces (\n" " type VARCHAR(255),\n" - " name VARCHAR(255)\n" + " name VARCHAR(255),\n" + " description VARCHAR(255),\n" + " syntax VARCHAR(255)\n" ");\n"; switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Opening DB\n"); Modified: freeswitch/branches/mishehu/src/switch_ivr.c ============================================================================== --- freeswitch/branches/mishehu/src/switch_ivr.c (original) +++ freeswitch/branches/mishehu/src/switch_ivr.c Sun Oct 8 20:25:31 2006 @@ -1372,7 +1372,7 @@ msg.from = __FILE__; switch_core_session_receive_message(session_a, &msg); - switch_channel_set_variable(chan_a, "BRIDGETO", NULL); + switch_channel_set_variable(chan_a, SWITCH_BRIDGE_VARIABLE, NULL); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "BRIDGE THREAD DONE [%s]\n", switch_channel_get_name(chan_a)); switch_channel_clear_flag(chan_a, CF_BRIDGED); @@ -1514,14 +1514,14 @@ if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_EXECUTE) == SWITCH_STATUS_SUCCESS) { switch_channel_event_set_data(channel, event); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Application", "uuid_bridge"); - switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Application-Data", switch_core_session_get_uuid(other_session)); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Application-Data", "%s", switch_core_session_get_uuid(other_session)); switch_event_fire(&event); } if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_EXECUTE) == SWITCH_STATUS_SUCCESS) { switch_channel_event_set_data(other_channel, event); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Application", "uuid_bridge"); - switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Application-Data", switch_core_session_get_uuid(session)); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Application-Data", "%s", switch_core_session_get_uuid(session)); switch_event_fire(&event); } @@ -1698,6 +1698,10 @@ ) { + char *pipe_names[MAX_PEERS] = {0}; + char *data = NULL; + switch_status_t status = SWITCH_STATUS_SUCCESS; + switch_channel_t *caller_channel = NULL; char *peer_names[MAX_PEERS] = {0}; switch_core_session_t *peer_session, *peer_sessions[MAX_PEERS] = {0}; switch_caller_profile_t *caller_profiles[MAX_PEERS] = {0}, *caller_caller_profile; @@ -1705,11 +1709,8 @@ switch_channel_t *peer_channel = NULL, *peer_channels[MAX_PEERS] = {0}; time_t start; switch_frame_t *read_frame = NULL; - switch_status_t status = SWITCH_STATUS_SUCCESS; - switch_channel_t *caller_channel = NULL; switch_memory_pool_t *pool = NULL; - char *data = NULL; - int i, argc = 0; + int r = 0, i, and_argc = 0, or_argc = 0; int32_t idx = -1; switch_codec_t write_codec = {0}; switch_frame_t write_frame = {0}; @@ -1762,283 +1763,405 @@ file = NULL; } - argc = switch_separate_string(data, '&', peer_names, (sizeof(peer_names) / sizeof(peer_names[0]))); - - for (i = 0; i < argc; i++) { + or_argc = switch_separate_string(data, '|', pipe_names, (sizeof(pipe_names) / sizeof(pipe_names[0]))); + + for (r = 0; r < or_argc; r++) { + memset(peer_names, 0, sizeof(peer_names)); + peer_session = NULL; + memset(peer_sessions, 0, sizeof(peer_sessions)); + memset(peer_channels, 0, sizeof(peer_channels)); + memset(caller_profiles, 0, sizeof(caller_profiles)); + chan_type = NULL; + chan_data = NULL; + peer_channel = NULL; + start = 0; + read_frame = NULL; + pool = NULL; + pass = 0; + file = NULL; + key = NULL; + var = NULL; - chan_type = peer_names[i]; - if ((chan_data = strchr(chan_type, '/')) != 0) { - *chan_data = '\0'; - chan_data++; - } + and_argc = switch_separate_string(pipe_names[r], '&', peer_names, (sizeof(peer_names) / sizeof(peer_names[0]))); - if (session) { - if (!switch_channel_ready(caller_channel)) { - status = SWITCH_STATUS_FALSE; - goto done; + for (i = 0; i < and_argc; i++) { + + chan_type = peer_names[i]; + if ((chan_data = strchr(chan_type, '/')) != 0) { + *chan_data = '\0'; + chan_data++; } + + if (session) { + if (!switch_channel_ready(caller_channel)) { + status = SWITCH_STATUS_FALSE; + goto done; + } - caller_caller_profile = caller_profile_override ? caller_profile_override : switch_channel_get_caller_profile(caller_channel); + caller_caller_profile = caller_profile_override ? caller_profile_override : switch_channel_get_caller_profile(caller_channel); - if (!cid_name_override) { - cid_name_override = caller_caller_profile->caller_id_name; + if (!cid_name_override) { + cid_name_override = caller_caller_profile->caller_id_name; + } + if (!cid_num_override) { + cid_num_override = caller_caller_profile->caller_id_number; + } + + caller_profiles[i] = switch_caller_profile_new(switch_core_session_get_pool(session), + caller_caller_profile->username, + caller_caller_profile->dialplan, + cid_name_override, + cid_num_override, + caller_caller_profile->network_addr, + NULL, + NULL, + caller_caller_profile->rdnis, + caller_caller_profile->source, + caller_caller_profile->context, + chan_data); + pool = NULL; + } else { + if (!cid_name_override) { + cid_name_override = "FreeSWITCH"; + } + if (!cid_num_override) { + cid_num_override = "0000000000"; + } + + if (switch_core_new_memory_pool(&pool) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "OH OH no pool\n"); + status = SWITCH_STATUS_TERM; + goto done; + } + + if (caller_profile_override) { + caller_profiles[i] = switch_caller_profile_new(pool, + caller_profile_override->username, + caller_profile_override->dialplan, + caller_profile_override->caller_id_name, + caller_profile_override->caller_id_number, + caller_profile_override->network_addr, + caller_profile_override->ani, + caller_profile_override->ani2, + caller_profile_override->rdnis, + caller_profile_override->source, + caller_profile_override->context, + chan_data); + } else { + caller_profiles[i] = switch_caller_profile_new(pool, + NULL, + NULL, + cid_name_override, + cid_num_override, + NULL, + NULL, + NULL, + NULL, + __FILE__, + NULL, + chan_data); + } } - if (!cid_num_override) { - cid_num_override = caller_caller_profile->caller_id_number; + + if (switch_core_session_outgoing_channel(session, chan_type, caller_profiles[i], &peer_sessions[i], pool) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot Create Outgoing Channel!\n"); + if (pool) { + switch_core_destroy_memory_pool(&pool); + } + caller_profiles[i] = NULL; + peer_channels[i] = NULL; + peer_sessions[i] = NULL; + continue; } - caller_profiles[i] = switch_caller_profile_new(switch_core_session_get_pool(session), - caller_caller_profile->username, - caller_caller_profile->dialplan, - cid_name_override, - cid_num_override, - caller_caller_profile->network_addr, - NULL, - NULL, - caller_caller_profile->rdnis, - caller_caller_profile->source, - caller_caller_profile->context, - chan_data); + switch_core_session_read_lock(peer_sessions[i]); pool = NULL; - } else { - if (!cid_name_override) { - cid_name_override = "FreeSWITCH"; + + peer_channels[i] = switch_core_session_get_channel(peer_sessions[i]); + assert(peer_channels[i] != NULL); + + if (table == &noop_state_handler) { + table = NULL; + } else if (!table) { + table = &audio_bridge_peer_state_handlers; } - if (!cid_num_override) { - cid_num_override = "0000000000"; - } - if (switch_core_new_memory_pool(&pool) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "OH OH no pool\n"); - status = SWITCH_STATUS_TERM; - goto done; + if (table) { + switch_channel_add_state_handler(peer_channels[i], table); } - if (caller_profile_override) { - caller_profiles[i] = switch_caller_profile_new(pool, - caller_profile_override->username, - caller_profile_override->dialplan, - caller_profile_override->caller_id_name, - caller_profile_override->caller_id_number, - caller_profile_override->network_addr, - caller_profile_override->ani, - caller_profile_override->ani2, - caller_profile_override->rdnis, - caller_profile_override->source, - caller_profile_override->context, - chan_data); + if (switch_core_session_running(peer_sessions[i])) { + switch_channel_set_state(peer_channels[i], CS_RING); } else { - caller_profiles[i] = switch_caller_profile_new(pool, - NULL, - NULL, - cid_name_override, - cid_num_override, - NULL, - NULL, - NULL, - NULL, - __FILE__, - NULL, - chan_data); + switch_core_session_thread_launch(peer_sessions[i]); } } - if (switch_core_session_outgoing_channel(session, chan_type, caller_profiles[i], &peer_sessions[i], pool) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot Create Outgoing Channel!\n"); - if (pool) { - switch_core_destroy_memory_pool(&pool); - } - caller_profiles[i] = NULL; - peer_channels[i] = NULL; - peer_sessions[i] = NULL; - continue; - } + time(&start); - switch_core_session_read_lock(peer_sessions[i]); - pool = NULL; - - peer_channels[i] = switch_core_session_get_channel(peer_sessions[i]); - assert(peer_channels[i] != NULL); + for (;;) { + uint32_t valid_channels = 0; + for (i = 0; i < and_argc; i++) { + int state; + + if (!peer_channels[i]) { + continue; + } + valid_channels++; + state = switch_channel_get_state(peer_channels[i]); + + if (state >= CS_RING) { + goto endfor1; + } - if (table == &noop_state_handler) { - table = NULL; - } else if (!table) { - table = &audio_bridge_peer_state_handlers; - } + if (caller_channel && !switch_channel_ready(caller_channel)) { + break; + } + + if ((time(NULL) - start) > (time_t)timelimit_sec) { + break; + } + switch_yield(1000); + } - if (table) { - switch_channel_add_state_handler(peer_channels[i], table); - } + if (valid_channels == 0) { + status = SWITCH_STATUS_GENERR; + goto done; + } - if (switch_core_session_running(peer_sessions[i])) { - switch_channel_set_state(peer_channels[i], CS_RING); - } else { - switch_core_session_thread_launch(peer_sessions[i]); } - } + endfor1: - time(&start); + if (session && !switch_channel_test_flag(caller_channel, CF_NOMEDIA)) { + switch_codec_t *read_codec = NULL; - for (;;) { - uint32_t valid_channels = 0; - for (i = 0; i < argc; i++) { - int state; + switch_channel_pre_answer(caller_channel); + read_codec = switch_core_session_get_read_codec(session); - if (!peer_channels[i]) { - continue; + assert(read_codec != NULL); + if (!(pass = (uint8_t)switch_test_flag(read_codec, SWITCH_CODEC_FLAG_PASSTHROUGH))) { + if (switch_core_codec_init(&write_codec, + "L16", + read_codec->implementation->samples_per_second, + read_codec->implementation->microseconds_per_frame / 1000, + 1, + SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, + NULL, + pool) == SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Raw Codec Activation Success L16@%uhz 1 channel %dms\n", + read_codec->implementation->samples_per_second, + read_codec->implementation->microseconds_per_frame / 1000); + write_frame.codec = &write_codec; + write_frame.datalen = read_codec->implementation->bytes_per_frame; + write_frame.samples = write_frame.datalen / 2; + memset(write_frame.data, 255, write_frame.datalen); + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Codec Error!"); + switch_channel_hangup(caller_channel, SWITCH_CAUSE_NORMAL_TEMPORARY_FAILURE); + } } - valid_channels++; - state = switch_channel_get_state(peer_channels[i]); + } + + while ((!caller_channel || switch_channel_ready(caller_channel)) && + check_channel_status(peer_channels, peer_sessions, and_argc, &idx, file, key) && ((time(NULL) - start) < (time_t)timelimit_sec)) { + + /* read from the channel while we wait if the audio is up on it */ + if (session && !switch_channel_test_flag(caller_channel, CF_NOMEDIA) && + (switch_channel_test_flag(caller_channel, CF_ANSWERED) || switch_channel_test_flag(caller_channel, CF_EARLY_MEDIA))) { + switch_status_t status = switch_core_session_read_frame(session, &read_frame, 1000, 0); - if (state >= CS_RING) { - goto endfor1; + if (!SWITCH_READ_ACCEPTABLE(status)) { + break; + } + if (read_frame && !pass) { + if (switch_core_session_write_frame(session, &write_frame, 1000, 0) != SWITCH_STATUS_SUCCESS) { + break; + } + } + + } else { + switch_yield(1000); } - if (caller_channel && !switch_channel_ready(caller_channel)) { - break; + } + + if (session && !switch_channel_test_flag(caller_channel, CF_NOMEDIA)) { + switch_core_session_reset(session); + } + + for (i = 0; i < and_argc; i++) { + if (!peer_channels[i]) { + continue; } - - if ((time(NULL) - start) > (time_t)timelimit_sec) { - break; + if (i != idx) { + switch_channel_hangup(peer_channels[i], SWITCH_CAUSE_LOSE_RACE); } - switch_yield(1000); } - if (valid_channels == 0) { - status = SWITCH_STATUS_GENERR; + + if (idx > -1) { + peer_session = peer_sessions[idx]; + peer_channel = peer_channels[idx]; + } else { + status = SWITCH_STATUS_FALSE; goto done; } - } - endfor1: + if (caller_channel && switch_channel_test_flag(peer_channel, CF_ANSWERED)) { + char *val; - if (session) { - switch_codec_t *read_codec = NULL; - - switch_channel_pre_answer(caller_channel); - read_codec = switch_core_session_get_read_codec(session); - - assert(read_codec != NULL); - if (!(pass = (uint8_t)switch_test_flag(read_codec, SWITCH_CODEC_FLAG_PASSTHROUGH))) { - if (switch_core_codec_init(&write_codec, - "L16", - read_codec->implementation->samples_per_second, - read_codec->implementation->microseconds_per_frame / 1000, - 1, - SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, - NULL, - pool) == SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Raw Codec Activation Success L16@%uhz 1 channel %dms\n", - read_codec->implementation->samples_per_second, - read_codec->implementation->microseconds_per_frame / 1000); - write_frame.codec = &write_codec; - write_frame.datalen = read_codec->implementation->bytes_per_frame; - write_frame.samples = write_frame.datalen / 2; - memset(write_frame.data, 255, write_frame.datalen); - } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Codec Error!"); - switch_channel_hangup(caller_channel, SWITCH_CAUSE_NORMAL_TEMPORARY_FAILURE); + if (switch_channel_test_flag(peer_channel, CF_NOMEDIA) && (val = switch_channel_get_variable(peer_channel, SWITCH_R_SDP_VARIABLE))) { + switch_channel_set_variable(caller_channel, SWITCH_L_SDP_VARIABLE, val); } + switch_channel_answer(caller_channel); } - } - while ((!caller_channel || switch_channel_ready(caller_channel)) && - check_channel_status(peer_channels, peer_sessions, argc, &idx, file, key) && ((time(NULL) - start) < (time_t)timelimit_sec)) { + if (switch_channel_test_flag(peer_channel, CF_ANSWERED) || switch_channel_test_flag(peer_channel, CF_EARLY_MEDIA)) { + *bleg = peer_session; + status = SWITCH_STATUS_SUCCESS; + } else { + status = SWITCH_STATUS_FALSE; + } - /* read from the channel while we wait if the audio is up on it */ - if (session && (switch_channel_test_flag(caller_channel, CF_ANSWERED) || switch_channel_test_flag(caller_channel, CF_EARLY_MEDIA))) { - switch_status_t status = switch_core_session_read_frame(session, &read_frame, 1000, 0); - - if (!SWITCH_READ_ACCEPTABLE(status)) { - break; + done: + *cause = SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; + + if (status == SWITCH_STATUS_SUCCESS) { + if (caller_channel) { + switch_channel_set_variable(caller_channel, "originate_disposition", "call accepted"); } - if (read_frame && !pass) { - if (switch_core_session_write_frame(session, &write_frame, 1000, 0) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Originate Resulted in Success: [%s]\n", switch_channel_get_name(peer_channel)); + } else { + if (peer_channel) { + *cause = switch_channel_get_cause(peer_channel); + } else { + for (i = 0; i < and_argc; i++) { + if (!peer_channels[i]) { + continue; + } + + *cause = switch_channel_get_cause(peer_channels[i]); break; } } + if (caller_channel) { + switch_channel_set_variable(caller_channel, "originate_disposition", switch_channel_cause2str(*cause)); + } + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Originate Resulted in Error Cause: %d [%s]\n", *cause, switch_channel_cause2str(*cause)); + } - } else { - switch_yield(1000); + if (!pass && write_codec.implementation) { + switch_core_codec_destroy(&write_codec); } - - } - if (session) { - switch_core_session_reset(session); - } + for (i = 0; i < and_argc; i++) { + if (!peer_channels[i]) { + continue; + } + switch_core_session_rwunlock(peer_sessions[i]); + } - for (i = 0; i < argc; i++) { - if (!peer_channels[i]) { - continue; + if (status == SWITCH_STATUS_SUCCESS) { + break; } - if (i != idx) { - switch_channel_hangup(peer_channels[i], SWITCH_CAUSE_LOSE_RACE); - } } + switch_safe_free(odata); + return status; +} - if (idx > -1) { - peer_session = peer_sessions[idx]; - peer_channel = peer_channels[idx]; - } else { - status = SWITCH_STATUS_FALSE; - goto done; - } - if (caller_channel && switch_channel_test_flag(peer_channel, CF_ANSWERED)) { - switch_channel_answer(caller_channel); +static switch_status_t signal_bridge_on_hangup(switch_core_session_t *session) +{ + char *uuid; + switch_channel_t *channel = NULL; + switch_core_session_t *other_session; + switch_event_t *event; + + channel = switch_core_session_get_channel(session); + assert(channel != NULL); + + if (switch_channel_test_flag(channel, CF_ORIGINATOR)) { + switch_channel_clear_flag(channel, CF_ORIGINATOR); + if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_UNBRIDGE) == SWITCH_STATUS_SUCCESS) { + switch_channel_event_set_data(channel, event); + switch_event_fire(&event); + } } - if (switch_channel_test_flag(peer_channel, CF_ANSWERED) || switch_channel_test_flag(peer_channel, CF_EARLY_MEDIA)) { - *bleg = peer_session; - status = SWITCH_STATUS_SUCCESS; - } else { - status = SWITCH_STATUS_FALSE; + + if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BRIDGE_VARIABLE)) && (other_session = switch_core_session_locate(uuid))) { + switch_channel_t *other_channel = NULL; + + other_channel = switch_core_session_get_channel(other_session); + assert(other_channel != NULL); + + switch_channel_hangup(other_channel, switch_channel_get_cause(channel)); + switch_core_session_rwunlock(other_session); } - done: - *cause = SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; + return SWITCH_STATUS_SUCCESS; +} - if (status == SWITCH_STATUS_SUCCESS) { - if (caller_channel) { - switch_channel_set_variable(caller_channel, "originate_disposition", "call accepted"); - } - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Originate Resulted in Success: [%s]\n", switch_channel_get_name(peer_channel)); - } else { - if (peer_channel) { - *cause = switch_channel_get_cause(peer_channel); - } else { - for (i = 0; i < argc; i++) { - if (!peer_channels[i]) { - continue; - } - - *cause = switch_channel_get_cause(peer_channels[i]); - break; - } - } - if (caller_channel) { - switch_channel_set_variable(caller_channel, "originate_disposition", switch_channel_cause2str(*cause)); - } - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Originate Resulted in Error Cause: %d [%s]\n", *cause, switch_channel_cause2str(*cause)); +static const switch_state_handler_table_t signal_bridge_state_handlers = { + /*.on_init */ NULL, + /*.on_ring */ NULL, + /*.on_execute */ NULL, + /*.on_hangup */ signal_bridge_on_hangup, + /*.on_loopback */ NULL, + /*.on_transmit */ NULL, + /*.on_hold */ NULL +}; + + + +SWITCH_DECLARE(switch_status_t) switch_ivr_signal_bridge(switch_core_session_t *session, switch_core_session_t *peer_session) +{ + switch_channel_t *caller_channel, *peer_channel; + switch_event_t *event; + + caller_channel = switch_core_session_get_channel(session); + assert(caller_channel != NULL); + + switch_channel_set_flag(caller_channel, CF_ORIGINATOR); + + peer_channel = switch_core_session_get_channel(peer_session); + assert(peer_channel != NULL); + + switch_channel_set_variable(caller_channel, SWITCH_SIGNAL_BRIDGE_VARIABLE, switch_core_session_get_uuid(peer_session)); + switch_channel_set_variable(peer_channel, SWITCH_SIGNAL_BRIDGE_VARIABLE, switch_core_session_get_uuid(session)); + + switch_channel_clear_state_handler(caller_channel, NULL); + switch_channel_clear_state_handler(peer_channel, NULL); + + switch_channel_add_state_handler(caller_channel, &signal_bridge_state_handlers); + switch_channel_add_state_handler(peer_channel, &signal_bridge_state_handlers); + + + /* fire events that will change the data table from "show channels" */ + if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_EXECUTE) == SWITCH_STATUS_SUCCESS) { + switch_channel_event_set_data(caller_channel, event); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Application", "signal_bridge"); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Application-Data", "%s", switch_core_session_get_uuid(peer_session)); + switch_event_fire(&event); } - if (odata) { - free(odata); + if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_EXECUTE) == SWITCH_STATUS_SUCCESS) { + switch_channel_event_set_data(peer_channel, event); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Application", "signal_bridge"); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Application-Data", "%s", switch_core_session_get_uuid(session)); + switch_event_fire(&event); } - if (!pass && write_codec.implementation) { - switch_core_codec_destroy(&write_codec); - } - for (i = 0; i < argc; i++) { - if (!peer_channels[i]) { - continue; - } - switch_core_session_rwunlock(peer_sessions[i]); + if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_BRIDGE) == SWITCH_STATUS_SUCCESS) { + switch_channel_event_set_data(caller_channel, event); + switch_event_fire(&event); } + + switch_channel_set_state(caller_channel, CS_TRANSMIT); + switch_channel_set_state(peer_channel, CS_TRANSMIT); - return status; + return SWITCH_STATUS_SUCCESS; } @@ -2102,18 +2225,32 @@ switch_event_fire(&event); } - msg.message_id = SWITCH_MESSAGE_INDICATE_BRIDGE; - msg.from = __FILE__; - msg.pointer_arg = session; + if (switch_core_session_read_lock(peer_session) == SWITCH_STATUS_SUCCESS) { + switch_channel_set_variable(caller_channel, SWITCH_BRIDGE_VARIABLE, switch_core_session_get_uuid(peer_session)); + switch_channel_set_variable(peer_channel, SWITCH_BRIDGE_VARIABLE, switch_core_session_get_uuid(session)); - switch_core_session_receive_message(peer_session, &msg); - msg.pointer_arg = peer_session; - switch_core_session_receive_message(session, &msg); + msg.message_id = SWITCH_MESSAGE_INDICATE_BRIDGE; + msg.from = __FILE__; + msg.pointer_arg = session; - if (switch_core_session_read_lock(peer_session) == SWITCH_STATUS_SUCCESS) { - switch_channel_set_variable(caller_channel, "BRIDGETO", switch_core_session_get_uuid(peer_session)); - switch_channel_set_variable(peer_channel, "BRIDGETO", switch_core_session_get_uuid(session)); + switch_core_session_receive_message(peer_session, &msg); + if (!msg.pointer_arg) { + status = SWITCH_STATUS_FALSE; + switch_core_session_rwunlock(peer_session); + goto done; + } + + msg.pointer_arg = peer_session; + switch_core_session_receive_message(session, &msg); + + if (!msg.pointer_arg) { + status = SWITCH_STATUS_FALSE; + switch_core_session_rwunlock(peer_session); + goto done; + } + + switch_channel_set_private(peer_channel, "_bridge_", other_audio_thread); switch_channel_set_state(peer_channel, CS_LOOPBACK); audio_bridge_thread(NULL, (void *) this_audio_thread); @@ -2164,6 +2301,7 @@ switch_channel_hangup(peer_channel, SWITCH_CAUSE_NO_ANSWER); } + done: return status; } @@ -2205,10 +2343,13 @@ switch_channel_set_state(originator_channel, CS_TRANSMIT); switch_channel_set_state(originatee_channel, CS_TRANSMIT); + status = SWITCH_STATUS_SUCCESS; } else { switch_core_session_rwunlock(originator_session); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "no channel for uuid %s\n", originatee_uuid); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "no channel for originatee uuid %s\n", originatee_uuid); } + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "no channel for originator uuid %s\n", originator_uuid); } return status; @@ -2219,6 +2360,7 @@ { switch_channel_t *channel; switch_caller_profile_t *profile, *new_profile; + switch_core_session_message_t msg = {0}; assert(session != NULL); assert(extension != NULL); @@ -2245,6 +2387,11 @@ switch_channel_set_caller_profile(channel, new_profile); switch_channel_set_flag(channel, CF_TRANSFER); switch_channel_set_state(channel, CS_RING); + + msg.message_id = SWITCH_MESSAGE_INDICATE_TRANSFER; + msg.from = __FILE__; + switch_core_session_receive_message(session, &msg); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Transfer %s to %s[%s@%s]\n", switch_channel_get_name(channel), dialplan, extension, context); return SWITCH_STATUS_SUCCESS; Modified: freeswitch/branches/mishehu/src/switch_loadable_module.c ============================================================================== --- freeswitch/branches/mishehu/src/switch_loadable_module.c (original) +++ freeswitch/branches/mishehu/src/switch_loadable_module.c Sun Oct 8 20:25:31 2006 @@ -161,6 +161,8 @@ if (switch_event_create(&event, SWITCH_EVENT_MODULE_LOAD) == SWITCH_STATUS_SUCCESS) { switch_event_add_header(event, SWITCH_STACK_BOTTOM, "type", "application"); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "name", "%s", ptr->interface_name); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "description", "%s", ptr->short_desc); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "syntax", "%s", ptr->syntax); switch_event_fire(&event); } switch_core_hash_insert(loadable_modules.application_hash, @@ -176,6 +178,8 @@ if (switch_event_create(&event, SWITCH_EVENT_MODULE_LOAD) == SWITCH_STATUS_SUCCESS) { switch_event_add_header(event, SWITCH_STACK_BOTTOM, "type", "api"); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "name", "%s", ptr->interface_name); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "description", "%s", ptr->desc); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "syntax", "%s", ptr->syntax); switch_event_fire(&event); } switch_core_hash_insert(loadable_modules.api_hash, (char *) ptr->interface_name, (void *) ptr); Modified: freeswitch/branches/mishehu/src/switch_log.c ============================================================================== --- freeswitch/branches/mishehu/src/switch_log.c (original) +++ freeswitch/branches/mishehu/src/switch_log.c Sun Oct 8 20:25:31 2006 @@ -223,7 +223,7 @@ } } else { if (level == SWITCH_LOG_CONSOLE || !LOG_QUEUE || !THREAD_RUNNING) { - fprintf(handle, data); + fprintf(handle, "%s", data); free(data); } else if (level <= MAX_LEVEL) { switch_log_node_t *node; Modified: freeswitch/branches/mishehu/src/switch_rtp.c ============================================================================== --- freeswitch/branches/mishehu/src/switch_rtp.c (original) +++ freeswitch/branches/mishehu/src/switch_rtp.c Sun Oct 8 20:25:31 2006 @@ -329,6 +329,11 @@ return SWITCH_STATUS_SOCKERR; } + if (switch_socket_opt_set(rtp_session->sock, SWITCH_SO_REUSEADDR, 1) != SWITCH_STATUS_SUCCESS) { + *err = "Socket Error!"; + return SWITCH_STATUS_FALSE; + } + if (switch_socket_bind(rtp_session->sock, rtp_session->local_addr) != SWITCH_STATUS_SUCCESS) { *err = "Bind Error!"; return SWITCH_STATUS_FALSE; Modified: freeswitch/branches/mishehu/src/switch_utils.c ============================================================================== --- freeswitch/branches/mishehu/src/switch_utils.c (original) +++ freeswitch/branches/mishehu/src/switch_utils.c Sun Oct 8 20:25:31 2006 @@ -72,6 +72,45 @@ return '\0'; } +SWITCH_DECLARE(char *) switch_escape_char(switch_memory_pool_t *pool, char *in, char *delim, char esc) +{ + char *data, *p, *d; + int count = 1, i = 0; + + p = in; + while(*p) { + d = delim; + while (*d) { + if (*p == *d) { + count++; + } + d++; + } + p++; + } + + if (count == 1) { + return in; + } + + data = switch_core_alloc(pool, strlen(in) + count); + + p = in; + while(*p) { + d = delim; + while (*d) { + if (*p == *d) { + data[i++] = esc; + } + d++; + } + data[i++] = *p; + p++; + } + return data; +} + + SWITCH_DECLARE(unsigned int) switch_separate_string(char *buf, char delim, char **array, int arraylen) { int argc; Modified: freeswitch/branches/mishehu/w32/Setup/Setup.vdproj ============================================================================== --- freeswitch/branches/mishehu/w32/Setup/Setup.vdproj (original) +++ freeswitch/branches/mishehu/w32/Setup/Setup.vdproj Sun Oct 8 20:25:31 2006 @@ -63,222 +63,240 @@ } "Entry" { - "MsmKey" = "8:_329D8DAE6C01FCF026E9DFB48B932203" - "OwnerKey" = "8:_28FBC5A60B44423B8A2CC378347483CE" + "MsmKey" = "8:_327123955D614480BF2995F2C39195DD" + "OwnerKey" = "8:_1CFB1AB04E024FC993E0EB4859DF8408" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_3FBEFE0119944C6781F81104ECEF37CA" - "OwnerKey" = "8:_UNDEFINED" + "MsmKey" = "8:_327123955D614480BF2995F2C39195DD" + "OwnerKey" = "8:_3E37631016BC45B2B672FE23257D542B" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_4A285D260C3748A4BEFA6E5A9004D128" - "OwnerKey" = "8:_UNDEFINED" + "MsmKey" = "8:_327123955D614480BF2995F2C39195DD" + "OwnerKey" = "8:_FBB0E565B1DE49CE9C827ACAC337AC5B" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_59CFED0C4EC0492C945E4EBC04FE965F" - "OwnerKey" = "8:_UNDEFINED" + "MsmKey" = "8:_327123955D614480BF2995F2C39195DD" + "OwnerKey" = "8:_F0B800E719294692A02518CFD8CBAEFF" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_5A636BB90F7F4B86ACB8839EA2C899AA" - "OwnerKey" = "8:_UNDEFINED" + "MsmKey" = "8:_327123955D614480BF2995F2C39195DD" + "OwnerKey" = "8:_EF14CB99F3414BB689D0CB0E6D6B8AB8" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_684D96FA2BDD46909367E651099D8C4E" - "OwnerKey" = "8:_UNDEFINED" + "MsmKey" = "8:_327123955D614480BF2995F2C39195DD" + "OwnerKey" = "8:_D2EF447106B24E67907DAED3D39CFBB1" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_69EB1A147CC2428435BDCA35014C96E1" - "OwnerKey" = "8:_D2EF447106B24E67907DAED3D39CFBB1" + "MsmKey" = "8:_327123955D614480BF2995F2C39195DD" + "OwnerKey" = "8:_D1269F1E49D442CF8EAC96C23E60325D" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_6E5C001E7A314DCEA0A4BF52BF74BCAD" - "OwnerKey" = "8:_UNDEFINED" + "MsmKey" = "8:_327123955D614480BF2995F2C39195DD" + "OwnerKey" = "8:_BB649A2C1ABE4895859025B09A240323" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_72A8732C0C0C4D0EAAE89DBB82073335" - "OwnerKey" = "8:_UNDEFINED" + "MsmKey" = "8:_327123955D614480BF2995F2C39195DD" + "OwnerKey" = "8:_B20769E090034897B32E3EA4EC1BA8A0" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_7358123D2D064AD1BC517911A8B23D1B" - "OwnerKey" = "8:_UNDEFINED" + "MsmKey" = "8:_327123955D614480BF2995F2C39195DD" + "OwnerKey" = "8:_A944ADCEDF884574A23F7BA5420A6BA1" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_83062AA0528B40A59202BC7668F7132A" - "OwnerKey" = "8:_UNDEFINED" + "MsmKey" = "8:_327123955D614480BF2995F2C39195DD" + "OwnerKey" = "8:_A0D5F714A0F94250A1C39603B699AB82" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_83C1B93AD71B4F8F9E074F9607B60DF1" - "OwnerKey" = "8:_UNDEFINED" + "MsmKey" = "8:_327123955D614480BF2995F2C39195DD" + "OwnerKey" = "8:_83C1B93AD71B4F8F9E074F9607B60DF1" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_87768631363249B2B301143C193612F7" - "OwnerKey" = "8:_UNDEFINED" + "MsmKey" = "8:_327123955D614480BF2995F2C39195DD" + "OwnerKey" = "8:_59CFED0C4EC0492C945E4EBC04FE965F" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_879085EF680EFDF6242DCB77439EC825" + "MsmKey" = "8:_327123955D614480BF2995F2C39195DD" + "OwnerKey" = "8:_4A285D260C3748A4BEFA6E5A9004D128" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_327123955D614480BF2995F2C39195DD" "OwnerKey" = "8:_3FBEFE0119944C6781F81104ECEF37CA" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_879085EF680EFDF6242DCB77439EC825" - "OwnerKey" = "8:_F0B800E719294692A02518CFD8CBAEFF" + "MsmKey" = "8:_327123955D614480BF2995F2C39195DD" + "OwnerKey" = "8:_318FCC99E8D143D6B4F9F534E63009B3" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_879085EF680EFDF6242DCB77439EC825" - "OwnerKey" = "8:_D2EF447106B24E67907DAED3D39CFBB1" + "MsmKey" = "8:_327123955D614480BF2995F2C39195DD" + "OwnerKey" = "8:_2F2FEC549F02436EB87961BD1B9E5783" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_879085EF680EFDF6242DCB77439EC825" - "OwnerKey" = "8:_59CFED0C4EC0492C945E4EBC04FE965F" + "MsmKey" = "8:_327123955D614480BF2995F2C39195DD" + "OwnerKey" = "8:_28FBC5A60B44423B8A2CC378347483CE" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_87C07635A76B4C5D85C78D91ED64A537" - "OwnerKey" = "8:_1CFB1AB04E024FC993E0EB4859DF8408" + "MsmKey" = "8:_327123955D614480BF2995F2C39195DD" + "OwnerKey" = "8:_2814E641538B42EFA83525986A9D5AC1" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_87C07635A76B4C5D85C78D91ED64A537" - "OwnerKey" = "8:_FBB0E565B1DE49CE9C827ACAC337AC5B" + "MsmKey" = "8:_329D8DAE6C01FCF026E9DFB48B932203" + "OwnerKey" = "8:_28FBC5A60B44423B8A2CC378347483CE" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_87C07635A76B4C5D85C78D91ED64A537" - "OwnerKey" = "8:_F0B800E719294692A02518CFD8CBAEFF" + "MsmKey" = "8:_3E37631016BC45B2B672FE23257D542B" + "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_87C07635A76B4C5D85C78D91ED64A537" - "OwnerKey" = "8:_EF14CB99F3414BB689D0CB0E6D6B8AB8" + "MsmKey" = "8:_3FBEFE0119944C6781F81104ECEF37CA" + "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_87C07635A76B4C5D85C78D91ED64A537" - "OwnerKey" = "8:_D2EF447106B24E67907DAED3D39CFBB1" + "MsmKey" = "8:_4A285D260C3748A4BEFA6E5A9004D128" + "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_87C07635A76B4C5D85C78D91ED64A537" - "OwnerKey" = "8:_D1269F1E49D442CF8EAC96C23E60325D" + "MsmKey" = "8:_59CFED0C4EC0492C945E4EBC04FE965F" + "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_87C07635A76B4C5D85C78D91ED64A537" - "OwnerKey" = "8:_BB649A2C1ABE4895859025B09A240323" + "MsmKey" = "8:_5A636BB90F7F4B86ACB8839EA2C899AA" + "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_87C07635A76B4C5D85C78D91ED64A537" - "OwnerKey" = "8:_B20769E090034897B32E3EA4EC1BA8A0" + "MsmKey" = "8:_684D96FA2BDD46909367E651099D8C4E" + "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_87C07635A76B4C5D85C78D91ED64A537" - "OwnerKey" = "8:_A944ADCEDF884574A23F7BA5420A6BA1" + "MsmKey" = "8:_69EB1A147CC2428435BDCA35014C96E1" + "OwnerKey" = "8:_D2EF447106B24E67907DAED3D39CFBB1" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_87C07635A76B4C5D85C78D91ED64A537" - "OwnerKey" = "8:_A0D5F714A0F94250A1C39603B699AB82" + "MsmKey" = "8:_6E5C001E7A314DCEA0A4BF52BF74BCAD" + "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_87C07635A76B4C5D85C78D91ED64A537" - "OwnerKey" = "8:_83C1B93AD71B4F8F9E074F9607B60DF1" + "MsmKey" = "8:_72A8732C0C0C4D0EAAE89DBB82073335" + "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_87C07635A76B4C5D85C78D91ED64A537" - "OwnerKey" = "8:_59CFED0C4EC0492C945E4EBC04FE965F" + "MsmKey" = "8:_7358123D2D064AD1BC517911A8B23D1B" + "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_87C07635A76B4C5D85C78D91ED64A537" - "OwnerKey" = "8:_4A285D260C3748A4BEFA6E5A9004D128" + "MsmKey" = "8:_83062AA0528B40A59202BC7668F7132A" + "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_87C07635A76B4C5D85C78D91ED64A537" - "OwnerKey" = "8:_3FBEFE0119944C6781F81104ECEF37CA" + "MsmKey" = "8:_83C1B93AD71B4F8F9E074F9607B60DF1" + "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_87C07635A76B4C5D85C78D91ED64A537" - "OwnerKey" = "8:_318FCC99E8D143D6B4F9F534E63009B3" + "MsmKey" = "8:_87768631363249B2B301143C193612F7" + "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_87C07635A76B4C5D85C78D91ED64A537" - "OwnerKey" = "8:_2F2FEC549F02436EB87961BD1B9E5783" + "MsmKey" = "8:_879085EF680EFDF6242DCB77439EC825" + "OwnerKey" = "8:_3FBEFE0119944C6781F81104ECEF37CA" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_87C07635A76B4C5D85C78D91ED64A537" - "OwnerKey" = "8:_28FBC5A60B44423B8A2CC378347483CE" + "MsmKey" = "8:_879085EF680EFDF6242DCB77439EC825" + "OwnerKey" = "8:_F0B800E719294692A02518CFD8CBAEFF" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_87C07635A76B4C5D85C78D91ED64A537" - "OwnerKey" = "8:_2814E641538B42EFA83525986A9D5AC1" + "MsmKey" = "8:_879085EF680EFDF6242DCB77439EC825" + "OwnerKey" = "8:_D2EF447106B24E67907DAED3D39CFBB1" "MsmSig" = "8:_UNDEFINED" } "Entry" { + "MsmKey" = "8:_879085EF680EFDF6242DCB77439EC825" + "OwnerKey" = "8:_59CFED0C4EC0492C945E4EBC04FE965F" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_91BA2668F87764F53188E93BC8D363D7" "OwnerKey" = "8:_59CFED0C4EC0492C945E4EBC04FE965F" "MsmSig" = "8:_UNDEFINED" } "Entry" { + "MsmKey" = "8:_98CF7609810C41BABC219DFBA0A6075D" + "OwnerKey" = "8:_327123955D614480BF2995F2C39195DD" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_9A293E8A356A4959BB6E541B7DC213CD" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -387,12 +405,6 @@ } "Entry" { - "MsmKey" = "8:_E0FBD4D007C74B368ED03D076D7C1D75" - "OwnerKey" = "8:_87C07635A76B4C5D85C78D91ED64A537" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { "MsmKey" = "8:_E1CC91FCF87955D17FC3C0A8E875B690" "OwnerKey" = "8:_59CFED0C4EC0492C945E4EBC04FE965F" "MsmSig" = "8:_UNDEFINED" @@ -1598,7 +1610,7 @@ } "MergeModule" { - "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_87C07635A76B4C5D85C78D91ED64A537" + "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_327123955D614480BF2995F2C39195DD" { "UseDynamicProperties" = "11:TRUE" "IsDependency" = "11:TRUE" @@ -1612,7 +1624,7 @@ "Feature" = "8:" "IsolateTo" = "8:" } - "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_E0FBD4D007C74B368ED03D076D7C1D75" + "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_98CF7609810C41BABC219DFBA0A6075D" { "UseDynamicProperties" = "11:TRUE" "IsDependency" = "11:TRUE" @@ -1792,6 +1804,34 @@ "OutputConfiguration" = "8:" "OutputGroupCanonicalName" = "8:Built" "OutputProjectGuid" = "8:{AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}" + "ShowKeyOutput" = "11:TRUE" + "ExcludeFilters" + { + } + } + "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_3E37631016BC45B2B672FE23257D542B" + { + "SourcePath" = "8:..\\..\\debug\\pthreadVC2.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + "ProjectOutputGroupRegister" = "3:1" + "OutputConfiguration" = "8:" + "OutputGroupCanonicalName" = "8:Built" + "OutputProjectGuid" = "8:{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}" "ShowKeyOutput" = "11:TRUE" "ExcludeFilters" {
participants (1)
-
Freeswitch SVN