瀏覽代碼

Merge remote-tracking branch 'upstream/master' for travis build.

Martin Gaida 9 年之前
父節點
當前提交
36daa5404d
共有 57 個文件被更改,包括 444 次插入1350 次删除
  1. 8 0
      .gitattributes
  2. 4 0
      .gitignore
  3. 3 2
      .travis.yml
  4. 3 6
      CMakeLists.txt
  5. 4 4
      README.md
  6. 0 171
      VS2012/civetweb.sln
  7. 0 0
      VisualStudio/buildRelease.pl
  8. 99 0
      VisualStudio/civetweb.sln
  9. 0 0
      VisualStudio/civetweb/civetweb.vcxproj
  10. 0 0
      VisualStudio/civetweb/civetweb.vcxproj.filters
  11. 10 41
      VisualStudio/civetweb_lua/civetweb_lua.vcxproj
  12. 0 0
      VisualStudio/civetweb_lua/civetweb_lua.vcxproj.filters
  13. 0 0
      VisualStudio/civetweb_yassl/civetweb_yassl.sln
  14. 0 0
      VisualStudio/civetweb_yassl/civetweb_yassl/civetweb_yassl.vcxproj
  15. 0 0
      VisualStudio/civetweb_yassl/civetweb_yassl/civetweb_yassl.vcxproj.filters
  16. 0 0
      VisualStudio/civetweb_yassl/yassl_lib/yassl_lib.vcxproj
  17. 0 0
      VisualStudio/civetweb_yassl/yassl_lib/yassl_lib.vcxproj.filters
  18. 8 7
      VisualStudio/duktape_lib/duktape_lib.vcxproj
  19. 0 0
      VisualStudio/duktape_lib/duktape_lib.vcxproj.filters
  20. 11 10
      VisualStudio/ex_embed_cpp/ex_embed_cpp.vcxproj
  21. 0 0
      VisualStudio/ex_embed_cpp/ex_embed_cpp.vcxproj.filters
  22. 11 10
      VisualStudio/ex_embedded_c/ex_embedded_c.vcxproj
  23. 0 0
      VisualStudio/ex_embedded_c/ex_embedded_c.vcxproj.filters
  24. 9 7
      VisualStudio/ex_websocket/ex_websocket.vcxproj
  25. 0 0
      VisualStudio/ex_websocket/ex_websocket.vcxproj.filters
  26. 9 7
      VisualStudio/ex_websocket_client/ex_websocket_client.vcxproj
  27. 0 0
      VisualStudio/ex_websocket_client/ex_websocket_client.vcxproj.filters
  28. 11 10
      VisualStudio/lua_lib/lua_lib.vcxproj
  29. 0 0
      VisualStudio/lua_lib/lua_lib.vcxproj.filters
  30. 7 6
      VisualStudio/unit_test/unit_test.vcxproj
  31. 0 0
      VisualStudio/unit_test/unit_test.vcxproj.filters
  32. 12 11
      VisualStudio/upload/upload.vcxproj
  33. 0 0
      VisualStudio/upload/upload.vcxproj.filters
  34. 18 10
      appveyor.yml
  35. 31 0
      cmake/check/c82fe8888aacfe784476112edd3878256d2e30bc.patch
  36. 2 2
      examples/embedded_cpp/embedded_cpp.cpp
  37. 2 0
      examples/upload/upload.c
  38. 1 1
      examples/websocket_client/websocket_client.c
  39. 二進制
      resources/duktape-logo.png
  40. 5 5
      src/CMakeLists.txt
  41. 62 9
      src/civetweb.c
  42. 17 0
      src/main.c
  43. 3 3
      src/mod_lua.inl
  44. 6 7
      test/CMakeLists.txt
  45. 2 2
      test/linux.cgi
  46. 5 1
      test/main.c
  47. 2 0
      test/private.c
  48. 2 0
      test/private_exe.c
  49. 3 1
      test/public_func.c
  50. 74 10
      test/public_server.c
  51. 0 119
      testutils/Browser/Browser.cpp
  52. 0 90
      testutils/Browser/Browser.vcxproj
  53. 0 5
      testutils/readme.txt
  54. 0 372
      testutils/testclient/testclient.c
  55. 0 91
      testutils/testclient/testclient.vcxproj
  56. 0 239
      testutils/testclient_chunked_linux/testclient.c
  57. 0 91
      testutils/testclient_chunked_linux/testclient2.vcxproj

+ 8 - 0
.gitattributes

@@ -23,3 +23,11 @@
 
 # Preserver Windows specfic lines endings
 *.cmd text eol=crlf
+
+
+# Settings for github syntax highlighting
+# see https://github.com/github/linguist/blob/master/README.md
+docs/* linguist-documentation
+*.inl linguist-language=C
+*.h linguist-language=C
+include/CivetServer.h linguist-language=C++

+ 4 - 0
.gitignore

@@ -64,6 +64,10 @@ local.properties
 *.user
 *.sln.docstates
 
+# Text-mode IDE tools
+cscope.out
+tags
+
 # Build results
 
 [Dd]ebug/

+ 3 - 2
.travis.yml

@@ -8,7 +8,7 @@ compiler:
 
 os:
   - linux
-#  - osx
+  - osx
 
 env:
   global:
@@ -2326,7 +2326,8 @@ env:
 #      ENABLE_WEBSOCKETS=YES
 #      ENABLE_LUA=YES
 #      ENABLE_DUKTAPE=YES
-
+  allow_failures:
+    - os: osx
 
 addons:
   apt:

+ 3 - 6
CMakeLists.txt

@@ -92,7 +92,6 @@ message(STATUS "Lua CGI support - ${CIVETWEB_ENABLE_LUA}")
 option(CIVETWEB_ALLOW_WARNINGS "Do not stop build if there are warnings" OFF)
 message(STATUS "Build if there are warnings - ${CIVETWEB_ALLOW_WARNINGS}")
 
-
 # Link to the shared LUA library
 cmake_dependent_option(
   CIVETWEB_ENABLE_LUA_SHARED  "Link to the shared LUA system library" OFF
@@ -314,7 +313,6 @@ if (CIVETWEB_ENABLE_CXX)
   add_cxx_compiler_flag(-Wall)
   add_cxx_compiler_flag(-Wextra)
   add_cxx_compiler_flag(-Wshadow)
-  add_cxx_compiler_flag(-Wsign-conversion)
   add_cxx_compiler_flag(-Wmissing-prototypes)
   add_cxx_compiler_flag(-Weverything)
   add_cxx_compiler_flag(/W4)
@@ -330,7 +328,6 @@ if (CIVETWEB_ENABLE_CXX)
   endif()
   add_cxx_compiler_flag(/WX)
   add_cxx_compiler_flag(-pedantic-errors)
-  add_cxx_compiler_flag(-Wzero-as-null-pointer-constant)
   add_cxx_compiler_flag(-fvisibility=hidden)
   add_cxx_compiler_flag(-fstack-protector-strong RELEASE)
   add_cxx_compiler_flag(-flto RELEASE)
@@ -400,14 +397,14 @@ add_subdirectory(src)
 include(CTest)
 if (BUILD_TESTING)
   # Check unit testing framework Version
-  set(CIVETWEB_CHECK_VERSION 0.9.14 CACHE STRING
+  set(CIVETWEB_CHECK_VERSION 0.10.0 CACHE STRING
     "The version of Check unit testing framework to build and include statically")
   set_property(CACHE CIVETWEB_CHECK_VERSION PROPERTY VALUE ${CIVETWEB_CHECK_VERSION})
   message(STATUS "Check Unit Testing Framework Version - ${CIVETWEB_CHECK_VERSION}")
   mark_as_advanced(CIVETWEB_CHECK_VERSION)
 
   # Check unit testing framework Verification Hash
-  set(CIVETWEB_CHECK_MD5_HASH 38263d115d784c17aa3b959ce94be8b8 CACHE STRING
+  set(CIVETWEB_CHECK_MD5_HASH 67a34c40b5bc888737f4e5ae82e9939f CACHE STRING
     "The hash of Check unit testing framework archive to be downloaded")
   set_property(CACHE CIVETWEB_CHECK_MD5_HASH PROPERTY VALUE ${CIVETWEB_CHECK_MD5_HASH})
   mark_as_advanced(CIVETWEB_CHECK_MD5_HASH)
@@ -425,7 +422,7 @@ set(CPACK_PACKAGE_VERSION_MINOR "${CIVETWEB_VERSION_MINOR}")
 set(CPACK_PACKAGE_VERSION_PATCH "${CIVETWEB_VERSION_PATCH}")
 set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A HTTP library and server")
 set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
-set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.md")
+set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md")
 set(CPACK_STRIP_FILES TRUE)
 set(CPACK_PACKAGE_DEPENDS "openssl")
 if (CIVETWEB_ENABLE_LUA_SHARED)

+ 4 - 4
README.md

@@ -84,16 +84,16 @@ simplicity by a carefully selected list of features:
 <a href="http://sqlite.org">
 ![Sqlite3](https://raw.github.com/civetweb/civetweb/master/resources/sqlite3-logo.jpg "Sqlite3 Logo")
 </a>
-<a href=http://keplerproject.github.io/luafilesystem/">
+<a href="http://keplerproject.github.io/luafilesystem/">
 ![LuaFileSystem](https://raw.github.com/civetweb/civetweb/master/resources/luafilesystem-logo.jpg "LuaFileSystem Logo")
 </a>
-<a href=http://lua.sqlite.org/index.cgi/index">
+<a href="http://lua.sqlite.org/index.cgi/index">
 ![LuaSQLite3](https://raw.github.com/civetweb/civetweb/master/resources/luasqlite-logo.jpg "LuaSQLite3 Logo")
 </a>
-<a href=http://viremo.eludi.net/LuaXML/index.html">
+<a href="http://viremo.eludi.net/LuaXML/index.html">
 ![LuaXML](https://raw.github.com/civetweb/civetweb/master/resources/luaxml-logo.jpg "LuaXML Logo")
 </a>
-<a href=http://duktape.org">
+<a href="http://duktape.org">
 ![Duktape](https://raw.github.com/civetweb/civetweb/master/resources/duktape-logo.png "Duktape Logo")
 </a>
 

+ 0 - 171
VS2012/civetweb.sln

@@ -1,171 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual C++ Express 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "civetweb_lua", "civetweb_lua\civetweb_lua.vcxproj", "{9BE9C008-E851-42B1-A034-BD4630AE4CD6}"
-	ProjectSection(ProjectDependencies) = postProject
-		{0A11689C-DB6A-4BF6-97B2-AD32DB863FBD} = {0A11689C-DB6A-4BF6-97B2-AD32DB863FBD}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lua_lib", "lua_lib\lua_lib.vcxproj", "{8F5E5D77-D269-4665-9E27-1045DA6CF0D8}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ex_embedded_c", "ex_embedded_c\ex_embedded_c.vcxproj", "{882EC43C-2EEE-434B-A711-C844108D29C6}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unit_test", "unit_test\unit_test.vcxproj", "{1AC4A7A6-0100-4287-97F4-B95807BE5607}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ex_websocket_client", "ex_websocket_client\ex_websocket_client.vcxproj", "{58B93E94-7766-435E-93AE-42A2FB5D99B2}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "upload", "upload\upload.vcxproj", "{882EC43C-2EEE-434B-A711-C845678D29C6}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testclient", "..\testutils\testclient\testclient.vcxproj", "{15D6AAA6-36CE-453B-ABBF-3C52BD247EBE}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Browser", "..\testutils\Browser\Browser.vcxproj", "{277772B0-D4B3-451E-86B6-261FBC645793}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testclient2", "..\testutils\testclient_chunked_linux\testclient2.vcxproj", "{150140C5-2989-4D0D-8714-5A47B78EAD4D}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "duktape_lib", "duktape_lib\duktape_lib.vcxproj", "{0A11689C-DB6A-4BF6-97B2-AD32DB863FBD}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ex_websocket", "ex_websocket\ex_websocket.vcxproj", "{58B93E94-7766-435E-93AE-42A2FB5D99B1}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ex_embed_cpp", "ex_embed_cpp\ex_embed_cpp.vcxproj", "{4308C5EE-45E4-45D8-9D73-6C4E2587AD78}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Mixed Platforms = Debug|Mixed Platforms
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Mixed Platforms = Release|Mixed Platforms
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{9BE9C008-E851-42B1-A034-BD4630AE4CD6}.Debug|Mixed Platforms.ActiveCfg = Debug CONSOLE|Win32
-		{9BE9C008-E851-42B1-A034-BD4630AE4CD6}.Debug|Mixed Platforms.Build.0 = Debug CONSOLE|Win32
-		{9BE9C008-E851-42B1-A034-BD4630AE4CD6}.Debug|Win32.ActiveCfg = Debug|Win32
-		{9BE9C008-E851-42B1-A034-BD4630AE4CD6}.Debug|Win32.Build.0 = Debug|Win32
-		{9BE9C008-E851-42B1-A034-BD4630AE4CD6}.Debug|x64.ActiveCfg = Debug|x64
-		{9BE9C008-E851-42B1-A034-BD4630AE4CD6}.Debug|x64.Build.0 = Debug|x64
-		{9BE9C008-E851-42B1-A034-BD4630AE4CD6}.Release|Mixed Platforms.ActiveCfg = Release|Win32
-		{9BE9C008-E851-42B1-A034-BD4630AE4CD6}.Release|Mixed Platforms.Build.0 = Release|Win32
-		{9BE9C008-E851-42B1-A034-BD4630AE4CD6}.Release|Win32.ActiveCfg = Release|Win32
-		{9BE9C008-E851-42B1-A034-BD4630AE4CD6}.Release|Win32.Build.0 = Release|Win32
-		{9BE9C008-E851-42B1-A034-BD4630AE4CD6}.Release|x64.ActiveCfg = Release|x64
-		{9BE9C008-E851-42B1-A034-BD4630AE4CD6}.Release|x64.Build.0 = Release|x64
-		{8F5E5D77-D269-4665-9E27-1045DA6CF0D8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
-		{8F5E5D77-D269-4665-9E27-1045DA6CF0D8}.Debug|Mixed Platforms.Build.0 = Debug|Win32
-		{8F5E5D77-D269-4665-9E27-1045DA6CF0D8}.Debug|Win32.ActiveCfg = Debug|Win32
-		{8F5E5D77-D269-4665-9E27-1045DA6CF0D8}.Debug|Win32.Build.0 = Debug|Win32
-		{8F5E5D77-D269-4665-9E27-1045DA6CF0D8}.Debug|x64.ActiveCfg = Debug|x64
-		{8F5E5D77-D269-4665-9E27-1045DA6CF0D8}.Debug|x64.Build.0 = Debug|x64
-		{8F5E5D77-D269-4665-9E27-1045DA6CF0D8}.Release|Mixed Platforms.ActiveCfg = Release|Win32
-		{8F5E5D77-D269-4665-9E27-1045DA6CF0D8}.Release|Mixed Platforms.Build.0 = Release|Win32
-		{8F5E5D77-D269-4665-9E27-1045DA6CF0D8}.Release|Win32.ActiveCfg = Release|Win32
-		{8F5E5D77-D269-4665-9E27-1045DA6CF0D8}.Release|Win32.Build.0 = Release|Win32
-		{8F5E5D77-D269-4665-9E27-1045DA6CF0D8}.Release|x64.ActiveCfg = Release|x64
-		{8F5E5D77-D269-4665-9E27-1045DA6CF0D8}.Release|x64.Build.0 = Release|x64
-		{882EC43C-2EEE-434B-A711-C844108D29C6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
-		{882EC43C-2EEE-434B-A711-C844108D29C6}.Debug|Mixed Platforms.Build.0 = Debug|Win32
-		{882EC43C-2EEE-434B-A711-C844108D29C6}.Debug|Win32.ActiveCfg = Debug|Win32
-		{882EC43C-2EEE-434B-A711-C844108D29C6}.Debug|Win32.Build.0 = Debug|Win32
-		{882EC43C-2EEE-434B-A711-C844108D29C6}.Debug|x64.ActiveCfg = Debug|x64
-		{882EC43C-2EEE-434B-A711-C844108D29C6}.Debug|x64.Build.0 = Debug|x64
-		{882EC43C-2EEE-434B-A711-C844108D29C6}.Release|Mixed Platforms.ActiveCfg = Release|Win32
-		{882EC43C-2EEE-434B-A711-C844108D29C6}.Release|Mixed Platforms.Build.0 = Release|Win32
-		{882EC43C-2EEE-434B-A711-C844108D29C6}.Release|Win32.ActiveCfg = Release|Win32
-		{882EC43C-2EEE-434B-A711-C844108D29C6}.Release|Win32.Build.0 = Release|Win32
-		{882EC43C-2EEE-434B-A711-C844108D29C6}.Release|x64.ActiveCfg = Release|x64
-		{882EC43C-2EEE-434B-A711-C844108D29C6}.Release|x64.Build.0 = Release|x64
-		{1AC4A7A6-0100-4287-97F4-B95807BE5607}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
-		{1AC4A7A6-0100-4287-97F4-B95807BE5607}.Debug|Mixed Platforms.Build.0 = Debug|Win32
-		{1AC4A7A6-0100-4287-97F4-B95807BE5607}.Debug|Win32.ActiveCfg = Debug|Win32
-		{1AC4A7A6-0100-4287-97F4-B95807BE5607}.Debug|Win32.Build.0 = Debug|Win32
-		{1AC4A7A6-0100-4287-97F4-B95807BE5607}.Debug|x64.ActiveCfg = Debug|Win32
-		{1AC4A7A6-0100-4287-97F4-B95807BE5607}.Release|Mixed Platforms.ActiveCfg = Release|Win32
-		{1AC4A7A6-0100-4287-97F4-B95807BE5607}.Release|Mixed Platforms.Build.0 = Release|Win32
-		{1AC4A7A6-0100-4287-97F4-B95807BE5607}.Release|Win32.ActiveCfg = Release|Win32
-		{1AC4A7A6-0100-4287-97F4-B95807BE5607}.Release|Win32.Build.0 = Release|Win32
-		{1AC4A7A6-0100-4287-97F4-B95807BE5607}.Release|x64.ActiveCfg = Release|Win32
-		{58B93E94-7766-435E-93AE-42A2FB5D99B2}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
-		{58B93E94-7766-435E-93AE-42A2FB5D99B2}.Debug|Mixed Platforms.Build.0 = Debug|Win32
-		{58B93E94-7766-435E-93AE-42A2FB5D99B2}.Debug|Win32.ActiveCfg = Debug|Win32
-		{58B93E94-7766-435E-93AE-42A2FB5D99B2}.Debug|Win32.Build.0 = Debug|Win32
-		{58B93E94-7766-435E-93AE-42A2FB5D99B2}.Debug|x64.ActiveCfg = Debug|Win32
-		{58B93E94-7766-435E-93AE-42A2FB5D99B2}.Release|Mixed Platforms.ActiveCfg = Release|Win32
-		{58B93E94-7766-435E-93AE-42A2FB5D99B2}.Release|Mixed Platforms.Build.0 = Release|Win32
-		{58B93E94-7766-435E-93AE-42A2FB5D99B2}.Release|Win32.ActiveCfg = Release|Win32
-		{58B93E94-7766-435E-93AE-42A2FB5D99B2}.Release|Win32.Build.0 = Release|Win32
-		{58B93E94-7766-435E-93AE-42A2FB5D99B2}.Release|x64.ActiveCfg = Release|Win32
-		{882EC43C-2EEE-434B-A711-C845678D29C6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
-		{882EC43C-2EEE-434B-A711-C845678D29C6}.Debug|Mixed Platforms.Build.0 = Debug|Win32
-		{882EC43C-2EEE-434B-A711-C845678D29C6}.Debug|Win32.ActiveCfg = Debug|Win32
-		{882EC43C-2EEE-434B-A711-C845678D29C6}.Debug|Win32.Build.0 = Debug|Win32
-		{882EC43C-2EEE-434B-A711-C845678D29C6}.Debug|x64.ActiveCfg = Debug|Win32
-		{882EC43C-2EEE-434B-A711-C845678D29C6}.Release|Mixed Platforms.ActiveCfg = Release|Win32
-		{882EC43C-2EEE-434B-A711-C845678D29C6}.Release|Mixed Platforms.Build.0 = Release|Win32
-		{882EC43C-2EEE-434B-A711-C845678D29C6}.Release|Win32.ActiveCfg = Release|Win32
-		{882EC43C-2EEE-434B-A711-C845678D29C6}.Release|Win32.Build.0 = Release|Win32
-		{882EC43C-2EEE-434B-A711-C845678D29C6}.Release|x64.ActiveCfg = Release|Win32
-		{15D6AAA6-36CE-453B-ABBF-3C52BD247EBE}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
-		{15D6AAA6-36CE-453B-ABBF-3C52BD247EBE}.Debug|Mixed Platforms.Build.0 = Debug|Win32
-		{15D6AAA6-36CE-453B-ABBF-3C52BD247EBE}.Debug|Win32.ActiveCfg = Debug|Win32
-		{15D6AAA6-36CE-453B-ABBF-3C52BD247EBE}.Debug|Win32.Build.0 = Debug|Win32
-		{15D6AAA6-36CE-453B-ABBF-3C52BD247EBE}.Debug|x64.ActiveCfg = Debug|Win32
-		{15D6AAA6-36CE-453B-ABBF-3C52BD247EBE}.Release|Mixed Platforms.ActiveCfg = Release|Win32
-		{15D6AAA6-36CE-453B-ABBF-3C52BD247EBE}.Release|Mixed Platforms.Build.0 = Release|Win32
-		{15D6AAA6-36CE-453B-ABBF-3C52BD247EBE}.Release|Win32.ActiveCfg = Release|Win32
-		{15D6AAA6-36CE-453B-ABBF-3C52BD247EBE}.Release|Win32.Build.0 = Release|Win32
-		{15D6AAA6-36CE-453B-ABBF-3C52BD247EBE}.Release|x64.ActiveCfg = Release|Win32
-		{277772B0-D4B3-451E-86B6-261FBC645793}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
-		{277772B0-D4B3-451E-86B6-261FBC645793}.Debug|Mixed Platforms.Build.0 = Debug|Win32
-		{277772B0-D4B3-451E-86B6-261FBC645793}.Debug|Win32.ActiveCfg = Debug|Win32
-		{277772B0-D4B3-451E-86B6-261FBC645793}.Debug|Win32.Build.0 = Debug|Win32
-		{277772B0-D4B3-451E-86B6-261FBC645793}.Debug|x64.ActiveCfg = Debug|Win32
-		{277772B0-D4B3-451E-86B6-261FBC645793}.Release|Mixed Platforms.ActiveCfg = Release|Win32
-		{277772B0-D4B3-451E-86B6-261FBC645793}.Release|Mixed Platforms.Build.0 = Release|Win32
-		{277772B0-D4B3-451E-86B6-261FBC645793}.Release|Win32.ActiveCfg = Release|Win32
-		{277772B0-D4B3-451E-86B6-261FBC645793}.Release|Win32.Build.0 = Release|Win32
-		{277772B0-D4B3-451E-86B6-261FBC645793}.Release|x64.ActiveCfg = Release|Win32
-		{150140C5-2989-4D0D-8714-5A47B78EAD4D}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
-		{150140C5-2989-4D0D-8714-5A47B78EAD4D}.Debug|Mixed Platforms.Build.0 = Debug|Win32
-		{150140C5-2989-4D0D-8714-5A47B78EAD4D}.Debug|Win32.ActiveCfg = Debug|Win32
-		{150140C5-2989-4D0D-8714-5A47B78EAD4D}.Debug|Win32.Build.0 = Debug|Win32
-		{150140C5-2989-4D0D-8714-5A47B78EAD4D}.Debug|x64.ActiveCfg = Debug|Win32
-		{150140C5-2989-4D0D-8714-5A47B78EAD4D}.Release|Mixed Platforms.ActiveCfg = Release|Win32
-		{150140C5-2989-4D0D-8714-5A47B78EAD4D}.Release|Mixed Platforms.Build.0 = Release|Win32
-		{150140C5-2989-4D0D-8714-5A47B78EAD4D}.Release|Win32.ActiveCfg = Release|Win32
-		{150140C5-2989-4D0D-8714-5A47B78EAD4D}.Release|Win32.Build.0 = Release|Win32
-		{150140C5-2989-4D0D-8714-5A47B78EAD4D}.Release|x64.ActiveCfg = Release|Win32
-		{0A11689C-DB6A-4BF6-97B2-AD32DB863FBD}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
-		{0A11689C-DB6A-4BF6-97B2-AD32DB863FBD}.Debug|Mixed Platforms.Build.0 = Debug|Win32
-		{0A11689C-DB6A-4BF6-97B2-AD32DB863FBD}.Debug|Win32.ActiveCfg = Debug|Win32
-		{0A11689C-DB6A-4BF6-97B2-AD32DB863FBD}.Debug|Win32.Build.0 = Debug|Win32
-		{0A11689C-DB6A-4BF6-97B2-AD32DB863FBD}.Debug|x64.ActiveCfg = Debug|Win32
-		{0A11689C-DB6A-4BF6-97B2-AD32DB863FBD}.Release|Mixed Platforms.ActiveCfg = Release|Win32
-		{0A11689C-DB6A-4BF6-97B2-AD32DB863FBD}.Release|Mixed Platforms.Build.0 = Release|Win32
-		{0A11689C-DB6A-4BF6-97B2-AD32DB863FBD}.Release|Win32.ActiveCfg = Release|Win32
-		{0A11689C-DB6A-4BF6-97B2-AD32DB863FBD}.Release|Win32.Build.0 = Release|Win32
-		{0A11689C-DB6A-4BF6-97B2-AD32DB863FBD}.Release|x64.ActiveCfg = Release|Win32
-		{58B93E94-7766-435E-93AE-42A2FB5D99B1}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
-		{58B93E94-7766-435E-93AE-42A2FB5D99B1}.Debug|Mixed Platforms.Build.0 = Debug|Win32
-		{58B93E94-7766-435E-93AE-42A2FB5D99B1}.Debug|Win32.ActiveCfg = Debug|Win32
-		{58B93E94-7766-435E-93AE-42A2FB5D99B1}.Debug|Win32.Build.0 = Debug|Win32
-		{58B93E94-7766-435E-93AE-42A2FB5D99B1}.Debug|x64.ActiveCfg = Debug|Win32
-		{58B93E94-7766-435E-93AE-42A2FB5D99B1}.Release|Mixed Platforms.ActiveCfg = Release|Win32
-		{58B93E94-7766-435E-93AE-42A2FB5D99B1}.Release|Mixed Platforms.Build.0 = Release|Win32
-		{58B93E94-7766-435E-93AE-42A2FB5D99B1}.Release|Win32.ActiveCfg = Release|Win32
-		{58B93E94-7766-435E-93AE-42A2FB5D99B1}.Release|Win32.Build.0 = Release|Win32
-		{58B93E94-7766-435E-93AE-42A2FB5D99B1}.Release|x64.ActiveCfg = Release|Win32
-		{4308C5EE-45E4-45D8-9D73-6C4E2587AD78}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
-		{4308C5EE-45E4-45D8-9D73-6C4E2587AD78}.Debug|Mixed Platforms.Build.0 = Debug|Win32
-		{4308C5EE-45E4-45D8-9D73-6C4E2587AD78}.Debug|Win32.ActiveCfg = Debug|Win32
-		{4308C5EE-45E4-45D8-9D73-6C4E2587AD78}.Debug|Win32.Build.0 = Debug|Win32
-		{4308C5EE-45E4-45D8-9D73-6C4E2587AD78}.Debug|x64.ActiveCfg = Debug|Win32
-		{4308C5EE-45E4-45D8-9D73-6C4E2587AD78}.Release|Mixed Platforms.ActiveCfg = Release|Win32
-		{4308C5EE-45E4-45D8-9D73-6C4E2587AD78}.Release|Mixed Platforms.Build.0 = Release|Win32
-		{4308C5EE-45E4-45D8-9D73-6C4E2587AD78}.Release|Win32.ActiveCfg = Release|Win32
-		{4308C5EE-45E4-45D8-9D73-6C4E2587AD78}.Release|Win32.Build.0 = Release|Win32
-		{4308C5EE-45E4-45D8-9D73-6C4E2587AD78}.Release|x64.ActiveCfg = Release|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal

+ 0 - 0
VS2012/buildRelease.pl → VisualStudio/buildRelease.pl


+ 99 - 0
VisualStudio/civetweb.sln

@@ -0,0 +1,99 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.23107.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "civetweb_lua", "civetweb_lua\civetweb_lua.vcxproj", "{9BE9C008-E851-42B1-A034-BD4630AE4CD6}"
+	ProjectSection(ProjectDependencies) = postProject
+		{0A11689C-DB6A-4BF6-97B2-AD32DB863FBD} = {0A11689C-DB6A-4BF6-97B2-AD32DB863FBD}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lua_lib", "lua_lib\lua_lib.vcxproj", "{8F5E5D77-D269-4665-9E27-1045DA6CF0D8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ex_embedded_c", "ex_embedded_c\ex_embedded_c.vcxproj", "{882EC43C-2EEE-434B-A711-C844108D29C6}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unit_test", "unit_test\unit_test.vcxproj", "{1AC4A7A6-0100-4287-97F4-B95807BE5607}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ex_websocket_client", "ex_websocket_client\ex_websocket_client.vcxproj", "{58B93E94-7766-435E-93AE-42A2FB5D99B2}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "upload", "upload\upload.vcxproj", "{882EC43C-2EEE-434B-A711-C845678D29C6}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "duktape_lib", "duktape_lib\duktape_lib.vcxproj", "{0A11689C-DB6A-4BF6-97B2-AD32DB863FBD}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ex_websocket", "ex_websocket\ex_websocket.vcxproj", "{58B93E94-7766-435E-93AE-42A2FB5D99B1}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ex_embed_cpp", "ex_embed_cpp\ex_embed_cpp.vcxproj", "{4308C5EE-45E4-45D8-9D73-6C4E2587AD78}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{9BE9C008-E851-42B1-A034-BD4630AE4CD6}.Debug|Win32.ActiveCfg = Debug|Win32
+		{9BE9C008-E851-42B1-A034-BD4630AE4CD6}.Debug|Win32.Build.0 = Debug|Win32
+		{9BE9C008-E851-42B1-A034-BD4630AE4CD6}.Debug|x64.ActiveCfg = Release|x64
+		{9BE9C008-E851-42B1-A034-BD4630AE4CD6}.Debug|x64.Build.0 = Release|x64
+		{9BE9C008-E851-42B1-A034-BD4630AE4CD6}.Release|Win32.ActiveCfg = Release|Win32
+		{9BE9C008-E851-42B1-A034-BD4630AE4CD6}.Release|Win32.Build.0 = Release|Win32
+		{9BE9C008-E851-42B1-A034-BD4630AE4CD6}.Release|x64.ActiveCfg = Release|x64
+		{9BE9C008-E851-42B1-A034-BD4630AE4CD6}.Release|x64.Build.0 = Release|x64
+		{8F5E5D77-D269-4665-9E27-1045DA6CF0D8}.Debug|Win32.ActiveCfg = Debug|Win32
+		{8F5E5D77-D269-4665-9E27-1045DA6CF0D8}.Debug|Win32.Build.0 = Debug|Win32
+		{8F5E5D77-D269-4665-9E27-1045DA6CF0D8}.Debug|x64.ActiveCfg = Debug|x64
+		{8F5E5D77-D269-4665-9E27-1045DA6CF0D8}.Debug|x64.Build.0 = Debug|x64
+		{8F5E5D77-D269-4665-9E27-1045DA6CF0D8}.Release|Win32.ActiveCfg = Release|Win32
+		{8F5E5D77-D269-4665-9E27-1045DA6CF0D8}.Release|Win32.Build.0 = Release|Win32
+		{8F5E5D77-D269-4665-9E27-1045DA6CF0D8}.Release|x64.ActiveCfg = Release|x64
+		{8F5E5D77-D269-4665-9E27-1045DA6CF0D8}.Release|x64.Build.0 = Release|x64
+		{882EC43C-2EEE-434B-A711-C844108D29C6}.Debug|Win32.ActiveCfg = Debug|Win32
+		{882EC43C-2EEE-434B-A711-C844108D29C6}.Debug|Win32.Build.0 = Debug|Win32
+		{882EC43C-2EEE-434B-A711-C844108D29C6}.Debug|x64.ActiveCfg = Debug|x64
+		{882EC43C-2EEE-434B-A711-C844108D29C6}.Release|Win32.ActiveCfg = Release|Win32
+		{882EC43C-2EEE-434B-A711-C844108D29C6}.Release|Win32.Build.0 = Release|Win32
+		{882EC43C-2EEE-434B-A711-C844108D29C6}.Release|x64.ActiveCfg = Release|x64
+		{1AC4A7A6-0100-4287-97F4-B95807BE5607}.Debug|Win32.ActiveCfg = Debug|Win32
+		{1AC4A7A6-0100-4287-97F4-B95807BE5607}.Debug|Win32.Build.0 = Debug|Win32
+		{1AC4A7A6-0100-4287-97F4-B95807BE5607}.Debug|x64.ActiveCfg = Debug|Win32
+		{1AC4A7A6-0100-4287-97F4-B95807BE5607}.Release|Win32.ActiveCfg = Release|Win32
+		{1AC4A7A6-0100-4287-97F4-B95807BE5607}.Release|Win32.Build.0 = Release|Win32
+		{1AC4A7A6-0100-4287-97F4-B95807BE5607}.Release|x64.ActiveCfg = Release|Win32
+		{58B93E94-7766-435E-93AE-42A2FB5D99B2}.Debug|Win32.ActiveCfg = Debug|Win32
+		{58B93E94-7766-435E-93AE-42A2FB5D99B2}.Debug|Win32.Build.0 = Debug|Win32
+		{58B93E94-7766-435E-93AE-42A2FB5D99B2}.Debug|x64.ActiveCfg = Debug|x64
+		{58B93E94-7766-435E-93AE-42A2FB5D99B2}.Release|Win32.ActiveCfg = Release|Win32
+		{58B93E94-7766-435E-93AE-42A2FB5D99B2}.Release|Win32.Build.0 = Release|Win32
+		{58B93E94-7766-435E-93AE-42A2FB5D99B2}.Release|x64.ActiveCfg = Release|x64
+		{882EC43C-2EEE-434B-A711-C845678D29C6}.Debug|Win32.ActiveCfg = Debug|Win32
+		{882EC43C-2EEE-434B-A711-C845678D29C6}.Debug|Win32.Build.0 = Debug|Win32
+		{882EC43C-2EEE-434B-A711-C845678D29C6}.Debug|x64.ActiveCfg = Debug|Win32
+		{882EC43C-2EEE-434B-A711-C845678D29C6}.Release|Win32.ActiveCfg = Release|Win32
+		{882EC43C-2EEE-434B-A711-C845678D29C6}.Release|Win32.Build.0 = Release|Win32
+		{882EC43C-2EEE-434B-A711-C845678D29C6}.Release|x64.ActiveCfg = Release|Win32
+		{0A11689C-DB6A-4BF6-97B2-AD32DB863FBD}.Debug|Win32.ActiveCfg = Debug|Win32
+		{0A11689C-DB6A-4BF6-97B2-AD32DB863FBD}.Debug|Win32.Build.0 = Debug|Win32
+		{0A11689C-DB6A-4BF6-97B2-AD32DB863FBD}.Debug|x64.ActiveCfg = Debug|x64
+		{0A11689C-DB6A-4BF6-97B2-AD32DB863FBD}.Debug|x64.Build.0 = Debug|x64
+		{0A11689C-DB6A-4BF6-97B2-AD32DB863FBD}.Release|Win32.ActiveCfg = Release|Win32
+		{0A11689C-DB6A-4BF6-97B2-AD32DB863FBD}.Release|Win32.Build.0 = Release|Win32
+		{0A11689C-DB6A-4BF6-97B2-AD32DB863FBD}.Release|x64.ActiveCfg = Release|x64
+		{0A11689C-DB6A-4BF6-97B2-AD32DB863FBD}.Release|x64.Build.0 = Release|x64
+		{58B93E94-7766-435E-93AE-42A2FB5D99B1}.Debug|Win32.ActiveCfg = Debug|Win32
+		{58B93E94-7766-435E-93AE-42A2FB5D99B1}.Debug|Win32.Build.0 = Debug|Win32
+		{58B93E94-7766-435E-93AE-42A2FB5D99B1}.Debug|x64.ActiveCfg = Debug|x64
+		{58B93E94-7766-435E-93AE-42A2FB5D99B1}.Release|Win32.ActiveCfg = Release|Win32
+		{58B93E94-7766-435E-93AE-42A2FB5D99B1}.Release|Win32.Build.0 = Release|Win32
+		{58B93E94-7766-435E-93AE-42A2FB5D99B1}.Release|x64.ActiveCfg = Release|x64
+		{4308C5EE-45E4-45D8-9D73-6C4E2587AD78}.Debug|Win32.ActiveCfg = Debug|Win32
+		{4308C5EE-45E4-45D8-9D73-6C4E2587AD78}.Debug|Win32.Build.0 = Debug|Win32
+		{4308C5EE-45E4-45D8-9D73-6C4E2587AD78}.Debug|x64.ActiveCfg = Debug|x64
+		{4308C5EE-45E4-45D8-9D73-6C4E2587AD78}.Release|Win32.ActiveCfg = Release|Win32
+		{4308C5EE-45E4-45D8-9D73-6C4E2587AD78}.Release|Win32.Build.0 = Release|Win32
+		{4308C5EE-45E4-45D8-9D73-6C4E2587AD78}.Release|x64.ActiveCfg = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal

+ 0 - 0
VS2012/civetweb/civetweb.vcxproj → VisualStudio/civetweb/civetweb.vcxproj


+ 0 - 0
VS2012/civetweb/civetweb.vcxproj.filters → VisualStudio/civetweb/civetweb.vcxproj.filters


+ 10 - 41
VS2012/civetweb_lua/civetweb_lua.vcxproj → VisualStudio/civetweb_lua/civetweb_lua.vcxproj

@@ -1,10 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug CONSOLE|Win32">
-      <Configuration>Debug CONSOLE</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
       <Platform>Win32</Platform>
@@ -32,18 +28,12 @@
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v100</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug CONSOLE|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v100</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug CONSOLE|x64'" Label="Configuration">
@@ -57,12 +47,12 @@
     <UseDebugLibraries>false</UseDebugLibraries>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v100</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
@@ -72,9 +62,6 @@
   <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug CONSOLE|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
   </ImportGroup>
@@ -92,10 +79,6 @@
     <LinkIncremental>true</LinkIncremental>
     <OutDir>$(SolutionDir)\$(Configuration)\$(Platform)\</OutDir>
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug CONSOLE|Win32'">
-    <LinkIncremental>true</LinkIncremental>
-    <OutDir>$(SolutionDir)\$(Configuration)\$(Platform)\</OutDir>
-  </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <LinkIncremental>true</LinkIncremental>
     <OutDir>$(SolutionDir)\$(Configuration)\$(Platform)\</OutDir>
@@ -126,28 +109,14 @@
       <GenerateDebugInformation>true</GenerateDebugInformation>
     </Link>
   </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug CONSOLE|Win32'">
-    <ClCompile>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>USE_DUKTAPE;USE_IPV6;LUA_COMPAT_ALL;USE_LUA;USE_LUA_SQLITE3;USE_LUA_FILE_SYSTEM;USE_WEBSOCKET;WIN32;CONSOLE;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>$(ProjectDir)..\..\include;$(ProjectDir)..\..\src\third_party;$(ProjectDir)..\..\src\third_party\lua-5.2.4\src;$(ProjectDir)..\..\src\third_party\duktape-1.3.0\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-  </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <ClCompile>
       <PrecompiledHeader>
       </PrecompiledHeader>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>LUA_COMPAT_ALL;USE_LUA;USE_LUA_SQLITE3;USE_LUA_FILE_SYSTEM;USE_WEBSOCKET;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>$(ProjectDir)..\..\include;$(ProjectDir)..\..\src\third_party\lua-5.2.4\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>USE_DUKTAPE;USE_IPV6;LUA_COMPAT_ALL;USE_LUA;USE_LUA_SQLITE3;USE_LUA_FILE_SYSTEM;USE_WEBSOCKET;WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(ProjectDir)..\..\include;$(ProjectDir)..\..\src\third_party;$(ProjectDir)..\..\src\third_party\lua-5.2.4\src;$(ProjectDir)..\..\src\third_party\duktape-1.3.0\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>
       <SubSystem>Windows</SubSystem>
@@ -176,7 +145,7 @@
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>USE_DUKTAPE;USE_IPV6;LUA_COMPAT_ALL;USE_LUA;USE_LUA_SQLITE3;USE_LUA_FILE_SYSTEM;USE_WEBSOCKET;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>USE_DUKTAPE;USE_IPV6;LUA_COMPAT_ALL;USE_LUA;USE_LUA_SQLITE3;USE_LUA_FILE_SYSTEM;USE_WEBSOCKET;WIN32;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>$(ProjectDir)..\..\include;$(ProjectDir)..\..\src\third_party;$(ProjectDir)..\..\src\third_party\lua-5.2.4\src;$(ProjectDir)..\..\src\third_party\duktape-1.3.0\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>
@@ -194,8 +163,8 @@
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>LUA_COMPAT_ALL;USE_LUA;USE_LUA_SQLITE3;USE_LUA_FILE_SYSTEM;USE_WEBSOCKET;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>$(ProjectDir)..\..\include;$(ProjectDir)..\..\src\third_party\lua-5.2.4\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>USE_DUKTAPE;USE_IPV6;LUA_COMPAT_ALL;USE_LUA;USE_LUA_SQLITE3;USE_LUA_FILE_SYSTEM;USE_WEBSOCKET;WIN32;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(ProjectDir)..\..\include;$(ProjectDir)..\..\src\third_party;$(ProjectDir)..\..\src\third_party\lua-5.2.4\src;$(ProjectDir)..\..\src\third_party\duktape-1.3.0\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>
       <SubSystem>Windows</SubSystem>

+ 0 - 0
VS2012/civetweb_lua/civetweb_lua.vcxproj.filters → VisualStudio/civetweb_lua/civetweb_lua.vcxproj.filters


+ 0 - 0
VS2012/civetweb_yassl/civetweb_yassl.sln → VisualStudio/civetweb_yassl/civetweb_yassl.sln


+ 0 - 0
VS2012/civetweb_yassl/civetweb_yassl/civetweb_yassl.vcxproj → VisualStudio/civetweb_yassl/civetweb_yassl/civetweb_yassl.vcxproj


+ 0 - 0
VS2012/civetweb_yassl/civetweb_yassl/civetweb_yassl.vcxproj.filters → VisualStudio/civetweb_yassl/civetweb_yassl/civetweb_yassl.vcxproj.filters


+ 0 - 0
VS2012/civetweb_yassl/yassl_lib/yassl_lib.vcxproj → VisualStudio/civetweb_yassl/yassl_lib/yassl_lib.vcxproj


+ 0 - 0
VS2012/civetweb_yassl/yassl_lib/yassl_lib.vcxproj.filters → VisualStudio/civetweb_yassl/yassl_lib/yassl_lib.vcxproj.filters


+ 8 - 7
VS2012/duktape_lib/duktape_lib.vcxproj → VisualStudio/duktape_lib/duktape_lib.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
@@ -22,33 +22,34 @@
     <ProjectGuid>{0A11689C-DB6A-4BF6-97B2-AD32DB863FBD}</ProjectGuid>
     <Keyword>Win32Proj</Keyword>
     <RootNamespace>duktape_lib</RootNamespace>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v100</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
-    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v100</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
+    <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">

+ 0 - 0
VS2012/duktape_lib/duktape_lib.vcxproj.filters → VisualStudio/duktape_lib/duktape_lib.vcxproj.filters


+ 11 - 10
VS2012/ex_embed_cpp/ex_embed_cpp.vcxproj → VisualStudio/ex_embed_cpp/ex_embed_cpp.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
@@ -22,33 +22,34 @@
     <ProjectGuid>{4308C5EE-45E4-45D8-9D73-6C4E2587AD78}</ProjectGuid>
     <Keyword>Win32Proj</Keyword>
     <RootNamespace>ex_embed_cpp</RootNamespace>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v100</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
-    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v100</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
+    <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
@@ -102,7 +103,7 @@
       </PrecompiledHeader>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>$(ProjectDir)..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>
@@ -118,7 +119,7 @@
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>$(ProjectDir)..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>
@@ -136,7 +137,7 @@
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>$(ProjectDir)..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>

+ 0 - 0
VS2012/ex_embed_cpp/ex_embed_cpp.vcxproj.filters → VisualStudio/ex_embed_cpp/ex_embed_cpp.vcxproj.filters


+ 11 - 10
VS2012/ex_embedded_c/ex_embedded_c.vcxproj → VisualStudio/ex_embedded_c/ex_embedded_c.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
@@ -29,33 +29,34 @@
     <ProjectGuid>{882EC43C-2EEE-434B-A711-C844108D29C6}</ProjectGuid>
     <Keyword>Win32Proj</Keyword>
     <RootNamespace>ex_embedded_c</RootNamespace>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v100</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
-    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v100</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
+    <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
@@ -110,7 +111,7 @@
       </PrecompiledHeader>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>USE_IPV6;USE_WEBSOCKET;WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>$(ProjectDir)..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>
@@ -126,7 +127,7 @@
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>USE_WEBSOCKET;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>USE_IPV6;USE_WEBSOCKET;WIN32;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>$(ProjectDir)..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>
@@ -144,7 +145,7 @@
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>USE_IPV6;USE_WEBSOCKET;WIN32;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>$(ProjectDir)..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>

+ 0 - 0
VS2012/ex_embedded_c/ex_embedded_c.vcxproj.filters → VisualStudio/ex_embedded_c/ex_embedded_c.vcxproj.filters


+ 9 - 7
VS2012/ex_websocket/ex_websocket.vcxproj → VisualStudio/ex_websocket/ex_websocket.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
@@ -22,32 +22,34 @@
     <ProjectGuid>{58B93E94-7766-435E-93AE-42A2FB5D99B1}</ProjectGuid>
     <Keyword>Win32Proj</Keyword>
     <RootNamespace>ex_websocket</RootNamespace>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
-    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v100</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
+    <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
@@ -101,7 +103,7 @@
       </PrecompiledHeader>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>USE_WEBSOCKET;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>USE_WEBSOCKET;WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>$(ProjectDir)..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>

+ 0 - 0
VS2012/ex_websocket/ex_websocket.vcxproj.filters → VisualStudio/ex_websocket/ex_websocket.vcxproj.filters


+ 9 - 7
VS2012/ex_websocket_client/ex_websocket_client.vcxproj → VisualStudio/ex_websocket_client/ex_websocket_client.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
@@ -22,32 +22,34 @@
     <ProjectGuid>{58B93E94-7766-435E-93AE-42A2FB5D99B2}</ProjectGuid>
     <Keyword>Win32Proj</Keyword>
     <RootNamespace>ex_websocket_client</RootNamespace>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
-    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v100</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
+    <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
@@ -101,7 +103,7 @@
       </PrecompiledHeader>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>USE_WEBSOCKET;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>USE_WEBSOCKET;WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>$(ProjectDir)..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>

+ 0 - 0
VS2012/ex_websocket_client/ex_websocket_client.vcxproj.filters → VisualStudio/ex_websocket_client/ex_websocket_client.vcxproj.filters


+ 11 - 10
VS2012/lua_lib/lua_lib.vcxproj → VisualStudio/lua_lib/lua_lib.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
@@ -22,33 +22,34 @@
     <ProjectGuid>{8F5E5D77-D269-4665-9E27-1045DA6CF0D8}</ProjectGuid>
     <Keyword>Win32Proj</Keyword>
     <RootNamespace>lua_lib</RootNamespace>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v100</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
-    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v100</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
+    <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
@@ -98,7 +99,7 @@
       </PrecompiledHeader>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>LUA_COMPAT_ALL;THREADSAFE=1;SQLITE_ENABLE_FTS3;SQLITE_ENABLE_FTS3_PARENTHESIS;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>LUA_COMPAT_ALL;THREADSAFE=1;SQLITE_ENABLE_FTS3;SQLITE_ENABLE_FTS3_PARENTHESIS;WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>$(ProjectDir)..\..\src\third_party\lua-5.2.4\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>
@@ -114,7 +115,7 @@
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>LUA_COMPAT_ALL;THREADSAFE=1;SQLITE_ENABLE_FTS3;SQLITE_ENABLE_FTS3_PARENTHESIS;WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>LUA_COMPAT_ALL;THREADSAFE=1;SQLITE_ENABLE_FTS3;SQLITE_ENABLE_FTS3_PARENTHESIS;WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>$(ProjectDir)..\..\src\third_party\lua-5.2.4\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>
@@ -132,7 +133,7 @@
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>LUA_COMPAT_ALL;THREADSAFE=1;SQLITE_ENABLE_FTS3;SQLITE_ENABLE_FTS3_PARENTHESIS;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>LUA_COMPAT_ALL;THREADSAFE=1;SQLITE_ENABLE_FTS3;SQLITE_ENABLE_FTS3_PARENTHESIS;WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>$(ProjectDir)..\..\src\third_party\lua-5.2.4\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>

+ 0 - 0
VS2012/lua_lib/lua_lib.vcxproj.filters → VisualStudio/lua_lib/lua_lib.vcxproj.filters


+ 7 - 6
VS2012/unit_test/unit_test.vcxproj → VisualStudio/unit_test/unit_test.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
@@ -37,13 +37,14 @@
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v100</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
@@ -69,8 +70,8 @@
       </PrecompiledHeader>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>LOCAL_TEST;REPLACE_CHECK_FOR_LOCAL_DEBUGGING;USE_IPV6;USE_WEBSOCKET;MEMORY_DEBUGGING;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>$(ProjectDir)..\..\src;$(ProjectDir)..\..\include;$(ProjectDir)..\..\src\third_party\lua-5.2.4\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>LOCAL_TEST;REPLACE_CHECK_FOR_LOCAL_DEBUGGING;USE_IPV6;USE_WEBSOCKET;MEMORY_DEBUGGING;WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(ProjectDir)..\..\src;$(ProjectDir)..\..\include;$(ProjectDir)..\..\src\third_party\lua-5.2.4\src;$(ProjectDir)..\..\..\check-0.10.0\;$(ProjectDir)..\..\..\check-0.10.0\src\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -85,8 +86,8 @@
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>$(ProjectDir)..\..\src;$(ProjectDir)..\..\include;$(ProjectDir)..\..\src\third_party\lua-5.2.4\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(ProjectDir)..\..\src;$(ProjectDir)..\..\include;$(ProjectDir)..\..\src\third_party\lua-5.2.4\src;$(ProjectDir)..\..\..\check-0.10.0\;$(ProjectDir)..\..\..\check-0.10.0\src\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>

+ 0 - 0
VS2012/unit_test/unit_test.vcxproj.filters → VisualStudio/unit_test/unit_test.vcxproj.filters


+ 12 - 11
VS2012/upload/upload.vcxproj → VisualStudio/upload/upload.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
@@ -29,33 +29,34 @@
     <ProjectGuid>{882EC43C-2EEE-434B-A711-C845678D29C6}</ProjectGuid>
     <Keyword>Win32Proj</Keyword>
     <RootNamespace>upload</RootNamespace>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v100</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
-    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v100</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
+    <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
@@ -95,7 +96,7 @@
       </PrecompiledHeader>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>NO_FILES;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>NO_FILES;WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>$(ProjectDir)..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>
@@ -109,7 +110,7 @@
       </PrecompiledHeader>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>NO_FILES;WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>$(ProjectDir)..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>
@@ -125,7 +126,7 @@
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>NO_FILES;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>NO_FILES;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>$(ProjectDir)..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>
@@ -143,7 +144,7 @@
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>NO_FILES;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>$(ProjectDir)..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>

+ 0 - 0
VS2012/upload/upload.vcxproj.filters → VisualStudio/upload/upload.vcxproj.filters


+ 18 - 10
appveyor.yml

@@ -13,7 +13,7 @@ environment:
   enable_lua: NO
   enable_lua_shared: NO
   c_standard: auto
-  cxx_standard: auto  
+  cxx_standard: auto
   matrix:
     - compiler: msvc-18-seh
       build_shared: NO
@@ -97,13 +97,12 @@ install:
   - if exist "%mingw_log_file%" powershell Push-AppveyorArtifact "%mingw_log_file%" -FileName mingw-download.log
   # Get OpenSSL
   - if not exist C:\ssl\ (md C:\ssl\)
-  - if not exist C:\ssl\Win32OpenSSL.exe (curl http://slproweb.com/download/Win32OpenSSL-1_0_2e.exe -o C:\ssl\Win32OpenSSL.exe)
-  - if not exist C:\ssl\Win64OpenSSL.exe (curl http://slproweb.com/download/Win64OpenSSL-1_0_2e.exe -o C:\ssl\Win64OpenSSL.exe)
+  - if not exist C:\ssl\Win32OpenSSL_102g.exe (curl http://slproweb.com/download/Win32OpenSSL-1_0_2g.exe -o C:\ssl\Win32OpenSSL_102g.exe)
+  - if not exist C:\ssl\Win64OpenSSL_102g.exe (curl http://slproweb.com/download/Win64OpenSSL-1_0_2g.exe -o C:\ssl\Win64OpenSSL_102g.exe)
+  - C:\ssl\Win32OpenSSL_102g.exe /SILENT /LOG="C:\ssl\install32_102g.log"
+  - C:\ssl\Win64OpenSSL_102g.exe /SILENT /LOG="C:\ssl\install64_102g.log"
   - dir C:\ssl
-  - C:\ssl\Win32OpenSSL.exe /SILENT /LOG="C:\ssl\install32.log"
-  - C:\ssl\Win64OpenSSL.exe /SILENT /LOG="C:\ssl\install64.log"
-  - dir C:\ssl
-  
+
 
 before_build:
   # Remove sh.exe from the path otherwise CMake will complain:
@@ -114,7 +113,7 @@ before_build:
   # Set up mingw commands
   - if "%compiler_name%"=="gcc" (set "generator=MinGW Makefiles")
   - if "%compiler_name%"=="gcc" (set "build=mingw32-make -j4")
-  - if "%compiler_name%"=="gcc" (set "test=mingw32-make CTEST_OUTPUT_ON_FAILURE=1 test")
+  - if "%compiler_name%"=="gcc" (set "test=mingw32-make test")
   # MSVC specific commands
   # Note: The minimum version officially supported for CivetWeb is VS2010. Older ones might work or not.
   - if "%compiler_version%"=="14" (set "vs_version=8" & set "vs_year=2005")
@@ -180,19 +179,28 @@ build_script:
   - cmd /c "%build%"
   - cd "%source_path%"
 
-test_script:   
+test_script:
   - cd "%build_path%"
   - appveyor AddMessage -Category Information "Test command '%build%'"
+  - set CTEST_OUTPUT_ON_FAILURE=1
   - cmd /c "%test%"
   - cd "%source_path%"
 
 after_test:
+  - cd
+  - dir
+  - md dist
   - cmake "-DCMAKE_INSTALL_PREFIX=%install_path%" -P "%build_path%/cmake_install.cmake"
+  - copy "%build_path%" dist\
+  - dir dist\
 
 matrix:
-  fast_finish: true
+  fast_finish: false
 
 cache:
   - C:\mingw-builds -> mingw.cmd
   - C:\third-party -> **\CMakeLists.txt
   - C:\ssl
+
+artifacts:
+  - path: dist\*

+ 31 - 0
cmake/check/c82fe8888aacfe784476112edd3878256d2e30bc.patch

@@ -0,0 +1,31 @@
+From c82fe8888aacfe784476112edd3878256d2e30bc Mon Sep 17 00:00:00 2001
+From: Joshua Boyd <jdboyd@Joshua-Boyds-Mac-mini.local>
+Date: Wed, 23 Mar 2016 17:54:41 -0400
+Subject: [PATCH] Detect missing itimerspec on OSX.
+
+Set define to compiler accordingly.
+
+This fixes cmake on osx support.
+---
+ CMakeLists.txt | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e271e31..1d413e8 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -193,6 +193,14 @@ if(NOT HAVE_SYS_TIME_H)
+     endif(MSVC)
+ endif(NOT HAVE_SYS_TIME_H)
+ 
++# OSX has sys/time.h, but it still lacks itimerspec
++if(HAVE_SYS_TIME_H)
++    check_struct_member("struct itimerspec" it_value "sys/time.h" HAVE_STRUCT_ITIMERSPEC_IT_VALUE)
++    if(NOT HAVE_STRUCT_ITIMERSPEC_IT_VALUE)
++        add_definitions(-DSTRUCT_ITIMERSPEC_DEFINITION_MISSING=1)
++        set(STRUCT_ITIMERSPEC_DEFINITION_MISSING 1)
++    endif(NOT HAVE_STRUCT_ITIMERSPEC_IT_VALUE)
++endif(HAVE_SYS_TIME_H)
+ 
+ ###############################################################################
+ # Check for integer types

+ 2 - 2
examples/embedded_cpp/embedded_cpp.cpp

@@ -171,11 +171,11 @@ class FooHandler : public CivetHandler
 			if (rlen > sizeof(buf)) {
 				rlen = sizeof(buf);
 			}
-			rlen = mg_read(conn, buf, rlen);
+			rlen = mg_read(conn, buf, (size_t)rlen);
 			if (rlen <= 0) {
 				break;
 			}
-			wlen = mg_write(conn, buf, rlen);
+			wlen = mg_write(conn, buf, (size_t)rlen);
 			if (rlen != rlen) {
 				break;
 			}

+ 2 - 0
examples/upload/upload.c

@@ -8,7 +8,9 @@
 
 
 #ifdef _WIN32
+#ifndef _CRT_SECURE_NO_WARNINGS
 #define _CRT_SECURE_NO_WARNINGS
+#endif
 #include <windows.h>
 #include <io.h>
 #define strtoll strtol

+ 1 - 1
examples/websocket_client/websocket_client.c

@@ -81,7 +81,7 @@ websocket_server_data(struct mg_connection *conn,
                       void *_ignored)
 #endif
 {
-	printf("Server: Got %u bytes from the client\n", data_len);
+	printf("Server: Got %lu bytes from the client\n", (unsigned long)data_len);
 	printf("Server received data from client: ");
 	fwrite(data, 1, data_len, stdout);
 	printf("\n");

二進制
resources/duktape-logo.png


+ 5 - 5
src/CMakeLists.txt

@@ -45,7 +45,7 @@ if (CIVETWEB_ENABLE_SLL AND NOT CIVETWEB_ENABLE_OPENSLL_DYNAMIC_LOADING)
 else()
   find_package(LibDl)
   if (LIBDL_FOUND)
-    target_link_libraries(c-library LIBDL::LIBDL)
+    target_link_libraries(c-library -ldl)
   endif()
 endif()
 
@@ -111,7 +111,7 @@ if (CIVETWEB_ENABLE_LUA)
     URL_MD5 ${CIVETWEB_LUA_FILESYSTEM_MD5_HASH}
     PREFIX "${CIVETWEB_THIRD_PARTY_DIR}"
     PATCH_COMMAND ${CMAKE_COMMAND} -E copy
-      "${CMAKE_SOURCE_DIR}/cmake/luafilesystem/CMakeLists.txt" <SOURCE_DIR>/CMakeLists.txt
+      "${CMAKE_CURRENT_SOURCE_DIR}/cmake/luafilesystem/CMakeLists.txt" <SOURCE_DIR>/CMakeLists.txt
     CMAKE_ARGS
       "-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}"
       "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
@@ -144,7 +144,7 @@ if (CIVETWEB_ENABLE_LUA)
     URL_MD5 ${CIVETWEB_LUA_SQLITE_MD5_HASH}
     PREFIX "${CIVETWEB_THIRD_PARTY_DIR}"
     PATCH_COMMAND ${CMAKE_COMMAND} -E copy
-      "${CMAKE_SOURCE_DIR}/cmake/luasqlite/CMakeLists.txt" <SOURCE_DIR>/CMakeLists.txt
+      "${CMAKE_CURRENT_SOURCE_DIR}/cmake/luasqlite/CMakeLists.txt" <SOURCE_DIR>/CMakeLists.txt
     CMAKE_ARGS
       "-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}"
       "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
@@ -174,7 +174,7 @@ if (CIVETWEB_ENABLE_LUA)
     URL_MD5 ${CIVETWEB_LUA_XML_MD5_HASH}
     PREFIX "${CIVETWEB_THIRD_PARTY_DIR}"
     PATCH_COMMAND ${CMAKE_COMMAND} -E copy
-      "${CMAKE_SOURCE_DIR}/cmake/luaxml/CMakeLists.txt" <SOURCE_DIR>/CMakeLists.txt
+      "${CMAKE_CURRENT_SOURCE_DIR}/cmake/luaxml/CMakeLists.txt" <SOURCE_DIR>/CMakeLists.txt
     CMAKE_ARGS
       "-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}"
       "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
@@ -202,7 +202,7 @@ if (CIVETWEB_ENABLE_LUA)
     URL_MD5 ${CIVETWEB_SQLITE_MD5_HASH}
     PREFIX "${CIVETWEB_THIRD_PARTY_DIR}"
     PATCH_COMMAND ${CMAKE_COMMAND} -E copy
-      "${CMAKE_SOURCE_DIR}/cmake/sqlite/CMakeLists.txt" <SOURCE_DIR>/CMakeLists.txt
+      "${CMAKE_CURRENT_SOURCE_DIR}/cmake/sqlite/CMakeLists.txt" <SOURCE_DIR>/CMakeLists.txt
     CMAKE_ARGS
       "-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}"
       "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"

+ 62 - 9
src/civetweb.c

@@ -264,8 +264,15 @@ typedef long off_t;
 
 #define ERRNO ((int)(GetLastError()))
 #define NO_SOCKLEN_T
+
+#if defined(_WIN64) || defined(__MINGW64__)
+#define SSL_LIB "ssleay64.dll"
+#define CRYPTO_LIB "libeay64.dll"
+#else
 #define SSL_LIB "ssleay32.dll"
 #define CRYPTO_LIB "libeay32.dll"
+#endif
+
 #define O_NONBLOCK (0)
 #ifndef W_OK
 #define W_OK (2) /* http://msdn.microsoft.com/en-us/library/1w06ktdy.aspx */
@@ -851,7 +858,7 @@ typedef struct x509_store_ctx_st X509_STORE_CTX;
 #define SSL_VERIFY_PEER (1)
 #define SSL_VERIFY_FAIL_IF_NO_PEER_CERT (2)
 #define SSL_VERIFY_CLIENT_ONCE (4)
-#define SSL_OP_ALL (0x80000BFFL)
+#define SSL_OP_ALL ((long)(0x80000BFFUL))
 #define SSL_OP_NO_SSLv2 (0x01000000L)
 #define SSL_OP_NO_SSLv3 (0x02000000L)
 #define SSL_OP_NO_TLSv1 (0x04000000L)
@@ -2047,10 +2054,17 @@ mg_get_header(const struct mg_connection *conn, const char *name)
 static const char *
 next_option(const char *list, struct vec *val, struct vec *eq_val)
 {
+	int end;
+
+reparse:
 	if (val == NULL || list == NULL || *list == '\0') {
 		/* End of the list */
 		list = NULL;
 	} else {
+		/* Skip over leading LWS */
+		while (*list == ' ' || *list == '\t')
+			list++;
+
 		val->ptr = list;
 		if ((list = strchr(val->ptr, ',')) != NULL) {
 			/* Comma found. Store length and shift the list ptr */
@@ -2062,6 +2076,17 @@ next_option(const char *list, struct vec *val, struct vec *eq_val)
 			val->len = ((size_t)(list - val->ptr));
 		}
 
+		/* Adjust length for trailing LWS */
+		end = (int)val->len - 1;
+		while (end >= 0 && (val->ptr[end] == ' ' || val->ptr[end] == '\t'))
+			end--;
+		val->len = (size_t)(end + 1);
+
+		if (val->len == 0) {
+			/* Ignore any empty entries. */
+			goto reparse;
+		}
+
 		if (eq_val != NULL) {
 			/* Value has form "x=y", adjust pointers and lengths
 			 * so that val points to "x", and eq_val points to "y". */
@@ -2078,6 +2103,24 @@ next_option(const char *list, struct vec *val, struct vec *eq_val)
 	return list;
 }
 
+/* A helper function for checking if a comma separated list of values contains
+ * the given option (case insensitvely).
+ * 'header' can be NULL, in which case false is returned. */
+static int header_has_option(const char *header, const char *option)
+{
+	struct vec opt_vec;
+	struct vec eq_vec;
+
+	assert(option != NULL);
+	assert(option[0] != '\0');
+
+	while ((header = next_option(header, &opt_vec, &eq_vec)) != NULL) {
+		if (mg_strncasecmp(option, opt_vec.ptr, opt_vec.len) == 0)
+			return 1;
+	}
+
+	return 0;
+}
 
 /* Perform case-insensitive match of string against pattern */
 static int
@@ -2134,7 +2177,7 @@ should_keep_alive(const struct mg_connection *conn)
 		const char *header = mg_get_header(conn, "Connection");
 		if (conn->must_close || conn->internal_error || conn->status_code == 401
 		    || mg_strcasecmp(conn->ctx->config[ENABLE_KEEP_ALIVE], "yes") != 0
-		    || (header != NULL && mg_strcasecmp(header, "keep-alive") != 0)
+		    || (header != NULL && !header_has_option(header, "keep-alive"))
 		    || (header == NULL && http_version
 		        && 0 != strcmp(http_version, "1.1"))) {
 			return 0;
@@ -3576,8 +3619,7 @@ get_random(void)
 		/* lfsr will be only 0 if has not been initialized,
 		 * so this code is called only once. */
 		lfsr = (((uint64_t)now.tv_sec) << 21) ^ ((uint64_t)now.tv_nsec)
-		       ^ ((uint64_t)(ptrdiff_t)&now) ^ ((uint64_t)pthread_self())
-		       ^ (((uint64_t)time(NULL)) << 33);
+		       ^ ((uint64_t)(ptrdiff_t)&now) ^ (((uint64_t)time(NULL)) << 33);
 		lcg = (((uint64_t)now.tv_sec) << 25) + (uint64_t)now.tv_nsec
 		      + (uint64_t)(ptrdiff_t)&now;
 	} else {
@@ -3818,11 +3860,17 @@ pull(FILE *fp, struct mg_connection *conn, char *buf, int len, double timeout)
 			 * blocking in close_socket_gracefully, so we can not distinguish
 			 * here. We have to wait for the timeout in both cases for now.
 			 */
-			if (err == EAGAIN || err == EWOULDBLOCK) {
-				/* standard case if called from close_socket_gracefully
+			if (err == EAGAIN || err == EWOULDBLOCK || err == EINTR) {
+				/* EAGAIN/EWOULDBLOCK:
+				 * standard case if called from close_socket_gracefully
 				 * => should return -1 */
 				/* or timeout occured
 				 * => the code must stay in the while loop */
+
+				/* EINTR can be generated on a socket with a timeout set even
+				 * when SA_RESTART is effective for all relevant signals
+				 * (see signal(7)).
+				 * => stay in the while loop */
 			} else {
 				DEBUG_TRACE("recv() failed, error %d", err);
 				return -1;
@@ -7468,8 +7516,7 @@ handle_cgi_request(struct mg_connection *conn, const char *prog)
 		conn->status_code = 200;
 	}
 	connection_state = get_header(&ri, "Connection");
-	if (connection_state == NULL
-	    || mg_strcasecmp(connection_state, "keep-alive")) {
+	if (!header_has_option(connection_state, "keep-alive")) {
 		conn->must_close = 1;
 	}
 	(void)mg_printf(conn, "HTTP/1.1 %d %s\r\n", conn->status_code, status_text);
@@ -10521,7 +10568,13 @@ ssl_id_callback(void)
 		}
 		return tls->thread_idx;
 	} else {
-		return (unsigned long)pthread_self();
+		/* pthread_t may be any data type, so a simple cast to unsigned long
+		 * can rise a warning/error, depending on the platform.
+		 * Here memcpy is used as an anything-to-anything cast. */
+		unsigned long ret = 0;
+		pthread_t t = pthread_self();
+		memcpy(&ret, &t, sizeof(pthread_t));
+		return ret;
 	}
 
 #ifdef __clang__

+ 17 - 0
src/main.c

@@ -969,6 +969,23 @@ start_civetweb(int argc, char *argv[])
 #else
 		fprintf(stdout, "Other\n");
 #endif
+		/* Determine 32/64 bit data mode.
+		 * see https://en.wikipedia.org/wiki/64-bit_computing */
+		fprintf(stdout,
+		        "Data model: i:%u/%u/%u/%u, f:%u/%u/%u, c:%u/%u, "
+		        "p:%u, s:%u, t:%u\n",
+		        (unsigned)sizeof(short),
+		        (unsigned)sizeof(int),
+		        (unsigned)sizeof(long),
+		        (unsigned)sizeof(long long),
+		        (unsigned)sizeof(float),
+		        (unsigned)sizeof(double),
+		        (unsigned)sizeof(long double),
+		        (unsigned)sizeof(char),
+		        (unsigned)sizeof(wchar_t),
+		        (unsigned)sizeof(void *),
+		        (unsigned)sizeof(size_t),
+		        (unsigned)sizeof(time_t));
 
 		exit(EXIT_SUCCESS);
 	}

+ 3 - 3
src/mod_lua.inl

@@ -716,7 +716,7 @@ lsp_url_decode(lua_State *L)
 		text = lua_tolstring(L, 1, &text_len);
 		is_form = (num_args == 2) ? lua_isboolean(L, 2) : 0;
 		if (text) {
-			mg_url_decode(text, text_len, dst, sizeof(dst), is_form);
+			mg_url_decode(text, text_len, dst, (int)sizeof(dst), is_form);
 			lua_pushstring(L, dst);
 		} else {
 			lua_pushnil(L);
@@ -742,7 +742,7 @@ lsp_base64_encode(lua_State *L)
 		if (text) {
 			dst = (char *)mg_malloc(text_len * 8 / 6 + 4);
 			if (dst) {
-				base64_encode((const unsigned char *)text, text_len, dst);
+				base64_encode((const unsigned char *)text, (int)text_len, dst);
 				lua_pushstring(L, dst);
 				mg_free(dst);
 			} else {
@@ -774,7 +774,7 @@ lsp_base64_decode(lua_State *L)
 			dst = (char *)mg_malloc(text_len);
 			if (dst) {
 				ret = base64_decode((const unsigned char *)text,
-				                    text_len,
+				                    (int)text_len,
 				                    dst,
 				                    &dst_len);
 				if (ret != -1) {

+ 6 - 7
test/CMakeLists.txt

@@ -9,16 +9,14 @@ endif()
 include(ExternalProject)
 ExternalProject_Add(check-unit-test-framework
   DEPENDS c-library
-  URL "https://downloads.sourceforge.net/project/check/check/${CIVETWEB_CHECK_VERSION}/check-${CIVETWEB_CHECK_VERSION}.tar.gz"
+  URL "https://codeload.github.com/libcheck/check/zip/${CIVETWEB_CHECK_VERSION}"
+  DOWNLOAD_NAME "${CIVETWEB_CHECK_VERSION}.zip"
   URL_MD5 ${CIVETWEB_CHECK_MD5_HASH}
   PREFIX "${CIVETWEB_THIRD_PARTY_DIR}"
   BUILD_IN_SOURCE 1
-  PATCH_COMMAND ${CMAKE_COMMAND}
-    -DSOURCE_DIR=<SOURCE_DIR>
-    -DBINARY_DIR=<BINARY_DIR>
-    -DINSTALL_DIR=<INSTALL_DIR>
-    -DVERSION=${CIVETWEB_CHECK_VERSION}
-    -P ${CMAKE_SOURCE_DIR}/cmake/check/patch.cmake
+  PATCH_COMMAND patch
+     ${CIVETWEB_THIRD_PARTY_DIR}/src/check-unit-test-framework/CMakeLists.txt		
+     ${CMAKE_SOURCE_DIR}/cmake/check/c82fe8888aacfe784476112edd3878256d2e30bc.patch
   CMAKE_ARGS
     "-DCMAKE_BUILD_TYPE=Release"
     "-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}"
@@ -29,6 +27,7 @@ ExternalProject_Add(check-unit-test-framework
   LOG_BUILD ${THIRD_PARTY_LOGGING}
   LOG_TEST ${THIRD_PARTY_LOGGING}
   LOG_INSTALL ${THIRD_PARTY_LOGGING})
+
 ExternalProject_Get_Property(check-unit-test-framework INSTALL_DIR)
 set(CHECK_INSTALL_DIR ${INSTALL_DIR})
 unset(INSTALL_DIR)

+ 2 - 2
test/linux.cgi

@@ -1,7 +1,7 @@
 #!/bin/sh
 
-echo "Content-Type: text/plain"
-echo
+printf "Content-Type: text/plain\r\n"
+printf "\r\n"
 
 echo "This is a shell script called by CGI:"
 echo

+ 5 - 1
test/main.c

@@ -73,12 +73,16 @@ main(const int argc, char *argv[])
 		}
 	}
 
-	// Run up the tests
+	/* Run up the tests */
 	SRunner *const srunner = srunner_create(make_public_func_suite());
 	srunner_add_suite(srunner, make_public_server_suite());
 	srunner_add_suite(srunner, make_private_suite());
 	srunner_add_suite(srunner, make_private_exe_suite());
 
+	/* Write test logs to a file */
+	srunner_set_log(srunner, "test.log");
+	srunner_set_xml(srunner, "test.xml");
+
 	/* CK_NORMAL offers not enough diagnosis during setup phase*/
 	srunner_run(srunner, suite, test_case, CK_VERBOSE);
 

+ 2 - 0
test/private.c

@@ -24,7 +24,9 @@
  * static functions
  */
 #ifdef _MSC_VER
+#ifndef _CRT_SECURE_NO_WARNINGS
 #define _CRT_SECURE_NO_WARNINGS
+#endif
 #define CIVETWEB_API static
 #endif
 

+ 2 - 0
test/private_exe.c

@@ -24,8 +24,10 @@
  * static functions.
  */
 #ifdef _MSC_VER
+#ifndef _CRT_SECURE_NO_WARNINGS
 #define _CRT_SECURE_NO_WARNINGS
 #endif
+#endif
 
 #include "private_exe.h"
 

+ 3 - 1
test/public_func.c

@@ -20,7 +20,9 @@
  */
 
 #ifdef _MSC_VER
-#define _CRT_SECURE_NO_WARNINGS
+#ifndef _CRT_SECURE_NO_WARNINGS
+#define _CRT_SECURE_NO_WARNINGS
+#endif
 #endif
 
 #include <stdlib.h>

+ 74 - 10
test/public_server.c

@@ -1,4 +1,4 @@
-/* Copyright (c) 2015 the Civetweb developers
+/* Copyright (c) 2015-2016 the Civetweb developers
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
@@ -20,8 +20,10 @@
  */
 
 #ifdef _MSC_VER
+#ifndef _CRT_SECURE_NO_WARNINGS
 #define _CRT_SECURE_NO_WARNINGS
 #endif
+#endif
 
 #include <stdlib.h>
 #include <stdio.h>
@@ -35,7 +37,7 @@
 
 #if defined(_WIN32)
 #include <Windows.h>
-#define test_sleep(x) (Sleep(x * 1000))
+#define test_sleep(x) (Sleep((x)*1000))
 #else
 #include <unistd.h>
 #define test_sleep(x) (sleep(x))
@@ -101,6 +103,10 @@ wait_not_null(void *volatile *data)
 		}
 	}
 
+#if defined(__MINGW32__) || defined(__GNUC__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunreachable-code"
+#endif
 #ifdef __clang__
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wunreachable-code"
@@ -113,8 +119,12 @@ wait_not_null(void *volatile *data)
 #ifdef __clang__
 #pragma clang diagnostic pop
 #endif
+#if defined(__MINGW32__) || defined(__GNUC__)
+#pragma GCC diagnostic pop
+#endif
 }
 
+
 START_TEST(test_the_test_environment)
 {
 	char wd[300];
@@ -185,6 +195,7 @@ test_thread_func_t(void *param)
 	return NULL;
 }
 
+
 START_TEST(test_threading)
 {
 	int ok;
@@ -216,6 +227,7 @@ log_msg_func(const struct mg_connection *conn, const char *message)
 	return 1;
 }
 
+
 START_TEST(test_mg_start_stop_http_server)
 {
 	struct mg_context *ctx;
@@ -247,6 +259,7 @@ START_TEST(test_mg_start_stop_http_server)
 	callbacks.log_message = log_msg_func;
 
 	ctx = mg_start(&callbacks, (void *)errmsg, OPTIONS);
+	mark_point();
 	test_sleep(1);
 	ck_assert_str_eq(errmsg, "");
 	ck_assert(ctx != NULL);
@@ -259,6 +272,7 @@ START_TEST(test_mg_start_stop_http_server)
 	ck_assert_int_eq(ssl[1], 0);
 
 	test_sleep(1);
+	mark_point();
 
 	memset(client_err, 0, sizeof(client_err));
 	client_conn =
@@ -284,7 +298,9 @@ START_TEST(test_mg_start_stop_http_server)
 #endif
 	mg_close_connection(client_conn);
 
+	mark_point();
 	test_sleep(1);
+	mark_point();
 
 	mg_stop(ctx);
 }
@@ -336,6 +352,7 @@ START_TEST(test_mg_start_stop_https_server)
 	callbacks.log_message = log_msg_func;
 
 	ctx = mg_start(&callbacks, (void *)errmsg, OPTIONS);
+	mark_point();
 	test_sleep(1);
 	ck_assert_str_eq(errmsg, "");
 	ck_assert(ctx != NULL);
@@ -350,6 +367,7 @@ START_TEST(test_mg_start_stop_https_server)
 	ck_assert_int_eq(ssl[2], 0);
 
 	test_sleep(1);
+	mark_point();
 
 	memset(client_err, 0, sizeof(client_err));
 	client_conn =
@@ -375,7 +393,9 @@ START_TEST(test_mg_start_stop_https_server)
 #endif
 	mg_close_connection(client_conn);
 
+	mark_point();
 	test_sleep(1);
+	mark_point();
 
 	mg_stop(ctx);
 #endif
@@ -442,6 +462,7 @@ START_TEST(test_mg_server_and_client_tls)
 	callbacks.log_message = log_msg_func;
 
 	ctx = mg_start(&callbacks, (void *)errmsg, OPTIONS);
+	mark_point();
 	test_sleep(1);
 	ck_assert_str_eq(errmsg, "");
 	ck_assert(ctx != NULL);
@@ -462,6 +483,7 @@ START_TEST(test_mg_server_and_client_tls)
 	ck_assert_int_eq(ports[2].is_redirect, 0);
 
 	test_sleep(1);
+	mark_point();
 
 	memset(client_err, 0, sizeof(client_err));
 	client_conn =
@@ -502,7 +524,9 @@ START_TEST(test_mg_server_and_client_tls)
 
 	/* TODO: A client API using a client certificate is missing */
 
+	mark_point();
 	test_sleep(1);
+	mark_point();
 
 	mg_stop(ctx);
 #endif
@@ -563,6 +587,7 @@ static const char *websocket_goodbye_msg = "websocket bye\n";
 static const size_t websocket_goodbye_msg_len =
     14 /* strlen(websocket_goodbye_msg) */;
 
+
 static int
 websock_server_connect(const struct mg_connection *conn, void *udata)
 {
@@ -574,6 +599,7 @@ websock_server_connect(const struct mg_connection *conn, void *udata)
 	return 0; /* return 0 to accept every connection */
 }
 
+
 static void
 websock_server_ready(struct mg_connection *conn, void *udata)
 {
@@ -591,6 +617,7 @@ websock_server_ready(struct mg_connection *conn, void *udata)
 	printf("Server: Websocket ready X\n");
 }
 
+
 static int
 websock_server_data(struct mg_connection *conn,
                     int bits,
@@ -624,6 +651,11 @@ websock_server_data(struct mg_connection *conn,
 		mg_websocket_write(conn, WEBSOCKET_OPCODE_TEXT, "ok - 3", 6);
 		mg_unlock_connection(conn);
 	} else {
+
+#if defined(__MINGW32__) || defined(__GNUC__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunreachable-code"
+#endif
 #ifdef __clang__
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wunreachable-code"
@@ -637,6 +669,9 @@ websock_server_data(struct mg_connection *conn,
 #ifdef __clang__
 #pragma clang diagnostic pop
 #endif
+#if defined(__MINGW32__) || defined(__GNUC__)
+#pragma GCC diagnostic pop
+#endif
 	}
 
 	return 1; /* return 1 to keep the connetion open */
@@ -654,6 +689,7 @@ websock_server_close(const struct mg_connection *conn, void *udata)
 	 * closed */
 }
 
+
 /****************************************************************************/
 /* WEBSOCKET CLIENT                                                         */
 /****************************************************************************/
@@ -663,6 +699,7 @@ struct tclient_data {
 	int closed;
 };
 
+
 static int
 websocket_client_data_handler(struct mg_connection *conn,
                               int flags,
@@ -691,6 +728,7 @@ websocket_client_data_handler(struct mg_connection *conn,
 	return 1;
 }
 
+
 static void
 websocket_client_close_handler(const struct mg_connection *conn,
                                void *user_data)
@@ -708,6 +746,7 @@ websocket_client_close_handler(const struct mg_connection *conn,
 }
 #endif
 
+
 START_TEST(test_request_handlers)
 {
 	char ebuf[100];
@@ -863,6 +902,13 @@ START_TEST(test_request_handlers)
 	ck_assert(ri != NULL);
 	ck_assert_str_eq(ri->uri, "200");
 	i = mg_read(client_conn, buf, sizeof(buf));
+	if ((i>=0) && ((size_t)i<sizeof(buf))) {
+		buf[i] = 0;
+        } else {
+		ck_abort_msg("ERROR: test_request_handlers: read returned %i (>=0, <%i)", (int)i, (int)sizeof(buf));
+	}
+	ck_assert((int)i < (int)sizeof(buf));
+	ck_assert(i > 0);
 	ck_assert_int_eq(i, (int)strlen(expected));
 	buf[i] = 0;
 	ck_assert_str_eq(buf, expected);
@@ -982,14 +1028,15 @@ START_TEST(test_request_handlers)
 	fclose(f);
 #else
 	f = fopen("test.cgi", "w");
-	cgi_script_content = "#!/bin/sh\n"
-	                     "echo \"Connection: close\"\n"
-	                     "echo \"Content-Type: text/plain\"\n"
-	                     "echo \n"
-	                     "echo \"CGI test\"\n"
+	cgi_script_content = "#!/bin/sh\n\n"
+	                     "printf \"Connection: close\\r\\n\"\n"
+	                     "printf \"Content-Type: text/plain\\r\\n\"\n"
+	                     "printf \"\\r\\n\"\n"
+	                     "printf \"CGI test\\r\\n\"\n"
 	                     "\n";
 	fwrite(cgi_script_content, strlen(cgi_script_content), 1, f);
 	fclose(f);
+	system("chmod a+x test.cgi");
 #endif
 	expected_cgi_result = "CGI test";
 
@@ -1077,18 +1124,25 @@ START_TEST(test_request_handlers)
 
 	ck_assert(ri != NULL);
 
-	ck_assert_str_eq(ri->uri, "200");
+#if defined(NO_FILES)
+	ck_assert_str_eq(ri->uri, "404");
+
+	(void)expected_cgi_result;
+	(void)cgi_script_content;
+#else
 	i = mg_read(client_conn, buf, sizeof(buf));
-	ck_assert_int_ge(i, strlen(expected_cgi_result));
 	if ((i >= 0) && (i < (int)sizeof(buf))) {
 		while ((i > 0) && ((buf[i - 1] == '\r') || (buf[i - 1] == '\n'))) {
 			i--;
 		}
 		buf[i] = 0;
 	}
-	ck_assert_int_eq(i, strlen(expected_cgi_result));
+	/* ck_assert_int_eq(i, (int)strlen(expected_cgi_result)); */
 	ck_assert_str_eq(buf, expected_cgi_result);
+	ck_assert_str_eq(ri->uri, "200");
 	mg_close_connection(client_conn);
+#endif
+
 #else
 	(void)expected_cgi_result;
 	(void)cgi_script_content;
@@ -1197,6 +1251,7 @@ START_TEST(test_request_handlers)
 	                          "data1",
 	                          5);
 
+	mark_point();
 	wait_not_null(
 	    &(ws_client1_data
 	          .data)); /* Wait for the websocket acknowledge message */
@@ -1259,6 +1314,7 @@ START_TEST(test_request_handlers)
 	                          "data2",
 	                          5);
 
+	mark_point();
 	wait_not_null(
 	    &(ws_client1_data
 	          .data)); /* Wait for the websocket acknowledge message */
@@ -1275,6 +1331,7 @@ START_TEST(test_request_handlers)
 
 	mg_websocket_client_write(ws_client1_conn, WEBSOCKET_OPCODE_TEXT, "bye", 3);
 
+	mark_point();
 	wait_not_null(
 	    &(ws_client1_data.data)); /* Wait for the websocket goodbye message */
 	ck_assert(ws_client1_data.closed == 0);
@@ -1292,6 +1349,7 @@ START_TEST(test_request_handlers)
 
 	mg_close_connection(ws_client1_conn);
 
+	mark_point();
 	test_sleep(3); /* Won't get any message */
 	ck_assert(ws_client1_data.closed == 1);
 	ck_assert(ws_client2_data.closed == 0);
@@ -1302,6 +1360,7 @@ START_TEST(test_request_handlers)
 
 	mg_websocket_client_write(ws_client2_conn, WEBSOCKET_OPCODE_TEXT, "bye", 3);
 
+	mark_point();
 	wait_not_null(
 	    &(ws_client2_data.data)); /* Wait for the websocket goodbye message */
 	ck_assert(ws_client1_data.closed == 1);
@@ -1319,6 +1378,7 @@ START_TEST(test_request_handlers)
 
 	mg_close_connection(ws_client2_conn);
 
+	mark_point();
 	test_sleep(3); /* Won't get any message */
 	ck_assert(ws_client1_data.closed == 1);
 	ck_assert(ws_client2_data.closed == 1);
@@ -1369,11 +1429,13 @@ START_TEST(test_request_handlers)
 	/* Close the server */
 	g_ctx = NULL;
 	mg_stop(ctx);
+	mark_point();
 
 #ifdef USE_WEBSOCKET
 	for (i = 0; i < 100; i++) {
 		test_sleep(1);
 		if (ws_client3_data.closed != 0) {
+			mark_point();
 			break;
 		}
 	}
@@ -1423,6 +1485,7 @@ make_public_server_suite(void)
 	return suite;
 }
 
+
 #ifdef REPLACE_CHECK_FOR_LOCAL_DEBUGGING
 /* Used to debug test cases without using the check framework */
 
@@ -1503,3 +1566,4 @@ suite_create(const char *name)
 void tcase_set_timeout(TCase *tc, double timeout){};
 
 #endif
+

+ 0 - 119
testutils/Browser/Browser.cpp

@@ -1,119 +0,0 @@
-// To build the source, set your drive letter Q: to the Qt SDK root,
-// e.g., use "subst q: C:\QtSDK\Desktop\Qt\4.8.0\msvc2010" on the cmd line.
-// This minimal source is derived from http://trac.webkit.org/wiki/QtWebKitTiling,
-// for an example with more features see http://doc.qt.nokia.com/qt-maemo/maemo5-graphicswebview.html
-
-
-#include <QApplication.h>
-#include <QGraphicsScene>
-#include <QGraphicsView>
-#include <QGraphicsWebView>
-#include <QWebSettings>
-#include <QNetworkProxy>
-
-#include <windows.h>
-#include <string>
-
-
-const char * DEFAULT_URL  = "http://localhost/";
-const char * DEFAULT_SIZE = "550x720";
-const char * DEFAULT_PROXY = 0;
-
-
-static void ShowUsage(const char * exeName) {
-
-  const char * name = "";
-  if (exeName) {
-    name = strrchr(exeName, '\\');
-    if (name) {
-      name++;
-    } else {
-      name = exeName;
-    }
-  }
-
-  std::string msg = "Usage:\n";
-  msg += "  " + std::string(name) + " [-w###x###] [url]\n";
-  msg += "  " + std::string(name) + " -h\n\n";
-  msg += "Use -w###x### to specify the window size\n";
-  MessageBoxA(NULL, msg.c_str(), name, MB_ICONINFORMATION);
-}
-
-
-class BGraphicsWebView : public QGraphicsWebView {
-public:
-  bool loadFinished(bool);
-};
-
-
-bool BGraphicsWebView::loadFinished(bool) {
-  return 0;
-}
-
-
-int main(int argc, char *argv[]) {
-
-  const char * url = DEFAULT_URL;
-  const char * size = DEFAULT_SIZE;
-  const char * proxy = DEFAULT_PROXY;
-
-  for (int i = 1; i<argc; i++) {   
-    if (argv[i][0]=='/' || argv[i][0]=='-') {
-      if (argv[i][1]=='h' || argv[i][1]=='H' || argv[i][1]=='?') {
-        ShowUsage(argv[0]);
-        return 0;
-      } 
-      else if ((argv[i][1]=='w') || (argv[i][1]=='W')) {
-        if ((argv[i][2]!=0) && (strchr(argv[1],'x')!=0) && (size==DEFAULT_SIZE)) {
-          size = argv[i]+2;
-        }
-      }
-      else if ((argv[i][1]=='p') || (argv[i][1]=='P')) {
-        proxy = argv[i]+2;
-      }
-      else {
-        ShowUsage(argv[0]);
-        return 1;
-      }
-    } else {
-      if (url==DEFAULT_URL) {
-        url = argv[i];
-      } else {
-        ShowUsage(argv[0]);
-        return 1;
-      }
-    }
-  }
-
-  QApplication app(argc, argv);
-  if (proxy) {
-    QUrl proxyUrl = proxy;
-    QNetworkProxy netProxy(QNetworkProxy::HttpProxy, proxyUrl.host(), proxyUrl.port());
-    QNetworkProxy::setApplicationProxy(netProxy);
-  }
-
-  QGraphicsScene scene;
-
-  QGraphicsView view(&scene);
-  view.setFrameShape(QFrame::NoFrame);
-  view.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
-  view.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
-
-  BGraphicsWebView webview;
-  int width=0, height=0;
-  if (2!=sscanf(size,"%ux%u", &width, &height)) {
-    ShowUsage(argv[0]);
-    return 1;
-  }
-
-  webview.resize(width, height);
-  webview.load(QUrl(url));
-
-  scene.addItem(&webview);
-  view.setFixedSize(width, height);
-  view.show();
-
-  int ret = app.exec();
-
-  return ret;
-}

+ 0 - 90
testutils/Browser/Browser.vcxproj

@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{277772B0-D4B3-451E-86B6-261FBC645793}</ProjectGuid>
-    <Keyword>Win32Proj</Keyword>
-    <RootNamespace>Browser</RootNamespace>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <LinkIncremental>true</LinkIncremental>
-    <OutDir>$(ProjectDir)$(Configuration)\</OutDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <LinkIncremental>false</LinkIncremental>
-    <OutDir>$(ProjectDir)$(Configuration)\</OutDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>Q:\include\QtGui\;Q:\include\;Q:\include\QtWebKit\;Q:\include\QtNetwork\</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>qtmaind.lib;QtGuid4.lib;QtCored4.lib;QtWebKitd4.lib;QtNetworkd4.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>Q:\lib</AdditionalLibraryDirectories>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>Q:\include\QtGui\;Q:\include\;Q:\include\QtWebKit\;Q:\include\QtNetwork\</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-      <AdditionalDependencies>qtmain.lib;QtGui4.lib;QtCore4.lib;QtWebKit4.lib;QtNetwork4.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>Q:\lib</AdditionalLibraryDirectories>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="Browser.cpp" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>

+ 0 - 5
testutils/readme.txt

@@ -1,5 +0,0 @@
-Old test utils from 2012:
-https://code.google.com/r/bel2125-mongoose/source/browse/#hg%2Ftestclient
-https://code.google.com/r/bel2125-mongoose/source/browse/#hg%2FBrowser
-
-TODO: check if they still work, fix them, add to standard tests

+ 0 - 372
testutils/testclient/testclient.c

@@ -1,372 +0,0 @@
-#include <WinSock2.h>
-#include <stdio.h>
-#include <stdarg.h>
-#include <time.h>
-
-char * HOST = "127.0.0.1";
-unsigned short PORT = 8080;
-static const char * RESOURCELIST[] = {
-    "/hello.txt",
-    "/imagetest/00.png",
-    "/resource_script_demo.lua/r1.txt",
-    "/"
-};
-static const char * METHODLIST[] = {
-    "GET",
-    "POST",
-    "PUT"
-};
-
-
-static int CLIENTCOUNT = 0; // 20;
-static int TESTCYCLES = 1;
-static int RESOURCEINDEX = 1;
-static int METHODINDEX = 0;
-
-
-int sockvprintf(SOCKET soc, const char * fmt, va_list vl) {
-
-    char buf[1024*8];
-    int len = vsprintf_s(buf, sizeof(buf), fmt, vl);
-    int ret = send(soc, buf, len, 0);
-    return ret;
-}
-
-
-int sockprintf(SOCKET soc, const char * fmt, ...) {
-
-    int ret = -1;
-    va_list vl;
-    va_start(vl, fmt);
-    ret = sockvprintf(soc, fmt, vl);
-    va_end(vl);
-    return ret;
-}
-
-
-static struct sockaddr_in target = {0};
-static CRITICAL_SECTION cs = {0};
-static size_t expectedData = 0;
-static DWORD_PTR availableCPUs = 1;
-static DWORD_PTR totalCPUs = 1;
-
-static unsigned good = 0;
-static unsigned bad = 0;
-unsigned long postSize = 0;
-unsigned long extraHeadSize = 0;
-unsigned long queryStringSize = 0;
-unsigned long keep_alive = 0;
-int chunked = 1;
-
-
-int WINAPI ClientMain(void * clientNo) {
-
-    SOCKET soc;
-    time_t lastData;
-    size_t totalData = 0;
-    size_t bodyData = 0;
-    int isBody = 0;
-    int isTest = (clientNo == 0);
-    int cpu = ((int)clientNo) % 100;
-    int timeOut = 10;
-    const char * resource = 0;
-    const char * method = 0;
-    unsigned long i, j;
-
-    // Method: PUT or GET
-    if (METHODINDEX < sizeof(METHODLIST)/sizeof(METHODLIST[0])) {
-        method = METHODLIST[METHODINDEX];
-    }
-    if (method == 0) {
-        EnterCriticalSection(&cs);
-        printf("\r\nClient %u: bad method\a\r\n", (int)clientNo);
-        LeaveCriticalSection(&cs);
-        return 1;
-    }
-
-    // Resource
-    if (RESOURCEINDEX < sizeof(RESOURCELIST)/sizeof(RESOURCELIST[0])) {
-        resource = RESOURCELIST[RESOURCEINDEX];
-    }
-    if (resource == 0) {
-        EnterCriticalSection(&cs);
-        printf("\r\nClient %u: bad resource\a\r\n", (int)clientNo);
-        LeaveCriticalSection(&cs);
-        return 2;
-    }
-
-    // CPU
-    if ((!isTest) && (((1ULL<<cpu) & availableCPUs)!=0)) {
-        SetThreadAffinityMask(GetCurrentThread(), 1ULL<<cpu);
-    }
-
-    // TCP
-    soc = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
-    if (soc==INVALID_SOCKET) {
-        EnterCriticalSection(&cs);
-        printf("\r\nClient %u: cannot create socket\a\r\n", (int)clientNo);
-        LeaveCriticalSection(&cs);
-        return 3;
-    }
-
-    // comment in to disable Nagle:
-    {int disable_Nagle = 1; setsockopt(soc, IPPROTO_TCP, TCP_NODELAY, (char *) &disable_Nagle, sizeof(disable_Nagle));}
-
-    if (connect(soc, (SOCKADDR*)&target, sizeof(target))) {
-        EnterCriticalSection(&cs);
-        printf("\r\nClient %u: cannot connect to server %s:%u\a\r\n", (int)clientNo, HOST, PORT);
-        LeaveCriticalSection(&cs);
-        return 4;
-    }
-
-    for (j=0; j<((keep_alive>0)?keep_alive:1); j++) {
-
-        // HTTP request
-        if (queryStringSize>0) {
-            sockprintf(soc, "%s %s?", method, resource);
-
-            for (i=0;i<(queryStringSize/10);i++) {sockprintf(soc, "1234567890");}
-            for (i=0;i<(queryStringSize%10);i++) {sockprintf(soc, "_");}
-
-            sockprintf(soc, " HTTP/1.1\r\nHost: %s\r\n", HOST);
-        } else {
-            sockprintf(soc, "%s %s HTTP/1.1\r\nHost: %s\r\n", method, resource, HOST);
-        }
-        if (keep_alive) {
-            sockprintf(soc, "Connection: Keep-Alive\r\n");
-        } else {
-            sockprintf(soc, "Connection: Close\r\n");
-        }
-
-        for (i=0;i<(extraHeadSize/25);i++) {sockprintf(soc, "Comment%04u: 1234567890\r\n", i % 10000);} /* omit (extraHeadSize%25) */
-
-        if (!strcmp(method,"GET")) {
-            sockprintf(soc, "\r\n");
-        } else if (chunked) {
-
-            sockprintf(soc, "Transfer-Encoding: chunked\r\n\r\n", postSize);
-
-            for (i=0;i<(postSize/10);i++) {sockprintf(soc, "A\r\n1234567890\r\n");}
-            if ((postSize%10)>0) {
-                sockprintf(soc, "%x\r\n", postSize%10);
-                for (i=0;i<(postSize%10);i++) {sockprintf(soc, "_");}
-                sockprintf(soc, "\r\n");
-            }
-
-        } else {
-            // not GET
-            sockprintf(soc, "Content-Length: %u\r\n\r\n", postSize);
-
-            for (i=0;i<postSize/10;i++) {sockprintf(soc, "1234567890");}
-            for (i=0;i<postSize%10;i++) {sockprintf(soc, ".");}
-
-            timeOut += postSize/10000;
-        }
-
-        if (!keep_alive) {
-            shutdown(soc, SD_SEND);
-        } else {
-            timeOut = 2;
-        }
-
-        // wait for response from the server
-        bodyData = totalData = 0;
-        isBody = 0;
-        lastData = time(0);
-        for (;;) {
-            char buf[20480];
-            int chunkSize = 0;
-            unsigned long dataReady = 0;
-
-            Sleep(1);
-
-            if (ioctlsocket(soc, FIONREAD, &dataReady) < 0) break;
-            if (dataReady) {
-                chunkSize = recv(soc, buf+totalData, sizeof(buf)-totalData, 0);
-                if (chunkSize<0) {
-                    printf("Error: recv failed for client %i\r\n", (int)clientNo);
-                    break;
-                } else if (!isBody) {
-                    char * headEnd = strstr(buf,"\xD\xA\xD\xA");
-                    if (headEnd) {
-                        headEnd+=4;
-                        chunkSize -= ((int)headEnd - (int)buf);
-                        if (chunkSize>0) {
-                            //fwrite(headEnd,1,got,STORE);
-                            bodyData += chunkSize;
-                        }
-                        isBody=1;
-                    }
-                } else {
-                    //fwrite(buf,1,got,STORE);
-                    bodyData += chunkSize;
-                }
-                lastData = time(0);
-                totalData += chunkSize;
-            } else {
-                time_t current = time(0);
-                if (difftime(current, lastData) > timeOut) {
-                    break;
-                }
-                Sleep(10);
-            }
-        }
-
-
-        EnterCriticalSection(&cs);
-        if (isTest) {
-            expectedData = totalData;
-        } else if (totalData != expectedData) {
-            printf("Error: Client %u got %u bytes instead of %u\r\n", (int)clientNo, totalData, expectedData);
-            bad++;
-        } else {
-            good++;
-        }
-        LeaveCriticalSection(&cs);
-
-        if (keep_alive) {
-            Sleep(10);
-        }
-    }
-
-    shutdown(soc, SD_BOTH);
-    closesocket(soc);
-
-    return 0;
-}
-
-
-void RunMultiClientTest(int loop) {
-
-    HANDLE *hThread = calloc(CLIENTCOUNT, sizeof(hThread[0]));
-    int i;
-    DWORD res;
-
-    for (i=0;i<CLIENTCOUNT;i++) {
-        DWORD dummy;
-        hThread[i] = CreateThread(NULL, 1024*32, (LPTHREAD_START_ROUTINE)ClientMain, (void*)(1000*loop+i), 0, &dummy);
-    }
-
-    WaitForMultipleObjects(CLIENTCOUNT, hThread, TRUE, 15000);
-    for (i=0;i<CLIENTCOUNT;i++) {
-        res = WaitForSingleObject(hThread[i], 0);
-        if (res == WAIT_OBJECT_0) {
-            CloseHandle(hThread[i]);
-            hThread[i]=0;
-        }
-    }
-    for (i=0;i<CLIENTCOUNT;i++) {
-        if (hThread[i]) {
-            EnterCriticalSection(&cs);
-            SuspendThread(hThread[i]); // -> check this thread in the debugger
-            printf("Thread %i did not finish!\r\n", (int)(1000*loop+i));
-            LeaveCriticalSection(&cs);
-        }
-    }
-    EnterCriticalSection(&cs);
-    printf("Test cylce %u completed\r\n\r\n", loop);
-    LeaveCriticalSection(&cs);
-
-    free(hThread);
-}
-
-
-int MultiClientTestAutomatic(unsigned long initialPostSize) {
-
-    FILE        * log;
-    int           cycle;
-
-    postSize = initialPostSize;
-
-    do {
-        printf("Preparing test with %u bytes of data ...", postSize);
-        ClientMain(0);
-        if (expectedData==0) {
-            printf(" Error: Could not read any data\a\r\n");
-            return 1;
-        }
-        printf(" OK: %u bytes of data\r\n", expectedData);
-        printf("Starting multi client test: %i cycles, %i clients each\r\n\r\n", (int)TESTCYCLES, (int)CLIENTCOUNT);
-        good=bad=0;
-
-        for (cycle=1;cycle<=TESTCYCLES;cycle++) {
-            RunMultiClientTest(cycle);
-        }
-
-        printf("\r\n--------\r\n%u errors\r\n%u OK\r\n--------\r\n\r\n", bad, good);
-        log = fopen("testclient.log", "at");
-        if (log) {
-            fprintf(log, "%u\t%u\t%u\r\n", postSize, good, bad);
-            fclose(log);
-        }
-
-        postSize = (postSize!=0) ? (postSize<<1) : 1;
-
-    } while (postSize!=0);
-
-    return 0;
-}
-
-
-int SingleClientTestAutomatic(unsigned long initialPostSize) {
-
-    FILE        * log;
-    int           cycle;
-    int           i;
-
-    postSize = initialPostSize;
-    for (cycle=1;cycle<=TESTCYCLES;cycle++) {
-        good=bad=0;
-        for (i=0;i<1 /* 000 */;i++) {
-            expectedData=17;
-            ClientMain((void*)1);
-        }
-        log = fopen("testclient.log", "at");
-        if (log) {
-            fprintf(log, "Cylce<%u>\t%u\t%u\r\n", cycle, good, bad);
-            fclose(log);
-        }
-        printf("test cycle %u: %u good, %u bad\r\n", cycle, good, bad);
-    }
-
-    return 0;
-}
-
-
-int main(int argc, char * argv[]) {
-
-    WSADATA       wsaData = {0};
-    HOSTENT     * lpHost = 0;
-
-    if (WSAStartup(MAKEWORD(2,2), &wsaData) != NO_ERROR) {
-        printf("\r\nCannot init WinSock\a\r\n");
-        return 1;
-    }
-
-    lpHost = gethostbyname(HOST);
-    if (lpHost == NULL) {
-        printf("\r\nCannot find host %s\a\r\n",HOST);
-        return 2;
-    }
-
-    target.sin_family = AF_INET;
-    target.sin_addr.s_addr = *((u_long FAR *) (lpHost->h_addr));
-    target.sin_port = htons(PORT);
-
-    GetProcessAffinityMask(GetCurrentProcess(), &availableCPUs, &totalCPUs);
-    printf("CPUs (bit masks): process=%x, system=%x\r\n", availableCPUs, totalCPUs);
-
-    InitializeCriticalSectionAndSpinCount(&cs, 100);
-
-    /* Do the actual test here */
-    if (CLIENTCOUNT>0) {
-        MultiClientTestAutomatic(2000);
-    } else {
-        SingleClientTestAutomatic(2000);
-    }
-
-    /* Cleanup */
-    DeleteCriticalSection(&cs);
-    WSACleanup();
-    return 0;
-}

+ 0 - 91
testutils/testclient/testclient.vcxproj

@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{15D6AAA6-36CE-453B-ABBF-3C52BD247EBE}</ProjectGuid>
-    <Keyword>Win32Proj</Keyword>
-    <RootNamespace>testclient</RootNamespace>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>MultiByte</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v100</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <LinkIncremental>true</LinkIncremental>
-    <GenerateManifest>false</GenerateManifest>
-    <OutDir>$(ProjectDir)$(Configuration)\</OutDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <LinkIncremental>false</LinkIncremental>
-    <GenerateManifest>false</GenerateManifest>
-    <OutDir>$(ProjectDir)$(Configuration)\</OutDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>binmode.obj;ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-      <AdditionalDependencies>binmode.obj;ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="testclient.c" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>

+ 0 - 239
testutils/testclient_chunked_linux/testclient.c

@@ -1,239 +0,0 @@
-/* quick and dirty test for chunked encoding */
-
-#ifdef WIN32
-#include <WinSock2.h>
-#else
-#include <unistd.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <termios.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/ioctl.h>
-#include <netinet/in.h>
-#include <netinet/tcp.h>
-#include <netinet/ip.h>
-typedef int SOCKET;
-typedef struct sockaddr SOCKADDR;
-typedef struct hostent HOSTENT;
-const int INVALID_SOCKET = -1;
-const int SD_SEND = SHUT_WR;
-const int SD_BOTH = SHUT_RDWR;
-#define closesocket(x) close(x)
-#define Sleep(x) usleep((x)*1000)
-#define ioctlsocket(a,b,c) ioctl(a,b,c)
-#endif
-#include <stdio.h>
-#include <stdarg.h>
-#include <time.h>
-
-char * HOST = "127.0.0.1";
-unsigned short PORT = 8080;
-const char * RESOURCE = "/resource_script_demo.lua/r1.txt";
-const char * METHOD = "PUT";
-
-unsigned postSize = 9876;
-unsigned extraHeadSize = 0;
-unsigned queryStringSize = 0;
-int keep_alive = 0;
-int chunked = 1;
-
-
-int sockvprintf(SOCKET soc, const char * fmt, va_list vl) {
-
-    char buf[1024*8];
-#ifdef WIN32
-    int len = vsprintf_s(buf, sizeof(buf), fmt, vl);
-#else
-    int len = vsprintf(buf, fmt, vl);
-#endif
-    int ret = send(soc, buf, len, 0);
-    return ret;
-}
-
-
-int sockprintf(SOCKET soc, const char * fmt, ...) {
-
-    int ret = -1;
-    va_list vl;
-    va_start(vl, fmt);
-    ret = sockvprintf(soc, fmt, vl);
-    va_end(vl);
-    return ret;
-}
-
-
-static struct sockaddr_in target = {0};
-
-
-int TestClient(unsigned clientNo) {
-
-    SOCKET soc;
-    time_t lastData;
-    size_t totalData = 0;
-    size_t bodyData = 0;
-    int isBody = 0;
-    int timeOut = 10;
-    unsigned long i;
-
-    // TCP
-    soc = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
-    if (soc==INVALID_SOCKET) {
-        printf("\r\nClient %u: cannot create socket\a\r\n", (int)clientNo);
-        return 3;
-    }
-
-    // comment in to disable Nagle:
-    {int disable_Nagle = 1; setsockopt(soc, IPPROTO_TCP, TCP_NODELAY, (char *) &disable_Nagle, sizeof(disable_Nagle));}
-
-    if (connect(soc, (SOCKADDR*)&target, sizeof(target))) {
-        printf("\r\nClient %u: cannot connect to server %s:%u\a\r\n", (int)clientNo, HOST, PORT);
-        return 4;
-    }
-
-    sockprintf(soc, "%s %s", METHOD, RESOURCE);
-
-    if (queryStringSize>0) {
-        sockprintf(soc, "?", METHOD, RESOURCE);
-        for (i=0;i<(queryStringSize/10);i++) {sockprintf(soc, "1234567890");}
-        for (i=0;i<(queryStringSize%10);i++) {sockprintf(soc, "_");}
-    }
-
-    sockprintf(soc, " HTTP/1.1\r\nHost: %s\r\n", HOST);
-
-    if (keep_alive) {
-        sockprintf(soc, "Connection: Keep-Alive\r\n");
-    } else {
-        sockprintf(soc, "Connection: Close\r\n");
-    }
-
-    for (i=0;i<(extraHeadSize/25);i++) {
-        sockprintf(soc, "Comment%04u: 1234567890\r\n", i % 10000);
-    }
-
-    if (!strcmp(METHOD, "GET")) {
-        sockprintf(soc, "\r\n");
-
-    } else if (chunked) {
-
-        unsigned remaining_postSize = postSize;
-        sockprintf(soc, "Transfer-Encoding: chunked\r\n\r\n", postSize);
-
-        while (remaining_postSize > 0) {
-            unsigned chunk = rand()%200 + 1;
-            if (chunk>remaining_postSize) chunk = remaining_postSize;
-
-            sockprintf(soc, "%x\r\n", chunk);
-            for (i=0;i<chunk;i++) {sockprintf(soc, "_");}
-            sockprintf(soc, "\r\n");
-
-            remaining_postSize -= chunk;
-        }
-        sockprintf(soc, "0\r\n\r\n", postSize%10);
-
-
-    } else {
-
-        sockprintf(soc, "Content-Length: %u\r\n\r\n", postSize);
-
-        for (i=0;i<postSize/10;i++) {sockprintf(soc, "1234567890");}
-        for (i=0;i<postSize%10;i++) {sockprintf(soc, ".");}
-
-        timeOut += postSize/10000;
-    }
-
-    if (!keep_alive) {
-        shutdown(soc, SD_SEND);
-    } else {
-        timeOut = 2;
-    }
-
-    // wait for response from the server
-    bodyData = totalData = 0;
-    isBody = 0;
-    lastData = time(0);
-    for (;;) {
-        char buf[20480];
-        int chunkSize = 0;
-        unsigned long dataReady = 0;
-
-        Sleep(1);
-
-        if (ioctlsocket(soc, FIONREAD, &dataReady) < 0) break;
-        if (dataReady) {
-            chunkSize = recv(soc, buf+totalData, sizeof(buf)-totalData, 0);
-            if (chunkSize<0) {
-                printf("Error: recv failed for client %i\r\n", (int)clientNo);
-                break;
-            } else if (!isBody) {
-                char * headEnd = strstr(buf,"\xD\xA\xD\xA");
-                if (headEnd) {
-                    headEnd+=4;
-                    chunkSize -= ((int)headEnd - (int)buf);
-                    if (chunkSize>0) {
-                        //fwrite(headEnd,1,got,STORE);
-                        bodyData += chunkSize;
-                    }
-                    isBody=1;
-                }
-            } else {
-                //fwrite(buf,1,got,STORE);
-                bodyData += chunkSize;
-            }
-            lastData = time(0);
-            totalData += chunkSize;
-        } else {
-            time_t current = time(0);
-            if (difftime(current, lastData) > timeOut) {
-                break;
-            }
-            Sleep(10);
-        }
-    }
-
-    shutdown(soc, SD_BOTH);
-    closesocket(soc);
-
-    return 0;
-}
-
-
-
-int main(int argc, char * argv[]) {
-
-    HOSTENT     * lpHost = 0;
-
-#ifdef WIN32
-    WSADATA       wsaData = {0};
-
-    if (WSAStartup(MAKEWORD(2,2), &wsaData) != NO_ERROR) {
-        printf("\r\nCannot init WinSock\a\r\n");
-        return 1;
-    }
-#endif
-
-    srand((unsigned int)time(NULL));
-
-    lpHost = gethostbyname(HOST);
-    if (lpHost == NULL) {
-        printf("\r\nCannot find host %s\a\r\n",HOST);
-        return 2;
-    }
-
-    target.sin_family = AF_INET;
-#ifdef WIN32
-    target.sin_addr.s_addr = *((u_long FAR *) (lpHost->h_addr));
-#else
-    target.sin_addr.s_addr = htonl(0x7F000001);
-#endif
-    target.sin_port = htons(PORT);
-    printf("\r\nConnect to %s\r\n", inet_ntoa(target.sin_addr));
-
-    TestClient(1);
-
-#ifdef WIN32
-    WSACleanup();
-#endif
-
-    return 0;
-}

+ 0 - 91
testutils/testclient_chunked_linux/testclient2.vcxproj

@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{150140C5-2989-4D0D-8714-5A47B78EAD4D}</ProjectGuid>
-    <Keyword>Win32Proj</Keyword>
-    <RootNamespace>testclient2</RootNamespace>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>MultiByte</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v100</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <LinkIncremental>true</LinkIncremental>
-    <GenerateManifest>false</GenerateManifest>
-    <OutDir>$(ProjectDir)$(Configuration)\</OutDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <LinkIncremental>false</LinkIncremental>
-    <GenerateManifest>false</GenerateManifest>
-    <OutDir>$(ProjectDir)$(Configuration)\</OutDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>binmode.obj;ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-      <AdditionalDependencies>binmode.obj;ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="testclient.c" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>