diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh
index adc003b097..055802cadc 100755
--- a/debian/bootstrap.sh
+++ b/debian/bootstrap.sh
@@ -256,6 +256,7 @@ Depends: \${misc:Depends}, freeswitch (= \${binary:Version}),
freeswitch-mod-sofia (= \${binary:Version}),
freeswitch-mod-local-stream (= \${binary:Version}),
freeswitch-mod-native-file (= \${binary:Version}),
+ freeswitch-mod-sndfile (= \${binary:Version}),
freeswitch-mod-tone-stream (= \${binary:Version}),
freeswitch-mod-lua (= \${binary:Version}),
freeswitch-mod-console (= \${binary:Version}),
diff --git a/libs/broadvoice/src/libbroadvoice.2012.vcxproj.filters b/libs/broadvoice/src/libbroadvoice.2012.vcxproj.filters
new file mode 100644
index 0000000000..263ac94b51
--- /dev/null
+++ b/libs/broadvoice/src/libbroadvoice.2012.vcxproj.filters
@@ -0,0 +1,167 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {f5d987d2-ff66-4c4f-9d5d-38f05fedf46a}
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
\ No newline at end of file
diff --git a/libs/esl/fs_cli.2012.vcxproj.filters b/libs/esl/fs_cli.2012.vcxproj.filters
new file mode 100644
index 0000000000..dfc1faab80
--- /dev/null
+++ b/libs/esl/fs_cli.2012.vcxproj.filters
@@ -0,0 +1,30 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+
\ No newline at end of file
diff --git a/libs/esl/lua/esl_lua.2012.vcxproj.filters b/libs/esl/lua/esl_lua.2012.vcxproj.filters
new file mode 100644
index 0000000000..51644e4cdf
--- /dev/null
+++ b/libs/esl/lua/esl_lua.2012.vcxproj.filters
@@ -0,0 +1,25 @@
+
+
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+
\ No newline at end of file
diff --git a/libs/ilbc/libilbc.2012.vcxproj.filters b/libs/ilbc/libilbc.2012.vcxproj.filters
new file mode 100644
index 0000000000..adc872f47a
--- /dev/null
+++ b/libs/ilbc/libilbc.2012.vcxproj.filters
@@ -0,0 +1,162 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
\ No newline at end of file
diff --git a/libs/libdingaling/libdingaling.2012.vcxproj.filters b/libs/libdingaling/libdingaling.2012.vcxproj.filters
new file mode 100644
index 0000000000..18ef8e8b1a
--- /dev/null
+++ b/libs/libdingaling/libdingaling.2012.vcxproj.filters
@@ -0,0 +1,38 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+
+
+ Source Files
+
+
+
\ No newline at end of file
diff --git a/libs/libteletone/libteletone.2012.vcxproj.filters b/libs/libteletone/libteletone.2012.vcxproj.filters
new file mode 100644
index 0000000000..720e152623
--- /dev/null
+++ b/libs/libteletone/libteletone.2012.vcxproj.filters
@@ -0,0 +1,36 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
\ No newline at end of file
diff --git a/libs/portaudio/build/msvc/portaudio.2012.vcxproj.filters b/libs/portaudio/build/msvc/portaudio.2012.vcxproj.filters
new file mode 100644
index 0000000000..8fc7695006
--- /dev/null
+++ b/libs/portaudio/build/msvc/portaudio.2012.vcxproj.filters
@@ -0,0 +1,132 @@
+
+
+
+
+ {27479ed0-78ba-43cc-8fb5-31de44bbc8da}
+ cpp;c;cxx;rc;def;r;odl;idl;hpj;bat
+
+
+ {8f150320-dccc-4b5c-b43c-b3b91378f721}
+
+
+ {ac26acd3-797a-4668-a607-9694e9f10a16}
+
+
+ {03878aa4-e6a3-4d56-81fe-f93794a1e3a1}
+
+
+ {99774f7f-59c1-48cb-b72a-09d78537e6e4}
+
+
+ {f47fabee-145b-4c98-9423-3d1bb7c1f3b3}
+
+
+ {4ea57aa2-5b6b-4022-86b9-f3a02dd2284b}
+
+
+ {9c44aff3-3f53-4117-8097-ee8b810caba2}
+
+
+ {a20f633f-4213-4f4b-bd65-a8e49cf9f842}
+
+
+ {ce9a362c-b700-4ea4-88b4-51c222789754}
+
+
+ {6e72bafa-42f5-450a-90f4-0206faddcf3d}
+ ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe
+
+
+ {5060bc7a-2362-400f-bda0-ae74643cea86}
+ h;hpp;hxx;hm;inl
+
+
+
+
+ Source Files\common
+
+
+ Source Files\common
+
+
+ Source Files\common
+
+
+ Source Files\common
+
+
+ Source Files\common
+
+
+ Source Files\common
+
+
+ Source Files\common
+
+
+ Source Files\common
+
+
+ Source Files\common
+
+
+ Source Files\common
+
+
+ Source Files\hostapi\ASIO
+
+
+ Source Files\hostapi\ASIO\ASIOSDK
+
+
+ Source Files\hostapi\ASIO\ASIOSDK
+
+
+ Source Files\hostapi\ASIO\ASIOSDK
+
+
+ Source Files\hostapi\ASIO\ASIOSDK
+
+
+ Source Files\hostapi\ASIO\ASIOSDK
+
+
+ Source Files\hostapi\ASIO\ASIOSDK
+
+
+ Source Files\hostapi\ASIO\ASIOSDK
+
+
+ Source Files\hostapi\dsound
+
+
+ Source Files\hostapi\dsound
+
+
+ Source Files\hostapi\wmme
+
+
+ Source Files\hostapi\wasapi
+
+
+ Source Files\os\win
+
+
+ Source Files\os\win
+
+
+ Source Files\os\win
+
+
+ Source Files\os\win
+
+
+ Source Files\os\win
+
+
+
+
+ Resource Files
+
+
+
\ No newline at end of file
diff --git a/libs/spandsp/src/libspandsp.2012.vcxproj.filters b/libs/spandsp/src/libspandsp.2012.vcxproj.filters
new file mode 100644
index 0000000000..c7d1210235
--- /dev/null
+++ b/libs/spandsp/src/libspandsp.2012.vcxproj.filters
@@ -0,0 +1,726 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {23b008e2-8d2d-475f-bdb4-f3f067ff16e3}
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libs/spandsp/src/msvc/make_at_dictionary.2012.vcxproj.filters b/libs/spandsp/src/msvc/make_at_dictionary.2012.vcxproj.filters
new file mode 100644
index 0000000000..708d52292d
--- /dev/null
+++ b/libs/spandsp/src/msvc/make_at_dictionary.2012.vcxproj.filters
@@ -0,0 +1,14 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+
+
+ Source Files
+
+
+
\ No newline at end of file
diff --git a/libs/spandsp/src/msvc/make_modem_filter.2012.vcxproj.filters b/libs/spandsp/src/msvc/make_modem_filter.2012.vcxproj.filters
new file mode 100644
index 0000000000..122497994c
--- /dev/null
+++ b/libs/spandsp/src/msvc/make_modem_filter.2012.vcxproj.filters
@@ -0,0 +1,29 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+
\ No newline at end of file
diff --git a/libs/unimrcp/libs/mrcp-signaling/mrcpsignaling.2012.vcxproj.filters b/libs/unimrcp/libs/mrcp-signaling/mrcpsignaling.2012.vcxproj.filters
new file mode 100644
index 0000000000..4e5d30c3da
--- /dev/null
+++ b/libs/unimrcp/libs/mrcp-signaling/mrcpsignaling.2012.vcxproj.filters
@@ -0,0 +1,35 @@
+
+
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {f3dc550f-1a0f-4b9e-b077-3b6940dc5531}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+
+
+ src
+
+
+ src
+
+
+
\ No newline at end of file
diff --git a/libs/unimrcp/libs/mrcpv2-transport/mrcpv2transport.2012.vcxproj.filters b/libs/unimrcp/libs/mrcpv2-transport/mrcpv2transport.2012.vcxproj.filters
new file mode 100644
index 0000000000..452f77e19d
--- /dev/null
+++ b/libs/unimrcp/libs/mrcpv2-transport/mrcpv2transport.2012.vcxproj.filters
@@ -0,0 +1,44 @@
+
+
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {a92d3b8c-d54d-416c-b458-dc57ac24d2e9}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+
+
+ src
+
+
+ src
+
+
+ src
+
+
+ src
+
+
+
\ No newline at end of file
diff --git a/libs/unimrcp/libs/uni-rtsp/unirtsp.2012.vcxproj.filters b/libs/unimrcp/libs/uni-rtsp/unirtsp.2012.vcxproj.filters
new file mode 100644
index 0000000000..5a1581a2c3
--- /dev/null
+++ b/libs/unimrcp/libs/uni-rtsp/unirtsp.2012.vcxproj.filters
@@ -0,0 +1,56 @@
+
+
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {fd4564ef-9f34-4f23-992d-37f127e289a2}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+
+
+ src
+
+
+ src
+
+
+ src
+
+
+ src
+
+
+ src
+
+
+ src
+
+
+
\ No newline at end of file
diff --git a/libs/unimrcp/modules/mrcp-sofiasip/mrcpsofiasip.2012.vcxproj.filters b/libs/unimrcp/modules/mrcp-sofiasip/mrcpsofiasip.2012.vcxproj.filters
new file mode 100644
index 0000000000..d2157eea88
--- /dev/null
+++ b/libs/unimrcp/modules/mrcp-sofiasip/mrcpsofiasip.2012.vcxproj.filters
@@ -0,0 +1,35 @@
+
+
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {6e92b598-880e-4fe5-88fb-f69df8e06a57}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+
+
+ src
+
+
+ src
+
+
+ src
+
+
+
\ No newline at end of file
diff --git a/libs/unimrcp/modules/mrcp-unirtsp/mrcpunirtsp.2012.vcxproj.filters b/libs/unimrcp/modules/mrcp-unirtsp/mrcpunirtsp.2012.vcxproj.filters
new file mode 100644
index 0000000000..a990550f29
--- /dev/null
+++ b/libs/unimrcp/modules/mrcp-unirtsp/mrcpunirtsp.2012.vcxproj.filters
@@ -0,0 +1,35 @@
+
+
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {f87f8ada-12d1-412b-bd14-7e62df3f92a0}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+
+
+ src
+
+
+ src
+
+
+ src
+
+
+
\ No newline at end of file
diff --git a/libs/win32/apr-util/libaprutil.2012.vcxproj.filters b/libs/win32/apr-util/libaprutil.2012.vcxproj.filters
new file mode 100644
index 0000000000..66ad7f99e0
--- /dev/null
+++ b/libs/win32/apr-util/libaprutil.2012.vcxproj.filters
@@ -0,0 +1,307 @@
+
+
+
+
+ {fefe4b16-83a4-46b0-ab4b-858531a32218}
+
+
+ {66bee6b2-6ba2-4e7d-9c04-5e52ea75b8ee}
+
+
+ {ec602915-b144-4258-81ce-f8931434e1eb}
+
+
+ {47b5e91f-ec43-4b87-8d11-cc109d0f0733}
+
+
+ {12d41721-8bc3-476e-bffa-6bab3ebbcfef}
+
+
+ {aafe340f-5f94-4402-a3f4-977c302848c1}
+
+
+ {627c064a-54af-49ae-b154-01343f2be90e}
+
+
+ {3791a803-8653-410b-905e-934728270db6}
+
+
+ {5133e514-d14d-46b5-9e37-3ab909e4ef28}
+
+
+ {62959b64-29f8-483f-830f-91e3005c15b9}
+
+
+ {ec299ad2-8fa6-4923-95f4-b8c7f6184dcf}
+
+
+ {ef13505a-0a7a-4fdc-a55a-b47e92957a85}
+
+
+ {80fa8ffc-4776-4a21-bd8b-bfa055f9f46d}
+
+
+ {fdb27306-6946-4cf2-bdb6-39e03cdeeae6}
+
+
+ {ee62af10-73ee-4af5-85d1-442efcd33aa2}
+
+
+ {0ea472ce-22be-43c7-b06d-a50dd027a9fe}
+
+
+
+
+ Source Files\buckets
+
+
+ Source Files\buckets
+
+
+ Source Files\buckets
+
+
+ Source Files\buckets
+
+
+ Source Files\buckets
+
+
+ Source Files\buckets
+
+
+ Source Files\buckets
+
+
+ Source Files\buckets
+
+
+ Source Files\buckets
+
+
+ Source Files\buckets
+
+
+ Source Files\buckets
+
+
+ Source Files\buckets
+
+
+ Source Files\buckets
+
+
+ Source Files\crypto
+
+
+ Source Files\crypto
+
+
+ Source Files\crypto
+
+
+ Source Files\crypto
+
+
+ Source Files\crypto
+
+
+ Source Files\dbd
+
+
+ Source Files\dbd
+
+
+ Source Files\dbd
+
+
+ Source Files\dbd
+
+
+ Source Files\dbm
+
+
+ Source Files\dbm
+
+
+ Source Files\dbm
+
+
+ Source Files\dbm
+
+
+ Source Files\encoding
+
+
+ Source Files\hooks
+
+
+ Source Files\ldap
+
+
+ Source Files\ldap
+
+
+ Source Files\ldap
+
+
+ Source Files\misc
+
+
+ Source Files\misc
+
+
+ Source Files\misc
+
+
+ Source Files\misc
+
+
+ Source Files\sdbm
+
+
+ Source Files\sdbm
+
+
+ Source Files\sdbm
+
+
+ Source Files\sdbm
+
+
+ Source Files\strmatch
+
+
+ Source Files\uri
+
+
+ Source Files\xlate
+
+
+
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+
+
+ Generated Files
+
+
+ Generated Files
+
+
+ Generated Files
+
+
+ Generated Files
+
+
+ Generated Files
+
+
+ Generated Files
+
+
+ Generated Files
+
+
+ Generated Files
+
+
+
+
+
+
+
+ Source Files\sdbm
+
+
+ Source Files\sdbm
+
+
+ Source Files\sdbm
+
+
+
+
+ Generated Files
+
+
+ Generated Files
+
+
+ Generated Files
+
+
+ Generated Files
+
+
+ Generated Files
+
+
+
\ No newline at end of file
diff --git a/libs/win32/apr/libapr.2012.vcxproj.filters b/libs/win32/apr/libapr.2012.vcxproj.filters
new file mode 100644
index 0000000000..d8f55dc5f7
--- /dev/null
+++ b/libs/win32/apr/libapr.2012.vcxproj.filters
@@ -0,0 +1,406 @@
+
+
+
+
+ {4fc8eb14-6896-4c69-bd8c-bddb16455565}
+ .c
+
+
+ {c89ee98b-64d0-48dd-b568-2ff6b59fc5c5}
+
+
+ {78b00836-5d44-4387-8462-4bb5e76ae5da}
+
+
+ {0fa9b52a-8504-44e2-8c0e-12b4aad8d27b}
+
+
+ {a4bc2b15-7e22-4e76-a2bc-bcd8fd793d09}
+
+
+ {07e65061-0cc8-4f41-879e-0c4f5a1b4592}
+
+
+ {2bb687cd-88a4-4477-8ee8-c0036b0b061c}
+
+
+ {8931e7d2-2589-4697-8eab-cbfdd7b78102}
+
+
+ {13d0cf3c-5d76-4e93-9dc9-20fc256f342e}
+
+
+ {c8b09a9b-d7a9-493c-af76-2f774f1ae867}
+
+
+ {8021a134-d200-4419-a9af-79c9330f7a50}
+
+
+ {5b36b756-ba67-41b3-82e8-19bf529b98e7}
+
+
+ {4792d1b4-2348-4cdc-9ac0-eced0c1e658e}
+
+
+ {bb1839cf-8ea0-43fd-a025-fe01e7ddd29e}
+
+
+ {f9664d77-a9cb-4eb7-9f86-b81860e8eac8}
+
+
+ {5d888443-39c7-4937-aed7-f100b0efc8bc}
+
+
+ {01c1e6ed-56bc-4d03-a1fd-1671ca1c2d90}
+
+
+ {243e3b60-6f34-46d7-8ffb-18936f283239}
+
+
+ {77829670-aaa9-4ff9-af8e-62ba7f507e32}
+
+
+
+
+ Source Files\atomic
+
+
+ Source Files\dso
+
+
+ Source Files\file_io
+
+
+ Source Files\file_io
+
+
+ Source Files\file_io
+
+
+ Source Files\file_io
+
+
+ Source Files\file_io
+
+
+ Source Files\file_io
+
+
+ Source Files\file_io
+
+
+ Source Files\file_io
+
+
+ Source Files\file_io
+
+
+ Source Files\file_io
+
+
+ Source Files\file_io
+
+
+ Source Files\file_io
+
+
+ Source Files\file_io
+
+
+ Source Files\file_io
+
+
+ Source Files\file_io
+
+
+ Source Files\file_io
+
+
+ Source Files\locks
+
+
+ Source Files\locks
+
+
+ Source Files\locks
+
+
+ Source Files\locks
+
+
+ Source Files\memory
+
+
+ Source Files\misc
+
+
+ Source Files\misc
+
+
+ Source Files\misc
+
+
+ Source Files\misc
+
+
+ Source Files\misc
+
+
+ Source Files\misc
+
+
+ Source Files\misc
+
+
+ Source Files\misc
+
+
+ Source Files\misc
+
+
+ Source Files\misc
+
+
+ Source Files\misc
+
+
+ Source Files\mmap
+
+
+ Source Files\mmap
+
+
+ Source Files\network_io
+
+
+ Source Files\network_io
+
+
+ Source Files\network_io
+
+
+ Source Files\network_io
+
+
+ Source Files\network_io
+
+
+ Source Files\network_io
+
+
+ Source Files\network_io
+
+
+ Source Files\network_io
+
+
+ Source Files\passwd
+
+
+ Source Files\random
+
+
+ Source Files\random
+
+
+ Source Files\random
+
+
+ Source Files\shmem
+
+
+ Source Files\strings
+
+
+ Source Files\strings
+
+
+ Source Files\strings
+
+
+ Source Files\strings
+
+
+ Source Files\strings
+
+
+ Source Files\strings
+
+
+ Source Files\tables
+
+
+ Source Files\tables
+
+
+ Source Files\threadproc
+
+
+ Source Files\threadproc
+
+
+ Source Files\threadproc
+
+
+ Source Files\threadproc
+
+
+ Source Files\time
+
+
+ Source Files\time
+
+
+ Source Files\time
+
+
+ Source Files\user
+
+
+ Source Files\user
+
+
+
+
+ Private Header Files
+
+
+ Private Header Files
+
+
+ Private Header Files
+
+
+ Private Header Files
+
+
+ Private Header Files
+
+
+ Private Header Files
+
+
+ Private Header Files
+
+
+ Private Header Files
+
+
+ Private Header Files
+
+
+ Private Header Files
+
+
+ Private Header Files
+
+
+ Private Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+ Public Header Files
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libs/win32/celt/libcelt.2012.vcxproj.filters b/libs/win32/celt/libcelt.2012.vcxproj.filters
new file mode 100644
index 0000000000..22236564f3
--- /dev/null
+++ b/libs/win32/celt/libcelt.2012.vcxproj.filters
@@ -0,0 +1,76 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
\ No newline at end of file
diff --git a/libs/win32/curl/curllib.2012.vcxproj.filters b/libs/win32/curl/curllib.2012.vcxproj.filters
new file mode 100644
index 0000000000..5b35d44edf
--- /dev/null
+++ b/libs/win32/curl/curllib.2012.vcxproj.filters
@@ -0,0 +1,358 @@
+
+
+
+
+ {6b959500-cd81-4335-bdf2-c430b2f07328}
+
+
+ {ee1686be-f512-40e0-8f5e-76480b95aafc}
+
+
+ {fd722a55-89b7-4153-9226-3eec445000d1}
+ ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
\ No newline at end of file
diff --git a/libs/win32/flite/flite.2012.vcxproj.filters b/libs/win32/flite/flite.2012.vcxproj.filters
new file mode 100644
index 0000000000..979f772242
--- /dev/null
+++ b/libs/win32/flite/flite.2012.vcxproj.filters
@@ -0,0 +1,677 @@
+
+
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {8a9db04d-0a7b-47f2-97ed-73acecd51688}
+
+
+ {f4b8438d-32d6-4e75-926b-b3950baf2282}
+
+
+ {58f041f5-13f9-4986-aa26-ab41db21c3b1}
+
+
+ {f4db3d58-e9d3-415a-ae41-cc3dd1012fc2}
+
+
+ {2e2fca2e-fc24-48cd-bfa0-42ceb5aa5331}
+
+
+ {29f922d5-330d-49c3-9f8d-5aaada042fe0}
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ voices\slt
+
+
+ voices\slt
+
+
+ voices\slt
+
+
+ voices\slt
+
+
+ voices\slt
+
+
+ voices\slt
+
+
+ voices\slt
+
+
+ voices\rms
+
+
+ voices\rms
+
+
+ voices\rms
+
+
+ voices\rms
+
+
+ voices\rms
+
+
+ voices\rms
+
+
+ voices\rms
+
+
+ voices\rms
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ voices\awb
+
+
+ voices\awb
+
+
+ voices\awb
+
+
+ voices\awb
+
+
+ voices\awb
+
+
+ voices\awb
+
+
+ voices\awb
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ voices\awb
+
+
+ voices\awb
+
+
+ voices\awb
+
+
+ voices\rms
+
+
+ voices\rms
+
+
+ voices\rms
+
+
+ voices\slt
+
+
+ voices\slt
+
+
+ voices\slt
+
+
+ voices\kal
+
+
+ voices\kal
+
+
+ voices\kal
+
+
+ voices\kal
+
+
+ voices\kal
+
+
+ voices\kal
+
+
+ voices\kal16
+
+
+ voices\kal16
+
+
+ voices\kal16
+
+
+ voices\kal16
+
+
+ voices\kal16
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ voices\slt
+
+
+ voices\slt
+
+
+ voices\slt
+
+
+ voices\slt
+
+
+ voices\rms
+
+
+ voices\rms
+
+
+ voices\rms
+
+
+ voices\rms
+
+
+ voices\rms
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ voices\awb
+
+
+ voices\awb
+
+
+ voices\awb
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ voices\awb
+
+
+ voices\awb
+
+
+ voices\awb
+
+
+ voices\rms
+
+
+ voices\rms
+
+
+ voices\slt
+
+
+ voices\slt
+
+
+ voices\kal
+
+
+ voices\kal16
+
+
+ Header Files
+
+
+ Header Files
+
+
+
\ No newline at end of file
diff --git a/libs/win32/iksemel/iksemel.2012.vcxproj.filters b/libs/win32/iksemel/iksemel.2012.vcxproj.filters
new file mode 100644
index 0000000000..27382de28b
--- /dev/null
+++ b/libs/win32/iksemel/iksemel.2012.vcxproj.filters
@@ -0,0 +1,69 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
\ No newline at end of file
diff --git a/libs/win32/js/js.2012.vcxproj.filters b/libs/win32/js/js.2012.vcxproj.filters
new file mode 100644
index 0000000000..11d8e7697c
--- /dev/null
+++ b/libs/win32/js/js.2012.vcxproj.filters
@@ -0,0 +1,464 @@
+
+
+
+
+ {4f5946e3-6061-45f6-aabc-3cfadc4ad060}
+ cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90
+
+
+ {90b839f0-4610-43e4-9fb3-0aa74394976d}
+
+
+ {c637d4b7-47bc-497a-b85e-becc3e2eb4ae}
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+ NSPR Source
+
+
+
\ No newline at end of file
diff --git a/libs/win32/json/libjson.2012.vcxproj.filters b/libs/win32/json/libjson.2012.vcxproj.filters
new file mode 100644
index 0000000000..9de2aac08f
--- /dev/null
+++ b/libs/win32/json/libjson.2012.vcxproj.filters
@@ -0,0 +1,45 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+
\ No newline at end of file
diff --git a/libs/win32/ldns/ldns-lib/ldns-lib.2012.vcxproj.filters b/libs/win32/ldns/ldns-lib/ldns-lib.2012.vcxproj.filters
new file mode 100644
index 0000000000..c76a57ea6f
--- /dev/null
+++ b/libs/win32/ldns/ldns-lib/ldns-lib.2012.vcxproj.filters
@@ -0,0 +1,258 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
+
+ Header Files
+
+
+
+
\ No newline at end of file
diff --git a/libs/win32/libg722_1/libg722_1.2012.vcxproj.filters b/libs/win32/libg722_1/libg722_1.2012.vcxproj.filters
new file mode 100644
index 0000000000..d54ad6e890
--- /dev/null
+++ b/libs/win32/libg722_1/libg722_1.2012.vcxproj.filters
@@ -0,0 +1,102 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
\ No newline at end of file
diff --git a/libs/win32/libjpeg/libjpeg.2012.vcxproj.filters b/libs/win32/libjpeg/libjpeg.2012.vcxproj.filters
new file mode 100644
index 0000000000..6a63450cb4
--- /dev/null
+++ b/libs/win32/libjpeg/libjpeg.2012.vcxproj.filters
@@ -0,0 +1,186 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
\ No newline at end of file
diff --git a/libs/win32/libogg/libogg.2012.vcxproj.filters b/libs/win32/libogg/libogg.2012.vcxproj.filters
new file mode 100644
index 0000000000..e769aa60a3
--- /dev/null
+++ b/libs/win32/libogg/libogg.2012.vcxproj.filters
@@ -0,0 +1,29 @@
+
+
+
+
+ {34e81afc-61be-40dc-b978-f4e20b9b1236}
+ cpp;c;cxx;rc;def;r;odl;idl;hpj;bat
+
+
+ {acd20529-ba9d-4ef9-8dc6-0c785bf72394}
+ h;hpp;hxx;hm;inl
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+
\ No newline at end of file
diff --git a/libs/win32/libshout/libshout.2012.vcxproj.filters b/libs/win32/libshout/libshout.2012.vcxproj.filters
new file mode 100644
index 0000000000..f1af2b80a0
--- /dev/null
+++ b/libs/win32/libshout/libshout.2012.vcxproj.filters
@@ -0,0 +1,80 @@
+
+
+
+
+ {c5227c05-bf9f-4a66-ae51-1e89ddd05771}
+ cpp;c;cxx;rc;def;r;odl;idl;hpj;bat
+
+
+ {ad7c320d-bfd2-4415-9e03-bb2000ab2c7c}
+ h;hpp;hxx;hm;inl
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
\ No newline at end of file
diff --git a/libs/win32/libsndfile/libsndfile.2012.vcxproj.filters b/libs/win32/libsndfile/libsndfile.2012.vcxproj.filters
new file mode 100644
index 0000000000..f16a39b0c7
--- /dev/null
+++ b/libs/win32/libsndfile/libsndfile.2012.vcxproj.filters
@@ -0,0 +1,234 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {b116d731-aba1-4ebd-928f-51113eb4c45b}
+
+
+ {e24785ab-1f78-4bb6-98f3-6c4586e85648}
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files\GSM Sources
+
+
+ Source Files\GSM Sources
+
+
+ Source Files\GSM Sources
+
+
+ Source Files\GSM Sources
+
+
+ Source Files\GSM Sources
+
+
+ Source Files\GSM Sources
+
+
+ Source Files\GSM Sources
+
+
+ Source Files\GSM Sources
+
+
+ Source Files\GSM Sources
+
+
+ Source Files\GSM Sources
+
+
+ Source Files\GSM Sources
+
+
+ Source Files\GSM Sources
+
+
+ Source Files\GSM Sources
+
+
+ Source Files\GSM Sources
+
+
+ Source Files\G72X Sources
+
+
+ Source Files\G72X Sources
+
+
+ Source Files\G72X Sources
+
+
+ Source Files\G72X Sources
+
+
+ Source Files\G72X Sources
+
+
+
+
+ Source Files
+
+
+
\ No newline at end of file
diff --git a/libs/win32/mpg123/libmpg123.2012.vcxproj.filters b/libs/win32/mpg123/libmpg123.2012.vcxproj.filters
new file mode 100644
index 0000000000..c2b9a2adca
--- /dev/null
+++ b/libs/win32/mpg123/libmpg123.2012.vcxproj.filters
@@ -0,0 +1,82 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
\ No newline at end of file
diff --git a/libs/win32/openssl/libeay32.2012.vcxproj.filters b/libs/win32/openssl/libeay32.2012.vcxproj.filters
new file mode 100644
index 0000000000..6a3215241e
--- /dev/null
+++ b/libs/win32/openssl/libeay32.2012.vcxproj.filters
@@ -0,0 +1,2093 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {2850971f-3d57-4ec1-ba4e-4eeeca46de09}
+
+
+ {6b648b8e-8ebf-4f48-8c17-1f6b2d9477ce}
+
+
+ {05ec904a-2b0d-4d2b-87ce-fcbaf9bc53ef}
+
+
+ {919079e4-52ba-479b-9d7e-673ad9bf6958}
+
+
+ {644aa6c7-8c73-4e8d-ae63-869bc189980a}
+
+
+ {636f4aed-2ca1-40a7-ac6b-92b541500300}
+
+
+ {bc509ff7-3aaa-468b-80fa-7354cb810c13}
+
+
+ {96559708-7eee-4deb-a2b2-667298a4ef01}
+
+
+ {1c09035a-c83f-40d7-920a-744cd59ef2f4}
+
+
+ {61e88564-1f38-4f1d-9e30-8e9d9506c71d}
+
+
+ {3ec0ae46-a65d-4fdf-828c-44a3c79a6513}
+
+
+ {616027a2-c98f-4445-9af0-0c50bb044818}
+
+
+ {6c98fe40-7652-4cd9-846a-554b31f968e6}
+
+
+ {b5ba2166-4005-4e4d-ba09-41746fd2c870}
+
+
+ {26f25748-94ef-4153-9724-719403f62835}
+
+
+ {daa6ffca-0173-41bf-8783-5ab2946155e5}
+
+
+ {dbfd9437-8e08-49de-a1e7-938b600a08cf}
+
+
+ {01bf1b62-b5be-47f7-8d41-e1bcfaad2aca}
+
+
+ {c47b5411-3d09-4382-b89f-a4108640aa92}
+
+
+ {ce0f14aa-10a0-4127-a466-3df1411abd2e}
+
+
+ {3e96a0c0-5174-442b-9340-fbfe40c6240b}
+
+
+ {aae1c437-51fa-4235-a078-145f1ce455cf}
+
+
+ {89511946-5b9a-46b2-9d0e-97899bcaf018}
+
+
+ {b0206185-99ef-40cc-aa8d-49e0034f98d4}
+
+
+ {fba7f92a-93a9-448d-a552-5491255db0ac}
+
+
+ {224fad84-0750-4fee-addb-83a53b3b761d}
+
+
+ {c754b49b-c6b8-4b49-802f-8eedfa4dbef4}
+
+
+ {78d696b8-88c1-4190-8a68-032e09b6d29d}
+
+
+ {ead8484b-aeec-45cf-a491-6eb06779ede7}
+
+
+ {9edce7d9-19e3-4272-aad1-c5602e2b2104}
+
+
+ {c76dbab1-9425-4178-9328-e680a21cb7f9}
+
+
+ {e796b6ee-d0c0-46ff-b949-556db483591e}
+
+
+ {e2f6b450-d8b6-4e3b-aa18-3af97ff00386}
+
+
+ {dabdf468-70c7-4047-a321-4257eddfd30e}
+
+
+ {b193f02f-4d4f-42df-bde9-29d40f5ab39b}
+
+
+ {8c36cfee-583f-4e0e-bd3c-a518d31d4eb2}
+
+
+ {f2d3a7a0-acdb-4e85-85ed-d74e176e5bea}
+
+
+ {0581d1b8-2fe1-4bfd-841f-78ae4af03566}
+
+
+ {90017bfa-d91a-430a-bba6-fde2d6a53129}
+
+
+ {fbe18987-9cdd-4d25-a173-865867f652b6}
+
+
+ {9a9acc90-e65f-4655-9fe5-644a9166663f}
+
+
+ {99a1ece1-fa73-4505-b850-a331cb41c53e}
+
+
+ {5b9dd7d9-bb80-40c4-87e3-6cd084d94034}
+
+
+ {b3c6fe14-7ab4-42ad-b73a-998cd8b071bd}
+
+
+ {cc048924-f80a-4a77-8113-cad552f4f420}
+
+
+ {87b53a26-4389-42b6-bd9a-559c5f8f6a47}
+
+
+ {673da9b9-025a-4a23-b7d7-834804ad564c}
+
+
+ {1531b88a-1a6c-43cd-be72-1059d1ac32a8}
+
+
+ {834fc5df-340b-41b0-b9d6-d9c77bdaa848}
+
+
+ {0a0643bb-ea56-4e8e-936b-95c56933441d}
+
+
+ {2f1cce25-c551-43c1-9ec3-478bea639d9e}
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {c42c3a40-6d53-49e8-bad0-bd02521f475d}
+
+
+ {12a7c0f3-1955-4c42-ab0d-5dfeb8e97f30}
+
+
+ {3a939d2d-882a-49cf-9b39-d6e29932ba2f}
+
+
+ {4e1235aa-5f4b-44f0-8cd2-db2bc40052c3}
+
+
+ {c4935409-609f-4bac-8306-8f480f529596}
+
+
+
+
+ Source Files\crypto
+
+
+ Source Files\crypto
+
+
+ Source Files\crypto
+
+
+ Source Files\crypto
+
+
+ Source Files\crypto
+
+
+ Source Files\crypto
+
+
+ Source Files\crypto
+
+
+ Source Files\crypto
+
+
+ Source Files\crypto
+
+
+ Source Files\crypto
+
+
+ Source Files\crypto\rc2
+
+
+ Source Files\crypto\rc2
+
+
+ Source Files\crypto\rc2
+
+
+ Source Files\crypto\rc2
+
+
+ Source Files\crypto\rc2
+
+
+ Source Files\crypto\rc4
+
+
+ Source Files\crypto\rc4
+
+
+ Source Files\crypto\idea
+
+
+ Source Files\crypto\idea
+
+
+ Source Files\crypto\idea
+
+
+ Source Files\crypto\idea
+
+
+ Source Files\crypto\idea
+
+
+ Source Files\crypto\bf
+
+
+ Source Files\crypto\bf
+
+
+ Source Files\crypto\bf
+
+
+ Source Files\crypto\bf
+
+
+ Source Files\crypto\bf
+
+
+ Source Files\crypto\cast
+
+
+ Source Files\crypto\cast
+
+
+ Source Files\crypto\cast
+
+
+ Source Files\crypto\cast
+
+
+ Source Files\crypto\cast
+
+
+ Source Files\crypto\ripemd
+
+
+ Source Files\crypto\ripemd
+
+
+ Source Files\crypto\des
+
+
+ Source Files\crypto\des
+
+
+ Source Files\crypto\des
+
+
+ Source Files\crypto\des
+
+
+ Source Files\crypto\des
+
+
+ Source Files\crypto\des
+
+
+ Source Files\crypto\des
+
+
+ Source Files\crypto\des
+
+
+ Source Files\crypto\des
+
+
+ Source Files\crypto\des
+
+
+ Source Files\crypto\des
+
+
+ Source Files\crypto\des
+
+
+ Source Files\crypto\des
+
+
+ Source Files\crypto\des
+
+
+ Source Files\crypto\des
+
+
+ Source Files\crypto\des
+
+
+ Source Files\crypto\des
+
+
+ Source Files\crypto\des
+
+
+ Source Files\crypto\des
+
+
+ Source Files\crypto\des
+
+
+ Source Files\crypto\des
+
+
+ Source Files\crypto\des
+
+
+ Source Files\crypto\des
+
+
+ Source Files\crypto\des
+
+
+ Source Files\crypto\des
+
+
+ Source Files\crypto\des
+
+
+ Source Files\crypto\aes
+
+
+ Source Files\crypto\aes
+
+
+ Source Files\crypto\aes
+
+
+ Source Files\crypto\aes
+
+
+ Source Files\crypto\aes
+
+
+ Source Files\crypto\aes
+
+
+ Source Files\crypto\aes
+
+
+ Source Files\crypto\aes
+
+
+ Source Files\crypto\aes
+
+
+ Source Files\crypto\camellia
+
+
+ Source Files\crypto\camellia
+
+
+ Source Files\crypto\camellia
+
+
+ Source Files\crypto\camellia
+
+
+ Source Files\crypto\camellia
+
+
+ Source Files\crypto\camellia
+
+
+ Source Files\crypto\camellia
+
+
+ Source Files\crypto\seed
+
+
+ Source Files\crypto\seed
+
+
+ Source Files\crypto\seed
+
+
+ Source Files\crypto\seed
+
+
+ Source Files\crypto\seed
+
+
+ Source Files\crypto\modes
+
+
+ Source Files\crypto\modes
+
+
+ Source Files\crypto\modes
+
+
+ Source Files\crypto\modes
+
+
+ Source Files\crypto\modes
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\bn
+
+
+ Source Files\crypto\rsa
+
+
+ Source Files\crypto\rsa
+
+
+ Source Files\crypto\rsa
+
+
+ Source Files\crypto\rsa
+
+
+ Source Files\crypto\rsa
+
+
+ Source Files\crypto\rsa
+
+
+ Source Files\crypto\rsa
+
+
+ Source Files\crypto\rsa
+
+
+ Source Files\crypto\rsa
+
+
+ Source Files\crypto\rsa
+
+
+ Source Files\crypto\rsa
+
+
+ Source Files\crypto\rsa
+
+
+ Source Files\crypto\rsa
+
+
+ Source Files\crypto\rsa
+
+
+ Source Files\crypto\rsa
+
+
+ Source Files\crypto\rsa
+
+
+ Source Files\crypto\rsa
+
+
+ Source Files\crypto\rsa
+
+
+ Source Files\crypto\rsa
+
+
+ Source Files\crypto\dsa
+
+
+ Source Files\crypto\dsa
+
+
+ Source Files\crypto\dsa
+
+
+ Source Files\crypto\dsa
+
+
+ Source Files\crypto\dsa
+
+
+ Source Files\crypto\dsa
+
+
+ Source Files\crypto\dsa
+
+
+ Source Files\crypto\dsa
+
+
+ Source Files\crypto\dsa
+
+
+ Source Files\crypto\dsa
+
+
+ Source Files\crypto\dsa
+
+
+ Source Files\crypto\dsa
+
+
+ Source Files\crypto\rand
+
+
+ Source Files\crypto\rand
+
+
+ Source Files\crypto\rand
+
+
+ Source Files\crypto\rand
+
+
+ Source Files\crypto\rand
+
+
+ Source Files\crypto\rand
+
+
+ Source Files\crypto\rand
+
+
+ Source Files\crypto\rand
+
+
+ Source Files\crypto\rand
+
+
+ Source Files\crypto\bio
+
+
+ Source Files\crypto\bio
+
+
+ Source Files\crypto\bio
+
+
+ Source Files\crypto\bio
+
+
+ Source Files\crypto\bio
+
+
+ Source Files\crypto\bio
+
+
+ Source Files\crypto\bio
+
+
+ Source Files\crypto\bio
+
+
+ Source Files\crypto\bio
+
+
+ Source Files\crypto\bio
+
+
+ Source Files\crypto\bio
+
+
+ Source Files\crypto\bio
+
+
+ Source Files\crypto\bio
+
+
+ Source Files\crypto\bio
+
+
+ Source Files\crypto\bio
+
+
+ Source Files\crypto\bio
+
+
+ Source Files\crypto\bio
+
+
+ Source Files\crypto\bio
+
+
+ Source Files\crypto\bio
+
+
+ Source Files\crypto\err
+
+
+ Source Files\crypto\err
+
+
+ Source Files\crypto\err
+
+
+ Source Files\crypto\ui
+
+
+ Source Files\crypto\ui
+
+
+ Source Files\crypto\ui
+
+
+ Source Files\crypto\ui
+
+
+ Source Files\crypto\ui
+
+
+ Source Files\crypto\x509
+
+
+ Source Files\crypto\x509
+
+
+ Source Files\crypto\x509
+
+
+ Source Files\crypto\x509
+
+
+ Source Files\crypto\x509
+
+
+ Source Files\crypto\x509
+
+
+ Source Files\crypto\x509
+
+
+ Source Files\crypto\x509
+
+
+ Source Files\crypto\x509
+
+
+ Source Files\crypto\x509
+
+
+ Source Files\crypto\x509
+
+
+ Source Files\crypto\x509
+
+
+ Source Files\crypto\x509
+
+
+ Source Files\crypto\x509
+
+
+ Source Files\crypto\x509
+
+
+ Source Files\crypto\x509
+
+
+ Source Files\crypto\x509
+
+
+ Source Files\crypto\x509
+
+
+ Source Files\crypto\x509
+
+
+ Source Files\crypto\x509
+
+
+ Source Files\crypto\x509
+
+
+ Source Files\crypto\x509
+
+
+ Source Files\crypto\x509
+
+
+ Source Files\crypto\x509
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\asn1
+
+
+ Source Files\crypto\objects
+
+
+ Source Files\crypto\objects
+
+
+ Source Files\crypto\objects
+
+
+ Source Files\crypto\objects
+
+
+ Source Files\crypto\objects
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\evp
+
+
+ Source Files\crypto\buffer
+
+
+ Source Files\crypto\buffer
+
+
+ Source Files\crypto\cms
+
+
+ Source Files\crypto\cms
+
+
+ Source Files\crypto\cms
+
+
+ Source Files\crypto\cms
+
+
+ Source Files\crypto\cms
+
+
+ Source Files\crypto\cms
+
+
+ Source Files\crypto\cms
+
+
+ Source Files\crypto\cms
+
+
+ Source Files\crypto\cms
+
+
+ Source Files\crypto\cms
+
+
+ Source Files\crypto\cms
+
+
+ Source Files\crypto\cms
+
+
+ Source Files\crypto\engine
+
+
+ Source Files\crypto\engine
+
+
+ Source Files\crypto\engine
+
+
+ Source Files\crypto\engine
+
+
+ Source Files\crypto\engine
+
+
+ Source Files\crypto\engine
+
+
+ Source Files\crypto\engine
+
+
+ Source Files\crypto\engine
+
+
+ Source Files\crypto\engine
+
+
+ Source Files\crypto\engine
+
+
+ Source Files\crypto\engine
+
+
+ Source Files\crypto\engine
+
+
+ Source Files\crypto\engine
+
+
+ Source Files\crypto\engine
+
+
+ Source Files\crypto\engine
+
+
+ Source Files\crypto\engine
+
+
+ Source Files\crypto\engine
+
+
+ Source Files\crypto\engine
+
+
+ Source Files\crypto\engine
+
+
+ Source Files\crypto\engine
+
+
+ Source Files\crypto\engine
+
+
+ Source Files\crypto\engine
+
+
+ Source Files\crypto\engine
+
+
+ Source Files\crypto\engine
+
+
+ Source Files\crypto\stack
+
+
+ Source Files\crypto\pkcs7
+
+
+ Source Files\crypto\pkcs7
+
+
+ Source Files\crypto\pkcs7
+
+
+ Source Files\crypto\pkcs7
+
+
+ Source Files\crypto\pkcs7
+
+
+ Source Files\crypto\pkcs7
+
+
+ Source Files\crypto\pkcs7
+
+
+ Source Files\crypto\pkcs7
+
+
+ Source Files\crypto\dh
+
+
+ Source Files\crypto\dh
+
+
+ Source Files\crypto\dh
+
+
+ Source Files\crypto\dh
+
+
+ Source Files\crypto\dh
+
+
+ Source Files\crypto\dh
+
+
+ Source Files\crypto\dh
+
+
+ Source Files\crypto\dh
+
+
+ Source Files\crypto\dh
+
+
+ Source Files\crypto\dh
+
+
+ Source Files\crypto\ocsp
+
+
+ Source Files\crypto\ocsp
+
+
+ Source Files\crypto\ocsp
+
+
+ Source Files\crypto\ocsp
+
+
+ Source Files\crypto\ocsp
+
+
+ Source Files\crypto\ocsp
+
+
+ Source Files\crypto\ocsp
+
+
+ Source Files\crypto\ocsp
+
+
+ Source Files\crypto\ocsp
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\x509v3
+
+
+ Source Files\crypto\ts
+
+
+ Source Files\crypto\ts
+
+
+ Source Files\crypto\ts
+
+
+ Source Files\crypto\ts
+
+
+ Source Files\crypto\ts
+
+
+ Source Files\crypto\ts
+
+
+ Source Files\crypto\ts
+
+
+ Source Files\crypto\ts
+
+
+ Source Files\crypto\ts
+
+
+ Source Files\crypto\ts
+
+
+ Source Files\crypto\ts
+
+
+ Source Files\crypto\conf
+
+
+ Source Files\crypto\conf
+
+
+ Source Files\crypto\conf
+
+
+ Source Files\crypto\conf
+
+
+ Source Files\crypto\conf
+
+
+ Source Files\crypto\conf
+
+
+ Source Files\crypto\conf
+
+
+ Source Files\crypto\ec
+
+
+ Source Files\crypto\ec
+
+
+ Source Files\crypto\ec
+
+
+ Source Files\crypto\ec
+
+
+ Source Files\crypto\ec
+
+
+ Source Files\crypto\ec
+
+
+ Source Files\crypto\ec
+
+
+ Source Files\crypto\ec
+
+
+ Source Files\crypto\ec
+
+
+ Source Files\crypto\ec
+
+
+ Source Files\crypto\ec
+
+
+ Source Files\crypto\ec
+
+
+ Source Files\crypto\ec
+
+
+ Source Files\crypto\ec
+
+
+ Source Files\crypto\ec
+
+
+ Source Files\crypto\ec
+
+
+ Source Files\crypto\ec
+
+
+ Source Files\crypto\ecdh
+
+
+ Source Files\crypto\ecdh
+
+
+ Source Files\crypto\ecdh
+
+
+ Source Files\crypto\ecdh
+
+
+ Source Files\crypto\ecdsa
+
+
+ Source Files\crypto\ecdsa
+
+
+ Source Files\crypto\ecdsa
+
+
+ Source Files\crypto\ecdsa
+
+
+ Source Files\crypto\ecdsa
+
+
+ Source Files\crypto\ecdsa
+
+
+ Source Files\crypto\md5
+
+
+ Source Files\crypto\md5
+
+
+ Source Files\crypto\md4
+
+
+ Source Files\crypto\md4
+
+
+ Source Files\crypto\lhash
+
+
+ Source Files\crypto\lhash
+
+
+ Source Files\crypto\dso
+
+
+ Source Files\crypto\dso
+
+
+ Source Files\crypto\dso
+
+
+ Source Files\crypto\dso
+
+
+ Source Files\crypto\dso
+
+
+ Source Files\crypto\dso
+
+
+ Source Files\crypto\dso
+
+
+ Source Files\crypto\dso
+
+
+ Source Files\crypto\dso
+
+
+ Source Files\crypto\pkcs12
+
+
+ Source Files\crypto\pkcs12
+
+
+ Source Files\crypto\pkcs12
+
+
+ Source Files\crypto\pkcs12
+
+
+ Source Files\crypto\pkcs12
+
+
+ Source Files\crypto\pkcs12
+
+
+ Source Files\crypto\pkcs12
+
+
+ Source Files\crypto\pkcs12
+
+
+ Source Files\crypto\pkcs12
+
+
+ Source Files\crypto\pkcs12
+
+
+ Source Files\crypto\pkcs12
+
+
+ Source Files\crypto\pkcs12
+
+
+ Source Files\crypto\pkcs12
+
+
+ Source Files\crypto\pkcs12
+
+
+ Source Files\crypto\pkcs12
+
+
+ Source Files\crypto\hmac
+
+
+ Source Files\crypto\hmac
+
+
+ Source Files\crypto\hmac
+
+
+ Source Files\crypto\sha
+
+
+ Source Files\crypto\sha
+
+
+ Source Files\crypto\sha
+
+
+ Source Files\crypto\sha
+
+
+ Source Files\crypto\sha
+
+
+ Source Files\crypto\sha
+
+
+ Source Files\crypto\sha
+
+
+ Source Files\crypto\comp
+
+
+ Source Files\crypto\comp
+
+
+ Source Files\crypto\comp
+
+
+ Source Files\crypto\comp
+
+
+ Source Files\crypto\pem
+
+
+ Source Files\crypto\pem
+
+
+ Source Files\crypto\pem
+
+
+ Source Files\crypto\pem
+
+
+ Source Files\crypto\pem
+
+
+ Source Files\crypto\pem
+
+
+ Source Files\crypto\pem
+
+
+ Source Files\crypto\pem
+
+
+ Source Files\crypto\pem
+
+
+ Source Files\crypto\pem
+
+
+ Source Files\crypto\pem
+
+
+ Source Files\crypto\pem
+
+
+ Source Files\crypto\whrlpool
+
+
+ Source Files\crypto\whrlpool
+
+
+ Source Files\crypto\mdc2
+
+
+ Source Files\crypto\mdc2
+
+
+ Source Files\crypto\krb5
+
+
+ Source Files\crypto\txt_db
+
+
+ Source Files\crypto\pqueue
+
+
+ Source Files\ms
+
+
+
+
+ Header Files
+
+
+ Header Files\crypto
+
+
+ Header Files\crypto
+
+
+ Header Files\crypto
+
+
+ Header Files\crypto
+
+
+ Header Files\crypto\evp
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\openssl
+
+
+ Header Files\bf
+
+
+ Header Files\bf
+
+
+ Header Files\bf
+
+
+ Header Files\ms
+
+
+
\ No newline at end of file
diff --git a/libs/win32/openssl/openssl.2012.vcxproj.filters b/libs/win32/openssl/openssl.2012.vcxproj.filters
new file mode 100644
index 0000000000..e568b7ac2f
--- /dev/null
+++ b/libs/win32/openssl/openssl.2012.vcxproj.filters
@@ -0,0 +1,179 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {cf6ed228-8b22-4124-ad73-05c2a9dc3ba9}
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {059be3d7-da1e-4270-8f05-a6772ccc5e10}
+
+
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+ Source Files\apps
+
+
+
+
+ Header Files\apps
+
+
+
\ No newline at end of file
diff --git a/libs/win32/openssl/ssleay32.2012.vcxproj.filters b/libs/win32/openssl/ssleay32.2012.vcxproj.filters
new file mode 100644
index 0000000000..4007284d59
--- /dev/null
+++ b/libs/win32/openssl/ssleay32.2012.vcxproj.filters
@@ -0,0 +1,167 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {f25bde33-475c-4870-aa63-95c0a3bcf356}
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {0a4387d1-72f1-4eaf-96bd-d83822dea414}
+
+
+ {8364f4d3-cb5e-498a-b5b1-46107d580c6c}
+
+
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+ Source Files\ssl
+
+
+
+
+ Header Files\crypto
+
+
+ Header Files\crypto
+
+
+ Header Files\crypto\evp
+
+
+
\ No newline at end of file
diff --git a/libs/win32/pcre/libpcre.2012.vcxproj.filters b/libs/win32/pcre/libpcre.2012.vcxproj.filters
new file mode 100644
index 0000000000..60add322d9
--- /dev/null
+++ b/libs/win32/pcre/libpcre.2012.vcxproj.filters
@@ -0,0 +1,95 @@
+
+
+
+
+ {427b94c9-e678-4d0c-8c16-37276afbfc94}
+ cpp;c;cxx;rc;def;r;odl;idl;hpj;bat
+
+
+ {5df91abd-8f03-4e8f-87ca-23fd510a729c}
+ h;hpp;hxx;hm;inl
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
\ No newline at end of file
diff --git a/libs/win32/pcre/pcre_chartables.c.2012.vcxproj.filters b/libs/win32/pcre/pcre_chartables.c.2012.vcxproj.filters
new file mode 100644
index 0000000000..1cfff05b54
--- /dev/null
+++ b/libs/win32/pcre/pcre_chartables.c.2012.vcxproj.filters
@@ -0,0 +1,22 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav
+
+
+
+
+ Source Files
+
+
+
\ No newline at end of file
diff --git a/libs/win32/pocketsphinx/pocketsphinx.2012.vcxproj.filters b/libs/win32/pocketsphinx/pocketsphinx.2012.vcxproj.filters
new file mode 100644
index 0000000000..5d1afe56b6
--- /dev/null
+++ b/libs/win32/pocketsphinx/pocketsphinx.2012.vcxproj.filters
@@ -0,0 +1,202 @@
+
+
+
+
+ {30a9f269-d81a-4ee2-adf0-8b402eb80fec}
+
+
+ {d54e4410-06e1-4361-b050-7aced67dff22}
+
+
+ {ebcc7cb5-8ca2-489c-b0e8-426058856ac8}
+ ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
\ No newline at end of file
diff --git a/libs/win32/pthread/pthread.2012.vcxproj.filters b/libs/win32/pthread/pthread.2012.vcxproj.filters
new file mode 100644
index 0000000000..21e7edf959
--- /dev/null
+++ b/libs/win32/pthread/pthread.2012.vcxproj.filters
@@ -0,0 +1,41 @@
+
+
+
+
+ {eea9b312-399b-4998-b90c-92abe8150466}
+ cpp;c;cxx;rc;def;r;odl;idl;hpj;bat
+
+
+ {4fdd54b4-c31e-45b5-9b1a-09740020ae6f}
+ h;hpp;hxx;hm;inl
+
+
+ {d9df37d7-2c75-4916-bd8d-68f96aca4677}
+ ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe
+
+
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
+
+ Resource Files
+
+
+
\ No newline at end of file
diff --git a/libs/win32/sofia/libsofia_sip_ua_static.2012.vcxproj.filters b/libs/win32/sofia/libsofia_sip_ua_static.2012.vcxproj.filters
new file mode 100644
index 0000000000..6fe878541b
--- /dev/null
+++ b/libs/win32/sofia/libsofia_sip_ua_static.2012.vcxproj.filters
@@ -0,0 +1,1019 @@
+
+
+
+
+ {e2fb9ce3-2e60-4ab8-a3f5-3acc0770c1fb}
+ cpp;c;cxx;rc;def;r;odl;idl;hpj;bat
+
+
+ {07c4085c-ab49-4d20-b4f4-bcd30b90ce73}
+ su*.c
+
+
+ {f302ae4a-7736-4563-b130-a88f67fb8420}
+
+
+ {0bd6f7dc-1416-4eba-a83b-9728b0f5ff09}
+ url*.c
+
+
+ {7d12ef13-6833-4299-a002-4cfa700aab08}
+ features*.c
+
+
+ {503e3513-dc29-4a8d-968f-eb9b85e37831}
+ bnf*.c
+
+
+ {3680f590-87b0-43fc-93d4-2f055947608c}
+ msg*.c
+
+
+ {71b15ca9-401c-4587-8b0e-1cbd01761e4c}
+
+
+ {777999e7-603f-4e2a-be29-0933e5d56c0d}
+
+
+ {0b33e411-4f7e-4275-9d87-9d674a0a294f}
+
+
+ {3e4054e5-d5cf-498d-afe4-feaee3b0df04}
+
+
+ {92d282a8-1180-42cf-baea-3b826d7fc6da}
+
+
+ {5dfb833d-6d12-41e4-9b84-35faae36eac9}
+
+
+ {ce2f9d87-410e-4558-8fb0-564ae88af551}
+
+
+ {a631bda8-f647-4fe1-92d1-6929887d822c}
+
+
+ {e7f1aa28-e4cd-4563-bb81-46e761435d07}
+
+
+ {c608280f-e56c-4f2b-94a8-052eac15f6e5}
+
+
+ {00e7d1cc-bb3a-4e76-b6b1-11db89ed6701}
+
+
+ {6b3531f0-aab2-44d2-8319-185e40c5c739}
+
+
+ {c1b1203d-95fa-41e3-bdea-df2b9915c4b9}
+
+
+ {ab318891-9ef3-4e56-baf7-8ce922a73e45}
+ h;hpp;hxx;hm;inl
+
+
+ {af1f4a99-a82d-4e82-b6ce-94a3cf7d1c37}
+ su*.h
+
+
+ {861289c7-2dec-4715-b158-2b3e00ab6040}
+
+
+ {ee802dd4-b53b-43d1-bdf2-3d4343d37779}
+
+
+ {bb636639-0b7f-41ed-a549-438d02a7d3ac}
+ url*.h
+
+
+ {d294ad27-4906-495b-8be4-5fc8aa291f3a}
+ features*.h
+
+
+ {566a4c1d-8cbb-4570-a8e8-3d1c6a6e3f71}
+ bnf*.h
+
+
+ {32c05478-a038-4b7d-bb4b-d33b82ab576d}
+
+
+ {84dbad62-348f-4e67-a48e-d8d22526b4a8}
+
+
+ {1441bb2b-94f7-4cbe-a4fc-82e7a88af588}
+
+
+ {bce41b99-f79a-45ee-9634-d0859695014f}
+
+
+ {ce670254-9dd6-4e3c-99ad-90f78c69d766}
+
+
+ {3b978047-99c5-4fd4-99fe-200151c76fd1}
+
+
+ {e9eaad41-1195-4c26-b813-d101ff7bf4f2}
+
+
+ {9ec1016a-8c36-4a62-bd3f-e226b3a6b479}
+
+
+ {4a392d00-3246-42cb-bff9-7b4f7889d8f2}
+
+
+ {e8343a7f-eed9-4051-85b0-d02fd78c06f1}
+
+
+ {17f68ee6-6245-4c14-8bda-387799431553}
+
+
+ {b08ddec7-8118-4a9d-8606-c62ffcbafc97}
+
+
+ {de42c0cc-17b9-4768-9981-abf8765ec30b}
+
+
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\su
+
+
+ Source Files\ipt
+
+
+ Source Files\ipt
+
+
+ Source Files\ipt
+
+
+ Source Files\url
+
+
+ Source Files\url
+
+
+ Source Files\url
+
+
+ Source Files\features
+
+
+ Source Files\bnf
+
+
+ Source Files\msg
+
+
+ Source Files\msg
+
+
+ Source Files\msg
+
+
+ Source Files\msg
+
+
+ Source Files\msg
+
+
+ Source Files\msg
+
+
+ Source Files\msg
+
+
+ Source Files\msg
+
+
+ Source Files\msg
+
+
+ Source Files\msg
+
+
+ Source Files\msg
+
+
+ Source Files\msg
+
+
+ Source Files\msg
+
+
+ Source Files\clib replacement
+
+
+ Source Files\clib replacement
+
+
+ Source Files\clib replacement
+
+
+ Source Files\clib replacement
+
+
+ Source Files\clib replacement
+
+
+ Source Files\sip
+
+
+ Source Files\sip
+
+
+ Source Files\sip
+
+
+ Source Files\sip
+
+
+ Source Files\sip
+
+
+ Source Files\sip
+
+
+ Source Files\sip
+
+
+ Source Files\sip
+
+
+ Source Files\sip
+
+
+ Source Files\sip
+
+
+ Source Files\sip
+
+
+ Source Files\sip
+
+
+ Source Files\sip
+
+
+ Source Files\sip
+
+
+ Source Files\sip
+
+
+ Source Files\sip
+
+
+ Source Files\sip
+
+
+ Source Files\sip
+
+
+ Source Files\sip
+
+
+ Source Files\sip
+
+
+ Source Files\sip
+
+
+ Source Files\http
+
+
+ Source Files\http
+
+
+ Source Files\http
+
+
+ Source Files\http
+
+
+ Source Files\http
+
+
+ Source Files\http
+
+
+ Source Files\http
+
+
+ Source Files\http
+
+
+ Source Files\http
+
+
+ Source Files\nth
+
+
+ Source Files\nth
+
+
+ Source Files\nth
+
+
+ Source Files\nth
+
+
+ Source Files\sresolv
+
+
+ Source Files\sresolv
+
+
+ Source Files\sresolv
+
+
+ Source Files\sresolv
+
+
+ Source Files\sresolv
+
+
+ Source Files\nea
+
+
+ Source Files\nea
+
+
+ Source Files\nea
+
+
+ Source Files\nea
+
+
+ Source Files\nea
+
+
+ Source Files\nea
+
+
+ Source Files\iptsec
+
+
+ Source Files\iptsec
+
+
+ Source Files\iptsec
+
+
+ Source Files\iptsec
+
+
+ Source Files\iptsec
+
+
+ Source Files\iptsec
+
+
+ Source Files\iptsec
+
+
+ Source Files\iptsec
+
+
+ Source Files\iptsec
+
+
+ Source Files\iptsec
+
+
+ Source Files\iptsec
+
+
+ Source Files\stun
+
+
+ Source Files\stun
+
+
+ Source Files\stun
+
+
+ Source Files\stun
+
+
+ Source Files\stun
+
+
+ Source Files\stun
+
+
+ Source Files\nua
+
+
+ Source Files\nua
+
+
+ Source Files\nua
+
+
+ Source Files\nua
+
+
+ Source Files\nua
+
+
+ Source Files\nua
+
+
+ Source Files\nua
+
+
+ Source Files\nua
+
+
+ Source Files\nua
+
+
+ Source Files\nua
+
+
+ Source Files\nua
+
+
+ Source Files\nua
+
+
+ Source Files\nua
+
+
+ Source Files\nua
+
+
+ Source Files\nua
+
+
+ Source Files\nua
+
+
+ Source Files\nua
+
+
+ Source Files\nua
+
+
+ Source Files\nua
+
+
+ Source Files\nua
+
+
+ Source Files\nta
+
+
+ Source Files\nta
+
+
+ Source Files\nta
+
+
+ Source Files\nta
+
+
+ Source Files\nta
+
+
+ Source Files\nta
+
+
+ Source Files\nta
+
+
+ Source Files\tport
+
+
+ Source Files\tport
+
+
+ Source Files\tport
+
+
+ Source Files\tport
+
+
+ Source Files\tport
+
+
+ Source Files\tport
+
+
+ Source Files\tport
+
+
+ Source Files\tport
+
+
+ Source Files\tport
+
+
+ Source Files\tport
+
+
+ Source Files\tport
+
+
+ Source Files\sdp
+
+
+ Source Files\sdp
+
+
+ Source Files\sdp
+
+
+ Source Files\sdp
+
+
+ Source Files\sdp
+
+
+ Source Files\soa
+
+
+ Source Files\soa
+
+
+ Source Files\soa
+
+
+ Source Files\soa
+
+
+
+
+ Source Files\stun
+
+
+ Source Files\nua
+
+
+ Source Files\nua
+
+
+ Source Files\nua
+
+
+ Source Files\nua
+
+
+ Source Files\nua
+
+
+ Source Files\tport
+
+
+ Source Files\soa
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\su headers
+
+
+ Header Files\win32 headers
+
+
+ Header Files\win32 headers
+
+
+ Header Files\win32 headers
+
+
+ Header Files\ipt headers
+
+
+ Header Files\ipt headers
+
+
+ Header Files\ipt headers
+
+
+ Header Files\url headers
+
+
+ Header Files\url headers
+
+
+ Header Files\url headers
+
+
+ Header Files\features headers
+
+
+ Header Files\bnf headers
+
+
+ Header Files\bnf headers
+
+
+ Header Files\msg headers
+
+
+ Header Files\msg headers
+
+
+ Header Files\msg headers
+
+
+ Header Files\msg headers
+
+
+ Header Files\msg headers
+
+
+ Header Files\msg headers
+
+
+ Header Files\msg headers
+
+
+ Header Files\msg headers
+
+
+ Header Files\msg headers
+
+
+ Header Files\msg headers
+
+
+ Header Files\msg headers
+
+
+ Header Files\msg headers
+
+
+ Header Files\msg headers
+
+
+ Header Files\msg headers
+
+
+ Header Files\msg headers
+
+
+ Header Files\sip headers
+
+
+ Header Files\sip headers
+
+
+ Header Files\sip headers
+
+
+ Header Files\sip headers
+
+
+ Header Files\sip headers
+
+
+ Header Files\sip headers
+
+
+ Header Files\sip headers
+
+
+ Header Files\sip headers
+
+
+ Header Files\sip headers
+
+
+ Header Files\sip headers
+
+
+ Header Files\sip headers
+
+
+ Header Files\http headers
+
+
+ Header Files\http headers
+
+
+ Header Files\http headers
+
+
+ Header Files\http headers
+
+
+ Header Files\http headers
+
+
+ Header Files\http headers
+
+
+ Header Files\http headers
+
+
+ Header Files\http headers
+
+
+ Header Files\nth headers
+
+
+ Header Files\nth headers
+
+
+ Header Files\sresolv headers
+
+
+ Header Files\sresolv headers
+
+
+ Header Files\sresolv headers
+
+
+ Header Files\sresolv headers
+
+
+ Header Files\sresolv headers
+
+
+ Header Files\sresolv headers
+
+
+ Header Files\nea headers
+
+
+ Header Files\nea headers
+
+
+ Header Files\nea headers
+
+
+ Header Files\iptsec headers
+
+
+ Header Files\iptsec headers
+
+
+ Header Files\iptsec headers
+
+
+ Header Files\iptsec headers
+
+
+ Header Files\iptsec headers
+
+
+ Header Files\iptsec headers
+
+
+ Header Files\stun headers
+
+
+ Header Files\stun headers
+
+
+ Header Files\stun headers
+
+
+ Header Files\nua headers
+
+
+ Header Files\nua headers
+
+
+ Header Files\nta headers
+
+
+ Header Files\nta headers
+
+
+ Header Files\nta headers
+
+
+ Header Files\nta headers
+
+
+ Header Files\nta headers
+
+
+ Header Files\nta headers
+
+
+ Header Files\tport headers
+
+
+ Header Files\tport headers
+
+
+ Header Files\tport headers
+
+
+ Header Files\tport headers
+
+
+ Header Files\sdp headers
+
+
+ Header Files\sdp headers
+
+
+ Header Files\soa headers
+
+
+ Header Files\soa headers
+
+
+ Header Files\soa headers
+
+
+
\ No newline at end of file
diff --git a/libs/win32/sphinxbase/sphinxbase.2012.vcxproj.filters b/libs/win32/sphinxbase/sphinxbase.2012.vcxproj.filters
new file mode 100644
index 0000000000..510e13f5f3
--- /dev/null
+++ b/libs/win32/sphinxbase/sphinxbase.2012.vcxproj.filters
@@ -0,0 +1,354 @@
+
+
+
+
+ {5ce23960-a856-416b-a477-cf2d724bd43e}
+ cpp;c;cxx;rc;def;r;odl;idl;hpj;bat
+
+
+ {8d90e900-0942-4a25-b48a-b8dcd4382c28}
+ h;hpp;hxx;hm;inl
+
+
+ {cd06b891-4b88-427f-9f62-187bfead9b0f}
+ ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
\ No newline at end of file
diff --git a/libs/win32/sqlite/sqlite.2012.vcxproj.filters b/libs/win32/sqlite/sqlite.2012.vcxproj.filters
new file mode 100644
index 0000000000..1b56bcf5b4
--- /dev/null
+++ b/libs/win32/sqlite/sqlite.2012.vcxproj.filters
@@ -0,0 +1,182 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
\ No newline at end of file
diff --git a/libs/win32/udns/libudns.2012.vcxproj.filters b/libs/win32/udns/libudns.2012.vcxproj.filters
new file mode 100644
index 0000000000..f4e9018f39
--- /dev/null
+++ b/libs/win32/udns/libudns.2012.vcxproj.filters
@@ -0,0 +1,66 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+
\ No newline at end of file
diff --git a/libs/win32/xmlrpc-c/abyss.2012.vcxproj.filters b/libs/win32/xmlrpc-c/abyss.2012.vcxproj.filters
new file mode 100644
index 0000000000..dc60f95547
--- /dev/null
+++ b/libs/win32/xmlrpc-c/abyss.2012.vcxproj.filters
@@ -0,0 +1,69 @@
+
+
+
+
+ {8ac4971f-a9ba-4930-a7e3-b291ad24d6ca}
+ cpp;c;cxx;rc;def;r;odl;idl;hpj;bat
+
+
+ {05489d43-6c6b-4bb8-95db-414e8137ee9e}
+ h;hpp;hxx;hm;inl
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
\ No newline at end of file
diff --git a/libs/win32/xmlrpc-c/xmlrpc.2010.vcxproj b/libs/win32/xmlrpc-c/xmlrpc.2010.vcxproj
index dc5fc4bf2f..1c481f2b22 100644
--- a/libs/win32/xmlrpc-c/xmlrpc.2010.vcxproj
+++ b/libs/win32/xmlrpc-c/xmlrpc.2010.vcxproj
@@ -1,240 +1,245 @@
-
-
-
-
- Debug
- Win32
-
-
- Debug
- x64
-
-
- Release
- Win32
-
-
- Release
- x64
-
-
-
- xmlrpc
- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}
- xmlrpc
-
-
-
- StaticLibrary
- false
- MultiByte
-
-
- StaticLibrary
- false
- MultiByte
-
-
- StaticLibrary
- false
- MultiByte
-
-
- StaticLibrary
- false
- MultiByte
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_ProjectFileVersion>10.0.30319.1
- $(PlatformName)\xmlrpc\$(Configuration)\
- $(PlatformName)\xmlrpc\$(Configuration)\
- $(PlatformName)\xmlrpc\$(Configuration)\
- $(PlatformName)\xmlrpc\$(Configuration)\
-
-
-
-
-
- Disabled
- $(XMLRPCDir)lib\expat\xmlparse;%(AdditionalIncludeDirectories)
- _DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB;%(PreprocessorDefinitions)
- true
- EnableFastChecks
- MultiThreadedDebugDLL
- Level3
- true
-
-
- _DEBUG;%(PreprocessorDefinitions)
- 0x0409
-
-
- true
-
-
- true
-
-
-
-
-
-
-
-
- X64
-
-
- Disabled
- $(XMLRPCDir)lib\expat\xmlparse;%(AdditionalIncludeDirectories)
- _DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB;%(PreprocessorDefinitions)
- true
- EnableFastChecks
- MultiThreadedDebugDLL
- Level3
- true
-
-
- _DEBUG;%(PreprocessorDefinitions)
- 0x0409
-
-
- true
-
-
- true
- .\Debug\xmlrpc/xmlrpc.bsc
-
-
-
-
-
-
-
-
- MaxSpeed
- OnlyExplicitInline
- $(XMLRPCDir)lib\expat\xmlparse;%(AdditionalIncludeDirectories)
- NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB;%(PreprocessorDefinitions)
- true
- MultiThreadedDLL
- true
- Level3
- true
-
-
- NDEBUG;%(PreprocessorDefinitions)
- 0x0409
-
-
- true
-
-
- true
-
-
-
-
-
-
-
-
- X64
-
-
- MaxSpeed
- OnlyExplicitInline
- $(XMLRPCDir)lib\expat\xmlparse;%(AdditionalIncludeDirectories)
- NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB;%(PreprocessorDefinitions)
- true
- MultiThreadedDLL
- true
- Level3
- true
-
-
- NDEBUG;%(PreprocessorDefinitions)
- 0x0409
-
-
- true
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ xmlrpc
+ {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}
+ xmlrpc
+
+
+
+ StaticLibrary
+ false
+ MultiByte
+
+
+ StaticLibrary
+ false
+ MultiByte
+
+
+ StaticLibrary
+ false
+ MultiByte
+
+
+ StaticLibrary
+ false
+ MultiByte
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_ProjectFileVersion>10.0.30319.1
+ $(PlatformName)\xmlrpc\$(Configuration)\
+ $(PlatformName)\xmlrpc\$(Configuration)\
+ $(PlatformName)\xmlrpc\$(Configuration)\
+ $(PlatformName)\xmlrpc\$(Configuration)\
+
+
+
+
+
+ Disabled
+ $(XMLRPCDir)lib\expat\xmlparse;%(AdditionalIncludeDirectories)
+ _DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB;%(PreprocessorDefinitions)
+ true
+ EnableFastChecks
+ MultiThreadedDebugDLL
+ Level3
+ true
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+ 0x0409
+
+
+ true
+
+
+ true
+
+
+
+
+
+
+
+
+ X64
+
+
+ Disabled
+ $(XMLRPCDir)lib\expat\xmlparse;%(AdditionalIncludeDirectories)
+ _DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB;%(PreprocessorDefinitions)
+ true
+ EnableFastChecks
+ MultiThreadedDebugDLL
+ Level3
+ true
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+ 0x0409
+
+
+ true
+
+
+ true
+ .\Debug\xmlrpc/xmlrpc.bsc
+
+
+
+
+
+
+
+
+ MaxSpeed
+ OnlyExplicitInline
+ $(XMLRPCDir)lib\expat\xmlparse;%(AdditionalIncludeDirectories)
+ NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDLL
+ true
+ Level3
+ true
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+ 0x0409
+
+
+ true
+
+
+ true
+
+
+
+
+
+
+
+
+ X64
+
+
+ MaxSpeed
+ OnlyExplicitInline
+ $(XMLRPCDir)lib\expat\xmlparse;%(AdditionalIncludeDirectories)
+ NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDLL
+ true
+ Level3
+ true
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+ 0x0409
+
+
+ true
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {0d108721-eae8-4baf-8102-d8960ec93647}
+
+
+
+
+
\ No newline at end of file
diff --git a/libs/win32/xmlrpc-c/xmlrpc.2012.vcxproj b/libs/win32/xmlrpc-c/xmlrpc.2012.vcxproj
index 0c26ab2f46..6f4d7a4031 100644
--- a/libs/win32/xmlrpc-c/xmlrpc.2012.vcxproj
+++ b/libs/win32/xmlrpc-c/xmlrpc.2012.vcxproj
@@ -1,4 +1,4 @@
-
+
@@ -238,7 +238,12 @@
+
+
+ {0d108721-eae8-4baf-8102-d8960ec93647}
+
+
-
+
\ No newline at end of file
diff --git a/libs/win32/xmlrpc-c/xmlrpc.2012.vcxproj.filters b/libs/win32/xmlrpc-c/xmlrpc.2012.vcxproj.filters
new file mode 100644
index 0000000000..ac7abdea72
--- /dev/null
+++ b/libs/win32/xmlrpc-c/xmlrpc.2012.vcxproj.filters
@@ -0,0 +1,125 @@
+
+
+
+
+ {7ca2b8b9-bf59-4407-aedf-588e548fe34a}
+ cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;cc
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
\ No newline at end of file
diff --git a/libs/win32/xmlrpc-c/xmltok.2010.vcxproj b/libs/win32/xmlrpc-c/xmltok.2010.vcxproj
index 9685273024..6e5e04b9e6 100644
--- a/libs/win32/xmlrpc-c/xmltok.2010.vcxproj
+++ b/libs/win32/xmlrpc-c/xmltok.2010.vcxproj
@@ -1,199 +1,204 @@
-
-
-
-
- Debug
- Win32
-
-
- Debug
- x64
-
-
- Release
- Win32
-
-
- Release
- x64
-
-
-
- xmltok
- {B535402E-38D2-4D54-8360-423ACBD17192}
- xmltok
-
-
-
- StaticLibrary
- false
- MultiByte
-
-
- StaticLibrary
- false
- MultiByte
-
-
- StaticLibrary
- false
- MultiByte
-
-
- StaticLibrary
- false
- MultiByte
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_ProjectFileVersion>10.0.30319.1
- $(PlatformName)\xmltok\$(Configuration)\
- $(PlatformName)\xmltok\$(Configuration)\
- $(PlatformName)\xmltok\$(Configuration)\
- $(PlatformName)\xmltok\$(Configuration)\
-
-
-
- Disabled
- %(AdditionalIncludeDirectories)
- _DEBUG;WIN32;_WINDOWS;XML_DTD;XML_NS;_LIB;%(PreprocessorDefinitions)
- true
- EnableFastChecks
- MultiThreadedDebugDLL
- Level3
- true
-
-
- _DEBUG;%(PreprocessorDefinitions)
- 0x0409
-
-
- true
-
-
- true
- .\Debug\xmltok/xmltok.bsc
-
-
-
-
- X64
-
-
- Disabled
- %(AdditionalIncludeDirectories)
- _DEBUG;WIN32;_WINDOWS;XML_DTD;XML_NS;_LIB;%(PreprocessorDefinitions)
- true
- EnableFastChecks
- MultiThreadedDebugDLL
- Level3
- true
-
-
- _DEBUG;%(PreprocessorDefinitions)
- 0x0409
-
-
- true
-
-
- true
- .\Debug\xmltok/xmltok.bsc
-
-
-
-
- MaxSpeed
- OnlyExplicitInline
- %(AdditionalIncludeDirectories)
- NDEBUG;XML_NS;WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions)
- true
- MultiThreaded
- true
- Level3
- true
-
-
- NDEBUG;%(PreprocessorDefinitions)
- 0x0409
-
-
- true
-
-
- true
- .\Release\xmltok/xmltok.bsc
-
-
-
-
- X64
-
-
- MaxSpeed
- OnlyExplicitInline
- %(AdditionalIncludeDirectories)
- NDEBUG;XML_NS;WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions)
- true
- MultiThreaded
- true
- Level3
- true
-
-
- NDEBUG;%(PreprocessorDefinitions)
- 0x0409
-
-
- true
-
-
- true
- .\Release\xmltok/xmltok.bsc
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ xmltok
+ {B535402E-38D2-4D54-8360-423ACBD17192}
+ xmltok
+
+
+
+ StaticLibrary
+ false
+ MultiByte
+
+
+ StaticLibrary
+ false
+ MultiByte
+
+
+ StaticLibrary
+ false
+ MultiByte
+
+
+ StaticLibrary
+ false
+ MultiByte
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_ProjectFileVersion>10.0.30319.1
+ $(PlatformName)\xmltok\$(Configuration)\
+ $(PlatformName)\xmltok\$(Configuration)\
+ $(PlatformName)\xmltok\$(Configuration)\
+ $(PlatformName)\xmltok\$(Configuration)\
+
+
+
+ Disabled
+ %(AdditionalIncludeDirectories)
+ _DEBUG;WIN32;_WINDOWS;XML_DTD;XML_NS;_LIB;%(PreprocessorDefinitions)
+ true
+ EnableFastChecks
+ MultiThreadedDebugDLL
+ Level3
+ true
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+ 0x0409
+
+
+ true
+
+
+ true
+ .\Debug\xmltok/xmltok.bsc
+
+
+
+
+ X64
+
+
+ Disabled
+ %(AdditionalIncludeDirectories)
+ _DEBUG;WIN32;_WINDOWS;XML_DTD;XML_NS;_LIB;%(PreprocessorDefinitions)
+ true
+ EnableFastChecks
+ MultiThreadedDebugDLL
+ Level3
+ true
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+ 0x0409
+
+
+ true
+
+
+ true
+ .\Debug\xmltok/xmltok.bsc
+
+
+
+
+ MaxSpeed
+ OnlyExplicitInline
+ %(AdditionalIncludeDirectories)
+ NDEBUG;XML_NS;WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreaded
+ true
+ Level3
+ true
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+ 0x0409
+
+
+ true
+
+
+ true
+ .\Release\xmltok/xmltok.bsc
+
+
+
+
+ X64
+
+
+ MaxSpeed
+ OnlyExplicitInline
+ %(AdditionalIncludeDirectories)
+ NDEBUG;XML_NS;WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreaded
+ true
+ Level3
+ true
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+ 0x0409
+
+
+ true
+
+
+ true
+ .\Release\xmltok/xmltok.bsc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {bed7539c-0099-4a14-ad5d-30828f15a171}
+
+
+
+
+
\ No newline at end of file
diff --git a/libs/win32/xmlrpc-c/xmltok.2012.vcxproj b/libs/win32/xmlrpc-c/xmltok.2012.vcxproj
index 2594256198..79592f57b4 100644
--- a/libs/win32/xmlrpc-c/xmltok.2012.vcxproj
+++ b/libs/win32/xmlrpc-c/xmltok.2012.vcxproj
@@ -1,4 +1,4 @@
-
+
@@ -197,7 +197,12 @@
+
+
+ {bed7539c-0099-4a14-ad5d-30828f15a171}
+
+
-
+
\ No newline at end of file
diff --git a/libs/win32/xmlrpc-c/xmltok.2012.vcxproj.filters b/libs/win32/xmlrpc-c/xmltok.2012.vcxproj.filters
new file mode 100644
index 0000000000..edcb1d2353
--- /dev/null
+++ b/libs/win32/xmlrpc-c/xmltok.2012.vcxproj.filters
@@ -0,0 +1,45 @@
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
+
+ {e8ec3017-8580-49f6-b5b5-4ba1c66c9b58}
+
+
+ {cf3bec2c-9e12-4a6c-8d1c-495721118adf}
+
+
+
\ No newline at end of file
diff --git a/src/include/switch_types.h b/src/include/switch_types.h
index 2c8b9503cf..6c75ff4b3d 100644
--- a/src/include/switch_types.h
+++ b/src/include/switch_types.h
@@ -138,6 +138,7 @@ SWITCH_BEGIN_EXTERN_C
#define SWITCH_PROTO_SPECIFIC_HANGUP_CAUSE_VARIABLE "proto_specific_hangup_cause"
#define SWITCH_TRANSFER_HISTORY_VARIABLE "transfer_history"
#define SWITCH_TRANSFER_SOURCE_VARIABLE "transfer_source"
+#define SWITCH_SENSITIVE_DTMF_VARIABLE "sensitive_dtmf"
#define SWITCH_CHANNEL_EXECUTE_ON_ANSWER_VARIABLE "execute_on_answer"
#define SWITCH_CHANNEL_EXECUTE_ON_PRE_ANSWER_VARIABLE "execute_on_pre_answer"
@@ -246,7 +247,8 @@ typedef enum {
typedef enum {
- DTMF_FLAG_SKIP_PROCESS = (1 << 0)
+ DTMF_FLAG_SKIP_PROCESS = (1 << 0),
+ DTMF_FLAG_SENSITIVE = (1 << 1)
} dtmf_flag_t;
typedef struct {
@@ -1480,7 +1482,8 @@ SMBF_WRITE_STREAM - Include the Write Stream
SMBF_WRITE_REPLACE - Replace the Write Stream
SMBF_READ_REPLACE - Replace the Read Stream
SMBF_STEREO - Record in stereo
-SMBF_ANSWER_RECORD_REQ - Don't record until the channel is answered
+SMBF_ANSWER_REQ - Don't record until the channel is answered
+SMBF_BRIDGE_REQ - Don't record until the channel is bridged
SMBF_THREAD_LOCK - Only let the same thread who created the bug remove it.
SMBF_PRUNE -
SMBF_NO_PAUSE -
@@ -1496,13 +1499,14 @@ typedef enum {
SMBF_READ_PING = (1 << 4),
SMBF_STEREO = (1 << 5),
SMBF_ANSWER_REQ = (1 << 6),
- SMBF_THREAD_LOCK = (1 << 7),
- SMBF_PRUNE = (1 << 8),
- SMBF_NO_PAUSE = (1 << 9),
- SMBF_STEREO_SWAP = (1 << 10),
- SMBF_LOCK = (1 << 11),
- SMBF_TAP_NATIVE_READ = (1 << 12),
- SMBF_TAP_NATIVE_WRITE = (1 << 13)
+ SMBF_BRIDGE_REQ = (1 << 7),
+ SMBF_THREAD_LOCK = (1 << 8),
+ SMBF_PRUNE = (1 << 9),
+ SMBF_NO_PAUSE = (1 << 10),
+ SMBF_STEREO_SWAP = (1 << 11),
+ SMBF_LOCK = (1 << 12),
+ SMBF_TAP_NATIVE_READ = (1 << 13),
+ SMBF_TAP_NATIVE_WRITE = (1 << 14)
} switch_media_bug_flag_enum_t;
typedef uint32_t switch_media_bug_flag_t;
diff --git a/src/include/switch_utils.h b/src/include/switch_utils.h
index 11839ee660..89b60ed82d 100644
--- a/src/include/switch_utils.h
+++ b/src/include/switch_utils.h
@@ -919,11 +919,19 @@ SWITCH_DECLARE(char *) switch_find_end_paren(const char *s, char open, char clos
static inline switch_bool_t switch_is_file_path(const char *file)
{
const char *e;
- int r;
+ int r, x;
- if (*file == '[' && *(file + 1) == *SWITCH_PATH_SEPARATOR) {
- if ((e = switch_find_end_paren(file, '[', ']'))) {
- file = e + 1;
+ for (x = 0; x < 2; x++) {
+ if (*file == '[' && *(file + 1) == *SWITCH_PATH_SEPARATOR) {
+ if ((e = switch_find_end_paren(file, '[', ']'))) {
+ file = e + 1;
+ }
+ } else if (*file == '{') {
+ if ((e = switch_find_end_paren(file, '{', '}'))) {
+ file = e + 1;
+ }
+ } else {
+ break;
}
}
#ifdef WIN32
diff --git a/src/mod/applications/mod_avmd/mod_avmd.c b/src/mod/applications/mod_avmd/mod_avmd.c
index f94dc69151..ac52c5968d 100644
--- a/src/mod/applications/mod_avmd/mod_avmd.c
+++ b/src/mod/applications/mod_avmd/mod_avmd.c
@@ -187,13 +187,11 @@ static switch_bool_t avmd_callback(switch_media_bug_t * bug, void *user_data, sw
break;
case SWITCH_ABC_TYPE_READ_PING:
- break;
case SWITCH_ABC_TYPE_CLOSE:
-
- break;
case SWITCH_ABC_TYPE_READ:
- break;
case SWITCH_ABC_TYPE_WRITE:
+ case SWITCH_ABC_TYPE_TAP_NATIVE_READ:
+ case SWITCH_ABC_TYPE_TAP_NATIVE_WRITE:
break;
case SWITCH_ABC_TYPE_READ_REPLACE:
diff --git a/src/mod/applications/mod_curl/mod_curl.c b/src/mod/applications/mod_curl/mod_curl.c
index d9bb285522..b68af2276b 100644
--- a/src/mod/applications/mod_curl/mod_curl.c
+++ b/src/mod/applications/mod_curl/mod_curl.c
@@ -24,6 +24,7 @@
* Contributor(s):
*
* Rupa Schomaker
+ * Yossi Neiman
*
* mod_curl.c -- API for performing http queries
*
@@ -32,6 +33,12 @@
#include
#include
#include
+#ifdef _MSC_VER
+#include
+#else
+#include
+#endif
+
/* Prototypes */
SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_curl_shutdown);
@@ -45,10 +52,19 @@ SWITCH_MODULE_DEFINITION(mod_curl, mod_curl_load, mod_curl_shutdown, NULL);
static char *SYNTAX = "curl url [headers|json|content-type ] [get|head|post [post_data]]";
+#define HTTP_SENDFILE_ACK_EVENT "curl_sendfile::ack"
+#define HTTP_SENDFILE_RESPONSE_SIZE 32768
+
static struct {
switch_memory_pool_t *pool;
} globals;
+typedef enum {
+ CSO_NONE = (1 << 0),
+ CSO_EVENT = (1 << 1),
+ CSO_STREAM = (1 << 2)
+} curlsendfile_output_t;
+
struct http_data_obj {
switch_stream_handle_t stream;
switch_size_t bytes;
@@ -61,6 +77,29 @@ struct http_data_obj {
};
typedef struct http_data_obj http_data_t;
+struct http_sendfile_data_obj {
+ switch_memory_pool_t *pool;
+ switch_file_t *file_handle;
+ long http_response_code;
+ char *http_response;
+ switch_curl_slist_t *headers;
+ char *mydata;
+ char *url;
+ char *identifier_str;
+ char *filename_element;
+ char *filename_element_name;
+ char *extrapost_elements;
+ switch_CURL *curl_handle;
+ struct curl_httppost *formpost;
+ struct curl_httppost *lastptr;
+ uint8_t flags; /* This is for where to send output of the curl_sendfile commands */
+ switch_stream_handle_t *stream;
+ char *sendfile_response;
+ switch_size_t sendfile_response_count;
+};
+
+typedef struct http_sendfile_data_obj http_sendfile_data_t;
+
struct callback_obj {
switch_memory_pool_t *pool;
char *name;
@@ -230,6 +269,427 @@ static char *print_json(switch_memory_pool_t *pool, http_data_t *http_data)
return data;
}
+static size_t http_sendfile_response_callback(void *ptr, size_t size, size_t nmemb, void *data)
+{
+ register unsigned int realsize = (unsigned int) (size * nmemb);
+ http_sendfile_data_t *http_data = data;
+
+ if(http_data->sendfile_response_count + realsize < HTTP_SENDFILE_RESPONSE_SIZE)
+ {
+ // I'm not sure why we need the (realsize+1) here, but it truncates the data by 1 char if I don't do this
+ switch_copy_string(&http_data->sendfile_response[http_data->sendfile_response_count], ptr, (realsize+1));
+ http_data->sendfile_response_count += realsize;
+ }
+ else
+ {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Response page is more than %d bytes long, truncating.\n", HTTP_SENDFILE_RESPONSE_SIZE);
+ realsize = 0;
+ }
+
+ return realsize;
+}
+
+// This function and do_lookup_url functions could possibly be merged together. Or at least have do_lookup_url call this up as part of the initialization routine as it is a subset of the operations.
+static void http_sendfile_initialize_curl(http_sendfile_data_t *http_data)
+{
+ uint8_t count;
+ http_data->curl_handle = curl_easy_init();
+
+ if (!strncasecmp(http_data->url, "https", 5))
+ {
+ curl_easy_setopt(http_data->curl_handle, CURLOPT_SSL_VERIFYPEER, 0);
+ curl_easy_setopt(http_data->curl_handle, CURLOPT_SSL_VERIFYHOST, 0);
+ }
+
+ /* From the docs:
+ * Optionally, you can provide data to POST using the CURLOPT_READFUNCTION and CURLOPT_READDATA
+ * options but then you must make sure to not set CURLOPT_POSTFIELDS to anything but NULL
+ * curl_easy_setopt(curl_handle, CURLOPT_POSTFIELDSIZE, strlen(data));
+ * curl_easy_setopt(curl_handle, CURLOPT_POSTFIELDS, (void *) data);
+ */
+
+ // switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Post data: %s\n", data);
+
+ curl_easy_setopt(http_data->curl_handle, CURLOPT_FOLLOWLOCATION, 1);
+ curl_easy_setopt(http_data->curl_handle, CURLOPT_MAXREDIRS, 15);
+ curl_easy_setopt(http_data->curl_handle, CURLOPT_URL, http_data->url);
+ curl_easy_setopt(http_data->curl_handle, CURLOPT_NOSIGNAL, 1);
+ curl_easy_setopt(http_data->curl_handle, CURLOPT_USERAGENT, "freeswitch-curl/1.0");
+
+ http_data->sendfile_response = switch_core_alloc(http_data->pool, sizeof(char) * HTTP_SENDFILE_RESPONSE_SIZE);
+ memset(http_data->sendfile_response, 0, sizeof(char) * HTTP_SENDFILE_RESPONSE_SIZE);
+
+ // Set the function where we will copy out the response body data to
+ curl_easy_setopt(http_data->curl_handle, CURLOPT_WRITEFUNCTION, http_sendfile_response_callback);
+ curl_easy_setopt(http_data->curl_handle, CURLOPT_WRITEDATA, (void *) http_data);
+
+ /* Add the file to upload as a POST form field */
+ curl_formadd(&http_data->formpost, &http_data->lastptr, CURLFORM_COPYNAME, http_data->filename_element_name, CURLFORM_FILE, http_data->filename_element, CURLFORM_END);
+
+ if(!zstr(http_data->extrapost_elements))
+ {
+ // Now to parse out the individual post element/value pairs
+ char *argv[64] = { 0 }; // Probably don't need 64 but eh does it really use that much memory?
+ uint32_t argc = 0;
+ char *temp_extrapost = switch_core_strdup(http_data->pool, http_data->extrapost_elements);
+
+ argc = switch_separate_string(temp_extrapost, '&', argv, (sizeof(argv) / sizeof(argv[0])));
+
+ for(count = 0; count < argc; count++)
+ {
+ char *argv2[4] = { 0 };
+ uint32_t argc2 = switch_separate_string(argv[count], '=', argv2, (sizeof(argv2) / sizeof(argv2[0])));
+
+ if(argc2 == 2)
+ curl_formadd(&http_data->formpost, &http_data->lastptr, CURLFORM_COPYNAME, argv2[0], CURLFORM_COPYCONTENTS, argv2[1], CURLFORM_END);
+ }
+ }
+
+ /* Fill in the submit field too, even if this isn't really needed */
+ curl_formadd(&http_data->formpost, &http_data->lastptr, CURLFORM_COPYNAME, "submit", CURLFORM_COPYCONTENTS, "or_die", CURLFORM_END);
+
+ /* what URL that receives this POST */
+ curl_easy_setopt(http_data->curl_handle, CURLOPT_HTTPPOST, http_data->formpost);
+
+ // This part actually fires off the curl, captures the HTTP response code, and then frees up the handle.
+ curl_easy_perform(http_data->curl_handle);
+ curl_easy_getinfo(http_data->curl_handle, CURLINFO_RESPONSE_CODE, &http_data->http_response_code);
+
+ curl_easy_cleanup(http_data->curl_handle);
+
+ // Clean up the form data from POST
+ curl_formfree(http_data->formpost);
+}
+
+static switch_status_t http_sendfile_test_file_open(http_sendfile_data_t *http_data, switch_event_t *event)
+{
+ switch_status_t retval = switch_file_open(&http_data->file_handle, http_data->filename_element, SWITCH_FOPEN_READ, SWITCH_FPROT_UREAD,http_data->pool);
+ if(retval != SWITCH_STATUS_SUCCESS)
+ {
+ if(switch_test_flag(http_data, CSO_EVENT))
+ {
+ if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, HTTP_SENDFILE_ACK_EVENT) == SWITCH_STATUS_SUCCESS)
+ {
+ switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Command-Execution-Identifier", http_data->identifier_str);
+ switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Filename", http_data->filename_element);
+ switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "File-Access", "Failure");
+ switch_event_fire(&event);
+ switch_event_destroy(&event);
+ }
+ else
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unable to create event to notify of failure to open file %s\n", http_data->filename_element);
+ }
+
+ if((switch_test_flag(http_data, CSO_STREAM) || switch_test_flag(http_data, CSO_NONE)) && http_data->stream)
+ http_data->stream->write_function(http_data->stream, "-Err Unable to open file %s\n", http_data->filename_element);
+
+ if(switch_test_flag(http_data, CSO_NONE) && !http_data->stream)
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "curl_sendfile: Unable to open file %s\n", http_data->filename_element);
+ }
+
+ return retval;
+}
+
+static void http_sendfile_success_report(http_sendfile_data_t *http_data, switch_event_t *event)
+{
+ if(switch_test_flag(http_data, CSO_EVENT))
+ {
+ if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, HTTP_SENDFILE_ACK_EVENT) == SWITCH_STATUS_SUCCESS)
+ {
+ char *code_as_string = switch_core_alloc(http_data->pool, 16);
+ memset(code_as_string, 0, 16);
+ switch_snprintf(code_as_string, 16, "%d", http_data->http_response_code);
+
+ switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Command-Execution-Identifier", http_data->identifier_str);
+ switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Filename", http_data->filename_element);
+ switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "File-Access", "Success");
+ switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "REST-HTTP-Code", code_as_string);
+ switch_event_add_body(event, "%s", http_data->sendfile_response);
+
+ switch_event_fire(&event);
+ switch_event_destroy(&event);
+ }
+ else
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unable to create a event to report on success of curl_sendfile.\n");
+ }
+
+ if((switch_test_flag(http_data, CSO_STREAM) || switch_test_flag(http_data, CSO_NONE) || switch_test_flag(http_data, CSO_EVENT)) && http_data->stream)
+ {
+ if(http_data->http_response_code == 200)
+ http_data->stream->write_function(http_data->stream, "+200 Ok\n");
+ else
+ http_data->stream->write_function(http_data->stream, "-%d Err\n", http_data->http_response_code);
+
+ if(http_data->sendfile_response_count && switch_test_flag(http_data, CSO_STREAM))
+ http_data->stream->write_function(http_data->stream, "%s\n", http_data->sendfile_response);
+ }
+
+ if(switch_test_flag(http_data, CSO_NONE) && !http_data->stream)
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Sending of file %s to url %s resulted with code %lu\n", http_data->filename_element, http_data->url, http_data->http_response_code);
+}
+
+#define HTTP_SENDFILE_APP_SYNTAX " [nopost|postparam1=foo&postparam2=bar... [event|none [identifier ]]]"
+SWITCH_STANDARD_APP(http_sendfile_app_function)
+{
+ switch_event_t *event = NULL;
+ char *argv[10] = { 0 }, *argv2[10] = { 0 };
+ int argc = 0, argc2 = 0;
+ http_sendfile_data_t *http_data = NULL;
+ switch_memory_pool_t *pool = switch_core_session_get_pool(session);
+ switch_channel_t *channel = switch_core_session_get_channel(session);
+
+ assert(channel != NULL);
+
+ http_data = switch_core_alloc(pool, sizeof(http_sendfile_data_t));
+ memset(http_data, 0, sizeof(http_sendfile_data_t));
+
+ http_data->pool = pool;
+
+ // Either the parameters are provided on the data="" or else they are provided as chanvars. No mixing & matching
+ if(!zstr(data))
+ {
+ http_data->mydata = switch_core_strdup(http_data->pool, data);
+
+ if ((argc = switch_separate_string(http_data->mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])))))
+ {
+ uint8_t i = 0;
+
+ if (argc < 2 || argc > 5)
+ goto http_sendfile_app_usage;
+
+ http_data->url = switch_core_strdup(http_data->pool, argv[i++]);
+
+ switch_url_decode(argv[i]);
+ argc2 = switch_separate_string(argv[i++], '=', argv2, (sizeof(argv2) / sizeof(argv2[0])));
+
+ if(argc2 == 2)
+ {
+ http_data->filename_element_name = switch_core_strdup(pool, argv2[0]);
+ http_data->filename_element = switch_core_strdup(pool, argv2[1]);
+ }
+ else
+ goto http_sendfile_app_usage;
+
+ if(argc > 2)
+ {
+ http_data->extrapost_elements = switch_core_strdup(pool, argv[i++]);
+
+ if(argc > 3)
+ {
+ if(!strncasecmp(argv[i++], "event", 5))
+ {
+ switch_set_flag(http_data, CSO_EVENT);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Setting output to event handler.\n");
+ }
+
+ if(argc > 4)
+ {
+ if(strncasecmp(argv[i], "uuid", 4))
+ http_data->identifier_str = switch_core_session_get_uuid(session);
+ else
+ http_data->identifier_str = switch_core_strdup(pool, argv[i++]);
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ char *send_output = (char *) switch_channel_get_variable_dup(channel, "curl_sendfile_report", SWITCH_TRUE, -1);
+ char *identifier = (char *) switch_channel_get_variable_dup(channel, "curl_sendfile_identifier", SWITCH_TRUE, -1);
+
+ http_data->url = (char *) switch_channel_get_variable_dup(channel, "curl_sendfile_url", SWITCH_TRUE, -1);
+ http_data->filename_element_name = (char *) switch_channel_get_variable_dup(channel, "curl_sendfile_filename_element", SWITCH_TRUE, -1);
+ http_data->filename_element = (char *) switch_channel_get_variable_dup(channel, "curl_sendfile_filename", SWITCH_TRUE, -1);
+ http_data->extrapost_elements = (char *) switch_channel_get_variable_dup(channel, "curl_sendfile_extrapost", SWITCH_TRUE, -1);
+
+
+ if(zstr(http_data->url) || zstr(http_data->filename_element) || zstr(http_data->filename_element_name))
+ goto http_sendfile_app_usage;
+
+ if(!zstr(send_output))
+ {
+ if(!strncasecmp(send_output, "event", 5))
+ switch_set_flag(http_data, CSO_EVENT);
+ else if(!strncasecmp(send_output, "none", 4))
+ switch_set_flag(http_data, CSO_NONE);
+ else
+ {
+ switch_set_flag(http_data, CSO_NONE);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Invalid parameter %s specified for curl_sendfile_report. Setting default of 'none'.\n", send_output);
+ }
+ }
+ else
+ {
+ switch_set_flag(http_data, CSO_NONE);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "No parameter specified for curl_sendfile_report. Setting default of 'none'.\n");
+ }
+
+ if(!zstr(identifier))
+ {
+ if(!strncasecmp(identifier, "uuid", 4))
+ http_data->identifier_str = switch_core_session_get_uuid(session);
+ else if(!zstr(identifier))
+ http_data->identifier_str = identifier;
+ }
+ }
+
+ switch_url_decode(http_data->filename_element_name);
+ switch_url_decode(http_data->filename_element);
+
+ // We need to check the file now...
+ if(http_sendfile_test_file_open(http_data, event) != SWITCH_STATUS_SUCCESS)
+ goto http_sendfile_app_done;
+
+ switch_file_close(http_data->file_handle);
+
+ switch_url_decode(http_data->url);
+
+ http_sendfile_initialize_curl(http_data);
+
+ http_sendfile_success_report(http_data, event);
+
+ goto http_sendfile_app_done;
+
+http_sendfile_app_usage:
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failure: Usage: \nOr you can set chanvars curl_senfile_url, curl_sendfile_filename_element, curl_sendfile_filename, curl_sendfile_extrapost\n", HTTP_SENDFILE_APP_SYNTAX);
+
+http_sendfile_app_done:
+ if (http_data && http_data->headers)
+ {
+ switch_curl_slist_free_all(http_data->headers);
+ }
+
+ return;
+}
+
+#define HTTP_SENDFILE_SYNTAX " [nopost|postparam1=foo&postparam2=bar... [event|stream|both|none [identifier ]]]"
+SWITCH_STANDARD_API(http_sendfile_function)
+{
+ switch_status_t status;
+ switch_bool_t new_memory_pool = SWITCH_FALSE;
+ char *argv[10] = { 0 }, *argv2[10] = { 0 };
+ int argc = 0, argc2 = 0;
+ http_sendfile_data_t *http_data = NULL;
+ switch_memory_pool_t *pool = NULL;
+ switch_event_t *event = NULL;
+
+ if(zstr(cmd))
+ {
+ status = SWITCH_STATUS_SUCCESS;
+ goto http_sendfile_usage;
+ }
+ if(session)
+ {
+ pool = switch_core_session_get_pool(session);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "We're using a session's memory pool for curl_sendfile. Maybe we should consider always making a new memory pool?\n");
+ }
+ else
+ {
+ switch_core_new_memory_pool(&pool);
+ new_memory_pool = SWITCH_TRUE; // So we can properly destroy the memory pool
+ }
+
+ http_data = switch_core_alloc(pool, sizeof(http_sendfile_data_t));
+ memset(http_data, 0, sizeof(http_sendfile_data_t));
+
+ http_data->mydata = switch_core_strdup(pool, cmd);
+ http_data->stream = stream;
+ http_data->pool = pool;
+
+ // stream->write_function(stream,"\ncmd is %s\nmydata is %s\n", cmd, http_data->mydata);
+
+ if ((argc = switch_separate_string(http_data->mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])))))
+ {
+ uint8_t i = 0;
+
+ if (argc < 2 || argc > 5)
+ {
+ status = SWITCH_STATUS_SUCCESS;
+ goto http_sendfile_usage;
+ }
+
+ http_data->url = switch_core_strdup(pool, argv[i++]);
+
+ switch_url_decode(argv[i]);
+ argc2 = switch_separate_string(argv[i++], '=', argv2, (sizeof(argv2) / sizeof(argv2[0])));
+
+ if(argc2 == 2)
+ {
+ http_data->filename_element_name = switch_core_strdup(pool, argv2[0]);
+ http_data->filename_element = switch_core_strdup(pool, argv2[1]);
+ }
+ else
+ goto http_sendfile_usage;
+
+ switch_url_decode(http_data->filename_element_name);
+ switch_url_decode(http_data->filename_element);
+
+ if(argc > 2)
+ {
+ http_data->extrapost_elements = switch_core_strdup(pool, argv[i++]);
+
+ if(argc > 3)
+ {
+ if(!strncasecmp(argv[i], "event", 5))
+ switch_set_flag(http_data, CSO_EVENT);
+ else if(!strncasecmp(argv[i], "stream", 6))
+ switch_set_flag(http_data, CSO_STREAM);
+ else if(!strncasecmp(argv[i], "both", 4))
+ {
+ switch_set_flag(http_data, CSO_EVENT);
+ switch_set_flag(http_data, CSO_STREAM);
+ }
+ else
+ {
+ if(strncasecmp(argv[i], "none", 4))
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Invalid 4th parameter set for curl_sendfile. Defaulting to \"none\"\n");
+
+ switch_set_flag(http_data, CSO_NONE);
+ }
+
+ i++;
+
+ if(argc > 4)
+ http_data->identifier_str = switch_core_strdup(pool, argv[i++]);
+ }
+ }
+ }
+
+ // We need to check the file now...
+ if(http_sendfile_test_file_open(http_data, event) != SWITCH_STATUS_SUCCESS)
+ goto http_sendfile_done;
+
+
+ switch_file_close(http_data->file_handle);
+
+ switch_url_decode(http_data->url);
+
+ http_sendfile_initialize_curl(http_data);
+
+ http_sendfile_success_report(http_data, event);
+
+ status = SWITCH_STATUS_SUCCESS;
+ goto http_sendfile_done;
+
+http_sendfile_usage:
+ stream->write_function(stream, "-USAGE\n%s\n", HTTP_SENDFILE_SYNTAX);
+ goto http_sendfile_done;
+
+http_sendfile_done:
+ if (http_data && http_data->headers)
+ {
+ switch_curl_slist_free_all(http_data->headers);
+ }
+
+ if (new_memory_pool == SWITCH_TRUE)
+ {
+ switch_core_destroy_memory_pool(&pool);
+ }
+
+ return status;
+}
+
SWITCH_STANDARD_APP(curl_app_function)
{
switch_status_t status = SWITCH_STATUS_SUCCESS;
@@ -430,7 +890,10 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_curl_load)
SWITCH_ADD_API(api_interface, "curl", "curl API", curl_function, SYNTAX);
SWITCH_ADD_APP(app_interface, "curl", "Perform a http request", "Perform a http request",
curl_app_function, SYNTAX, SAF_SUPPORT_NOMEDIA | SAF_ROUTING_EXEC);
-
+
+ SWITCH_ADD_API(api_interface, "curl_sendfile", "curl_sendfile API", http_sendfile_function, HTTP_SENDFILE_SYNTAX);
+ SWITCH_ADD_APP(app_interface, "curl_sendfile", "Send a file and some optional post variables via HTTP", "Send a file and some optional post variables via HTTP",
+ http_sendfile_app_function, HTTP_SENDFILE_APP_SYNTAX, SAF_SUPPORT_NOMEDIA | SAF_ROUTING_EXEC);
/* indicate that the module should continue to be loaded */
return SWITCH_STATUS_SUCCESS;
}
diff --git a/src/mod/applications/mod_httapi/mod_httapi.c b/src/mod/applications/mod_httapi/mod_httapi.c
index 5b205d4e60..4b53b87fe5 100644
--- a/src/mod/applications/mod_httapi/mod_httapi.c
+++ b/src/mod/applications/mod_httapi/mod_httapi.c
@@ -166,6 +166,7 @@ struct http_file_context {
int samples;
switch_file_handle_t fh;
char *cache_file;
+ char *cache_file_base;
char *meta_file;
char *lock_file;
char *metadata;
@@ -2308,6 +2309,7 @@ static char *load_cache_data(http_file_context_t *context, const char *url)
}
}
+ context->cache_file_base = switch_core_sprintf(context->pool, "%s%s%s", globals.cache_path, SWITCH_PATH_SEPARATOR, digest);
context->cache_file = switch_core_sprintf(context->pool, "%s%s%s.%s", globals.cache_path, SWITCH_PATH_SEPARATOR, digest, ext);
context->meta_file = switch_core_sprintf(context->pool, "%s.meta", context->cache_file);
context->lock_file = switch_core_sprintf(context->pool, "%s.lock", context->cache_file);
@@ -2511,7 +2513,7 @@ static switch_status_t write_meta_file(http_file_context_t *context, const char
}
switch_snprintf(write_data, sizeof(write_data),
- "%" SWITCH_TIME_T_FMT ":%s",
+ "%" TIME_T_FMT ":%s",
switch_epoch_time_now(NULL) + ttl,
data);
@@ -2573,6 +2575,9 @@ static switch_status_t locate_url_file(http_file_context_t *context, const char
lock_file(context, SWITCH_TRUE);
if (!context->url_params || !switch_true(switch_event_get_header(context->url_params, "nohead"))) {
+ const char *ct = NULL;
+ const char *newext = NULL;
+
if ((status = fetch_cache_data(context, url, &headers, NULL)) != SWITCH_STATUS_SUCCESS) {
if (status == SWITCH_STATUS_NOTFOUND) {
unreachable = 2;
@@ -2584,6 +2589,21 @@ static switch_status_t locate_url_file(http_file_context_t *context, const char
}
}
+ if ((!context->url_params || !switch_event_get_header(context->url_params, "ext"))
+ && headers && (ct = switch_event_get_header(headers, "content-type"))) {
+ if (!strcasecmp(ct, "audio/mpeg")) {
+ newext = "mp3";
+ } else if (!strcasecmp(ct, "audio/wav")) {
+ newext = "wav";
+ }
+ }
+
+
+ if (newext) {
+ context->cache_file = switch_core_sprintf(context->pool, "%s.%s", context->cache_file, newext);
+ }
+
+
if (switch_file_exists(context->cache_file, context->pool) != SWITCH_STATUS_SUCCESS && unreachable) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "File at url [%s] is unreachable!\n", url);
goto end;
diff --git a/src/mod/applications/mod_lcr/mod_lcr.c b/src/mod/applications/mod_lcr/mod_lcr.c
index 13212e5b86..b60c707868 100644
--- a/src/mod/applications/mod_lcr/mod_lcr.c
+++ b/src/mod/applications/mod_lcr/mod_lcr.c
@@ -342,9 +342,15 @@ static char *get_bridge_data(switch_memory_pool_t *pool, char *dialed_number, ch
static profile_t *locate_profile(const char *profile_name)
{
profile_t *profile = NULL;
-
+
if (zstr(profile_name)) {
- profile = globals.default_profile;
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "profile_name is empty\n");
+ if (globals.default_profile) {
+ profile = globals.default_profile;
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "using default_profile\n");
+ } else if ((profile = switch_core_hash_find(globals.profile_hash, "default"))) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "no default set, using profile named \"default\"\n");
+ }
} else if (!(profile = switch_core_hash_find(globals.profile_hash, profile_name))) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error invalid profile %s\n", profile_name);
}
@@ -1367,18 +1373,31 @@ static switch_call_cause_t lcr_outgoing_channel(switch_core_session_t *session,
const char *intralata = NULL;
switch_core_session_t *mysession = NULL, *locked_session = NULL;
switch_channel_t *channel = NULL;
-
- dest = strdup(outbound_profile->destination_number);
-
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Entering lcr endpoint for %s\n", dest);
-
- if (!dest) {
- goto done;
- }
+ int argc;
+ char *argv[32] = { 0 };
+ char *mydata = NULL;
switch_core_new_memory_pool(&pool);
routes.pool = pool;
+ if (!outbound_profile->destination_number) {
+ goto done;
+ }
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Entering lcr endpoint for %s\n", outbound_profile->destination_number);
+
+ mydata = switch_core_strdup(pool, outbound_profile->destination_number);
+
+ if ((argc = switch_separate_string(mydata, '/', argv, (sizeof(argv) / sizeof(argv[0]))))) {
+ if (argc > 1) {
+ lcr_profile = switch_core_strdup(pool, argv[0]);
+ dest = switch_core_strdup(pool, argv[1]);
+ }
+ }
+
+ if (!dest) {
+ dest = outbound_profile->destination_number;
+ }
+
if (var_event && (skip = switch_event_get_header(var_event, "lcr_recurse_variables")) && switch_false(skip)) {
if ((var = switch_event_get_header(var_event, SWITCH_CALL_TIMEOUT_VARIABLE)) || (var = switch_event_get_header(var_event, "leg_timeout"))) {
timelimit = atoi(var);
@@ -1516,7 +1535,6 @@ static switch_call_cause_t lcr_outgoing_channel(switch_core_session_t *session,
}
lcr_destroy(routes.head);
switch_core_destroy_memory_pool(&pool);
- switch_safe_free(dest);
if (cause == SWITCH_CAUSE_NONE) {
cause = SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
diff --git a/src/mod/applications/mod_vmd/mod_vmd.c b/src/mod/applications/mod_vmd/mod_vmd.c
index 3bb1e6b16e..6305e98b77 100644
--- a/src/mod/applications/mod_vmd/mod_vmd.c
+++ b/src/mod/applications/mod_vmd/mod_vmd.c
@@ -210,6 +210,8 @@ static switch_bool_t vmd_callback(switch_media_bug_t *bug, void *user_data, swit
case SWITCH_ABC_TYPE_CLOSE:
case SWITCH_ABC_TYPE_READ:
case SWITCH_ABC_TYPE_WRITE:
+ case SWITCH_ABC_TYPE_TAP_NATIVE_READ:
+ case SWITCH_ABC_TYPE_TAP_NATIVE_WRITE:
break;
case SWITCH_ABC_TYPE_READ_REPLACE:
diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c
index 3a5162c398..f0d0ab280b 100644
--- a/src/mod/endpoints/mod_sofia/mod_sofia.c
+++ b/src/mod/endpoints/mod_sofia/mod_sofia.c
@@ -4685,9 +4685,8 @@ static switch_call_cause_t sofia_outgoing_channel(switch_core_session_t *session
* Handle params, strip them off the destination and add them to the
* invite contact.
*
- * TODO:
- * - Add parameters back to destination url?
*/
+
if ((params = strchr(dest, ';'))) {
char *tp_param;
diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h
index ee4776de51..de32b2c7c3 100644
--- a/src/mod/endpoints/mod_sofia/mod_sofia.h
+++ b/src/mod/endpoints/mod_sofia/mod_sofia.h
@@ -1046,7 +1046,7 @@ void sofia_presence_set_hash_key(char *hash_key, int32_t len, sip_t const *sip);
void sofia_glue_sql_close(sofia_profile_t *profile, time_t prune);
int sofia_glue_init_sql(sofia_profile_t *profile);
char *sofia_overcome_sip_uri_weakness(switch_core_session_t *session, const char *uri, const sofia_transport_t transport, switch_bool_t uri_only,
- const char *params);
+ const char *params, const char *invite_tel_params);
switch_bool_t sofia_glue_execute_sql_callback(sofia_profile_t *profile, switch_mutex_t *mutex, char *sql, switch_core_db_callback_func_t callback,
void *pdata);
char *sofia_glue_execute_sql2str(sofia_profile_t *profile, switch_mutex_t *mutex, char *sql, char *resbuf, size_t len);
diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c
index 69d6fd7269..b8eaff50dd 100644
--- a/src/mod/endpoints/mod_sofia/sofia.c
+++ b/src/mod/endpoints/mod_sofia/sofia.c
@@ -8060,7 +8060,7 @@ void sofia_handle_sip_i_invite(switch_core_session_t *session, nua_t *nua, sofia
switch_channel_hangup(tech_pvt->channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
}
- tmp = sofia_overcome_sip_uri_weakness(session, url, transport, SWITCH_TRUE, NULL);
+ tmp = sofia_overcome_sip_uri_weakness(session, url, transport, SWITCH_TRUE, NULL, NULL);
if ((at = strchr(tmp, '@'))) {
url = switch_core_session_sprintf(session, "sip:%s%s", user, at);
diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c
index 15f6d529f2..78ba3c2132 100644
--- a/src/mod/endpoints/mod_sofia/sofia_glue.c
+++ b/src/mod/endpoints/mod_sofia/sofia_glue.c
@@ -1447,12 +1447,13 @@ void sofia_glue_get_addr(msg_t *msg, char *buf, size_t buflen, int *port)
}
char *sofia_overcome_sip_uri_weakness(switch_core_session_t *session, const char *uri, const sofia_transport_t transport, switch_bool_t uri_only,
- const char *params)
+ const char *params, const char *invite_tel_params)
{
char *stripped = switch_core_session_strdup(session, uri);
char *new_uri = NULL;
char *p;
+
stripped = sofia_glue_get_url_from_contact(stripped, 0);
/* remove our params so we don't make any whiny moronic device piss it's pants and forget who it is for a half-hour */
@@ -1496,6 +1497,18 @@ char *sofia_overcome_sip_uri_weakness(switch_core_session_t *session, const char
}
}
+
+
+ if (!zstr(invite_tel_params)) {
+ char *lhs, *rhs = strchr(new_uri, '@');
+
+ if (!zstr(rhs)) {
+ *rhs++ = '\0';
+ lhs = new_uri;
+ new_uri = switch_core_session_sprintf(session, "%s;%s@%s", lhs, invite_tel_params, rhs);
+ }
+ }
+
return new_uri;
}
@@ -2191,6 +2204,7 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session)
const char *screen = "no";
const char *invite_params = switch_channel_get_variable(tech_pvt->channel, "sip_invite_params");
const char *invite_to_params = switch_channel_get_variable(tech_pvt->channel, "sip_invite_to_params");
+ const char *invite_tel_params = switch_channel_get_variable(switch_core_session_get_channel(session), "sip_invite_tel_params");
const char *invite_to_uri = switch_channel_get_variable(tech_pvt->channel, "sip_invite_to_uri");
const char *invite_from_uri = switch_channel_get_variable(tech_pvt->channel, "sip_invite_from_uri");
const char *invite_contact_params = switch_channel_get_variable(tech_pvt->channel, "sip_invite_contact_params");
@@ -2199,6 +2213,7 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session)
const char *from_display = switch_channel_get_variable(tech_pvt->channel, "sip_from_display");
const char *invite_req_uri = switch_channel_get_variable(tech_pvt->channel, "sip_invite_req_uri");
const char *invite_domain = switch_channel_get_variable(tech_pvt->channel, "sip_invite_domain");
+
const char *use_name, *use_number;
if (zstr(tech_pvt->dest)) {
@@ -2335,10 +2350,10 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session)
}
}
- url_str = sofia_overcome_sip_uri_weakness(session, url, tech_pvt->transport, SWITCH_TRUE, invite_params);
- invite_contact = sofia_overcome_sip_uri_weakness(session, tech_pvt->invite_contact, tech_pvt->transport, SWITCH_FALSE, invite_contact_params);
- from_str = sofia_overcome_sip_uri_weakness(session, invite_from_uri ? invite_from_uri : use_from_str, 0, SWITCH_TRUE, invite_from_params);
- to_str = sofia_overcome_sip_uri_weakness(session, invite_to_uri ? invite_to_uri : tech_pvt->dest_to, 0, SWITCH_FALSE, invite_to_params);
+ url_str = sofia_overcome_sip_uri_weakness(session, url, tech_pvt->transport, SWITCH_TRUE, invite_params, invite_tel_params);
+ invite_contact = sofia_overcome_sip_uri_weakness(session, tech_pvt->invite_contact, tech_pvt->transport, SWITCH_FALSE, invite_contact_params, NULL);
+ from_str = sofia_overcome_sip_uri_weakness(session, invite_from_uri ? invite_from_uri : use_from_str, 0, SWITCH_TRUE, invite_from_params, NULL);
+ to_str = sofia_overcome_sip_uri_weakness(session, invite_to_uri ? invite_to_uri : tech_pvt->dest_to, 0, SWITCH_FALSE, invite_to_params, NULL);
switch_channel_set_variable(channel, "sip_outgoing_contact_uri", invite_contact);
@@ -2603,7 +2618,7 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session)
dst = sofia_glue_get_destination(tech_pvt->dest);
if (dst->route_uri) {
- route_uri = sofia_overcome_sip_uri_weakness(tech_pvt->session, dst->route_uri, tech_pvt->transport, SWITCH_TRUE, NULL);
+ route_uri = sofia_overcome_sip_uri_weakness(tech_pvt->session, dst->route_uri, tech_pvt->transport, SWITCH_TRUE, NULL, NULL);
}
if (dst->route) {
diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c
index 6ac946adf4..3547130446 100644
--- a/src/mod/endpoints/mod_sofia/sofia_presence.c
+++ b/src/mod/endpoints/mod_sofia/sofia_presence.c
@@ -2700,6 +2700,7 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char *
const char *from_id = NULL, *from_name = NULL;
const char *to_user = switch_str_nil(switch_event_get_header(helper->event, "variable_sip_to_user"));
const char *from_user = switch_str_nil(switch_event_get_header(helper->event, "variable_sip_from_user"));
+ const char *disable_early = switch_str_nil(switch_event_get_header(helper->event, "variable_presence_disable_early"));
char *clean_to_user = NULL;
char *clean_from_user = NULL;
int force_status = 0;
@@ -2844,7 +2845,7 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char *
}
- if (sofia_test_pflag(profile, PFLAG_PRESENCE_DISABLE_EARLY) &&
+ if ((sofia_test_pflag(profile, PFLAG_PRESENCE_DISABLE_EARLY) || switch_true(disable_early)) &&
(!zstr(call_info_state) && (!strcasecmp(call_info_state, "alterting") || !strcasecmp(call_info_state, "progressing")))) {
goto end;
}
diff --git a/src/mod/languages/mod_managed/freeswitch_wrap.2010.cxx b/src/mod/languages/mod_managed/freeswitch_wrap.2010.cxx
index ce2806c533..bf0b7ba491 100644
--- a/src/mod/languages/mod_managed/freeswitch_wrap.2010.cxx
+++ b/src/mod/languages/mod_managed/freeswitch_wrap.2010.cxx
@@ -1120,6 +1120,16 @@ SWIGEXPORT char * SWIGSTDCALL CSharp_SWITCH_TRANSFER_SOURCE_VARIABLE_get() {
}
+SWIGEXPORT char * SWIGSTDCALL CSharp_SWITCH_SENSITIVE_DTMF_VARIABLE_get() {
+ char * jresult ;
+ char *result = 0 ;
+
+ result = (char *)("sensitive_dtmf");
+ jresult = SWIG_csharp_string_callback((const char *)result);
+ return jresult;
+}
+
+
SWIGEXPORT char * SWIGSTDCALL CSharp_SWITCH_CHANNEL_EXECUTE_ON_ANSWER_VARIABLE_get() {
char * jresult ;
char *result = 0 ;
@@ -7103,6 +7113,30 @@ SWIGEXPORT void * SWIGSTDCALL CSharp_switch_core_media_bug_get_write_replace_fra
}
+SWIGEXPORT void * SWIGSTDCALL CSharp_switch_core_media_bug_get_native_read_frame(void * jarg1) {
+ void * jresult ;
+ switch_media_bug_t *arg1 = (switch_media_bug_t *) 0 ;
+ switch_frame_t *result = 0 ;
+
+ arg1 = (switch_media_bug_t *)jarg1;
+ result = (switch_frame_t *)switch_core_media_bug_get_native_read_frame(arg1);
+ jresult = (void *)result;
+ return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_switch_core_media_bug_get_native_write_frame(void * jarg1) {
+ void * jresult ;
+ switch_media_bug_t *arg1 = (switch_media_bug_t *) 0 ;
+ switch_frame_t *result = 0 ;
+
+ arg1 = (switch_media_bug_t *)jarg1;
+ result = (switch_frame_t *)switch_core_media_bug_get_native_write_frame(arg1);
+ jresult = (void *)result;
+ return jresult;
+}
+
+
SWIGEXPORT void SWIGSTDCALL CSharp_switch_core_media_bug_set_write_replace_frame(void * jarg1, void * jarg2) {
switch_media_bug_t *arg1 = (switch_media_bug_t *) 0 ;
switch_frame_t *arg2 = (switch_frame_t *) 0 ;
@@ -12344,6 +12378,34 @@ SWIGEXPORT int SWIGSTDCALL CSharp_switch_cache_db_execute_sql_event_callback(voi
}
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_sql_queue_manger_execute_sql_callback(void * jarg1, char * jarg2, void * jarg3, void * jarg4) {
+ switch_sql_queue_manager_t *arg1 = (switch_sql_queue_manager_t *) 0 ;
+ char *arg2 = (char *) 0 ;
+ switch_core_db_callback_func_t arg3 = (switch_core_db_callback_func_t) 0 ;
+ void *arg4 = (void *) 0 ;
+
+ arg1 = (switch_sql_queue_manager_t *)jarg1;
+ arg2 = (char *)jarg2;
+ arg3 = (switch_core_db_callback_func_t)jarg3;
+ arg4 = (void *)jarg4;
+ switch_sql_queue_manger_execute_sql_callback(arg1,(char const *)arg2,arg3,arg4);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_sql_queue_manger_execute_sql_event_callback(void * jarg1, char * jarg2, void * jarg3, void * jarg4) {
+ switch_sql_queue_manager_t *arg1 = (switch_sql_queue_manager_t *) 0 ;
+ char *arg2 = (char *) 0 ;
+ switch_core_db_event_callback_func_t arg3 = (switch_core_db_event_callback_func_t) 0 ;
+ void *arg4 = (void *) 0 ;
+
+ arg1 = (switch_sql_queue_manager_t *)jarg1;
+ arg2 = (char *)jarg2;
+ arg3 = (switch_core_db_event_callback_func_t)jarg3;
+ arg4 = (void *)jarg4;
+ switch_sql_queue_manger_execute_sql_event_callback(arg1,(char const *)arg2,arg3,arg4);
+}
+
+
SWIGEXPORT void * SWIGSTDCALL CSharp_switch_fork() {
void * jresult ;
pid_t result;
@@ -20270,6 +20332,50 @@ SWIGEXPORT char * SWIGSTDCALL CSharp_switch_file_handle_prefix_get(void * jarg1)
}
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_file_handle_max_samples_set(void * jarg1, int jarg2) {
+ switch_file_handle *arg1 = (switch_file_handle *) 0 ;
+ int arg2 ;
+
+ arg1 = (switch_file_handle *)jarg1;
+ arg2 = (int)jarg2;
+ if (arg1) (arg1)->max_samples = arg2;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_switch_file_handle_max_samples_get(void * jarg1) {
+ int jresult ;
+ switch_file_handle *arg1 = (switch_file_handle *) 0 ;
+ int result;
+
+ arg1 = (switch_file_handle *)jarg1;
+ result = (int) ((arg1)->max_samples);
+ jresult = result;
+ return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_file_handle__params_set(void * jarg1, void * jarg2) {
+ switch_file_handle *arg1 = (switch_file_handle *) 0 ;
+ switch_event_t *arg2 = (switch_event_t *) 0 ;
+
+ arg1 = (switch_file_handle *)jarg1;
+ arg2 = (switch_event_t *)jarg2;
+ if (arg1) (arg1)->params = arg2;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_switch_file_handle__params_get(void * jarg1) {
+ void * jresult ;
+ switch_file_handle *arg1 = (switch_file_handle *) 0 ;
+ switch_event_t *result = 0 ;
+
+ arg1 = (switch_file_handle *)jarg1;
+ result = (switch_event_t *) ((arg1)->params);
+ jresult = (void *)result;
+ return jresult;
+}
+
+
SWIGEXPORT void * SWIGSTDCALL CSharp_new_switch_file_handle() {
void * jresult ;
switch_file_handle *result = 0 ;
@@ -27316,6 +27422,18 @@ SWIGEXPORT void SWIGSTDCALL CSharp_switch_channel_state_thread_unlock(void * jar
}
+SWIGEXPORT int SWIGSTDCALL CSharp_switch_channel_state_thread_trylock(void * jarg1) {
+ int jresult ;
+ switch_channel_t *arg1 = (switch_channel_t *) 0 ;
+ switch_status_t result;
+
+ arg1 = (switch_channel_t *)jarg1;
+ result = (switch_status_t)switch_channel_state_thread_trylock(arg1);
+ jresult = result;
+ return jresult;
+}
+
+
SWIGEXPORT int SWIGSTDCALL CSharp_switch_buffer_create(void * jarg1, void * jarg2, void * jarg3) {
int jresult ;
switch_memory_pool_t *arg1 = (switch_memory_pool_t *) 0 ;
@@ -38054,6 +38172,18 @@ SWIGEXPORT void SWIGSTDCALL CSharp_CoreSession_SetTtsParameters(void * jarg1, ch
}
+SWIGEXPORT void SWIGSTDCALL CSharp_CoreSession_set_tts_params(void * jarg1, char * jarg2, char * jarg3) {
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ char *arg2 = (char *) 0 ;
+ char *arg3 = (char *) 0 ;
+
+ arg1 = (CoreSession *)jarg1;
+ arg2 = (char *)jarg2;
+ arg3 = (char *)jarg3;
+ (arg1)->set_tts_params(arg2,arg3);
+}
+
+
SWIGEXPORT int SWIGSTDCALL CSharp_CoreSession_CollectDigits__SWIG_0(void * jarg1, int jarg2) {
int jresult ;
CoreSession *arg1 = (CoreSession *) 0 ;
diff --git a/src/mod/languages/mod_managed/managed/swig.2010.cs b/src/mod/languages/mod_managed/managed/swig.2010.cs
index 363b4c8581..8b889f5777 100644
--- a/src/mod/languages/mod_managed/managed/swig.2010.cs
+++ b/src/mod/languages/mod_managed/managed/swig.2010.cs
@@ -376,6 +376,10 @@ public class CoreSession : IDisposable {
freeswitchPINVOKE.CoreSession_SetTtsParameters(swigCPtr, tts_name, voice_name);
}
+ public void set_tts_params(string tts_name, string voice_name) {
+ freeswitchPINVOKE.CoreSession_set_tts_params(swigCPtr, tts_name, voice_name);
+ }
+
public int CollectDigits(int abs_timeout) {
int ret = freeswitchPINVOKE.CoreSession_CollectDigits__SWIG_0(swigCPtr, abs_timeout);
return ret;
@@ -600,7 +604,8 @@ public class DTMF : IDisposable {
namespace FreeSWITCH.Native {
public enum dtmf_flag_t {
- DTMF_FLAG_SKIP_PROCESS = (1 << 0)
+ DTMF_FLAG_SKIP_PROCESS = (1 << 0),
+ DTMF_FLAG_SENSITIVE = (1 << 1)
}
}
@@ -1124,6 +1129,18 @@ public class freeswitch {
return ret;
}
+ public static switch_frame switch_core_media_bug_get_native_read_frame(SWIGTYPE_p_switch_media_bug bug) {
+ IntPtr cPtr = freeswitchPINVOKE.switch_core_media_bug_get_native_read_frame(SWIGTYPE_p_switch_media_bug.getCPtr(bug));
+ switch_frame ret = (cPtr == IntPtr.Zero) ? null : new switch_frame(cPtr, false);
+ return ret;
+ }
+
+ public static switch_frame switch_core_media_bug_get_native_write_frame(SWIGTYPE_p_switch_media_bug bug) {
+ IntPtr cPtr = freeswitchPINVOKE.switch_core_media_bug_get_native_write_frame(SWIGTYPE_p_switch_media_bug.getCPtr(bug));
+ switch_frame ret = (cPtr == IntPtr.Zero) ? null : new switch_frame(cPtr, false);
+ return ret;
+ }
+
public static void switch_core_media_bug_set_write_replace_frame(SWIGTYPE_p_switch_media_bug bug, switch_frame frame) {
freeswitchPINVOKE.switch_core_media_bug_set_write_replace_frame(SWIGTYPE_p_switch_media_bug.getCPtr(bug), switch_frame.getCPtr(frame));
}
@@ -2913,6 +2930,14 @@ public class freeswitch {
return ret;
}
+ public static void switch_sql_queue_manger_execute_sql_callback(SWIGTYPE_p_switch_sql_queue_manager qm, string sql, SWIGTYPE_p_f_p_void_int_p_p_char_p_p_char__int callback, SWIGTYPE_p_void pdata) {
+ freeswitchPINVOKE.switch_sql_queue_manger_execute_sql_callback(SWIGTYPE_p_switch_sql_queue_manager.getCPtr(qm), sql, SWIGTYPE_p_f_p_void_int_p_p_char_p_p_char__int.getCPtr(callback), SWIGTYPE_p_void.getCPtr(pdata));
+ }
+
+ public static void switch_sql_queue_manger_execute_sql_event_callback(SWIGTYPE_p_switch_sql_queue_manager qm, string sql, SWIGTYPE_p_f_p_void_p_switch_event__int callback, SWIGTYPE_p_void pdata) {
+ freeswitchPINVOKE.switch_sql_queue_manger_execute_sql_event_callback(SWIGTYPE_p_switch_sql_queue_manager.getCPtr(qm), sql, SWIGTYPE_p_f_p_void_p_switch_event__int.getCPtr(callback), SWIGTYPE_p_void.getCPtr(pdata));
+ }
+
public static SWIGTYPE_p_pid_t switch_fork() {
SWIGTYPE_p_pid_t ret = new SWIGTYPE_p_pid_t(freeswitchPINVOKE.switch_fork(), true);
return ret;
@@ -4372,6 +4397,11 @@ public class freeswitch {
freeswitchPINVOKE.switch_channel_state_thread_unlock(SWIGTYPE_p_switch_channel.getCPtr(channel));
}
+ public static switch_status_t switch_channel_state_thread_trylock(SWIGTYPE_p_switch_channel channel) {
+ switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_channel_state_thread_trylock(SWIGTYPE_p_switch_channel.getCPtr(channel));
+ return ret;
+ }
+
public static switch_status_t switch_buffer_create(SWIGTYPE_p_apr_pool_t pool, SWIGTYPE_p_p_switch_buffer buffer, SWIGTYPE_p_switch_size_t max_len) {
switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_buffer_create(SWIGTYPE_p_apr_pool_t.getCPtr(pool), SWIGTYPE_p_p_switch_buffer.getCPtr(buffer), SWIGTYPE_p_switch_size_t.getCPtr(max_len));
if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve();
@@ -6382,6 +6412,7 @@ public class freeswitch {
public static readonly string SWITCH_PROTO_SPECIFIC_HANGUP_CAUSE_VARIABLE = freeswitchPINVOKE.SWITCH_PROTO_SPECIFIC_HANGUP_CAUSE_VARIABLE_get();
public static readonly string SWITCH_TRANSFER_HISTORY_VARIABLE = freeswitchPINVOKE.SWITCH_TRANSFER_HISTORY_VARIABLE_get();
public static readonly string SWITCH_TRANSFER_SOURCE_VARIABLE = freeswitchPINVOKE.SWITCH_TRANSFER_SOURCE_VARIABLE_get();
+ public static readonly string SWITCH_SENSITIVE_DTMF_VARIABLE = freeswitchPINVOKE.SWITCH_SENSITIVE_DTMF_VARIABLE_get();
public static readonly string SWITCH_CHANNEL_EXECUTE_ON_ANSWER_VARIABLE = freeswitchPINVOKE.SWITCH_CHANNEL_EXECUTE_ON_ANSWER_VARIABLE_get();
public static readonly string SWITCH_CHANNEL_EXECUTE_ON_PRE_ANSWER_VARIABLE = freeswitchPINVOKE.SWITCH_CHANNEL_EXECUTE_ON_PRE_ANSWER_VARIABLE_get();
public static readonly string SWITCH_CHANNEL_EXECUTE_ON_MEDIA_VARIABLE = freeswitchPINVOKE.SWITCH_CHANNEL_EXECUTE_ON_MEDIA_VARIABLE_get();
@@ -6956,6 +6987,9 @@ class freeswitchPINVOKE {
[DllImport("mod_managed", EntryPoint="CSharp_SWITCH_TRANSFER_SOURCE_VARIABLE_get")]
public static extern string SWITCH_TRANSFER_SOURCE_VARIABLE_get();
+ [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_SENSITIVE_DTMF_VARIABLE_get")]
+ public static extern string SWITCH_SENSITIVE_DTMF_VARIABLE_get();
+
[DllImport("mod_managed", EntryPoint="CSharp_SWITCH_CHANNEL_EXECUTE_ON_ANSWER_VARIABLE_get")]
public static extern string SWITCH_CHANNEL_EXECUTE_ON_ANSWER_VARIABLE_get();
@@ -8507,6 +8541,12 @@ class freeswitchPINVOKE {
[DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_get_write_replace_frame")]
public static extern IntPtr switch_core_media_bug_get_write_replace_frame(HandleRef jarg1);
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_get_native_read_frame")]
+ public static extern IntPtr switch_core_media_bug_get_native_read_frame(HandleRef jarg1);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_get_native_write_frame")]
+ public static extern IntPtr switch_core_media_bug_get_native_write_frame(HandleRef jarg1);
+
[DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_set_write_replace_frame")]
public static extern void switch_core_media_bug_set_write_replace_frame(HandleRef jarg1, HandleRef jarg2);
@@ -9698,6 +9738,12 @@ class freeswitchPINVOKE {
[DllImport("mod_managed", EntryPoint="CSharp_switch_cache_db_execute_sql_event_callback")]
public static extern int switch_cache_db_execute_sql_event_callback(HandleRef jarg1, string jarg2, HandleRef jarg3, HandleRef jarg4, ref string jarg5);
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_sql_queue_manger_execute_sql_callback")]
+ public static extern void switch_sql_queue_manger_execute_sql_callback(HandleRef jarg1, string jarg2, HandleRef jarg3, HandleRef jarg4);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_sql_queue_manger_execute_sql_event_callback")]
+ public static extern void switch_sql_queue_manger_execute_sql_event_callback(HandleRef jarg1, string jarg2, HandleRef jarg3, HandleRef jarg4);
+
[DllImport("mod_managed", EntryPoint="CSharp_switch_fork")]
public static extern IntPtr switch_fork();
@@ -11612,6 +11658,18 @@ class freeswitchPINVOKE {
[DllImport("mod_managed", EntryPoint="CSharp_switch_file_handle_prefix_get")]
public static extern string switch_file_handle_prefix_get(HandleRef jarg1);
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_file_handle_max_samples_set")]
+ public static extern void switch_file_handle_max_samples_set(HandleRef jarg1, int jarg2);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_file_handle_max_samples_get")]
+ public static extern int switch_file_handle_max_samples_get(HandleRef jarg1);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_file_handle__params_set")]
+ public static extern void switch_file_handle__params_set(HandleRef jarg1, HandleRef jarg2);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_file_handle__params_get")]
+ public static extern IntPtr switch_file_handle__params_get(HandleRef jarg1);
+
[DllImport("mod_managed", EntryPoint="CSharp_new_switch_file_handle")]
public static extern IntPtr new_switch_file_handle();
@@ -13394,6 +13452,9 @@ class freeswitchPINVOKE {
[DllImport("mod_managed", EntryPoint="CSharp_switch_channel_state_thread_unlock")]
public static extern void switch_channel_state_thread_unlock(HandleRef jarg1);
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_state_thread_trylock")]
+ public static extern int switch_channel_state_thread_trylock(HandleRef jarg1);
+
[DllImport("mod_managed", EntryPoint="CSharp_switch_buffer_create")]
public static extern int switch_buffer_create(HandleRef jarg1, HandleRef jarg2, HandleRef jarg3);
@@ -15809,6 +15870,9 @@ class freeswitchPINVOKE {
[DllImport("mod_managed", EntryPoint="CSharp_CoreSession_SetTtsParameters")]
public static extern void CoreSession_SetTtsParameters(HandleRef jarg1, string jarg2, string jarg3);
+ [DllImport("mod_managed", EntryPoint="CSharp_CoreSession_set_tts_params")]
+ public static extern void CoreSession_set_tts_params(HandleRef jarg1, string jarg2, string jarg3);
+
[DllImport("mod_managed", EntryPoint="CSharp_CoreSession_CollectDigits__SWIG_0")]
public static extern int CoreSession_CollectDigits__SWIG_0(HandleRef jarg1, int jarg2);
@@ -21801,6 +21865,8 @@ public enum switch_abc_type_t {
SWITCH_ABC_TYPE_WRITE_REPLACE,
SWITCH_ABC_TYPE_READ_REPLACE,
SWITCH_ABC_TYPE_READ_PING,
+ SWITCH_ABC_TYPE_TAP_NATIVE_READ,
+ SWITCH_ABC_TYPE_TAP_NATIVE_WRITE,
SWITCH_ABC_TYPE_CLOSE
}
@@ -27959,7 +28025,8 @@ namespace FreeSWITCH.Native {
SWITCH_FILE_DONE = (1 << 13),
SWITCH_FILE_BUFFER_DONE = (1 << 14),
SWITCH_FILE_WRITE_APPEND = (1 << 15),
- SWITCH_FILE_WRITE_OVER = (1 << 16)
+ SWITCH_FILE_WRITE_OVER = (1 << 16),
+ SWITCH_FILE_NOMUX = (1 << 17)
}
}
@@ -28417,6 +28484,27 @@ public class switch_file_handle : IDisposable {
}
}
+ public int max_samples {
+ set {
+ freeswitchPINVOKE.switch_file_handle_max_samples_set(swigCPtr, value);
+ }
+ get {
+ int ret = freeswitchPINVOKE.switch_file_handle_max_samples_get(swigCPtr);
+ return ret;
+ }
+ }
+
+ public switch_event _params {
+ set {
+ freeswitchPINVOKE.switch_file_handle__params_set(swigCPtr, switch_event.getCPtr(value));
+ }
+ get {
+ IntPtr cPtr = freeswitchPINVOKE.switch_file_handle__params_get(swigCPtr);
+ switch_event ret = (cPtr == IntPtr.Zero) ? null : new switch_event(cPtr, false);
+ return ret;
+ }
+ }
+
public switch_file_handle() : this(freeswitchPINVOKE.new_switch_file_handle(), true) {
}
@@ -31462,11 +31550,14 @@ namespace FreeSWITCH.Native {
SMBF_READ_PING = (1 << 4),
SMBF_STEREO = (1 << 5),
SMBF_ANSWER_REQ = (1 << 6),
- SMBF_THREAD_LOCK = (1 << 7),
- SMBF_PRUNE = (1 << 8),
- SMBF_NO_PAUSE = (1 << 9),
- SMBF_STEREO_SWAP = (1 << 10),
- SMBF_LOCK = (1 << 11)
+ SMBF_BRIDGE_REQ = (1 << 7),
+ SMBF_THREAD_LOCK = (1 << 8),
+ SMBF_PRUNE = (1 << 9),
+ SMBF_NO_PAUSE = (1 << 10),
+ SMBF_STEREO_SWAP = (1 << 11),
+ SMBF_LOCK = (1 << 12),
+ SMBF_TAP_NATIVE_READ = (1 << 13),
+ SMBF_TAP_NATIVE_WRITE = (1 << 14)
}
}
diff --git a/src/switch_channel.c b/src/switch_channel.c
index c00498ce17..aa31df0ad3 100644
--- a/src/switch_channel.c
+++ b/src/switch_channel.c
@@ -394,12 +394,17 @@ SWITCH_DECLARE(switch_status_t) switch_channel_queue_dtmf(switch_channel_t *chan
switch_status_t status;
void *pop;
switch_dtmf_t new_dtmf = { 0 };
+ switch_bool_t sensitive = switch_true(switch_channel_get_variable_dup(channel, SWITCH_SENSITIVE_DTMF_VARIABLE, SWITCH_FALSE, -1));
switch_assert(dtmf);
switch_mutex_lock(channel->dtmf_mutex);
new_dtmf = *dtmf;
+ if (sensitive) {
+ switch_set_flag((&new_dtmf), DTMF_FLAG_SENSITIVE);
+ }
+
if ((status = switch_core_session_recv_dtmf(channel->session, dtmf) != SWITCH_STATUS_SUCCESS)) {
goto done;
}
@@ -407,18 +412,19 @@ SWITCH_DECLARE(switch_status_t) switch_channel_queue_dtmf(switch_channel_t *chan
if (is_dtmf(new_dtmf.digit)) {
switch_dtmf_t *dt;
int x = 0;
- char str[2] = "";
- str[0] = new_dtmf.digit;
+ if (!sensitive) {
+ switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(channel), SWITCH_LOG_DEBUG, "RECV DTMF %c:%d\n", new_dtmf.digit, new_dtmf.duration);
+ }
if (new_dtmf.digit != 'w' && new_dtmf.digit != 'W') {
if (new_dtmf.duration > switch_core_max_dtmf_duration(0)) {
- switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(channel), SWITCH_LOG_DEBUG1, "%s EXCESSIVE DTMF DIGIT [%s] LEN [%d]\n",
- switch_channel_get_name(channel), str, new_dtmf.duration);
+ switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(channel), SWITCH_LOG_DEBUG, "%s EXCESSIVE DTMF DIGIT LEN [%d]\n",
+ switch_channel_get_name(channel), new_dtmf.duration);
new_dtmf.duration = switch_core_max_dtmf_duration(0);
} else if (new_dtmf.duration < switch_core_min_dtmf_duration(0)) {
- switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(channel), SWITCH_LOG_DEBUG1, "%s SHORT DTMF DIGIT [%s] LEN [%d]\n",
- switch_channel_get_name(channel), str, new_dtmf.duration);
+ switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(channel), SWITCH_LOG_DEBUG, "%s SHORT DTMF DIGIT LEN [%d]\n",
+ switch_channel_get_name(channel), new_dtmf.duration);
new_dtmf.duration = switch_core_min_dtmf_duration(0);
}
}
@@ -519,14 +525,16 @@ SWITCH_DECLARE(switch_status_t) switch_channel_dequeue_dtmf(switch_channel_t *ch
void *pop;
switch_dtmf_t *dt;
switch_status_t status = SWITCH_STATUS_FALSE;
+ int sensitive = 0;
switch_mutex_lock(channel->dtmf_mutex);
if (switch_queue_trypop(channel->dtmf_queue, &pop) == SWITCH_STATUS_SUCCESS) {
dt = (switch_dtmf_t *) pop;
*dtmf = *dt;
+ sensitive = switch_test_flag(dtmf, DTMF_FLAG_SENSITIVE);
- if (switch_queue_trypush(channel->dtmf_log_queue, dt) != SWITCH_STATUS_SUCCESS) {
+ if (!sensitive && switch_queue_trypush(channel->dtmf_log_queue, dt) != SWITCH_STATUS_SUCCESS) {
free(dt);
}
@@ -534,11 +542,11 @@ SWITCH_DECLARE(switch_status_t) switch_channel_dequeue_dtmf(switch_channel_t *ch
if (dtmf->duration > switch_core_max_dtmf_duration(0)) {
switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(channel), SWITCH_LOG_WARNING, "%s EXCESSIVE DTMF DIGIT [%c] LEN [%d]\n",
- switch_channel_get_name(channel), dtmf->digit, dtmf->duration);
+ switch_channel_get_name(channel), sensitive ? 'S' : dtmf->digit, dtmf->duration);
dtmf->duration = switch_core_max_dtmf_duration(0);
} else if (dtmf->duration < switch_core_min_dtmf_duration(0)) {
switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(channel), SWITCH_LOG_WARNING, "%s SHORT DTMF DIGIT [%c] LEN [%d]\n",
- switch_channel_get_name(channel), dtmf->digit, dtmf->duration);
+ switch_channel_get_name(channel), sensitive ? 'S' : dtmf->digit, dtmf->duration);
dtmf->duration = switch_core_min_dtmf_duration(0);
} else if (!dtmf->duration) {
dtmf->duration = switch_core_default_dtmf_duration(0);
@@ -548,7 +556,7 @@ SWITCH_DECLARE(switch_status_t) switch_channel_dequeue_dtmf(switch_channel_t *ch
}
switch_mutex_unlock(channel->dtmf_mutex);
- if (status == SWITCH_STATUS_SUCCESS && switch_event_create(&event, SWITCH_EVENT_DTMF) == SWITCH_STATUS_SUCCESS) {
+ if (!sensitive && status == SWITCH_STATUS_SUCCESS && switch_event_create(&event, SWITCH_EVENT_DTMF) == SWITCH_STATUS_SUCCESS) {
switch_channel_event_set_data(channel, event);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "DTMF-Digit", "%c", dtmf->digit);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "DTMF-Duration", "%u", dtmf->duration);
diff --git a/src/switch_core_db.c b/src/switch_core_db.c
index c507c99368..590301fcc5 100644
--- a/src/switch_core_db.c
+++ b/src/switch_core_db.c
@@ -233,9 +233,11 @@ SWITCH_DECLARE(switch_core_db_t *) switch_core_db_open_file(const char *filename
if (cb_arg.ok && (1 == cb_arg.rows)) {
break;
} else if (0 == i) {
+ char *cpath = switch_mprintf("%s.%ld.cdb", path, (long) switch_epoch_time_now(NULL));
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "SQLite integrity_check failed for [%s]. Deleting file and retrying\n", path);
switch_core_db_close(db);
- remove(path);
+ rename(path, cpath);
+ free(cpath);
continue;
} else {
diff --git a/src/switch_core_io.c b/src/switch_core_io.c
index 22e0cc811d..696de1cab0 100644
--- a/src/switch_core_io.c
+++ b/src/switch_core_io.c
@@ -299,6 +299,11 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_sessi
do_resample = 1;
}
+ if (session->bugs && !need_codec) {
+ do_bugs = 1;
+ need_codec = 1;
+ }
+
if (switch_test_flag(*frame, SFF_CNG)) {
if (!session->bugs && !session->plc) {
/* Check if other session has bugs */
@@ -551,6 +556,11 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_sessi
if (!switch_channel_test_flag(session->channel, CF_ANSWERED) && switch_core_media_bug_test_flag(bp, SMBF_ANSWER_REQ)) {
continue;
}
+
+ if (!switch_channel_test_flag(session->channel, CF_BRIDGED) && switch_core_media_bug_test_flag(bp, SMBF_BRIDGE_REQ)) {
+ continue;
+ }
+
if (switch_test_flag(bp, SMBF_PRUNE)) {
prune++;
continue;
@@ -595,6 +605,11 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_sessi
if (!switch_channel_test_flag(session->channel, CF_ANSWERED) && switch_core_media_bug_test_flag(bp, SMBF_ANSWER_REQ)) {
continue;
}
+
+ if (!switch_channel_test_flag(session->channel, CF_BRIDGED) && switch_core_media_bug_test_flag(bp, SMBF_BRIDGE_REQ)) {
+ continue;
+ }
+
if (switch_test_flag(bp, SMBF_PRUNE)) {
prune++;
continue;
@@ -757,6 +772,10 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_sessi
continue;
}
+ if (!switch_channel_test_flag(session->channel, CF_BRIDGED) && switch_core_media_bug_test_flag(bp, SMBF_BRIDGE_REQ)) {
+ continue;
+ }
+
if (switch_test_flag(bp, SMBF_PRUNE)) {
prune++;
continue;
@@ -953,6 +972,11 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_write_frame(switch_core_sess
need_codec = TRUE;
}
+ if (session->bugs && !need_codec) {
+ do_bugs = TRUE;
+ need_codec = TRUE;
+ }
+
if (frame->codec->implementation->actual_samples_per_second != session->write_impl.actual_samples_per_second) {
need_codec = TRUE;
do_resample = TRUE;
@@ -1463,6 +1487,10 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_recv_dtmf(switch_core_sessio
return SWITCH_STATUS_FALSE;
}
+ if (switch_test_flag(dtmf, DTMF_FLAG_SENSITIVE)) {
+ return SWITCH_STATUS_SUCCESS;
+ }
+
switch_assert(dtmf);
new_dtmf = *dtmf;
@@ -1506,6 +1534,10 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_send_dtmf(switch_core_sessio
return SWITCH_STATUS_FALSE;
}
+ if (switch_test_flag(dtmf, DTMF_FLAG_SENSITIVE)) {
+ return SWITCH_STATUS_SUCCESS;
+ }
+
switch_assert(dtmf);
new_dtmf = *dtmf;
diff --git a/src/switch_core_sqldb.c b/src/switch_core_sqldb.c
index c2a1f5cbcf..cdea61ab25 100644
--- a/src/switch_core_sqldb.c
+++ b/src/switch_core_sqldb.c
@@ -2037,7 +2037,7 @@ static void core_event_handler(switch_event_t *event)
break;
case SWITCH_EVENT_CHANNEL_ANSWER:
case SWITCH_EVENT_CHANNEL_PROGRESS_MEDIA:
-
+ case SWITCH_EVENT_CODEC:
new_sql() =
switch_mprintf
("update channels set read_codec='%q',read_rate='%q',read_bit_rate='%q',write_codec='%q',write_rate='%q',write_bit_rate='%q' where uuid='%q'",
@@ -3280,6 +3280,7 @@ switch_status_t switch_core_sqldb_start(switch_memory_pool_t *pool, switch_bool_
switch_event_bind("core_db", SWITCH_EVENT_MODULE_UNLOAD, SWITCH_EVENT_SUBCLASS_ANY, core_event_handler, NULL);
switch_event_bind("core_db", SWITCH_EVENT_CALL_SECURE, SWITCH_EVENT_SUBCLASS_ANY, core_event_handler, NULL);
switch_event_bind("core_db", SWITCH_EVENT_NAT, SWITCH_EVENT_SUBCLASS_ANY, core_event_handler, NULL);
+ switch_event_bind("core_db", SWITCH_EVENT_CODEC, SWITCH_EVENT_SUBCLASS_ANY, core_event_handler, NULL);
#endif
switch_threadattr_create(&thd_attr, sql_manager.memory_pool);
diff --git a/src/switch_ivr_async.c b/src/switch_ivr_async.c
index 8b1ce552d4..65b1775a49 100644
--- a/src/switch_ivr_async.c
+++ b/src/switch_ivr_async.c
@@ -1108,14 +1108,12 @@ static switch_bool_t record_callback(switch_media_bug_t *bug, void *user_data, s
{
nframe = switch_core_media_bug_get_native_read_frame(bug);
len = nframe->datalen;
- printf("WRITE IN %d\n", nframe->datalen);
switch_core_file_write(&rh->in_fh, nframe->data, &len);
}
break;
case SWITCH_ABC_TYPE_TAP_NATIVE_WRITE:
{
nframe = switch_core_media_bug_get_native_write_frame(bug);
- printf("WRITE OUT %d\n", nframe->datalen);
len = nframe->datalen;
switch_core_file_write(&rh->out_fh, nframe->data, &len);
}
@@ -1845,6 +1843,10 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_session(switch_core_session_t
flags |= SMBF_ANSWER_REQ;
}
+ if ((p = switch_channel_get_variable(channel, "RECORD_BRIDGE_REQ")) && switch_true(p)) {
+ flags |= SMBF_BRIDGE_REQ;
+ }
+
if ((p = switch_channel_get_variable(channel, "RECORD_APPEND")) && switch_true(p)) {
file_flags |= SWITCH_FILE_WRITE_APPEND;
}
diff --git a/src/switch_ivr_originate.c b/src/switch_ivr_originate.c
index 9c6e6696ca..ad70f150fc 100644
--- a/src/switch_ivr_originate.c
+++ b/src/switch_ivr_originate.c
@@ -1229,7 +1229,7 @@ static switch_status_t setup_ringback(originate_global_t *oglobals, originate_st
} else {
switch_core_session_get_read_impl(oglobals->session, &peer_read_impl);
}
-
+
if (switch_core_codec_init(write_codec,
"L16",
NULL,
@@ -1273,6 +1273,11 @@ static switch_status_t setup_ringback(originate_global_t *oglobals, originate_st
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(oglobals->session), SWITCH_LOG_DEBUG, "Play Ringback File [%s]\n", ringback_data);
+ if (switch_test_flag((&ringback->fhb), SWITCH_FILE_OPEN)) {
+ switch_core_file_close(&ringback->fhb);
+ }
+
+
ringback->fhb.channels = read_codec->implementation->number_of_channels;
ringback->fhb.samplerate = read_codec->implementation->actual_samples_per_second;
if (switch_core_file_open(&ringback->fhb,
@@ -1689,13 +1694,18 @@ static void *SWITCH_THREAD_FUNC early_thread_run(switch_thread_t *thread, void *
int16_t mux_data[SWITCH_RECOMMENDED_BUFFER_SIZE / 2] = { 0 };
int32_t sample;
switch_core_session_t *session;
- switch_codec_t *read_codec, read_codecs[MAX_PEERS] = { {0} };
- int i, x, ready = 0, answered = 0;
+ switch_codec_t read_codecs[MAX_PEERS] = { {0} };
+ int i, x, ready = 0, answered = 0, ring_ready = 0;
int16_t *data;
uint32_t datalen = 0;
switch_status_t status;
switch_frame_t *read_frame = NULL;
+ switch_codec_implementation_t read_impl = { 0 };
+ if (state->oglobals->session) {
+ switch_core_session_get_read_impl(state->oglobals->session, &read_impl);
+ }
+
for (i = 0; i < MAX_PEERS && (session = state->originate_status[i].peer_session); i++) {
originate_status[i].peer_session = session;
switch_core_session_read_lock(session);
@@ -1712,25 +1722,29 @@ static void *SWITCH_THREAD_FUNC early_thread_run(switch_thread_t *thread, void *
if (switch_channel_media_ready(channel)) {
ready++;
+ if (switch_channel_test_flag(channel, CF_RING_READY)) {
+ ring_ready = 1;
+ state->oglobals->bridge_early_media = -1;
+ state->oglobals->ignore_early_media = 1;
+ }
+
if (switch_channel_test_flag(channel, CF_ANSWERED)) {
answered++;
}
if (!state->ringback->asis) {
if (!switch_core_codec_ready((&read_codecs[i]))) {
- read_codec = switch_core_session_get_read_codec(session);
-
if (switch_core_codec_init(&read_codecs[i],
"L16",
NULL,
- read_codec->implementation->actual_samples_per_second,
- read_codec->implementation->microseconds_per_packet / 1000,
+ read_impl.actual_samples_per_second,
+ read_impl.microseconds_per_packet / 1000,
1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL,
switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Codec Error!\n");
- } else {
- switch_core_session_set_read_codec(session, &read_codecs[i]);
}
+ switch_core_session_set_read_codec(session, NULL);
+ switch_core_session_set_read_codec(session, &read_codecs[i]);
}
status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0);
if (SWITCH_READ_ACCEPTABLE(status)) {
@@ -1766,7 +1780,7 @@ static void *SWITCH_THREAD_FUNC early_thread_run(switch_thread_t *thread, void *
switch_mutex_unlock(state->mutex);
}
- if (!ready || answered) {
+ if (!ready || answered || ring_ready) {
break;
}
}
@@ -1774,13 +1788,16 @@ static void *SWITCH_THREAD_FUNC early_thread_run(switch_thread_t *thread, void *
for (i = 0; i < MAX_PEERS && (session = originate_status[i].peer_session); i++) {
if (switch_core_codec_ready((&read_codecs[i]))) {
+ switch_core_session_set_read_codec(session, NULL);
switch_core_codec_destroy(&read_codecs[i]);
}
switch_core_session_reset(session, SWITCH_FALSE, SWITCH_TRUE);
switch_core_session_rwunlock(session);
}
- state->oglobals->early_ok = 1;
+ if (!ring_ready) {
+ state->oglobals->early_ok = 1;
+ }
return NULL;
}
@@ -2048,6 +2065,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess
switch_event_header_t *hi;
const char *cdr_total_var;
const char *cdr_var;
+ const char *json_cdr_var;
if ((cdr_var = switch_channel_get_variable(caller_channel, "failed_xml_cdr_prefix"))) {
char buf[128] = "";
@@ -2060,6 +2078,16 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess
}
}
+ if ((json_cdr_var = switch_channel_get_variable(caller_channel, "failed_json_cdr_prefix"))) {
+ char buf[128] = "";
+ switch_snprintf(buf, sizeof(buf), "%s_total", json_cdr_var);
+ if ((cdr_total_var = switch_channel_get_variable(caller_channel, buf))) {
+ int tmp = atoi(cdr_total_var);
+ if (tmp > 0) {
+ cdr_total = tmp;
+ }
+ }
+ }
/* Copy all the missing applicable channel variables from A-leg into the event */
if ((hi = switch_channel_variable_first(caller_channel))) {
@@ -3073,7 +3101,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess
}
}
write_frame.datalen = (uint32_t) (ringback.asis ? olen : olen * 2);
-write_frame.samples = (uint32_t) olen;
+ write_frame.samples = (uint32_t) olen;
} else if (ringback.audio_buffer) {
if ((write_frame.datalen = (uint32_t) switch_buffer_read_loop(ringback.audio_buffer,
@@ -3438,7 +3466,12 @@ write_frame.samples = (uint32_t) olen;
} else {
const char *cdr_var = NULL;
+ const char *json_cdr_var = NULL;
+
switch_xml_t cdr = NULL;
+ cJSON *json_cdr = NULL;
+
+ char *json_text;
char *xml_text;
char buf[128] = "", buf2[128] = "";
@@ -3446,6 +3479,10 @@ write_frame.samples = (uint32_t) olen;
cdr_var = switch_channel_get_variable(caller_channel, "failed_xml_cdr_prefix");
}
+ if (caller_channel) {
+ json_cdr_var = switch_channel_get_variable(caller_channel, "failed_json_cdr_prefix");
+ }
+
if (peer_channel) {
wait_for_cause(peer_channel);
*cause = switch_channel_get_cause(peer_channel);
@@ -3491,6 +3528,37 @@ write_frame.samples = (uint32_t) olen;
switch_channel_set_variable(caller_channel, buf, buf2);
}
+ if (json_cdr_var) {
+ for (i = 0; i < and_argc; i++) {
+ switch_channel_t *channel;
+
+ if (!originate_status[i].peer_session) {
+ continue;
+ }
+
+ channel = switch_core_session_get_channel(originate_status[i].peer_session);
+
+ switch_channel_wait_for_state_timeout(channel, CS_REPORTING, 5000);
+
+ if (!switch_channel_test_flag(channel, CF_TIMESTAMP_SET)) {
+ switch_channel_set_timestamps(channel);
+ }
+
+ if (switch_ivr_generate_json_cdr(originate_status[i].peer_session, &json_cdr, SWITCH_TRUE) == SWITCH_STATUS_SUCCESS) {
+ json_text = cJSON_PrintUnformatted(json_cdr);
+ switch_snprintf(buf, sizeof(buf), "%s_%d", json_cdr_var, ++cdr_total);
+ switch_channel_set_variable(caller_channel, buf, json_text);
+ // switch_safe_free(json_text);
+ cJSON_Delete(json_cdr);
+ json_cdr = NULL;
+ }
+
+ }
+ switch_snprintf(buf, sizeof(buf), "%s_total", json_cdr_var);
+ switch_snprintf(buf2, sizeof(buf2), "%d", cdr_total ? cdr_total : 0);
+ switch_channel_set_variable(caller_channel, buf, buf2);
+ }
+
if (caller_channel && switch_channel_test_flag(caller_channel, CF_INTERCEPTED)) {
*cause = SWITCH_CAUSE_PICKED_OFF;
}
diff --git a/src/switch_ivr_play_say.c b/src/switch_ivr_play_say.c
index 3ff6893e44..b20ce84476 100644
--- a/src/switch_ivr_play_say.c
+++ b/src/switch_ivr_play_say.c
@@ -1185,20 +1185,33 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess
if (!strstr(file, SWITCH_URL_SEPARATOR)) {
if (!switch_is_file_path(file)) {
- char *tfile = NULL;
+ char *tfile = NULL, *tfile2 = NULL;
char *e;
+ int x;
- if (*file == '[') {
- tfile = switch_core_session_strdup(session, file);
- if ((e = switch_find_end_paren(tfile, '[', ']'))) {
- *e = '\0';
- file = e + 1;
+ for (x = 0; x < 2; x++) {
+ if (*file == '[') {
+ tfile = switch_core_session_strdup(session, file);
+ if ((e = switch_find_end_paren(tfile, '[', ']'))) {
+ *e = '\0';
+ file = e + 1;
+ } else {
+ tfile = NULL;
+ }
+ } else if (*file == '{') {
+ tfile2 = switch_core_session_strdup(session, file);
+ if ((e = switch_find_end_paren(tfile2, '{', '}'))) {
+ *e = '\0';
+ file = e + 1;
+ } else {
+ tfile2 = NULL;
+ }
} else {
- tfile = NULL;
+ break;
}
}
- file = switch_core_session_sprintf(session, "%s%s%s%s%s", switch_str_nil(tfile), tfile ? "]" : "", prefix, SWITCH_PATH_SEPARATOR, file);
+ file = switch_core_session_sprintf(session, "%s%s%s%s%s%s%s", switch_str_nil(tfile), tfile ? "]" : "", switch_str_nil(tfile2), tfile2 ? "}" : "", prefix, SWITCH_PATH_SEPARATOR, file);
}
if ((ext = strrchr(file, '.'))) {
ext++;
@@ -2040,7 +2053,7 @@ SWITCH_DECLARE(switch_status_t) switch_play_and_get_digits(switch_core_session_t
if (zstr(digits_regex)) {
return SWITCH_STATUS_SUCCESS;
}
- switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Test Regex [%s][%s]\n", digit_buffer, digits_regex);
+ switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG1, "Test Regex [%s][%s]\n", digit_buffer, digits_regex);
if (switch_regex_match(digit_buffer, digits_regex) == SWITCH_STATUS_SUCCESS) {
return SWITCH_STATUS_SUCCESS;
} else {
diff --git a/src/switch_rtp.c b/src/switch_rtp.c
index 88848dd777..fee2f95416 100644
--- a/src/switch_rtp.c
+++ b/src/switch_rtp.c
@@ -1597,6 +1597,14 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_udptl_mode(switch_rtp_t *rtp_session)
{
switch_socket_t *sock;
+ if (!switch_rtp_ready(rtp_session)) {
+ return SWITCH_STATUS_FALSE;
+ }
+
+ if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_PROXY_MEDIA)) {
+ ping_socket(rtp_session);
+ }
+
READ_INC(rtp_session);
WRITE_INC(rtp_session);