passenger 5.1.12 → 5.2.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of passenger might be problematic. Click here for more details.

Files changed (824) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +18 -1
  3. data/Rakefile +4 -1
  4. data/build/agent.rb +2 -2
  5. data/build/apache2.rb +17 -10
  6. data/build/basics.rb +18 -4
  7. data/build/common_library.rb +7 -3
  8. data/build/cxx_tests.rb +2 -7
  9. data/build/misc.rb +3 -1
  10. data/build/nginx.rb +11 -5
  11. data/build/oxt_tests.rb +0 -3
  12. data/build/packaging.rb +3 -2
  13. data/build/schema_printer.rb +103 -0
  14. data/build/support/cplusplus.rb +2 -2
  15. data/build/support/cxx_dependency_map.rb +2575 -868
  16. data/dev/ci/lib/functions.sh +1 -1
  17. data/dev/ci/lib/set-container-envvars.sh +1 -1
  18. data/dev/ci/lib/setup-container.sh +1 -1
  19. data/dev/ci/run-tests-natively +1 -1
  20. data/dev/ci/run-tests-with-docker +1 -1
  21. data/dev/ci/scripts/debug-console-wrapper.sh +1 -1
  22. data/dev/ci/scripts/docker-entrypoint-stage2.sh +1 -1
  23. data/dev/ci/scripts/docker-entrypoint.sh +1 -1
  24. data/dev/ci/scripts/inituidgid +1 -1
  25. data/dev/ci/scripts/run-tests-natively-stage2.sh +1 -1
  26. data/dev/ci/scripts/setup-host-natively.sh +1 -1
  27. data/dev/ci/setup-host +1 -1
  28. data/dev/ci/tests/apache2/run +1 -1
  29. data/dev/ci/tests/apache2/setup +1 -1
  30. data/dev/ci/tests/cxx/run +1 -1
  31. data/dev/ci/tests/cxx/setup +1 -1
  32. data/dev/ci/tests/debian/Jenkinsfile +0 -1
  33. data/dev/ci/tests/debian/run +1 -1
  34. data/dev/ci/tests/nginx-dynamic/run +1 -1
  35. data/dev/ci/tests/nginx-dynamic/setup +1 -1
  36. data/dev/ci/tests/nginx/run +1 -1
  37. data/dev/ci/tests/nginx/setup +1 -1
  38. data/dev/ci/tests/nodejs/run +1 -1
  39. data/dev/ci/tests/nodejs/setup +1 -1
  40. data/dev/ci/tests/rpm/run +1 -1
  41. data/dev/ci/tests/ruby/run +1 -1
  42. data/dev/ci/tests/ruby/setup +1 -1
  43. data/dev/ci/tests/source-packaging/run +1 -1
  44. data/dev/ci/tests/source-packaging/setup +1 -1
  45. data/dev/ci/tests/standalone/run +1 -1
  46. data/dev/ci/tests/standalone/setup +1 -1
  47. data/dev/configkit-schemas/index.json +1708 -0
  48. data/dev/configkit-schemas/update_schema_inline_comments.rb +118 -0
  49. data/dev/copy_boost_headers +13 -1
  50. data/dev/index_cxx_dependencies.rb +20 -7
  51. data/dev/vagrant/provision.sh +1 -1
  52. data/resources/mime.types +1 -0
  53. data/resources/templates/standalone/http.erb +1 -6
  54. data/src/agent/Core/AdminPanelConnector.h +550 -0
  55. data/src/agent/Core/ApiServer.h +159 -97
  56. data/src/agent/Core/ApplicationPool/Group.h +2 -0
  57. data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +3 -2
  58. data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +109 -0
  59. data/src/agent/Core/ApplicationPool/Implementation.cpp +5 -3
  60. data/src/agent/Core/ApplicationPool/Options.h +5 -6
  61. data/src/agent/Core/ApplicationPool/Pool.h +59 -2
  62. data/src/agent/Core/ApplicationPool/Pool/GeneralUtils.cpp +3 -3
  63. data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +2 -2
  64. data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +6 -0
  65. data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +129 -0
  66. data/src/agent/Core/Config.h +475 -0
  67. data/src/agent/Core/ConfigChange.cpp +349 -0
  68. data/src/agent/Core/ConfigChange.h +54 -0
  69. data/src/agent/Core/Controller.h +35 -3
  70. data/src/agent/Core/Controller/CheckoutSession.cpp +1 -1
  71. data/src/agent/Core/Controller/Config.cpp +0 -2
  72. data/src/agent/Core/Controller/Config.h +168 -104
  73. data/src/agent/Core/Controller/ForwardResponse.cpp +1 -1
  74. data/src/agent/Core/Controller/InitRequest.cpp +14 -15
  75. data/src/agent/Core/Controller/InitializationAndShutdown.cpp +34 -44
  76. data/src/agent/Core/Controller/Request.h +0 -1
  77. data/src/agent/Core/CoreMain.cpp +236 -349
  78. data/src/agent/Core/OptionParser.h +75 -89
  79. data/src/agent/Core/SecurityUpdateChecker.h +263 -100
  80. data/src/agent/Core/SpawningKit/Config.h +6 -2
  81. data/src/agent/Core/SpawningKit/Spawner.h +0 -45
  82. data/src/agent/Core/SpawningKit/UserSwitchingRules.h +1 -0
  83. data/src/agent/Shared/ApiAccountUtils.h +318 -0
  84. data/src/agent/Shared/ApiServerUtils.h +3 -104
  85. data/src/agent/Shared/Fundamentals/Initialization.cpp +81 -44
  86. data/src/agent/Shared/Fundamentals/Initialization.h +12 -7
  87. data/src/agent/TempDirToucher/TempDirToucherMain.cpp +21 -0
  88. data/src/agent/Watchdog/AgentWatcher.cpp +1 -1
  89. data/src/agent/Watchdog/ApiServer.h +100 -14
  90. data/src/agent/Watchdog/Config.h +340 -0
  91. data/src/agent/Watchdog/CoreWatcher.cpp +27 -13
  92. data/src/agent/Watchdog/InstanceDirToucher.cpp +1 -1
  93. data/src/agent/Watchdog/WatchdogMain.cpp +190 -206
  94. data/src/apache2_module/Bucket.cpp +4 -0
  95. data/src/apache2_module/Bucket.h +7 -3
  96. data/src/apache2_module/CBindings.cpp +49 -0
  97. data/src/apache2_module/Config.cpp +242 -0
  98. data/src/apache2_module/Config.h +109 -0
  99. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +485 -0
  100. data/src/apache2_module/{ConfigurationCommands.cpp.cxxcodebuilder → ConfigGeneral/AutoGeneratedDefinitions.cpp.cxxcodebuilder} +29 -15
  101. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp +298 -0
  102. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp.cxxcodebuilder +171 -0
  103. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +854 -0
  104. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp.cxxcodebuilder +188 -0
  105. data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +610 -0
  106. data/src/apache2_module/ConfigGeneral/SetterFuncs.h +65 -0
  107. data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp +174 -0
  108. data/src/apache2_module/{MergeDirConfig.cpp.cxxcodebuilder → DirConfig/AutoGeneratedCreateFunction.cpp.cxxcodebuilder} +54 -32
  109. data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp +113 -0
  110. data/src/apache2_module/{SetHeaders.cpp.cxxcodebuilder → DirConfig/AutoGeneratedHeaderSerialization.cpp.cxxcodebuilder} +34 -23
  111. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp +426 -0
  112. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +165 -0
  113. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp +269 -0
  114. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp.cxxcodebuilder +148 -0
  115. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +534 -0
  116. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h.cxxcodebuilder +230 -0
  117. data/src/apache2_module/DirectoryMapper.h +19 -16
  118. data/src/apache2_module/Hooks.cpp +124 -138
  119. data/src/apache2_module/Hooks.h +9 -14
  120. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp +263 -0
  121. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +152 -0
  122. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +299 -0
  123. data/src/apache2_module/{ConfigurationFields.hpp.cxxcodebuilder → ServerConfig/AutoGeneratedStruct.h.cxxcodebuilder} +105 -18
  124. data/src/apache2_module/Utils.h +215 -0
  125. data/src/apache2_module/mod_passenger.c +16 -8
  126. data/src/cxx_supportlib/AppTypes.h +2 -0
  127. data/src/cxx_supportlib/ConfigKit/ConfigKit.h +1 -1
  128. data/src/cxx_supportlib/ConfigKit/DummyTranslator.h +8 -8
  129. data/src/cxx_supportlib/ConfigKit/IN_PRACTICE.md +7 -41
  130. data/src/cxx_supportlib/ConfigKit/PrefixTranslator.h +12 -66
  131. data/src/cxx_supportlib/ConfigKit/Schema.h +62 -11
  132. data/src/cxx_supportlib/ConfigKit/{ValidationUtils.h → SchemaUtils.h} +12 -3
  133. data/src/cxx_supportlib/ConfigKit/Store.h +17 -9
  134. data/src/cxx_supportlib/ConfigKit/SubComponentUtils.h +2 -1
  135. data/src/cxx_supportlib/ConfigKit/TableTranslator.h +13 -70
  136. data/src/cxx_supportlib/ConfigKit/Translator.h +125 -0
  137. data/src/cxx_supportlib/Constants.h +1 -3
  138. data/src/cxx_supportlib/FileTools/FileManip.cpp +297 -0
  139. data/src/cxx_supportlib/FileTools/FileManip.h +162 -0
  140. data/src/cxx_supportlib/{Utils → FileTools}/LargeFiles.cpp +6 -3
  141. data/src/cxx_supportlib/{Utils → FileTools}/LargeFiles.h +7 -5
  142. data/src/cxx_supportlib/FileTools/PathManip.cpp +240 -0
  143. data/src/cxx_supportlib/FileTools/PathManip.h +91 -0
  144. data/src/cxx_supportlib/FileTools/PathManipCBindings.cpp +62 -0
  145. data/src/{apache2_module/Configuration.h → cxx_supportlib/FileTools/PathManipCBindings.h} +12 -19
  146. data/src/cxx_supportlib/Hooks.h +19 -16
  147. data/src/cxx_supportlib/InstanceDirectory.h +11 -0
  148. data/src/cxx_supportlib/JsonTools/Autocast.h +79 -0
  149. data/src/cxx_supportlib/JsonTools/CBindings.cpp +364 -0
  150. data/src/cxx_supportlib/JsonTools/CBindings.h +101 -0
  151. data/src/cxx_supportlib/LoggingKit/Config.h +13 -0
  152. data/src/cxx_supportlib/LoggingKit/Context.h +5 -2
  153. data/src/cxx_supportlib/LoggingKit/Forward.h +0 -1
  154. data/src/cxx_supportlib/LoggingKit/Implementation.cpp +12 -4
  155. data/src/cxx_supportlib/ResourceLocator.h +15 -0
  156. data/src/cxx_supportlib/ServerKit/Config.h +156 -0
  157. data/src/cxx_supportlib/ServerKit/Context.h +59 -38
  158. data/src/cxx_supportlib/ServerKit/FileBufferedChannel.h +3 -2
  159. data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +2 -2
  160. data/src/cxx_supportlib/ServerKit/HttpServer.h +16 -2
  161. data/src/cxx_supportlib/ServerKit/Server.h +32 -15
  162. data/src/cxx_supportlib/Utils.cpp +0 -441
  163. data/src/cxx_supportlib/Utils.h +0 -158
  164. data/src/cxx_supportlib/Utils/Curl.h +1 -0
  165. data/src/cxx_supportlib/Utils/ProcessMetricsCollector.h +1 -0
  166. data/src/cxx_supportlib/Utils/StrIntUtilsNoStrictAliasing.cpp +2 -0
  167. data/src/cxx_supportlib/Utils/VariantMap.h +31 -0
  168. data/src/cxx_supportlib/WatchdogLauncher.cpp +7 -79
  169. data/src/cxx_supportlib/WatchdogLauncher.h +50 -53
  170. data/src/cxx_supportlib/WebSocketCommandReverseServer.h +981 -0
  171. data/src/cxx_supportlib/oxt/macros.hpp +9 -0
  172. data/src/cxx_supportlib/vendor-copy/websocketpp/COPYING +145 -0
  173. data/src/cxx_supportlib/vendor-copy/websocketpp/changelog.md +342 -0
  174. data/src/cxx_supportlib/vendor-copy/websocketpp/readme.md +49 -0
  175. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/base64/base64.hpp +178 -0
  176. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/client.hpp +33 -0
  177. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/close.hpp +342 -0
  178. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/asio.hpp +131 -0
  179. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/asio_ssl.hpp +39 -0
  180. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/chrono.hpp +68 -0
  181. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/connection_hdl.hpp +52 -0
  182. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/cpp11.hpp +162 -0
  183. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/functional.hpp +105 -0
  184. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/md5.hpp +448 -0
  185. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/memory.hpp +89 -0
  186. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/network.hpp +106 -0
  187. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/platforms.hpp +46 -0
  188. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/random.hpp +82 -0
  189. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/regex.hpp +59 -0
  190. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/stdint.hpp +73 -0
  191. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/system_error.hpp +84 -0
  192. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/thread.hpp +84 -0
  193. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/time.hpp +56 -0
  194. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/type_traits.hpp +65 -0
  195. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/concurrency/basic.hpp +46 -0
  196. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/concurrency/none.hpp +80 -0
  197. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/asio.hpp +77 -0
  198. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/asio_client.hpp +77 -0
  199. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/asio_no_tls.hpp +73 -0
  200. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/asio_no_tls_client.hpp +73 -0
  201. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/boost_config.hpp +72 -0
  202. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/core.hpp +285 -0
  203. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/core_client.hpp +294 -0
  204. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/debug.hpp +286 -0
  205. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/debug_asio.hpp +77 -0
  206. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/debug_asio_no_tls.hpp +73 -0
  207. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/minimal_client.hpp +72 -0
  208. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/minimal_server.hpp +312 -0
  209. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/connection.hpp +1651 -0
  210. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/connection_base.hpp +38 -0
  211. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/endpoint.hpp +700 -0
  212. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/endpoint_base.hpp +38 -0
  213. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/error.hpp +277 -0
  214. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/extensions/extension.hpp +102 -0
  215. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/extensions/permessage_deflate/disabled.hpp +128 -0
  216. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/extensions/permessage_deflate/enabled.hpp +752 -0
  217. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/frame.hpp +861 -0
  218. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/constants.hpp +308 -0
  219. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/impl/parser.hpp +196 -0
  220. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/impl/request.hpp +191 -0
  221. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/impl/response.hpp +266 -0
  222. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/parser.hpp +619 -0
  223. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/request.hpp +124 -0
  224. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/response.hpp +188 -0
  225. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/impl/connection_impl.hpp +2372 -0
  226. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/impl/endpoint_impl.hpp +269 -0
  227. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/impl/utilities_impl.hpp +87 -0
  228. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/logger/basic.hpp +199 -0
  229. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/logger/levels.hpp +203 -0
  230. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/logger/stub.hpp +119 -0
  231. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/logger/syslog.hpp +146 -0
  232. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/message_buffer/alloc.hpp +105 -0
  233. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/message_buffer/message.hpp +340 -0
  234. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/message_buffer/pool.hpp +229 -0
  235. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/base.hpp +299 -0
  236. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/hybi00.hpp +462 -0
  237. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/hybi07.hpp +78 -0
  238. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/hybi08.hpp +83 -0
  239. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/hybi13.hpp +1056 -0
  240. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/processor.hpp +407 -0
  241. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/random/none.hpp +60 -0
  242. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/random/random_device.hpp +80 -0
  243. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/roles/client_endpoint.hpp +173 -0
  244. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/roles/server_endpoint.hpp +190 -0
  245. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/server.hpp +33 -0
  246. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/sha1/sha1.hpp +189 -0
  247. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/base.hpp +232 -0
  248. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/connection.hpp +1204 -0
  249. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/endpoint.hpp +1147 -0
  250. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/security/base.hpp +159 -0
  251. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/security/none.hpp +370 -0
  252. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/security/tls.hpp +484 -0
  253. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/base/connection.hpp +238 -0
  254. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/base/endpoint.hpp +77 -0
  255. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/debug/base.hpp +104 -0
  256. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/debug/connection.hpp +412 -0
  257. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/debug/endpoint.hpp +140 -0
  258. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/iostream/base.hpp +133 -0
  259. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/iostream/connection.hpp +714 -0
  260. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/iostream/endpoint.hpp +222 -0
  261. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/stub/base.hpp +95 -0
  262. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/stub/connection.hpp +286 -0
  263. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/stub/endpoint.hpp +140 -0
  264. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/uri.hpp +355 -0
  265. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/utf8_validator.hpp +154 -0
  266. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/utilities.hpp +182 -0
  267. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/version.hpp +61 -0
  268. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +121 -0
  269. data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +96 -0
  270. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +951 -0
  271. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +520 -0
  272. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +258 -0
  273. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +942 -0
  274. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +567 -0
  275. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +697 -0
  276. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +386 -0
  277. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +1519 -0
  278. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +1137 -0
  279. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +288 -0
  280. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +569 -0
  281. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +854 -0
  282. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +371 -0
  283. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +35 -0
  284. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +521 -0
  285. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +2241 -0
  286. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +246 -0
  287. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream_fwd.hpp +27 -0
  288. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream.hpp +260 -0
  289. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream_fwd.hpp +27 -0
  290. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream.hpp +238 -0
  291. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream_fwd.hpp +27 -0
  292. data/src/cxx_supportlib/vendor-modified/boost/asio/buffers_iterator.hpp +483 -0
  293. data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +220 -0
  294. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +825 -0
  295. data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +330 -0
  296. data/src/cxx_supportlib/vendor-modified/boost/asio/datagram_socket_service.hpp +438 -0
  297. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +40 -0
  298. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer_service.hpp +173 -0
  299. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/addressof.hpp +40 -0
  300. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +40 -0
  301. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +34 -0
  302. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/assert.hpp +32 -0
  303. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/atomic_count.hpp +47 -0
  304. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +70 -0
  305. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +491 -0
  306. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_resize_guard.hpp +68 -0
  307. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_sequence_adapter.hpp +385 -0
  308. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +128 -0
  309. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +127 -0
  310. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono_time_traits.hpp +192 -0
  311. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_handler.hpp +83 -0
  312. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +1050 -0
  313. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +294 -0
  314. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +48 -0
  315. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/date_time_fwd.hpp +34 -0
  316. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +229 -0
  317. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dependent_type.hpp +38 -0
  318. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_ops.hpp +119 -0
  319. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +121 -0
  320. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +121 -0
  321. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +208 -0
  322. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +244 -0
  323. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +50 -0
  324. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +85 -0
  325. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fd_set_adapter.hpp +41 -0
  326. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fenced_block.hpp +82 -0
  327. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/function.hpp +40 -0
  328. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +91 -0
  329. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +68 -0
  330. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +65 -0
  331. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +99 -0
  332. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +82 -0
  333. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +45 -0
  334. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +57 -0
  335. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +161 -0
  336. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +480 -0
  337. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/hash_map.hpp +333 -0
  338. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/buffer_sequence_adapter.ipp +120 -0
  339. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +453 -0
  340. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +80 -0
  341. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +432 -0
  342. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +78 -0
  343. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +688 -0
  344. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +167 -0
  345. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +307 -0
  346. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +82 -0
  347. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +498 -0
  348. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +126 -0
  349. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +49 -0
  350. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_mutex.ipp +48 -0
  351. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +76 -0
  352. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_tss_ptr.ipp +48 -0
  353. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +210 -0
  354. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_serial_port_service.ipp +153 -0
  355. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +269 -0
  356. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +132 -0
  357. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +89 -0
  358. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +315 -0
  359. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +90 -0
  360. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +190 -0
  361. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +649 -0
  362. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +3470 -0
  363. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +178 -0
  364. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +120 -0
  365. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +178 -0
  366. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/task_io_service.hpp +80 -0
  367. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/task_io_service.ipp +476 -0
  368. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/throw_error.ipp +47 -0
  369. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +86 -0
  370. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_set.ipp +103 -0
  371. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +136 -0
  372. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/keyword_tss_ptr.hpp +72 -0
  373. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +222 -0
  374. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/limits.hpp +26 -0
  375. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/local_free_on_block_exit.hpp +61 -0
  376. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/macos_fenced_block.hpp +63 -0
  377. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +31 -0
  378. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +50 -0
  379. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/noncopyable.hpp +45 -0
  380. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_event.hpp +90 -0
  381. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +47 -0
  382. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_mutex.hpp +66 -0
  383. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_reactor.hpp +69 -0
  384. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_signal_blocker.hpp +71 -0
  385. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_socket_service.hpp +500 -0
  386. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_static_mutex.hpp +62 -0
  387. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_thread.hpp +63 -0
  388. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_tss_ptr.hpp +70 -0
  389. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/object_pool.hpp +148 -0
  390. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/old_win_sdk_compat.hpp +216 -0
  391. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +158 -0
  392. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +40 -0
  393. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +91 -0
  394. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +131 -0
  395. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +128 -0
  396. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_fd_set_adapter.hpp +120 -0
  397. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +78 -0
  398. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_signal_blocker.hpp +87 -0
  399. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_static_mutex.hpp +66 -0
  400. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_thread.hpp +107 -0
  401. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_tss_ptr.hpp +81 -0
  402. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +166 -0
  403. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +324 -0
  404. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +90 -0
  405. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_serial_port_service.hpp +236 -0
  406. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +138 -0
  407. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +108 -0
  408. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +125 -0
  409. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +135 -0
  410. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +127 -0
  411. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +122 -0
  412. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +125 -0
  413. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +460 -0
  414. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +452 -0
  415. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +32 -0
  416. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_fwd.hpp +42 -0
  417. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +63 -0
  418. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +170 -0
  419. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +35 -0
  420. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +123 -0
  421. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +133 -0
  422. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +131 -0
  423. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +131 -0
  424. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_lock.hpp +103 -0
  425. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_ptr.hpp +81 -0
  426. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_interrupter.hpp +48 -0
  427. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +221 -0
  428. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +146 -0
  429. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/shared_ptr.hpp +40 -0
  430. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_blocker.hpp +46 -0
  431. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_handler.hpp +84 -0
  432. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_init.hpp +49 -0
  433. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_op.hpp +51 -0
  434. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_set_service.hpp +218 -0
  435. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_holder.hpp +100 -0
  436. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_ops.hpp +336 -0
  437. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_option.hpp +318 -0
  438. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_select_interrupter.hpp +93 -0
  439. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +410 -0
  440. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +63 -0
  441. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +54 -0
  442. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +178 -0
  443. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +64 -0
  444. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +75 -0
  445. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +83 -0
  446. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +67 -0
  447. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +144 -0
  448. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/task_io_service.hpp +203 -0
  449. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/task_io_service_operation.hpp +78 -0
  450. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/task_io_service_thread_info.hpp +42 -0
  451. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +58 -0
  452. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +93 -0
  453. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_error.hpp +55 -0
  454. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_exception.hpp +53 -0
  455. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +333 -0
  456. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_base.hpp +70 -0
  457. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +95 -0
  458. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_set.hpp +68 -0
  459. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler.hpp +35 -0
  460. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +42 -0
  461. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/tss_ptr.hpp +71 -0
  462. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/type_traits.hpp +60 -0
  463. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +63 -0
  464. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +85 -0
  465. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +47 -0
  466. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/weak_ptr.hpp +40 -0
  467. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/win_iocp_serial_port_service.hpp +230 -0
  468. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/winsock_init.hpp +130 -0
  469. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +293 -0
  470. data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +345 -0
  471. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +195 -0
  472. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +125 -0
  473. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/endpoint.hpp +135 -0
  474. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/impl/endpoint.ipp +111 -0
  475. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +123 -0
  476. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +124 -0
  477. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +129 -0
  478. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +83 -0
  479. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +56 -0
  480. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_invoke_hook.hpp +87 -0
  481. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_type.hpp +114 -0
  482. data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +65 -0
  483. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +360 -0
  484. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +340 -0
  485. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +432 -0
  486. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +130 -0
  487. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +79 -0
  488. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_service.hpp +156 -0
  489. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_service.ipp +157 -0
  490. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +755 -0
  491. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +812 -0
  492. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +1149 -0
  493. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.hpp +61 -0
  494. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.ipp +556 -0
  495. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +355 -0
  496. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.cpp +25 -0
  497. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +73 -0
  498. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +179 -0
  499. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +767 -0
  500. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +827 -0
  501. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +772 -0
  502. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +202 -0
  503. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +243 -0
  504. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +248 -0
  505. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +265 -0
  506. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +270 -0
  507. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +96 -0
  508. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +262 -0
  509. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +246 -0
  510. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +141 -0
  511. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +206 -0
  512. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +571 -0
  513. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/host_name.hpp +44 -0
  514. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/icmp.hpp +117 -0
  515. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +55 -0
  516. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +228 -0
  517. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +55 -0
  518. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +180 -0
  519. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +55 -0
  520. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +300 -0
  521. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +57 -0
  522. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/host_name.ipp +56 -0
  523. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +193 -0
  524. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +132 -0
  525. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_service.hpp +178 -0
  526. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +157 -0
  527. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +113 -0
  528. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +72 -0
  529. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +71 -0
  530. data/src/cxx_supportlib/vendor-modified/boost/asio/is_read_buffered.hpp +61 -0
  531. data/src/cxx_supportlib/vendor-modified/boost/asio/is_write_buffered.hpp +61 -0
  532. data/src/cxx_supportlib/vendor-modified/boost/asio/local/basic_endpoint.hpp +241 -0
  533. data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +106 -0
  534. data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +82 -0
  535. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +135 -0
  536. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +130 -0
  537. data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +92 -0
  538. data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +125 -0
  539. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +492 -0
  540. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +364 -0
  541. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +99 -0
  542. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +39 -0
  543. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor_service.hpp +262 -0
  544. data/src/cxx_supportlib/vendor-modified/boost/asio/raw_socket_service.hpp +438 -0
  545. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +633 -0
  546. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +666 -0
  547. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +925 -0
  548. data/src/cxx_supportlib/vendor-modified/boost/asio/seq_packet_socket_service.hpp +386 -0
  549. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +38 -0
  550. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +169 -0
  551. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_service.hpp +255 -0
  552. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +30 -0
  553. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set_service.hpp +136 -0
  554. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_acceptor_service.hpp +308 -0
  555. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +522 -0
  556. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +267 -0
  557. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +30 -0
  558. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/basic_context.hpp +42 -0
  559. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +789 -0
  560. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +194 -0
  561. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_service.hpp +42 -0
  562. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +112 -0
  563. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +166 -0
  564. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +70 -0
  565. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +327 -0
  566. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +166 -0
  567. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +351 -0
  568. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +103 -0
  569. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +30 -0
  570. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +74 -0
  571. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +75 -0
  572. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +62 -0
  573. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +128 -0
  574. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +70 -0
  575. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +75 -0
  576. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +115 -0
  577. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +73 -0
  578. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +1177 -0
  579. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +102 -0
  580. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +168 -0
  581. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +28 -0
  582. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/basic_context.hpp +436 -0
  583. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/context_service.hpp +176 -0
  584. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_context_service.hpp +396 -0
  585. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_operation.hpp +526 -0
  586. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_stream_service.hpp +573 -0
  587. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/stream.hpp +503 -0
  588. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/stream_service.hpp +186 -0
  589. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +102 -0
  590. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +758 -0
  591. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_base.hpp +54 -0
  592. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_service.hpp +42 -0
  593. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_context.hpp +75 -0
  594. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +65 -0
  595. data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +63 -0
  596. data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +254 -0
  597. data/src/cxx_supportlib/vendor-modified/boost/asio/stream_socket_service.hpp +382 -0
  598. data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +35 -0
  599. data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +59 -0
  600. data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +88 -0
  601. data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +21 -0
  602. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +94 -0
  603. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +23 -0
  604. data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +43 -0
  605. data/src/cxx_supportlib/vendor-modified/boost/asio/waitable_timer_service.hpp +170 -0
  606. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_handle.hpp +283 -0
  607. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +180 -0
  608. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +378 -0
  609. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +361 -0
  610. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +40 -0
  611. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle_service.hpp +179 -0
  612. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +118 -0
  613. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +39 -0
  614. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle_service.hpp +222 -0
  615. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +39 -0
  616. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle_service.hpp +220 -0
  617. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +620 -0
  618. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +672 -0
  619. data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +23 -0
  620. data/src/cxx_supportlib/vendor-modified/boost/chrono.hpp +20 -0
  621. data/src/cxx_supportlib/vendor-modified/boost/chrono/chrono.hpp +15 -0
  622. data/src/cxx_supportlib/vendor-modified/boost/chrono/chrono_io.hpp +34 -0
  623. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/chrono.hpp +46 -0
  624. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/chrono.hpp +242 -0
  625. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp +356 -0
  626. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/thread_clock.hpp +92 -0
  627. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/chrono.hpp +121 -0
  628. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp +354 -0
  629. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/thread_clock.hpp +92 -0
  630. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/process_cpu_clocks.hpp +46 -0
  631. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/thread_clock.hpp +46 -0
  632. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/no_warning/signed_unsigned_cmp.hpp +54 -0
  633. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/scan_keyword.hpp +163 -0
  634. data/src/cxx_supportlib/vendor-modified/boost/chrono/floor.hpp +36 -0
  635. data/src/cxx_supportlib/vendor-modified/boost/chrono/include.hpp +23 -0
  636. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_get.hpp +593 -0
  637. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_io.hpp +295 -0
  638. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_put.hpp +317 -0
  639. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_style.hpp +35 -0
  640. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_units.hpp +1003 -0
  641. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/ios_base_state.hpp +152 -0
  642. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_get.hpp +330 -0
  643. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +1243 -0
  644. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_put.hpp +261 -0
  645. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_units.hpp +260 -0
  646. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/timezone.hpp +30 -0
  647. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/utility/ios_base_state_ptr.hpp +437 -0
  648. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/utility/manip_base.hpp +101 -0
  649. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/utility/to_string.hpp +50 -0
  650. data/src/cxx_supportlib/vendor-modified/boost/chrono/io_v1/chrono_io.hpp +637 -0
  651. data/src/cxx_supportlib/vendor-modified/boost/chrono/process_cpu_clocks.hpp +525 -0
  652. data/src/cxx_supportlib/vendor-modified/boost/chrono/round.hpp +59 -0
  653. data/src/cxx_supportlib/vendor-modified/boost/chrono/thread_clock.hpp +75 -0
  654. data/src/cxx_supportlib/vendor-modified/boost/chrono/typeof/boost/chrono/chrono.hpp +32 -0
  655. data/src/cxx_supportlib/vendor-modified/boost/chrono/typeof/boost/ratio.hpp +24 -0
  656. data/src/cxx_supportlib/vendor-modified/boost/detail/atomic_count.hpp +21 -0
  657. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor.hpp +16 -0
  658. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +460 -0
  659. data/src/cxx_supportlib/vendor-modified/boost/integer/integer_log2.hpp +112 -0
  660. data/src/cxx_supportlib/vendor-modified/boost/integer/integer_mask.hpp +126 -0
  661. data/src/cxx_supportlib/vendor-modified/boost/integer/static_min_max.hpp +51 -0
  662. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/chrono.cpp +15 -0
  663. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/process_cpu_clocks.cpp +18 -0
  664. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/thread_clock.cpp +19 -0
  665. data/src/cxx_supportlib/vendor-modified/boost/libs/random/src/random_device.cpp +250 -0
  666. data/src/cxx_supportlib/vendor-modified/boost/pointer_cast.hpp +121 -0
  667. data/src/cxx_supportlib/vendor-modified/boost/random.hpp +91 -0
  668. data/src/cxx_supportlib/vendor-modified/boost/random/additive_combine.hpp +283 -0
  669. data/src/cxx_supportlib/vendor-modified/boost/random/bernoulli_distribution.hpp +197 -0
  670. data/src/cxx_supportlib/vendor-modified/boost/random/beta_distribution.hpp +184 -0
  671. data/src/cxx_supportlib/vendor-modified/boost/random/binomial_distribution.hpp +434 -0
  672. data/src/cxx_supportlib/vendor-modified/boost/random/cauchy_distribution.hpp +214 -0
  673. data/src/cxx_supportlib/vendor-modified/boost/random/chi_squared_distribution.hpp +209 -0
  674. data/src/cxx_supportlib/vendor-modified/boost/random/detail/auto_link.hpp +40 -0
  675. data/src/cxx_supportlib/vendor-modified/boost/random/detail/config.hpp +18 -0
  676. data/src/cxx_supportlib/vendor-modified/boost/random/detail/const_mod.hpp +216 -0
  677. data/src/cxx_supportlib/vendor-modified/boost/random/detail/disable_warnings.hpp +29 -0
  678. data/src/cxx_supportlib/vendor-modified/boost/random/detail/enable_warnings.hpp +22 -0
  679. data/src/cxx_supportlib/vendor-modified/boost/random/detail/generator_bits.hpp +36 -0
  680. data/src/cxx_supportlib/vendor-modified/boost/random/detail/generator_seed_seq.hpp +40 -0
  681. data/src/cxx_supportlib/vendor-modified/boost/random/detail/int_float_pair.hpp +121 -0
  682. data/src/cxx_supportlib/vendor-modified/boost/random/detail/integer_log2.hpp +84 -0
  683. data/src/cxx_supportlib/vendor-modified/boost/random/detail/iterator_mixin.hpp +45 -0
  684. data/src/cxx_supportlib/vendor-modified/boost/random/detail/large_arithmetic.hpp +122 -0
  685. data/src/cxx_supportlib/vendor-modified/boost/random/detail/operators.hpp +84 -0
  686. data/src/cxx_supportlib/vendor-modified/boost/random/detail/polynomial.hpp +384 -0
  687. data/src/cxx_supportlib/vendor-modified/boost/random/detail/ptr_helper.hpp +67 -0
  688. data/src/cxx_supportlib/vendor-modified/boost/random/detail/seed.hpp +115 -0
  689. data/src/cxx_supportlib/vendor-modified/boost/random/detail/seed_impl.hpp +398 -0
  690. data/src/cxx_supportlib/vendor-modified/boost/random/detail/signed_unsigned_tools.hpp +89 -0
  691. data/src/cxx_supportlib/vendor-modified/boost/random/detail/uniform_int_float.hpp +76 -0
  692. data/src/cxx_supportlib/vendor-modified/boost/random/detail/vector_io.hpp +75 -0
  693. data/src/cxx_supportlib/vendor-modified/boost/random/discard_block.hpp +241 -0
  694. data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +636 -0
  695. data/src/cxx_supportlib/vendor-modified/boost/random/exponential_distribution.hpp +386 -0
  696. data/src/cxx_supportlib/vendor-modified/boost/random/extreme_value_distribution.hpp +177 -0
  697. data/src/cxx_supportlib/vendor-modified/boost/random/fisher_f_distribution.hpp +183 -0
  698. data/src/cxx_supportlib/vendor-modified/boost/random/gamma_distribution.hpp +292 -0
  699. data/src/cxx_supportlib/vendor-modified/boost/random/generate_canonical.hpp +96 -0
  700. data/src/cxx_supportlib/vendor-modified/boost/random/geometric_distribution.hpp +267 -0
  701. data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +883 -0
  702. data/src/cxx_supportlib/vendor-modified/boost/random/independent_bits.hpp +271 -0
  703. data/src/cxx_supportlib/vendor-modified/boost/random/inversive_congruential.hpp +267 -0
  704. data/src/cxx_supportlib/vendor-modified/boost/random/lagged_fibonacci.hpp +537 -0
  705. data/src/cxx_supportlib/vendor-modified/boost/random/laplace_distribution.hpp +175 -0
  706. data/src/cxx_supportlib/vendor-modified/boost/random/linear_congruential.hpp +466 -0
  707. data/src/cxx_supportlib/vendor-modified/boost/random/linear_feedback_shift.hpp +217 -0
  708. data/src/cxx_supportlib/vendor-modified/boost/random/lognormal_distribution.hpp +254 -0
  709. data/src/cxx_supportlib/vendor-modified/boost/random/mersenne_twister.hpp +682 -0
  710. data/src/cxx_supportlib/vendor-modified/boost/random/negative_binomial_distribution.hpp +220 -0
  711. data/src/cxx_supportlib/vendor-modified/boost/random/non_central_chi_squared_distribution.hpp +221 -0
  712. data/src/cxx_supportlib/vendor-modified/boost/random/normal_distribution.hpp +374 -0
  713. data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_constant_distribution.hpp +466 -0
  714. data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_linear_distribution.hpp +531 -0
  715. data/src/cxx_supportlib/vendor-modified/boost/random/poisson_distribution.hpp +360 -0
  716. data/src/cxx_supportlib/vendor-modified/boost/random/random_device.hpp +143 -0
  717. data/src/cxx_supportlib/vendor-modified/boost/random/random_number_generator.hpp +73 -0
  718. data/src/cxx_supportlib/vendor-modified/boost/random/ranlux.hpp +99 -0
  719. data/src/cxx_supportlib/vendor-modified/boost/random/seed_seq.hpp +118 -0
  720. data/src/cxx_supportlib/vendor-modified/boost/random/shuffle_order.hpp +269 -0
  721. data/src/cxx_supportlib/vendor-modified/boost/random/shuffle_output.hpp +51 -0
  722. data/src/cxx_supportlib/vendor-modified/boost/random/student_t_distribution.hpp +180 -0
  723. data/src/cxx_supportlib/vendor-modified/boost/random/subtract_with_carry.hpp +613 -0
  724. data/src/cxx_supportlib/vendor-modified/boost/random/taus88.hpp +45 -0
  725. data/src/cxx_supportlib/vendor-modified/boost/random/traits.hpp +107 -0
  726. data/src/cxx_supportlib/vendor-modified/boost/random/triangle_distribution.hpp +232 -0
  727. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_01.hpp +257 -0
  728. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_int.hpp +99 -0
  729. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_int_distribution.hpp +419 -0
  730. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_on_sphere.hpp +284 -0
  731. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_real.hpp +82 -0
  732. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_real_distribution.hpp +241 -0
  733. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_smallint.hpp +307 -0
  734. data/src/cxx_supportlib/vendor-modified/boost/random/variate_generator.hpp +122 -0
  735. data/src/cxx_supportlib/vendor-modified/boost/random/weibull_distribution.hpp +177 -0
  736. data/src/cxx_supportlib/vendor-modified/boost/random/xor_combine.hpp +208 -0
  737. data/src/cxx_supportlib/vendor-modified/boost/ratio.hpp +14 -0
  738. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/ratio_io.hpp +1342 -0
  739. data/src/cxx_supportlib/vendor-modified/boost/ratio/include.hpp +16 -0
  740. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/abs.hpp +30 -0
  741. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/arithmetic.hpp +22 -0
  742. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/comparison.hpp +19 -0
  743. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/divides.hpp +30 -0
  744. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/equal_to.hpp +30 -0
  745. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/gcd.hpp +30 -0
  746. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater.hpp +30 -0
  747. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater_equal.hpp +30 -0
  748. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/lcm.hpp +30 -0
  749. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less.hpp +30 -0
  750. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less_equal.hpp +30 -0
  751. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/minus.hpp +30 -0
  752. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/negate.hpp +30 -0
  753. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/not_equal_to.hpp +30 -0
  754. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/numeric_cast.hpp +31 -0
  755. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/plus.hpp +30 -0
  756. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_c_tag.hpp +25 -0
  757. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_constant.hpp +15 -0
  758. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/sign.hpp +30 -0
  759. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/times.hpp +30 -0
  760. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_io.hpp +1076 -0
  761. data/src/cxx_supportlib/vendor-modified/boost/rational.hpp +1002 -0
  762. data/src/cxx_supportlib/vendor-modified/modp_b64.cpp +11 -0
  763. data/src/helper-scripts/rack-preloader.rb +1 -1
  764. data/src/nginx_module/{ConfigurationCommands.c → ConfigGeneral/AutoGeneratedDefinitions.c} +351 -134
  765. data/src/nginx_module/{ConfigurationCommands.c.cxxcodebuilder → ConfigGeneral/AutoGeneratedDefinitions.c.cxxcodebuilder} +14 -25
  766. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +396 -0
  767. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c.cxxcodebuilder +160 -0
  768. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +831 -0
  769. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c.cxxcodebuilder +168 -0
  770. data/src/nginx_module/ConfigGeneral/ManifestGeneration.c +887 -0
  771. data/src/nginx_module/ConfigGeneral/ManifestGeneration.h +100 -0
  772. data/src/nginx_module/Configuration.c +165 -621
  773. data/src/nginx_module/Configuration.h +43 -33
  774. data/src/nginx_module/ContentHandler.c +46 -40
  775. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +282 -0
  776. data/src/nginx_module/{CreateLocationConfig.c.cxxcodebuilder → LocationConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder} +43 -17
  777. data/src/nginx_module/{CacheLocationConfig.c → LocationConfig/AutoGeneratedHeaderSerialization.c} +148 -180
  778. data/src/nginx_module/{CacheLocationConfig.c.cxxcodebuilder → LocationConfig/AutoGeneratedHeaderSerialization.c.cxxcodebuilder} +13 -11
  779. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +595 -0
  780. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +190 -0
  781. data/src/nginx_module/{MergeLocationConfig.c → LocationConfig/AutoGeneratedMergeFunction.c} +32 -42
  782. data/src/nginx_module/{MergeLocationConfig.c.cxxcodebuilder → LocationConfig/AutoGeneratedMergeFunction.c.cxxcodebuilder} +18 -11
  783. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +220 -0
  784. data/src/nginx_module/{LocationConfig.h.cxxcodebuilder → LocationConfig/AutoGeneratedStruct.h.cxxcodebuilder} +70 -48
  785. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c +163 -0
  786. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +125 -0
  787. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c +303 -0
  788. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +173 -0
  789. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h +133 -0
  790. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h.cxxcodebuilder +154 -0
  791. data/src/nginx_module/config +13 -4
  792. data/src/nginx_module/ngx_http_passenger_module.c +154 -84
  793. data/src/ruby_supportlib/phusion_passenger.rb +2 -2
  794. data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +613 -131
  795. data/src/ruby_supportlib/phusion_passenger/apache2/config_utils.rb +52 -0
  796. data/src/ruby_supportlib/phusion_passenger/common_library.rb +18 -4
  797. data/src/ruby_supportlib/phusion_passenger/config/main.rb +2 -0
  798. data/src/ruby_supportlib/phusion_passenger/config/system_properties_command.rb +104 -0
  799. data/src/ruby_supportlib/phusion_passenger/constants.rb +0 -2
  800. data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +470 -138
  801. data/src/ruby_supportlib/phusion_passenger/packaging.rb +1 -0
  802. data/src/ruby_supportlib/phusion_passenger/platform_info.rb +17 -0
  803. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +11 -1
  804. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +7 -7
  805. data/src/ruby_supportlib/phusion_passenger/platform_info/networking.rb +293 -0
  806. data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +8 -54
  807. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +1 -5
  808. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +4 -7
  809. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller.rb +1 -1
  810. data/src/schema_printer/SchemaPrinterMain.cpp +78 -0
  811. data/src/schema_printer/SchemaPrinterMain.cpp.cxxcodebuilder +116 -0
  812. metadata +671 -30
  813. data/src/apache2_module/Configuration.cpp +0 -737
  814. data/src/apache2_module/Configuration.hpp +0 -274
  815. data/src/apache2_module/ConfigurationCommands.cpp +0 -199
  816. data/src/apache2_module/ConfigurationFields.hpp +0 -187
  817. data/src/apache2_module/ConfigurationSetters.cpp +0 -436
  818. data/src/apache2_module/ConfigurationSetters.cpp.cxxcodebuilder +0 -144
  819. data/src/apache2_module/CreateDirConfig.cpp +0 -68
  820. data/src/apache2_module/CreateDirConfig.cpp.cxxcodebuilder +0 -81
  821. data/src/apache2_module/MergeDirConfig.cpp +0 -155
  822. data/src/apache2_module/SetHeaders.cpp +0 -111
  823. data/src/nginx_module/CreateLocationConfig.c +0 -100
  824. data/src/nginx_module/LocationConfig.h +0 -95
@@ -0,0 +1,115 @@
1
+ //
2
+ // ssl/error.hpp
3
+ // ~~~~~~~~~~~~~
4
+ //
5
+ // Copyright (c) 2003-2017 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
+ //
7
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9
+ //
10
+
11
+ #ifndef BOOST_ASIO_SSL_ERROR_HPP
12
+ #define BOOST_ASIO_SSL_ERROR_HPP
13
+
14
+ #if defined(_MSC_VER) && (_MSC_VER >= 1200)
15
+ # pragma once
16
+ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
+
18
+ #include <boost/asio/detail/config.hpp>
19
+ #include <boost/system/error_code.hpp>
20
+ #include <boost/asio/ssl/detail/openssl_types.hpp>
21
+
22
+ #include <boost/asio/detail/push_options.hpp>
23
+
24
+ namespace boost {
25
+ namespace asio {
26
+ namespace error {
27
+
28
+ enum ssl_errors
29
+ {
30
+ // Error numbers are those produced by openssl.
31
+ };
32
+
33
+ extern BOOST_ASIO_DECL
34
+ const boost::system::error_category& get_ssl_category();
35
+
36
+ static const boost::system::error_category&
37
+ ssl_category BOOST_ASIO_UNUSED_VARIABLE
38
+ = boost::asio::error::get_ssl_category();
39
+
40
+ } // namespace error
41
+ namespace ssl {
42
+ namespace error {
43
+
44
+ enum stream_errors
45
+ {
46
+ #if defined(GENERATING_DOCUMENTATION)
47
+ /// The underlying stream closed before the ssl stream gracefully shut down.
48
+ stream_truncated
49
+ #elif (OPENSSL_VERSION_NUMBER < 0x10100000L) && !defined(OPENSSL_IS_BORINGSSL)
50
+ stream_truncated = ERR_PACK(ERR_LIB_SSL, 0, SSL_R_SHORT_READ)
51
+ #else
52
+ stream_truncated = 1
53
+ #endif
54
+ };
55
+
56
+ extern BOOST_ASIO_DECL
57
+ const boost::system::error_category& get_stream_category();
58
+
59
+ static const boost::system::error_category&
60
+ stream_category BOOST_ASIO_UNUSED_VARIABLE
61
+ = boost::asio::ssl::error::get_stream_category();
62
+
63
+ } // namespace error
64
+ } // namespace ssl
65
+ } // namespace asio
66
+ } // namespace boost
67
+
68
+ namespace boost {
69
+ namespace system {
70
+
71
+ template<> struct is_error_code_enum<boost::asio::error::ssl_errors>
72
+ {
73
+ static const bool value = true;
74
+ };
75
+
76
+ template<> struct is_error_code_enum<boost::asio::ssl::error::stream_errors>
77
+ {
78
+ static const bool value = true;
79
+ };
80
+
81
+ } // namespace system
82
+ } // namespace boost
83
+
84
+ namespace boost {
85
+ namespace asio {
86
+ namespace error {
87
+
88
+ inline boost::system::error_code make_error_code(ssl_errors e)
89
+ {
90
+ return boost::system::error_code(
91
+ static_cast<int>(e), get_ssl_category());
92
+ }
93
+
94
+ } // namespace error
95
+ namespace ssl {
96
+ namespace error {
97
+
98
+ inline boost::system::error_code make_error_code(stream_errors e)
99
+ {
100
+ return boost::system::error_code(
101
+ static_cast<int>(e), get_stream_category());
102
+ }
103
+
104
+ } // namespace error
105
+ } // namespace ssl
106
+ } // namespace asio
107
+ } // namespace boost
108
+
109
+ #include <boost/asio/detail/pop_options.hpp>
110
+
111
+ #if defined(BOOST_ASIO_HEADER_ONLY)
112
+ # include <boost/asio/ssl/impl/error.ipp>
113
+ #endif // defined(BOOST_ASIO_HEADER_ONLY)
114
+
115
+ #endif // BOOST_ASIO_SSL_ERROR_HPP
@@ -0,0 +1,73 @@
1
+ //
2
+ // ssl/impl/context.hpp
3
+ // ~~~~~~~~~~~~~~~~~~~~
4
+ //
5
+ // Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com
6
+ // Copyright (c) 2005-2017 Christopher M. Kohlhoff (chris at kohlhoff dot com)
7
+ //
8
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
9
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
10
+ //
11
+
12
+ #ifndef BOOST_ASIO_SSL_IMPL_CONTEXT_HPP
13
+ #define BOOST_ASIO_SSL_IMPL_CONTEXT_HPP
14
+
15
+ #if defined(_MSC_VER) && (_MSC_VER >= 1200)
16
+ # pragma once
17
+ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
18
+
19
+ #include <boost/asio/detail/config.hpp>
20
+
21
+ #if !defined(BOOST_ASIO_ENABLE_OLD_SSL)
22
+ # include <boost/asio/detail/throw_error.hpp>
23
+ #endif // !defined(BOOST_ASIO_ENABLE_OLD_SSL)
24
+
25
+ #include <boost/asio/detail/push_options.hpp>
26
+
27
+ namespace boost {
28
+ namespace asio {
29
+ namespace ssl {
30
+
31
+ #if !defined(BOOST_ASIO_ENABLE_OLD_SSL)
32
+
33
+ template <typename VerifyCallback>
34
+ void context::set_verify_callback(VerifyCallback callback)
35
+ {
36
+ boost::system::error_code ec;
37
+ this->set_verify_callback(callback, ec);
38
+ boost::asio::detail::throw_error(ec, "set_verify_callback");
39
+ }
40
+
41
+ template <typename VerifyCallback>
42
+ boost::system::error_code context::set_verify_callback(
43
+ VerifyCallback callback, boost::system::error_code& ec)
44
+ {
45
+ return do_set_verify_callback(
46
+ new detail::verify_callback<VerifyCallback>(callback), ec);
47
+ }
48
+
49
+ template <typename PasswordCallback>
50
+ void context::set_password_callback(PasswordCallback callback)
51
+ {
52
+ boost::system::error_code ec;
53
+ this->set_password_callback(callback, ec);
54
+ boost::asio::detail::throw_error(ec, "set_password_callback");
55
+ }
56
+
57
+ template <typename PasswordCallback>
58
+ boost::system::error_code context::set_password_callback(
59
+ PasswordCallback callback, boost::system::error_code& ec)
60
+ {
61
+ return do_set_password_callback(
62
+ new detail::password_callback<PasswordCallback>(callback), ec);
63
+ }
64
+
65
+ #endif // !defined(BOOST_ASIO_ENABLE_OLD_SSL)
66
+
67
+ } // namespace ssl
68
+ } // namespace asio
69
+ } // namespace boost
70
+
71
+ #include <boost/asio/detail/pop_options.hpp>
72
+
73
+ #endif // BOOST_ASIO_SSL_IMPL_CONTEXT_HPP
@@ -0,0 +1,1177 @@
1
+ //
2
+ // ssl/impl/context.ipp
3
+ // ~~~~~~~~~~~~~~~~~~~~
4
+ //
5
+ // Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com
6
+ // Copyright (c) 2005-2017 Christopher M. Kohlhoff (chris at kohlhoff dot com)
7
+ //
8
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
9
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
10
+ //
11
+
12
+ #ifndef BOOST_ASIO_SSL_IMPL_CONTEXT_IPP
13
+ #define BOOST_ASIO_SSL_IMPL_CONTEXT_IPP
14
+
15
+ #if defined(_MSC_VER) && (_MSC_VER >= 1200)
16
+ # pragma once
17
+ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
18
+
19
+ #include <boost/asio/detail/config.hpp>
20
+
21
+ #if !defined(BOOST_ASIO_ENABLE_OLD_SSL)
22
+ # include <cstring>
23
+ # include <boost/asio/detail/throw_error.hpp>
24
+ # include <boost/asio/error.hpp>
25
+ # include <boost/asio/ssl/context.hpp>
26
+ # include <boost/asio/ssl/error.hpp>
27
+ #endif // !defined(BOOST_ASIO_ENABLE_OLD_SSL)
28
+
29
+ #include <boost/asio/detail/push_options.hpp>
30
+
31
+ namespace boost {
32
+ namespace asio {
33
+ namespace ssl {
34
+
35
+ #if !defined(BOOST_ASIO_ENABLE_OLD_SSL)
36
+
37
+ struct context::bio_cleanup
38
+ {
39
+ BIO* p;
40
+ ~bio_cleanup() { if (p) ::BIO_free(p); }
41
+ };
42
+
43
+ struct context::x509_cleanup
44
+ {
45
+ X509* p;
46
+ ~x509_cleanup() { if (p) ::X509_free(p); }
47
+ };
48
+
49
+ struct context::evp_pkey_cleanup
50
+ {
51
+ EVP_PKEY* p;
52
+ ~evp_pkey_cleanup() { if (p) ::EVP_PKEY_free(p); }
53
+ };
54
+
55
+ struct context::rsa_cleanup
56
+ {
57
+ RSA* p;
58
+ ~rsa_cleanup() { if (p) ::RSA_free(p); }
59
+ };
60
+
61
+ struct context::dh_cleanup
62
+ {
63
+ DH* p;
64
+ ~dh_cleanup() { if (p) ::DH_free(p); }
65
+ };
66
+
67
+ context::context(context::method m)
68
+ : handle_(0)
69
+ {
70
+ ::ERR_clear_error();
71
+
72
+ switch (m)
73
+ {
74
+ // SSL v2.
75
+ #if (OPENSSL_VERSION_NUMBER >= 0x10100000L) || defined(OPENSSL_NO_SSL2)
76
+ case context::sslv2:
77
+ case context::sslv2_client:
78
+ case context::sslv2_server:
79
+ boost::asio::detail::throw_error(
80
+ boost::asio::error::invalid_argument, "context");
81
+ break;
82
+ #else // (OPENSSL_VERSION_NUMBER >= 0x10100000L) || defined(OPENSSL_NO_SSL2)
83
+ case context::sslv2:
84
+ handle_ = ::SSL_CTX_new(::SSLv2_method());
85
+ break;
86
+ case context::sslv2_client:
87
+ handle_ = ::SSL_CTX_new(::SSLv2_client_method());
88
+ break;
89
+ case context::sslv2_server:
90
+ handle_ = ::SSL_CTX_new(::SSLv2_server_method());
91
+ break;
92
+ #endif // (OPENSSL_VERSION_NUMBER >= 0x10100000L) || defined(OPENSSL_NO_SSL2)
93
+
94
+ // SSL v3.
95
+ #if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER)
96
+ case context::sslv3:
97
+ handle_ = ::SSL_CTX_new(::TLS_method());
98
+ if (handle_)
99
+ {
100
+ SSL_CTX_set_min_proto_version(handle_, SSL3_VERSION);
101
+ SSL_CTX_set_max_proto_version(handle_, SSL3_VERSION);
102
+ }
103
+ break;
104
+ case context::sslv3_client:
105
+ handle_ = ::SSL_CTX_new(::TLS_client_method());
106
+ if (handle_)
107
+ {
108
+ SSL_CTX_set_min_proto_version(handle_, SSL3_VERSION);
109
+ SSL_CTX_set_max_proto_version(handle_, SSL3_VERSION);
110
+ }
111
+ break;
112
+ case context::sslv3_server:
113
+ handle_ = ::SSL_CTX_new(::TLS_server_method());
114
+ if (handle_)
115
+ {
116
+ SSL_CTX_set_min_proto_version(handle_, SSL3_VERSION);
117
+ SSL_CTX_set_max_proto_version(handle_, SSL3_VERSION);
118
+ }
119
+ break;
120
+ #elif defined(OPENSSL_NO_SSL3)
121
+ case context::sslv3:
122
+ case context::sslv3_client:
123
+ case context::sslv3_server:
124
+ boost::asio::detail::throw_error(
125
+ boost::asio::error::invalid_argument, "context");
126
+ break;
127
+ #else // defined(OPENSSL_NO_SSL3)
128
+ case context::sslv3:
129
+ handle_ = ::SSL_CTX_new(::SSLv3_method());
130
+ break;
131
+ case context::sslv3_client:
132
+ handle_ = ::SSL_CTX_new(::SSLv3_client_method());
133
+ break;
134
+ case context::sslv3_server:
135
+ handle_ = ::SSL_CTX_new(::SSLv3_server_method());
136
+ break;
137
+ #endif // defined(OPENSSL_NO_SSL3)
138
+
139
+ // TLS v1.0.
140
+ #if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER)
141
+ case context::tlsv1:
142
+ handle_ = ::SSL_CTX_new(::TLS_method());
143
+ if (handle_)
144
+ {
145
+ SSL_CTX_set_min_proto_version(handle_, TLS1_VERSION);
146
+ SSL_CTX_set_max_proto_version(handle_, TLS1_VERSION);
147
+ }
148
+ break;
149
+ case context::tlsv1_client:
150
+ handle_ = ::SSL_CTX_new(::TLS_client_method());
151
+ if (handle_)
152
+ {
153
+ SSL_CTX_set_min_proto_version(handle_, TLS1_VERSION);
154
+ SSL_CTX_set_max_proto_version(handle_, TLS1_VERSION);
155
+ }
156
+ break;
157
+ case context::tlsv1_server:
158
+ handle_ = ::SSL_CTX_new(::TLS_server_method());
159
+ if (handle_)
160
+ {
161
+ SSL_CTX_set_min_proto_version(handle_, TLS1_VERSION);
162
+ SSL_CTX_set_max_proto_version(handle_, TLS1_VERSION);
163
+ }
164
+ break;
165
+ #else // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
166
+ case context::tlsv1:
167
+ handle_ = ::SSL_CTX_new(::TLSv1_method());
168
+ break;
169
+ case context::tlsv1_client:
170
+ handle_ = ::SSL_CTX_new(::TLSv1_client_method());
171
+ break;
172
+ case context::tlsv1_server:
173
+ handle_ = ::SSL_CTX_new(::TLSv1_server_method());
174
+ break;
175
+ #endif // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
176
+
177
+ // TLS v1.1.
178
+ #if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER)
179
+ case context::tlsv11:
180
+ handle_ = ::SSL_CTX_new(::TLS_method());
181
+ if (handle_)
182
+ {
183
+ SSL_CTX_set_min_proto_version(handle_, TLS1_1_VERSION);
184
+ SSL_CTX_set_max_proto_version(handle_, TLS1_1_VERSION);
185
+ }
186
+ break;
187
+ case context::tlsv11_client:
188
+ handle_ = ::SSL_CTX_new(::TLS_client_method());
189
+ if (handle_)
190
+ {
191
+ SSL_CTX_set_min_proto_version(handle_, TLS1_1_VERSION);
192
+ SSL_CTX_set_max_proto_version(handle_, TLS1_1_VERSION);
193
+ }
194
+ break;
195
+ case context::tlsv11_server:
196
+ handle_ = ::SSL_CTX_new(::TLS_server_method());
197
+ if (handle_)
198
+ {
199
+ SSL_CTX_set_min_proto_version(handle_, TLS1_1_VERSION);
200
+ SSL_CTX_set_max_proto_version(handle_, TLS1_1_VERSION);
201
+ }
202
+ break;
203
+ #elif defined(SSL_TXT_TLSV1_1)
204
+ case context::tlsv11:
205
+ handle_ = ::SSL_CTX_new(::TLSv1_1_method());
206
+ break;
207
+ case context::tlsv11_client:
208
+ handle_ = ::SSL_CTX_new(::TLSv1_1_client_method());
209
+ break;
210
+ case context::tlsv11_server:
211
+ handle_ = ::SSL_CTX_new(::TLSv1_1_server_method());
212
+ break;
213
+ #else // defined(SSL_TXT_TLSV1_1)
214
+ case context::tlsv11:
215
+ case context::tlsv11_client:
216
+ case context::tlsv11_server:
217
+ boost::asio::detail::throw_error(
218
+ boost::asio::error::invalid_argument, "context");
219
+ break;
220
+ #endif // defined(SSL_TXT_TLSV1_1)
221
+
222
+ // TLS v1.2.
223
+ #if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER)
224
+ case context::tlsv12:
225
+ handle_ = ::SSL_CTX_new(::TLS_method());
226
+ if (handle_)
227
+ {
228
+ SSL_CTX_set_min_proto_version(handle_, TLS1_2_VERSION);
229
+ SSL_CTX_set_max_proto_version(handle_, TLS1_2_VERSION);
230
+ }
231
+ break;
232
+ case context::tlsv12_client:
233
+ handle_ = ::SSL_CTX_new(::TLS_client_method());
234
+ if (handle_)
235
+ {
236
+ SSL_CTX_set_min_proto_version(handle_, TLS1_2_VERSION);
237
+ SSL_CTX_set_max_proto_version(handle_, TLS1_2_VERSION);
238
+ }
239
+ break;
240
+ case context::tlsv12_server:
241
+ handle_ = ::SSL_CTX_new(::TLS_server_method());
242
+ if (handle_)
243
+ {
244
+ SSL_CTX_set_min_proto_version(handle_, TLS1_2_VERSION);
245
+ SSL_CTX_set_max_proto_version(handle_, TLS1_2_VERSION);
246
+ }
247
+ break;
248
+ #elif defined(SSL_TXT_TLSV1_1)
249
+ case context::tlsv12:
250
+ handle_ = ::SSL_CTX_new(::TLSv1_2_method());
251
+ break;
252
+ case context::tlsv12_client:
253
+ handle_ = ::SSL_CTX_new(::TLSv1_2_client_method());
254
+ break;
255
+ case context::tlsv12_server:
256
+ handle_ = ::SSL_CTX_new(::TLSv1_2_server_method());
257
+ break;
258
+ #else // defined(SSL_TXT_TLSV1_1)
259
+ case context::tlsv12:
260
+ case context::tlsv12_client:
261
+ case context::tlsv12_server:
262
+ boost::asio::detail::throw_error(
263
+ boost::asio::error::invalid_argument, "context");
264
+ break;
265
+ #endif // defined(SSL_TXT_TLSV1_1)
266
+
267
+ // Any supported SSL/TLS version.
268
+ case context::sslv23:
269
+ handle_ = ::SSL_CTX_new(::SSLv23_method());
270
+ break;
271
+ case context::sslv23_client:
272
+ handle_ = ::SSL_CTX_new(::SSLv23_client_method());
273
+ break;
274
+ case context::sslv23_server:
275
+ handle_ = ::SSL_CTX_new(::SSLv23_server_method());
276
+ break;
277
+
278
+ // Any supported TLS version.
279
+ #if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER)
280
+ case context::tls:
281
+ handle_ = ::SSL_CTX_new(::TLS_method());
282
+ if (handle_)
283
+ SSL_CTX_set_min_proto_version(handle_, TLS1_VERSION);
284
+ break;
285
+ case context::tls_client:
286
+ handle_ = ::SSL_CTX_new(::TLS_client_method());
287
+ if (handle_)
288
+ SSL_CTX_set_min_proto_version(handle_, TLS1_VERSION);
289
+ break;
290
+ case context::tls_server:
291
+ handle_ = ::SSL_CTX_new(::TLS_server_method());
292
+ if (handle_)
293
+ SSL_CTX_set_min_proto_version(handle_, TLS1_VERSION);
294
+ break;
295
+ #else // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
296
+ case context::tls:
297
+ handle_ = ::SSL_CTX_new(::SSLv23_method());
298
+ if (handle_)
299
+ SSL_CTX_set_options(handle_, SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3);
300
+ break;
301
+ case context::tls_client:
302
+ handle_ = ::SSL_CTX_new(::SSLv23_client_method());
303
+ if (handle_)
304
+ SSL_CTX_set_options(handle_, SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3);
305
+ break;
306
+ case context::tls_server:
307
+ handle_ = ::SSL_CTX_new(::SSLv23_server_method());
308
+ if (handle_)
309
+ SSL_CTX_set_options(handle_, SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3);
310
+ break;
311
+ #endif // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
312
+
313
+ default:
314
+ handle_ = ::SSL_CTX_new(0);
315
+ break;
316
+ }
317
+
318
+ if (handle_ == 0)
319
+ {
320
+ boost::system::error_code ec(
321
+ static_cast<int>(::ERR_get_error()),
322
+ boost::asio::error::get_ssl_category());
323
+ boost::asio::detail::throw_error(ec, "context");
324
+ }
325
+
326
+ set_options(no_compression);
327
+ }
328
+
329
+ context::context(boost::asio::io_service&, context::method m)
330
+ : handle_(0)
331
+ {
332
+ context tmp(m);
333
+ handle_ = tmp.handle_;
334
+ tmp.handle_ = 0;
335
+ }
336
+
337
+ #if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
338
+ context::context(context&& other)
339
+ {
340
+ handle_ = other.handle_;
341
+ other.handle_ = 0;
342
+ }
343
+
344
+ context& context::operator=(context&& other)
345
+ {
346
+ context tmp(BOOST_ASIO_MOVE_CAST(context)(*this));
347
+ handle_ = other.handle_;
348
+ other.handle_ = 0;
349
+ return *this;
350
+ }
351
+ #endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
352
+
353
+ context::~context()
354
+ {
355
+ if (handle_)
356
+ {
357
+ #if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER)
358
+ void* cb_userdata = ::SSL_CTX_get_default_passwd_cb_userdata(handle_);
359
+ #else // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
360
+ void* cb_userdata = handle_->default_passwd_callback_userdata;
361
+ #endif // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
362
+ if (cb_userdata)
363
+ {
364
+ detail::password_callback_base* callback =
365
+ static_cast<detail::password_callback_base*>(
366
+ cb_userdata);
367
+ delete callback;
368
+ #if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER)
369
+ ::SSL_CTX_set_default_passwd_cb_userdata(handle_, 0);
370
+ #else // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
371
+ handle_->default_passwd_callback_userdata = 0;
372
+ #endif // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
373
+ }
374
+
375
+ if (SSL_CTX_get_app_data(handle_))
376
+ {
377
+ detail::verify_callback_base* callback =
378
+ static_cast<detail::verify_callback_base*>(
379
+ SSL_CTX_get_app_data(handle_));
380
+ delete callback;
381
+ SSL_CTX_set_app_data(handle_, 0);
382
+ }
383
+
384
+ ::SSL_CTX_free(handle_);
385
+ }
386
+ }
387
+
388
+ context::native_handle_type context::native_handle()
389
+ {
390
+ return handle_;
391
+ }
392
+
393
+ context::impl_type context::impl()
394
+ {
395
+ return handle_;
396
+ }
397
+
398
+ void context::clear_options(context::options o)
399
+ {
400
+ boost::system::error_code ec;
401
+ clear_options(o, ec);
402
+ boost::asio::detail::throw_error(ec, "clear_options");
403
+ }
404
+
405
+ boost::system::error_code context::clear_options(
406
+ context::options o, boost::system::error_code& ec)
407
+ {
408
+ #if (OPENSSL_VERSION_NUMBER >= 0x009080DFL) \
409
+ && (OPENSSL_VERSION_NUMBER != 0x00909000L)
410
+ # if !defined(SSL_OP_NO_COMPRESSION)
411
+ if ((o & context::no_compression) != 0)
412
+ {
413
+ # if (OPENSSL_VERSION_NUMBER >= 0x00908000L)
414
+ handle_->comp_methods = SSL_COMP_get_compression_methods();
415
+ # endif // (OPENSSL_VERSION_NUMBER >= 0x00908000L)
416
+ o ^= context::no_compression;
417
+ }
418
+ # endif // !defined(SSL_OP_NO_COMPRESSION)
419
+
420
+ ::SSL_CTX_clear_options(handle_, o);
421
+
422
+ ec = boost::system::error_code();
423
+ #else // (OPENSSL_VERSION_NUMBER >= 0x009080DFL)
424
+ // && (OPENSSL_VERSION_NUMBER != 0x00909000L)
425
+ (void)o;
426
+ ec = boost::asio::error::operation_not_supported;
427
+ #endif // (OPENSSL_VERSION_NUMBER >= 0x009080DFL)
428
+ // && (OPENSSL_VERSION_NUMBER != 0x00909000L)
429
+ return ec;
430
+ }
431
+
432
+ void context::set_options(context::options o)
433
+ {
434
+ boost::system::error_code ec;
435
+ set_options(o, ec);
436
+ boost::asio::detail::throw_error(ec, "set_options");
437
+ }
438
+
439
+ boost::system::error_code context::set_options(
440
+ context::options o, boost::system::error_code& ec)
441
+ {
442
+ #if !defined(SSL_OP_NO_COMPRESSION)
443
+ if ((o & context::no_compression) != 0)
444
+ {
445
+ #if (OPENSSL_VERSION_NUMBER >= 0x00908000L)
446
+ handle_->comp_methods =
447
+ boost::asio::ssl::detail::openssl_init<>::get_null_compression_methods();
448
+ #endif // (OPENSSL_VERSION_NUMBER >= 0x00908000L)
449
+ o ^= context::no_compression;
450
+ }
451
+ #endif // !defined(SSL_OP_NO_COMPRESSION)
452
+
453
+ ::SSL_CTX_set_options(handle_, o);
454
+
455
+ ec = boost::system::error_code();
456
+ return ec;
457
+ }
458
+
459
+ void context::set_verify_mode(verify_mode v)
460
+ {
461
+ boost::system::error_code ec;
462
+ set_verify_mode(v, ec);
463
+ boost::asio::detail::throw_error(ec, "set_verify_mode");
464
+ }
465
+
466
+ boost::system::error_code context::set_verify_mode(
467
+ verify_mode v, boost::system::error_code& ec)
468
+ {
469
+ ::SSL_CTX_set_verify(handle_, v, ::SSL_CTX_get_verify_callback(handle_));
470
+
471
+ ec = boost::system::error_code();
472
+ return ec;
473
+ }
474
+
475
+ void context::set_verify_depth(int depth)
476
+ {
477
+ boost::system::error_code ec;
478
+ set_verify_depth(depth, ec);
479
+ boost::asio::detail::throw_error(ec, "set_verify_depth");
480
+ }
481
+
482
+ boost::system::error_code context::set_verify_depth(
483
+ int depth, boost::system::error_code& ec)
484
+ {
485
+ ::SSL_CTX_set_verify_depth(handle_, depth);
486
+
487
+ ec = boost::system::error_code();
488
+ return ec;
489
+ }
490
+
491
+ void context::load_verify_file(const std::string& filename)
492
+ {
493
+ boost::system::error_code ec;
494
+ load_verify_file(filename, ec);
495
+ boost::asio::detail::throw_error(ec, "load_verify_file");
496
+ }
497
+
498
+ boost::system::error_code context::load_verify_file(
499
+ const std::string& filename, boost::system::error_code& ec)
500
+ {
501
+ ::ERR_clear_error();
502
+
503
+ if (::SSL_CTX_load_verify_locations(handle_, filename.c_str(), 0) != 1)
504
+ {
505
+ ec = boost::system::error_code(
506
+ static_cast<int>(::ERR_get_error()),
507
+ boost::asio::error::get_ssl_category());
508
+ return ec;
509
+ }
510
+
511
+ ec = boost::system::error_code();
512
+ return ec;
513
+ }
514
+
515
+ void context::add_certificate_authority(const const_buffer& ca)
516
+ {
517
+ boost::system::error_code ec;
518
+ add_certificate_authority(ca, ec);
519
+ boost::asio::detail::throw_error(ec, "add_certificate_authority");
520
+ }
521
+
522
+ boost::system::error_code context::add_certificate_authority(
523
+ const const_buffer& ca, boost::system::error_code& ec)
524
+ {
525
+ ::ERR_clear_error();
526
+
527
+ bio_cleanup bio = { make_buffer_bio(ca) };
528
+ if (bio.p)
529
+ {
530
+ x509_cleanup cert = { ::PEM_read_bio_X509(bio.p, 0, 0, 0) };
531
+ if (cert.p)
532
+ {
533
+ if (X509_STORE* store = ::SSL_CTX_get_cert_store(handle_))
534
+ {
535
+ if (::X509_STORE_add_cert(store, cert.p) == 1)
536
+ {
537
+ ec = boost::system::error_code();
538
+ return ec;
539
+ }
540
+ }
541
+ }
542
+ }
543
+
544
+ ec = boost::system::error_code(
545
+ static_cast<int>(::ERR_get_error()),
546
+ boost::asio::error::get_ssl_category());
547
+ return ec;
548
+ }
549
+
550
+ void context::set_default_verify_paths()
551
+ {
552
+ boost::system::error_code ec;
553
+ set_default_verify_paths(ec);
554
+ boost::asio::detail::throw_error(ec, "set_default_verify_paths");
555
+ }
556
+
557
+ boost::system::error_code context::set_default_verify_paths(
558
+ boost::system::error_code& ec)
559
+ {
560
+ ::ERR_clear_error();
561
+
562
+ if (::SSL_CTX_set_default_verify_paths(handle_) != 1)
563
+ {
564
+ ec = boost::system::error_code(
565
+ static_cast<int>(::ERR_get_error()),
566
+ boost::asio::error::get_ssl_category());
567
+ return ec;
568
+ }
569
+
570
+ ec = boost::system::error_code();
571
+ return ec;
572
+ }
573
+
574
+ void context::add_verify_path(const std::string& path)
575
+ {
576
+ boost::system::error_code ec;
577
+ add_verify_path(path, ec);
578
+ boost::asio::detail::throw_error(ec, "add_verify_path");
579
+ }
580
+
581
+ boost::system::error_code context::add_verify_path(
582
+ const std::string& path, boost::system::error_code& ec)
583
+ {
584
+ ::ERR_clear_error();
585
+
586
+ if (::SSL_CTX_load_verify_locations(handle_, 0, path.c_str()) != 1)
587
+ {
588
+ ec = boost::system::error_code(
589
+ static_cast<int>(::ERR_get_error()),
590
+ boost::asio::error::get_ssl_category());
591
+ return ec;
592
+ }
593
+
594
+ ec = boost::system::error_code();
595
+ return ec;
596
+ }
597
+
598
+ void context::use_certificate(
599
+ const const_buffer& certificate, file_format format)
600
+ {
601
+ boost::system::error_code ec;
602
+ use_certificate(certificate, format, ec);
603
+ boost::asio::detail::throw_error(ec, "use_certificate");
604
+ }
605
+
606
+ boost::system::error_code context::use_certificate(
607
+ const const_buffer& certificate, file_format format,
608
+ boost::system::error_code& ec)
609
+ {
610
+ ::ERR_clear_error();
611
+
612
+ if (format == context_base::asn1)
613
+ {
614
+ if (::SSL_CTX_use_certificate_ASN1(handle_,
615
+ static_cast<int>(buffer_size(certificate)),
616
+ buffer_cast<const unsigned char*>(certificate)) == 1)
617
+ {
618
+ ec = boost::system::error_code();
619
+ return ec;
620
+ }
621
+ }
622
+ else if (format == context_base::pem)
623
+ {
624
+ bio_cleanup bio = { make_buffer_bio(certificate) };
625
+ if (bio.p)
626
+ {
627
+ x509_cleanup cert = { ::PEM_read_bio_X509(bio.p, 0, 0, 0) };
628
+ if (cert.p)
629
+ {
630
+ if (::SSL_CTX_use_certificate(handle_, cert.p) == 1)
631
+ {
632
+ ec = boost::system::error_code();
633
+ return ec;
634
+ }
635
+ }
636
+ }
637
+ }
638
+ else
639
+ {
640
+ ec = boost::asio::error::invalid_argument;
641
+ return ec;
642
+ }
643
+
644
+ ec = boost::system::error_code(
645
+ static_cast<int>(::ERR_get_error()),
646
+ boost::asio::error::get_ssl_category());
647
+ return ec;
648
+ }
649
+
650
+ void context::use_certificate_file(
651
+ const std::string& filename, file_format format)
652
+ {
653
+ boost::system::error_code ec;
654
+ use_certificate_file(filename, format, ec);
655
+ boost::asio::detail::throw_error(ec, "use_certificate_file");
656
+ }
657
+
658
+ boost::system::error_code context::use_certificate_file(
659
+ const std::string& filename, file_format format,
660
+ boost::system::error_code& ec)
661
+ {
662
+ int file_type;
663
+ switch (format)
664
+ {
665
+ case context_base::asn1:
666
+ file_type = SSL_FILETYPE_ASN1;
667
+ break;
668
+ case context_base::pem:
669
+ file_type = SSL_FILETYPE_PEM;
670
+ break;
671
+ default:
672
+ {
673
+ ec = boost::asio::error::invalid_argument;
674
+ return ec;
675
+ }
676
+ }
677
+
678
+ ::ERR_clear_error();
679
+
680
+ if (::SSL_CTX_use_certificate_file(handle_, filename.c_str(), file_type) != 1)
681
+ {
682
+ ec = boost::system::error_code(
683
+ static_cast<int>(::ERR_get_error()),
684
+ boost::asio::error::get_ssl_category());
685
+ return ec;
686
+ }
687
+
688
+ ec = boost::system::error_code();
689
+ return ec;
690
+ }
691
+
692
+ void context::use_certificate_chain(const const_buffer& chain)
693
+ {
694
+ boost::system::error_code ec;
695
+ use_certificate_chain(chain, ec);
696
+ boost::asio::detail::throw_error(ec, "use_certificate_chain");
697
+ }
698
+
699
+ boost::system::error_code context::use_certificate_chain(
700
+ const const_buffer& chain, boost::system::error_code& ec)
701
+ {
702
+ ::ERR_clear_error();
703
+
704
+ bio_cleanup bio = { make_buffer_bio(chain) };
705
+ if (bio.p)
706
+ {
707
+ #if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER)
708
+ pem_password_cb* callback = ::SSL_CTX_get_default_passwd_cb(handle_);
709
+ void* cb_userdata = ::SSL_CTX_get_default_passwd_cb_userdata(handle_);
710
+ #else // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
711
+ pem_password_cb* callback = handle_->default_passwd_callback;
712
+ void* cb_userdata = handle_->default_passwd_callback_userdata;
713
+ #endif // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
714
+ x509_cleanup cert = {
715
+ ::PEM_read_bio_X509_AUX(bio.p, 0,
716
+ callback,
717
+ cb_userdata) };
718
+ if (!cert.p)
719
+ {
720
+ ec = boost::system::error_code(ERR_R_PEM_LIB,
721
+ boost::asio::error::get_ssl_category());
722
+ return ec;
723
+ }
724
+
725
+ int result = ::SSL_CTX_use_certificate(handle_, cert.p);
726
+ if (result == 0 || ::ERR_peek_error() != 0)
727
+ {
728
+ ec = boost::system::error_code(
729
+ static_cast<int>(::ERR_get_error()),
730
+ boost::asio::error::get_ssl_category());
731
+ return ec;
732
+ }
733
+
734
+ #if (OPENSSL_VERSION_NUMBER >= 0x10002000L) && !defined(LIBRESSL_VERSION_NUMBER)
735
+ ::SSL_CTX_clear_chain_certs(handle_);
736
+ #else
737
+ if (handle_->extra_certs)
738
+ {
739
+ ::sk_X509_pop_free(handle_->extra_certs, X509_free);
740
+ handle_->extra_certs = 0;
741
+ }
742
+ #endif // (OPENSSL_VERSION_NUMBER >= 0x10002000L)
743
+
744
+ while (X509* cacert = ::PEM_read_bio_X509(bio.p, 0,
745
+ callback,
746
+ cb_userdata))
747
+ {
748
+ if (!::SSL_CTX_add_extra_chain_cert(handle_, cacert))
749
+ {
750
+ ec = boost::system::error_code(
751
+ static_cast<int>(::ERR_get_error()),
752
+ boost::asio::error::get_ssl_category());
753
+ return ec;
754
+ }
755
+ }
756
+
757
+ result = ::ERR_peek_last_error();
758
+ if ((ERR_GET_LIB(result) == ERR_LIB_PEM)
759
+ && (ERR_GET_REASON(result) == PEM_R_NO_START_LINE))
760
+ {
761
+ ::ERR_clear_error();
762
+ ec = boost::system::error_code();
763
+ return ec;
764
+ }
765
+ }
766
+
767
+ ec = boost::system::error_code(
768
+ static_cast<int>(::ERR_get_error()),
769
+ boost::asio::error::get_ssl_category());
770
+ return ec;
771
+ }
772
+
773
+ void context::use_certificate_chain_file(const std::string& filename)
774
+ {
775
+ boost::system::error_code ec;
776
+ use_certificate_chain_file(filename, ec);
777
+ boost::asio::detail::throw_error(ec, "use_certificate_chain_file");
778
+ }
779
+
780
+ boost::system::error_code context::use_certificate_chain_file(
781
+ const std::string& filename, boost::system::error_code& ec)
782
+ {
783
+ ::ERR_clear_error();
784
+
785
+ if (::SSL_CTX_use_certificate_chain_file(handle_, filename.c_str()) != 1)
786
+ {
787
+ ec = boost::system::error_code(
788
+ static_cast<int>(::ERR_get_error()),
789
+ boost::asio::error::get_ssl_category());
790
+ return ec;
791
+ }
792
+
793
+ ec = boost::system::error_code();
794
+ return ec;
795
+ }
796
+
797
+ void context::use_private_key(
798
+ const const_buffer& private_key, context::file_format format)
799
+ {
800
+ boost::system::error_code ec;
801
+ use_private_key(private_key, format, ec);
802
+ boost::asio::detail::throw_error(ec, "use_private_key");
803
+ }
804
+
805
+ boost::system::error_code context::use_private_key(
806
+ const const_buffer& private_key, context::file_format format,
807
+ boost::system::error_code& ec)
808
+ {
809
+ ::ERR_clear_error();
810
+
811
+ #if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER)
812
+ pem_password_cb* callback = ::SSL_CTX_get_default_passwd_cb(handle_);
813
+ void* cb_userdata = ::SSL_CTX_get_default_passwd_cb_userdata(handle_);
814
+ #else // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
815
+ pem_password_cb* callback = handle_->default_passwd_callback;
816
+ void* cb_userdata = handle_->default_passwd_callback_userdata;
817
+ #endif // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
818
+
819
+ bio_cleanup bio = { make_buffer_bio(private_key) };
820
+ if (bio.p)
821
+ {
822
+ evp_pkey_cleanup evp_private_key = { 0 };
823
+ switch (format)
824
+ {
825
+ case context_base::asn1:
826
+ evp_private_key.p = ::d2i_PrivateKey_bio(bio.p, 0);
827
+ break;
828
+ case context_base::pem:
829
+ evp_private_key.p = ::PEM_read_bio_PrivateKey(
830
+ bio.p, 0, callback,
831
+ cb_userdata);
832
+ break;
833
+ default:
834
+ {
835
+ ec = boost::asio::error::invalid_argument;
836
+ return ec;
837
+ }
838
+ }
839
+
840
+ if (evp_private_key.p)
841
+ {
842
+ if (::SSL_CTX_use_PrivateKey(handle_, evp_private_key.p) == 1)
843
+ {
844
+ ec = boost::system::error_code();
845
+ return ec;
846
+ }
847
+ }
848
+ }
849
+
850
+ ec = boost::system::error_code(
851
+ static_cast<int>(::ERR_get_error()),
852
+ boost::asio::error::get_ssl_category());
853
+ return ec;
854
+ }
855
+
856
+ void context::use_private_key_file(
857
+ const std::string& filename, context::file_format format)
858
+ {
859
+ boost::system::error_code ec;
860
+ use_private_key_file(filename, format, ec);
861
+ boost::asio::detail::throw_error(ec, "use_private_key_file");
862
+ }
863
+
864
+ void context::use_rsa_private_key(
865
+ const const_buffer& private_key, context::file_format format)
866
+ {
867
+ boost::system::error_code ec;
868
+ use_rsa_private_key(private_key, format, ec);
869
+ boost::asio::detail::throw_error(ec, "use_rsa_private_key");
870
+ }
871
+
872
+ boost::system::error_code context::use_rsa_private_key(
873
+ const const_buffer& private_key, context::file_format format,
874
+ boost::system::error_code& ec)
875
+ {
876
+ ::ERR_clear_error();
877
+
878
+ #if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER)
879
+ pem_password_cb* callback = ::SSL_CTX_get_default_passwd_cb(handle_);
880
+ void* cb_userdata = ::SSL_CTX_get_default_passwd_cb_userdata(handle_);
881
+ #else // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
882
+ pem_password_cb* callback = handle_->default_passwd_callback;
883
+ void* cb_userdata = handle_->default_passwd_callback_userdata;
884
+ #endif // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
885
+
886
+ bio_cleanup bio = { make_buffer_bio(private_key) };
887
+ if (bio.p)
888
+ {
889
+ rsa_cleanup rsa_private_key = { 0 };
890
+ switch (format)
891
+ {
892
+ case context_base::asn1:
893
+ rsa_private_key.p = ::d2i_RSAPrivateKey_bio(bio.p, 0);
894
+ break;
895
+ case context_base::pem:
896
+ rsa_private_key.p = ::PEM_read_bio_RSAPrivateKey(
897
+ bio.p, 0, callback,
898
+ cb_userdata);
899
+ break;
900
+ default:
901
+ {
902
+ ec = boost::asio::error::invalid_argument;
903
+ return ec;
904
+ }
905
+ }
906
+
907
+ if (rsa_private_key.p)
908
+ {
909
+ if (::SSL_CTX_use_RSAPrivateKey(handle_, rsa_private_key.p) == 1)
910
+ {
911
+ ec = boost::system::error_code();
912
+ return ec;
913
+ }
914
+ }
915
+ }
916
+
917
+ ec = boost::system::error_code(
918
+ static_cast<int>(::ERR_get_error()),
919
+ boost::asio::error::get_ssl_category());
920
+ return ec;
921
+ }
922
+
923
+ boost::system::error_code context::use_private_key_file(
924
+ const std::string& filename, context::file_format format,
925
+ boost::system::error_code& ec)
926
+ {
927
+ int file_type;
928
+ switch (format)
929
+ {
930
+ case context_base::asn1:
931
+ file_type = SSL_FILETYPE_ASN1;
932
+ break;
933
+ case context_base::pem:
934
+ file_type = SSL_FILETYPE_PEM;
935
+ break;
936
+ default:
937
+ {
938
+ ec = boost::asio::error::invalid_argument;
939
+ return ec;
940
+ }
941
+ }
942
+
943
+ ::ERR_clear_error();
944
+
945
+ if (::SSL_CTX_use_PrivateKey_file(handle_, filename.c_str(), file_type) != 1)
946
+ {
947
+ ec = boost::system::error_code(
948
+ static_cast<int>(::ERR_get_error()),
949
+ boost::asio::error::get_ssl_category());
950
+ return ec;
951
+ }
952
+
953
+ ec = boost::system::error_code();
954
+ return ec;
955
+ }
956
+
957
+ void context::use_rsa_private_key_file(
958
+ const std::string& filename, context::file_format format)
959
+ {
960
+ boost::system::error_code ec;
961
+ use_rsa_private_key_file(filename, format, ec);
962
+ boost::asio::detail::throw_error(ec, "use_rsa_private_key_file");
963
+ }
964
+
965
+ boost::system::error_code context::use_rsa_private_key_file(
966
+ const std::string& filename, context::file_format format,
967
+ boost::system::error_code& ec)
968
+ {
969
+ int file_type;
970
+ switch (format)
971
+ {
972
+ case context_base::asn1:
973
+ file_type = SSL_FILETYPE_ASN1;
974
+ break;
975
+ case context_base::pem:
976
+ file_type = SSL_FILETYPE_PEM;
977
+ break;
978
+ default:
979
+ {
980
+ ec = boost::asio::error::invalid_argument;
981
+ return ec;
982
+ }
983
+ }
984
+
985
+ ::ERR_clear_error();
986
+
987
+ if (::SSL_CTX_use_RSAPrivateKey_file(
988
+ handle_, filename.c_str(), file_type) != 1)
989
+ {
990
+ ec = boost::system::error_code(
991
+ static_cast<int>(::ERR_get_error()),
992
+ boost::asio::error::get_ssl_category());
993
+ return ec;
994
+ }
995
+
996
+ ec = boost::system::error_code();
997
+ return ec;
998
+ }
999
+
1000
+ void context::use_tmp_dh(const const_buffer& dh)
1001
+ {
1002
+ boost::system::error_code ec;
1003
+ use_tmp_dh(dh, ec);
1004
+ boost::asio::detail::throw_error(ec, "use_tmp_dh");
1005
+ }
1006
+
1007
+ boost::system::error_code context::use_tmp_dh(
1008
+ const const_buffer& dh, boost::system::error_code& ec)
1009
+ {
1010
+ ::ERR_clear_error();
1011
+
1012
+ bio_cleanup bio = { make_buffer_bio(dh) };
1013
+ if (bio.p)
1014
+ {
1015
+ return do_use_tmp_dh(bio.p, ec);
1016
+ }
1017
+
1018
+ ec = boost::system::error_code(
1019
+ static_cast<int>(::ERR_get_error()),
1020
+ boost::asio::error::get_ssl_category());
1021
+ return ec;
1022
+ }
1023
+
1024
+ void context::use_tmp_dh_file(const std::string& filename)
1025
+ {
1026
+ boost::system::error_code ec;
1027
+ use_tmp_dh_file(filename, ec);
1028
+ boost::asio::detail::throw_error(ec, "use_tmp_dh_file");
1029
+ }
1030
+
1031
+ boost::system::error_code context::use_tmp_dh_file(
1032
+ const std::string& filename, boost::system::error_code& ec)
1033
+ {
1034
+ ::ERR_clear_error();
1035
+
1036
+ bio_cleanup bio = { ::BIO_new_file(filename.c_str(), "r") };
1037
+ if (bio.p)
1038
+ {
1039
+ return do_use_tmp_dh(bio.p, ec);
1040
+ }
1041
+
1042
+ ec = boost::system::error_code(
1043
+ static_cast<int>(::ERR_get_error()),
1044
+ boost::asio::error::get_ssl_category());
1045
+ return ec;
1046
+ }
1047
+
1048
+ boost::system::error_code context::do_use_tmp_dh(
1049
+ BIO* bio, boost::system::error_code& ec)
1050
+ {
1051
+ ::ERR_clear_error();
1052
+
1053
+ dh_cleanup dh = { ::PEM_read_bio_DHparams(bio, 0, 0, 0) };
1054
+ if (dh.p)
1055
+ {
1056
+ if (::SSL_CTX_set_tmp_dh(handle_, dh.p) == 1)
1057
+ {
1058
+ ec = boost::system::error_code();
1059
+ return ec;
1060
+ }
1061
+ }
1062
+
1063
+ ec = boost::system::error_code(
1064
+ static_cast<int>(::ERR_get_error()),
1065
+ boost::asio::error::get_ssl_category());
1066
+ return ec;
1067
+ }
1068
+
1069
+ boost::system::error_code context::do_set_verify_callback(
1070
+ detail::verify_callback_base* callback, boost::system::error_code& ec)
1071
+ {
1072
+ if (SSL_CTX_get_app_data(handle_))
1073
+ {
1074
+ delete static_cast<detail::verify_callback_base*>(
1075
+ SSL_CTX_get_app_data(handle_));
1076
+ }
1077
+
1078
+ SSL_CTX_set_app_data(handle_, callback);
1079
+
1080
+ ::SSL_CTX_set_verify(handle_,
1081
+ ::SSL_CTX_get_verify_mode(handle_),
1082
+ &context::verify_callback_function);
1083
+
1084
+ ec = boost::system::error_code();
1085
+ return ec;
1086
+ }
1087
+
1088
+ int context::verify_callback_function(int preverified, X509_STORE_CTX* ctx)
1089
+ {
1090
+ if (ctx)
1091
+ {
1092
+ if (SSL* ssl = static_cast<SSL*>(
1093
+ ::X509_STORE_CTX_get_ex_data(
1094
+ ctx, ::SSL_get_ex_data_X509_STORE_CTX_idx())))
1095
+ {
1096
+ if (SSL_CTX* handle = ::SSL_get_SSL_CTX(ssl))
1097
+ {
1098
+ if (SSL_CTX_get_app_data(handle))
1099
+ {
1100
+ detail::verify_callback_base* callback =
1101
+ static_cast<detail::verify_callback_base*>(
1102
+ SSL_CTX_get_app_data(handle));
1103
+
1104
+ verify_context verify_ctx(ctx);
1105
+ return callback->call(preverified != 0, verify_ctx) ? 1 : 0;
1106
+ }
1107
+ }
1108
+ }
1109
+ }
1110
+
1111
+ return 0;
1112
+ }
1113
+
1114
+ boost::system::error_code context::do_set_password_callback(
1115
+ detail::password_callback_base* callback, boost::system::error_code& ec)
1116
+ {
1117
+ #if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER)
1118
+ void* old_callback = ::SSL_CTX_get_default_passwd_cb_userdata(handle_);
1119
+ ::SSL_CTX_set_default_passwd_cb_userdata(handle_, callback);
1120
+ #else // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
1121
+ void* old_callback = handle_->default_passwd_callback_userdata;
1122
+ handle_->default_passwd_callback_userdata = callback;
1123
+ #endif // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
1124
+
1125
+ if (old_callback)
1126
+ delete static_cast<detail::password_callback_base*>(
1127
+ old_callback);
1128
+
1129
+ SSL_CTX_set_default_passwd_cb(handle_, &context::password_callback_function);
1130
+
1131
+ ec = boost::system::error_code();
1132
+ return ec;
1133
+ }
1134
+
1135
+ int context::password_callback_function(
1136
+ char* buf, int size, int purpose, void* data)
1137
+ {
1138
+ using namespace std; // For strncat and strlen.
1139
+
1140
+ if (data)
1141
+ {
1142
+ detail::password_callback_base* callback =
1143
+ static_cast<detail::password_callback_base*>(data);
1144
+
1145
+ std::string passwd = callback->call(static_cast<std::size_t>(size),
1146
+ purpose ? context_base::for_writing : context_base::for_reading);
1147
+
1148
+ #if defined(BOOST_ASIO_HAS_SECURE_RTL)
1149
+ strcpy_s(buf, size, passwd.c_str());
1150
+ #else // defined(BOOST_ASIO_HAS_SECURE_RTL)
1151
+ *buf = '\0';
1152
+ if (size > 0)
1153
+ strncat(buf, passwd.c_str(), size - 1);
1154
+ #endif // defined(BOOST_ASIO_HAS_SECURE_RTL)
1155
+
1156
+ return static_cast<int>(strlen(buf));
1157
+ }
1158
+
1159
+ return 0;
1160
+ }
1161
+
1162
+ BIO* context::make_buffer_bio(const const_buffer& b)
1163
+ {
1164
+ return ::BIO_new_mem_buf(
1165
+ const_cast<void*>(buffer_cast<const void*>(b)),
1166
+ static_cast<int>(buffer_size(b)));
1167
+ }
1168
+
1169
+ #endif // !defined(BOOST_ASIO_ENABLE_OLD_SSL)
1170
+
1171
+ } // namespace ssl
1172
+ } // namespace asio
1173
+ } // namespace boost
1174
+
1175
+ #include <boost/asio/detail/pop_options.hpp>
1176
+
1177
+ #endif // BOOST_ASIO_SSL_IMPL_CONTEXT_IPP