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,267 @@
1
+ //
2
+ // spawn.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_SPAWN_HPP
12
+ #define BOOST_ASIO_SPAWN_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/coroutine/all.hpp>
20
+ #include <boost/asio/detail/weak_ptr.hpp>
21
+ #include <boost/asio/detail/wrapped_handler.hpp>
22
+ #include <boost/asio/io_service.hpp>
23
+ #include <boost/asio/strand.hpp>
24
+
25
+ #include <boost/asio/detail/push_options.hpp>
26
+
27
+ namespace boost {
28
+ namespace asio {
29
+
30
+ /// Context object the represents the currently executing coroutine.
31
+ /**
32
+ * The basic_yield_context class is used to represent the currently executing
33
+ * stackful coroutine. A basic_yield_context may be passed as a handler to an
34
+ * asynchronous operation. For example:
35
+ *
36
+ * @code template <typename Handler>
37
+ * void my_coroutine(basic_yield_context<Handler> yield)
38
+ * {
39
+ * ...
40
+ * std::size_t n = my_socket.async_read_some(buffer, yield);
41
+ * ...
42
+ * } @endcode
43
+ *
44
+ * The initiating function (async_read_some in the above example) suspends the
45
+ * current coroutine. The coroutine is resumed when the asynchronous operation
46
+ * completes, and the result of the operation is returned.
47
+ */
48
+ template <typename Handler>
49
+ class basic_yield_context
50
+ {
51
+ public:
52
+ /// The coroutine callee type, used by the implementation.
53
+ /**
54
+ * When using Boost.Coroutine v1, this type is:
55
+ * @code typename coroutine<void()> @endcode
56
+ * When using Boost.Coroutine v2 (unidirectional coroutines), this type is:
57
+ * @code push_coroutine<void> @endcode
58
+ */
59
+ #if defined(GENERATING_DOCUMENTATION)
60
+ typedef implementation_defined callee_type;
61
+ #elif defined(BOOST_COROUTINES_UNIDIRECT) || defined(BOOST_COROUTINES_V2)
62
+ typedef boost::coroutines::push_coroutine<void> callee_type;
63
+ #else
64
+ typedef boost::coroutines::coroutine<void()> callee_type;
65
+ #endif
66
+
67
+ /// The coroutine caller type, used by the implementation.
68
+ /**
69
+ * When using Boost.Coroutine v1, this type is:
70
+ * @code typename coroutine<void()>::caller_type @endcode
71
+ * When using Boost.Coroutine v2 (unidirectional coroutines), this type is:
72
+ * @code pull_coroutine<void> @endcode
73
+ */
74
+ #if defined(GENERATING_DOCUMENTATION)
75
+ typedef implementation_defined caller_type;
76
+ #elif defined(BOOST_COROUTINES_UNIDIRECT) || defined(BOOST_COROUTINES_V2)
77
+ typedef boost::coroutines::pull_coroutine<void> caller_type;
78
+ #else
79
+ typedef boost::coroutines::coroutine<void()>::caller_type caller_type;
80
+ #endif
81
+
82
+ /// Construct a yield context to represent the specified coroutine.
83
+ /**
84
+ * Most applications do not need to use this constructor. Instead, the
85
+ * spawn() function passes a yield context as an argument to the coroutine
86
+ * function.
87
+ */
88
+ basic_yield_context(
89
+ const detail::weak_ptr<callee_type>& coro,
90
+ caller_type& ca, Handler& handler)
91
+ : coro_(coro),
92
+ ca_(ca),
93
+ handler_(handler),
94
+ ec_(0)
95
+ {
96
+ }
97
+
98
+ /// Return a yield context that sets the specified error_code.
99
+ /**
100
+ * By default, when a yield context is used with an asynchronous operation, a
101
+ * non-success error_code is converted to system_error and thrown. This
102
+ * operator may be used to specify an error_code object that should instead be
103
+ * set with the asynchronous operation's result. For example:
104
+ *
105
+ * @code template <typename Handler>
106
+ * void my_coroutine(basic_yield_context<Handler> yield)
107
+ * {
108
+ * ...
109
+ * std::size_t n = my_socket.async_read_some(buffer, yield[ec]);
110
+ * if (ec)
111
+ * {
112
+ * // An error occurred.
113
+ * }
114
+ * ...
115
+ * } @endcode
116
+ */
117
+ basic_yield_context operator[](boost::system::error_code& ec) const
118
+ {
119
+ basic_yield_context tmp(*this);
120
+ tmp.ec_ = &ec;
121
+ return tmp;
122
+ }
123
+
124
+ #if defined(GENERATING_DOCUMENTATION)
125
+ private:
126
+ #endif // defined(GENERATING_DOCUMENTATION)
127
+ detail::weak_ptr<callee_type> coro_;
128
+ caller_type& ca_;
129
+ Handler& handler_;
130
+ boost::system::error_code* ec_;
131
+ };
132
+
133
+ #if defined(GENERATING_DOCUMENTATION)
134
+ /// Context object that represents the currently executing coroutine.
135
+ typedef basic_yield_context<unspecified> yield_context;
136
+ #else // defined(GENERATING_DOCUMENTATION)
137
+ typedef basic_yield_context<
138
+ detail::wrapped_handler<
139
+ io_service::strand, void(*)(),
140
+ detail::is_continuation_if_running> > yield_context;
141
+ #endif // defined(GENERATING_DOCUMENTATION)
142
+
143
+ /**
144
+ * @defgroup spawn boost::asio::spawn
145
+ *
146
+ * @brief Start a new stackful coroutine.
147
+ *
148
+ * The spawn() function is a high-level wrapper over the Boost.Coroutine
149
+ * library. This function enables programs to implement asynchronous logic in a
150
+ * synchronous manner, as illustrated by the following example:
151
+ *
152
+ * @code boost::asio::spawn(my_strand, do_echo);
153
+ *
154
+ * // ...
155
+ *
156
+ * void do_echo(boost::asio::yield_context yield)
157
+ * {
158
+ * try
159
+ * {
160
+ * char data[128];
161
+ * for (;;)
162
+ * {
163
+ * std::size_t length =
164
+ * my_socket.async_read_some(
165
+ * boost::asio::buffer(data), yield);
166
+ *
167
+ * boost::asio::async_write(my_socket,
168
+ * boost::asio::buffer(data, length), yield);
169
+ * }
170
+ * }
171
+ * catch (std::exception& e)
172
+ * {
173
+ * // ...
174
+ * }
175
+ * } @endcode
176
+ */
177
+ /*@{*/
178
+
179
+ /// Start a new stackful coroutine, calling the specified handler when it
180
+ /// completes.
181
+ /**
182
+ * This function is used to launch a new coroutine.
183
+ *
184
+ * @param handler A handler to be called when the coroutine exits. More
185
+ * importantly, the handler provides an execution context (via the the handler
186
+ * invocation hook) for the coroutine. The handler must have the signature:
187
+ * @code void handler(); @endcode
188
+ *
189
+ * @param function The coroutine function. The function must have the signature:
190
+ * @code void function(basic_yield_context<Handler> yield); @endcode
191
+ *
192
+ * @param attributes Boost.Coroutine attributes used to customise the coroutine.
193
+ */
194
+ template <typename Handler, typename Function>
195
+ void spawn(BOOST_ASIO_MOVE_ARG(Handler) handler,
196
+ BOOST_ASIO_MOVE_ARG(Function) function,
197
+ const boost::coroutines::attributes& attributes
198
+ = boost::coroutines::attributes());
199
+
200
+ /// Start a new stackful coroutine, inheriting the execution context of another.
201
+ /**
202
+ * This function is used to launch a new coroutine.
203
+ *
204
+ * @param ctx Identifies the current coroutine as a parent of the new
205
+ * coroutine. This specifies that the new coroutine should inherit the
206
+ * execution context of the parent. For example, if the parent coroutine is
207
+ * executing in a particular strand, then the new coroutine will execute in the
208
+ * same strand.
209
+ *
210
+ * @param function The coroutine function. The function must have the signature:
211
+ * @code void function(basic_yield_context<Handler> yield); @endcode
212
+ *
213
+ * @param attributes Boost.Coroutine attributes used to customise the coroutine.
214
+ */
215
+ template <typename Handler, typename Function>
216
+ void spawn(basic_yield_context<Handler> ctx,
217
+ BOOST_ASIO_MOVE_ARG(Function) function,
218
+ const boost::coroutines::attributes& attributes
219
+ = boost::coroutines::attributes());
220
+
221
+ /// Start a new stackful coroutine that executes in the context of a strand.
222
+ /**
223
+ * This function is used to launch a new coroutine.
224
+ *
225
+ * @param strand Identifies a strand. By starting multiple coroutines on the
226
+ * same strand, the implementation ensures that none of those coroutines can
227
+ * execute simultaneously.
228
+ *
229
+ * @param function The coroutine function. The function must have the signature:
230
+ * @code void function(yield_context yield); @endcode
231
+ *
232
+ * @param attributes Boost.Coroutine attributes used to customise the coroutine.
233
+ */
234
+ template <typename Function>
235
+ void spawn(boost::asio::io_service::strand strand,
236
+ BOOST_ASIO_MOVE_ARG(Function) function,
237
+ const boost::coroutines::attributes& attributes
238
+ = boost::coroutines::attributes());
239
+
240
+ /// Start a new stackful coroutine that executes on a given io_service.
241
+ /**
242
+ * This function is used to launch a new coroutine.
243
+ *
244
+ * @param io_service Identifies the io_service that will run the coroutine. The
245
+ * new coroutine is implicitly given its own strand within this io_service.
246
+ *
247
+ * @param function The coroutine function. The function must have the signature:
248
+ * @code void function(yield_context yield); @endcode
249
+ *
250
+ * @param attributes Boost.Coroutine attributes used to customise the coroutine.
251
+ */
252
+ template <typename Function>
253
+ void spawn(boost::asio::io_service& io_service,
254
+ BOOST_ASIO_MOVE_ARG(Function) function,
255
+ const boost::coroutines::attributes& attributes
256
+ = boost::coroutines::attributes());
257
+
258
+ /*@}*/
259
+
260
+ } // namespace asio
261
+ } // namespace boost
262
+
263
+ #include <boost/asio/detail/pop_options.hpp>
264
+
265
+ #include <boost/asio/impl/spawn.hpp>
266
+
267
+ #endif // BOOST_ASIO_SPAWN_HPP
@@ -0,0 +1,30 @@
1
+ //
2
+ // ssl.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_HPP
12
+ #define BOOST_ASIO_SSL_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/ssl/basic_context.hpp>
19
+ #include <boost/asio/ssl/context.hpp>
20
+ #include <boost/asio/ssl/context_base.hpp>
21
+ #include <boost/asio/ssl/context_service.hpp>
22
+ #include <boost/asio/ssl/error.hpp>
23
+ #include <boost/asio/ssl/rfc2818_verification.hpp>
24
+ #include <boost/asio/ssl/stream.hpp>
25
+ #include <boost/asio/ssl/stream_base.hpp>
26
+ #include <boost/asio/ssl/stream_service.hpp>
27
+ #include <boost/asio/ssl/verify_context.hpp>
28
+ #include <boost/asio/ssl/verify_mode.hpp>
29
+
30
+ #endif // BOOST_ASIO_SSL_HPP
@@ -0,0 +1,42 @@
1
+ //
2
+ // ssl/basic_context.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_BASIC_CONTEXT_HPP
12
+ #define BOOST_ASIO_SSL_BASIC_CONTEXT_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
+
20
+ #if defined(BOOST_ASIO_ENABLE_OLD_SSL)
21
+ # include <boost/asio/ssl/old/basic_context.hpp>
22
+ #endif // defined(BOOST_ASIO_ENABLE_OLD_SSL)
23
+
24
+ #include <boost/asio/detail/push_options.hpp>
25
+
26
+ namespace boost {
27
+ namespace asio {
28
+ namespace ssl {
29
+
30
+ #if defined(BOOST_ASIO_ENABLE_OLD_SSL)
31
+
32
+ using boost::asio::ssl::old::basic_context;
33
+
34
+ #endif // defined(BOOST_ASIO_ENABLE_OLD_SSL)
35
+
36
+ } // namespace ssl
37
+ } // namespace asio
38
+ } // namespace boost
39
+
40
+ #include <boost/asio/detail/pop_options.hpp>
41
+
42
+ #endif // BOOST_ASIO_SSL_BASIC_CONTEXT_HPP
@@ -0,0 +1,789 @@
1
+ //
2
+ // ssl/context.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_CONTEXT_HPP
12
+ #define BOOST_ASIO_SSL_CONTEXT_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
+
20
+ #if defined(BOOST_ASIO_ENABLE_OLD_SSL)
21
+ # include <boost/asio/ssl/basic_context.hpp>
22
+ # include <boost/asio/ssl/context_service.hpp>
23
+ #else // defined(BOOST_ASIO_ENABLE_OLD_SSL)
24
+ # include <string>
25
+ # include <boost/asio/buffer.hpp>
26
+ # include <boost/asio/io_service.hpp>
27
+ # include <boost/asio/ssl/context_base.hpp>
28
+ # include <boost/asio/ssl/detail/openssl_types.hpp>
29
+ # include <boost/asio/ssl/detail/openssl_init.hpp>
30
+ # include <boost/asio/ssl/detail/password_callback.hpp>
31
+ # include <boost/asio/ssl/detail/verify_callback.hpp>
32
+ # include <boost/asio/ssl/verify_mode.hpp>
33
+ #endif // defined(BOOST_ASIO_ENABLE_OLD_SSL)
34
+
35
+ #include <boost/asio/detail/push_options.hpp>
36
+
37
+ namespace boost {
38
+ namespace asio {
39
+ namespace ssl {
40
+
41
+ #if defined(BOOST_ASIO_ENABLE_OLD_SSL)
42
+
43
+ /// Typedef for the typical usage of context.
44
+ typedef basic_context<context_service> context;
45
+
46
+ #else // defined(BOOST_ASIO_ENABLE_OLD_SSL)
47
+
48
+ class context
49
+ : public context_base,
50
+ private noncopyable
51
+ {
52
+ public:
53
+ /// The native handle type of the SSL context.
54
+ typedef SSL_CTX* native_handle_type;
55
+
56
+ /// (Deprecated: Use native_handle_type.) The native type of the SSL context.
57
+ typedef SSL_CTX* impl_type;
58
+
59
+ /// Constructor.
60
+ BOOST_ASIO_DECL explicit context(method m);
61
+
62
+ /// Deprecated constructor taking a reference to an io_service object.
63
+ BOOST_ASIO_DECL context(boost::asio::io_service&, method m);
64
+
65
+ #if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
66
+ /// Move-construct a context from another.
67
+ /**
68
+ * This constructor moves an SSL context from one object to another.
69
+ *
70
+ * @param other The other context object from which the move will occur.
71
+ *
72
+ * @note Following the move, the following operations only are valid for the
73
+ * moved-from object:
74
+ * @li Destruction.
75
+ * @li As a target for move-assignment.
76
+ */
77
+ BOOST_ASIO_DECL context(context&& other);
78
+
79
+ /// Move-assign a context from another.
80
+ /**
81
+ * This assignment operator moves an SSL context from one object to another.
82
+ *
83
+ * @param other The other context object from which the move will occur.
84
+ *
85
+ * @note Following the move, the following operations only are valid for the
86
+ * moved-from object:
87
+ * @li Destruction.
88
+ * @li As a target for move-assignment.
89
+ */
90
+ BOOST_ASIO_DECL context& operator=(context&& other);
91
+ #endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
92
+
93
+ /// Destructor.
94
+ BOOST_ASIO_DECL ~context();
95
+
96
+ /// Get the underlying implementation in the native type.
97
+ /**
98
+ * This function may be used to obtain the underlying implementation of the
99
+ * context. This is intended to allow access to context functionality that is
100
+ * not otherwise provided.
101
+ */
102
+ BOOST_ASIO_DECL native_handle_type native_handle();
103
+
104
+ /// (Deprecated: Use native_handle().) Get the underlying implementation in
105
+ /// the native type.
106
+ /**
107
+ * This function may be used to obtain the underlying implementation of the
108
+ * context. This is intended to allow access to context functionality that is
109
+ * not otherwise provided.
110
+ */
111
+ BOOST_ASIO_DECL impl_type impl();
112
+
113
+ /// Clear options on the context.
114
+ /**
115
+ * This function may be used to configure the SSL options used by the context.
116
+ *
117
+ * @param o A bitmask of options. The available option values are defined in
118
+ * the context_base class. The specified options, if currently enabled on the
119
+ * context, are cleared.
120
+ *
121
+ * @throws boost::system::system_error Thrown on failure.
122
+ *
123
+ * @note Calls @c SSL_CTX_clear_options.
124
+ */
125
+ BOOST_ASIO_DECL void clear_options(options o);
126
+
127
+ /// Clear options on the context.
128
+ /**
129
+ * This function may be used to configure the SSL options used by the context.
130
+ *
131
+ * @param o A bitmask of options. The available option values are defined in
132
+ * the context_base class. The specified options, if currently enabled on the
133
+ * context, are cleared.
134
+ *
135
+ * @param ec Set to indicate what error occurred, if any.
136
+ *
137
+ * @note Calls @c SSL_CTX_clear_options.
138
+ */
139
+ BOOST_ASIO_DECL boost::system::error_code clear_options(options o,
140
+ boost::system::error_code& ec);
141
+
142
+ /// Set options on the context.
143
+ /**
144
+ * This function may be used to configure the SSL options used by the context.
145
+ *
146
+ * @param o A bitmask of options. The available option values are defined in
147
+ * the context_base class. The options are bitwise-ored with any existing
148
+ * value for the options.
149
+ *
150
+ * @throws boost::system::system_error Thrown on failure.
151
+ *
152
+ * @note Calls @c SSL_CTX_set_options.
153
+ */
154
+ BOOST_ASIO_DECL void set_options(options o);
155
+
156
+ /// Set options on the context.
157
+ /**
158
+ * This function may be used to configure the SSL options used by the context.
159
+ *
160
+ * @param o A bitmask of options. The available option values are defined in
161
+ * the context_base class. The options are bitwise-ored with any existing
162
+ * value for the options.
163
+ *
164
+ * @param ec Set to indicate what error occurred, if any.
165
+ *
166
+ * @note Calls @c SSL_CTX_set_options.
167
+ */
168
+ BOOST_ASIO_DECL boost::system::error_code set_options(options o,
169
+ boost::system::error_code& ec);
170
+
171
+ /// Set the peer verification mode.
172
+ /**
173
+ * This function may be used to configure the peer verification mode used by
174
+ * the context.
175
+ *
176
+ * @param v A bitmask of peer verification modes. See @ref verify_mode for
177
+ * available values.
178
+ *
179
+ * @throws boost::system::system_error Thrown on failure.
180
+ *
181
+ * @note Calls @c SSL_CTX_set_verify.
182
+ */
183
+ BOOST_ASIO_DECL void set_verify_mode(verify_mode v);
184
+
185
+ /// Set the peer verification mode.
186
+ /**
187
+ * This function may be used to configure the peer verification mode used by
188
+ * the context.
189
+ *
190
+ * @param v A bitmask of peer verification modes. See @ref verify_mode for
191
+ * available values.
192
+ *
193
+ * @param ec Set to indicate what error occurred, if any.
194
+ *
195
+ * @note Calls @c SSL_CTX_set_verify.
196
+ */
197
+ BOOST_ASIO_DECL boost::system::error_code set_verify_mode(
198
+ verify_mode v, boost::system::error_code& ec);
199
+
200
+ /// Set the peer verification depth.
201
+ /**
202
+ * This function may be used to configure the maximum verification depth
203
+ * allowed by the context.
204
+ *
205
+ * @param depth Maximum depth for the certificate chain verification that
206
+ * shall be allowed.
207
+ *
208
+ * @throws boost::system::system_error Thrown on failure.
209
+ *
210
+ * @note Calls @c SSL_CTX_set_verify_depth.
211
+ */
212
+ BOOST_ASIO_DECL void set_verify_depth(int depth);
213
+
214
+ /// Set the peer verification depth.
215
+ /**
216
+ * This function may be used to configure the maximum verification depth
217
+ * allowed by the context.
218
+ *
219
+ * @param depth Maximum depth for the certificate chain verification that
220
+ * shall be allowed.
221
+ *
222
+ * @param ec Set to indicate what error occurred, if any.
223
+ *
224
+ * @note Calls @c SSL_CTX_set_verify_depth.
225
+ */
226
+ BOOST_ASIO_DECL boost::system::error_code set_verify_depth(
227
+ int depth, boost::system::error_code& ec);
228
+
229
+ /// Set the callback used to verify peer certificates.
230
+ /**
231
+ * This function is used to specify a callback function that will be called
232
+ * by the implementation when it needs to verify a peer certificate.
233
+ *
234
+ * @param callback The function object to be used for verifying a certificate.
235
+ * The function signature of the handler must be:
236
+ * @code bool verify_callback(
237
+ * bool preverified, // True if the certificate passed pre-verification.
238
+ * verify_context& ctx // The peer certificate and other context.
239
+ * ); @endcode
240
+ * The return value of the callback is true if the certificate has passed
241
+ * verification, false otherwise.
242
+ *
243
+ * @throws boost::system::system_error Thrown on failure.
244
+ *
245
+ * @note Calls @c SSL_CTX_set_verify.
246
+ */
247
+ template <typename VerifyCallback>
248
+ void set_verify_callback(VerifyCallback callback);
249
+
250
+ /// Set the callback used to verify peer certificates.
251
+ /**
252
+ * This function is used to specify a callback function that will be called
253
+ * by the implementation when it needs to verify a peer certificate.
254
+ *
255
+ * @param callback The function object to be used for verifying a certificate.
256
+ * The function signature of the handler must be:
257
+ * @code bool verify_callback(
258
+ * bool preverified, // True if the certificate passed pre-verification.
259
+ * verify_context& ctx // The peer certificate and other context.
260
+ * ); @endcode
261
+ * The return value of the callback is true if the certificate has passed
262
+ * verification, false otherwise.
263
+ *
264
+ * @param ec Set to indicate what error occurred, if any.
265
+ *
266
+ * @note Calls @c SSL_CTX_set_verify.
267
+ */
268
+ template <typename VerifyCallback>
269
+ boost::system::error_code set_verify_callback(VerifyCallback callback,
270
+ boost::system::error_code& ec);
271
+
272
+ /// Load a certification authority file for performing verification.
273
+ /**
274
+ * This function is used to load one or more trusted certification authorities
275
+ * from a file.
276
+ *
277
+ * @param filename The name of a file containing certification authority
278
+ * certificates in PEM format.
279
+ *
280
+ * @throws boost::system::system_error Thrown on failure.
281
+ *
282
+ * @note Calls @c SSL_CTX_load_verify_locations.
283
+ */
284
+ BOOST_ASIO_DECL void load_verify_file(const std::string& filename);
285
+
286
+ /// Load a certification authority file for performing verification.
287
+ /**
288
+ * This function is used to load the certificates for one or more trusted
289
+ * certification authorities from a file.
290
+ *
291
+ * @param filename The name of a file containing certification authority
292
+ * certificates in PEM format.
293
+ *
294
+ * @param ec Set to indicate what error occurred, if any.
295
+ *
296
+ * @note Calls @c SSL_CTX_load_verify_locations.
297
+ */
298
+ BOOST_ASIO_DECL boost::system::error_code load_verify_file(
299
+ const std::string& filename, boost::system::error_code& ec);
300
+
301
+ /// Add certification authority for performing verification.
302
+ /**
303
+ * This function is used to add one trusted certification authority
304
+ * from a memory buffer.
305
+ *
306
+ * @param ca The buffer containing the certification authority certificate.
307
+ * The certificate must use the PEM format.
308
+ *
309
+ * @throws boost::system::system_error Thrown on failure.
310
+ *
311
+ * @note Calls @c SSL_CTX_get_cert_store and @c X509_STORE_add_cert.
312
+ */
313
+ BOOST_ASIO_DECL void add_certificate_authority(const const_buffer& ca);
314
+
315
+ /// Add certification authority for performing verification.
316
+ /**
317
+ * This function is used to add one trusted certification authority
318
+ * from a memory buffer.
319
+ *
320
+ * @param ca The buffer containing the certification authority certificate.
321
+ * The certificate must use the PEM format.
322
+ *
323
+ * @param ec Set to indicate what error occurred, if any.
324
+ *
325
+ * @note Calls @c SSL_CTX_get_cert_store and @c X509_STORE_add_cert.
326
+ */
327
+ BOOST_ASIO_DECL boost::system::error_code add_certificate_authority(
328
+ const const_buffer& ca, boost::system::error_code& ec);
329
+
330
+ /// Configures the context to use the default directories for finding
331
+ /// certification authority certificates.
332
+ /**
333
+ * This function specifies that the context should use the default,
334
+ * system-dependent directories for locating certification authority
335
+ * certificates.
336
+ *
337
+ * @throws boost::system::system_error Thrown on failure.
338
+ *
339
+ * @note Calls @c SSL_CTX_set_default_verify_paths.
340
+ */
341
+ BOOST_ASIO_DECL void set_default_verify_paths();
342
+
343
+ /// Configures the context to use the default directories for finding
344
+ /// certification authority certificates.
345
+ /**
346
+ * This function specifies that the context should use the default,
347
+ * system-dependent directories for locating certification authority
348
+ * certificates.
349
+ *
350
+ * @param ec Set to indicate what error occurred, if any.
351
+ *
352
+ * @note Calls @c SSL_CTX_set_default_verify_paths.
353
+ */
354
+ BOOST_ASIO_DECL boost::system::error_code set_default_verify_paths(
355
+ boost::system::error_code& ec);
356
+
357
+ /// Add a directory containing certificate authority files to be used for
358
+ /// performing verification.
359
+ /**
360
+ * This function is used to specify the name of a directory containing
361
+ * certification authority certificates. Each file in the directory must
362
+ * contain a single certificate. The files must be named using the subject
363
+ * name's hash and an extension of ".0".
364
+ *
365
+ * @param path The name of a directory containing the certificates.
366
+ *
367
+ * @throws boost::system::system_error Thrown on failure.
368
+ *
369
+ * @note Calls @c SSL_CTX_load_verify_locations.
370
+ */
371
+ BOOST_ASIO_DECL void add_verify_path(const std::string& path);
372
+
373
+ /// Add a directory containing certificate authority files to be used for
374
+ /// performing verification.
375
+ /**
376
+ * This function is used to specify the name of a directory containing
377
+ * certification authority certificates. Each file in the directory must
378
+ * contain a single certificate. The files must be named using the subject
379
+ * name's hash and an extension of ".0".
380
+ *
381
+ * @param path The name of a directory containing the certificates.
382
+ *
383
+ * @param ec Set to indicate what error occurred, if any.
384
+ *
385
+ * @note Calls @c SSL_CTX_load_verify_locations.
386
+ */
387
+ BOOST_ASIO_DECL boost::system::error_code add_verify_path(
388
+ const std::string& path, boost::system::error_code& ec);
389
+
390
+ /// Use a certificate from a memory buffer.
391
+ /**
392
+ * This function is used to load a certificate into the context from a buffer.
393
+ *
394
+ * @param certificate The buffer containing the certificate.
395
+ *
396
+ * @param format The certificate format (ASN.1 or PEM).
397
+ *
398
+ * @throws boost::system::system_error Thrown on failure.
399
+ *
400
+ * @note Calls @c SSL_CTX_use_certificate or SSL_CTX_use_certificate_ASN1.
401
+ */
402
+ BOOST_ASIO_DECL void use_certificate(
403
+ const const_buffer& certificate, file_format format);
404
+
405
+ /// Use a certificate from a memory buffer.
406
+ /**
407
+ * This function is used to load a certificate into the context from a buffer.
408
+ *
409
+ * @param certificate The buffer containing the certificate.
410
+ *
411
+ * @param format The certificate format (ASN.1 or PEM).
412
+ *
413
+ * @param ec Set to indicate what error occurred, if any.
414
+ *
415
+ * @note Calls @c SSL_CTX_use_certificate or SSL_CTX_use_certificate_ASN1.
416
+ */
417
+ BOOST_ASIO_DECL boost::system::error_code use_certificate(
418
+ const const_buffer& certificate, file_format format,
419
+ boost::system::error_code& ec);
420
+
421
+ /// Use a certificate from a file.
422
+ /**
423
+ * This function is used to load a certificate into the context from a file.
424
+ *
425
+ * @param filename The name of the file containing the certificate.
426
+ *
427
+ * @param format The file format (ASN.1 or PEM).
428
+ *
429
+ * @throws boost::system::system_error Thrown on failure.
430
+ *
431
+ * @note Calls @c SSL_CTX_use_certificate_file.
432
+ */
433
+ BOOST_ASIO_DECL void use_certificate_file(
434
+ const std::string& filename, file_format format);
435
+
436
+ /// Use a certificate from a file.
437
+ /**
438
+ * This function is used to load a certificate into the context from a file.
439
+ *
440
+ * @param filename The name of the file containing the certificate.
441
+ *
442
+ * @param format The file format (ASN.1 or PEM).
443
+ *
444
+ * @param ec Set to indicate what error occurred, if any.
445
+ *
446
+ * @note Calls @c SSL_CTX_use_certificate_file.
447
+ */
448
+ BOOST_ASIO_DECL boost::system::error_code use_certificate_file(
449
+ const std::string& filename, file_format format,
450
+ boost::system::error_code& ec);
451
+
452
+ /// Use a certificate chain from a memory buffer.
453
+ /**
454
+ * This function is used to load a certificate chain into the context from a
455
+ * buffer.
456
+ *
457
+ * @param chain The buffer containing the certificate chain. The certificate
458
+ * chain must use the PEM format.
459
+ *
460
+ * @throws boost::system::system_error Thrown on failure.
461
+ *
462
+ * @note Calls @c SSL_CTX_use_certificate and SSL_CTX_add_extra_chain_cert.
463
+ */
464
+ BOOST_ASIO_DECL void use_certificate_chain(const const_buffer& chain);
465
+
466
+ /// Use a certificate chain from a memory buffer.
467
+ /**
468
+ * This function is used to load a certificate chain into the context from a
469
+ * buffer.
470
+ *
471
+ * @param chain The buffer containing the certificate chain. The certificate
472
+ * chain must use the PEM format.
473
+ *
474
+ * @param ec Set to indicate what error occurred, if any.
475
+ *
476
+ * @note Calls @c SSL_CTX_use_certificate and SSL_CTX_add_extra_chain_cert.
477
+ */
478
+ BOOST_ASIO_DECL boost::system::error_code use_certificate_chain(
479
+ const const_buffer& chain, boost::system::error_code& ec);
480
+
481
+ /// Use a certificate chain from a file.
482
+ /**
483
+ * This function is used to load a certificate chain into the context from a
484
+ * file.
485
+ *
486
+ * @param filename The name of the file containing the certificate. The file
487
+ * must use the PEM format.
488
+ *
489
+ * @throws boost::system::system_error Thrown on failure.
490
+ *
491
+ * @note Calls @c SSL_CTX_use_certificate_chain_file.
492
+ */
493
+ BOOST_ASIO_DECL void use_certificate_chain_file(const std::string& filename);
494
+
495
+ /// Use a certificate chain from a file.
496
+ /**
497
+ * This function is used to load a certificate chain into the context from a
498
+ * file.
499
+ *
500
+ * @param filename The name of the file containing the certificate. The file
501
+ * must use the PEM format.
502
+ *
503
+ * @param ec Set to indicate what error occurred, if any.
504
+ *
505
+ * @note Calls @c SSL_CTX_use_certificate_chain_file.
506
+ */
507
+ BOOST_ASIO_DECL boost::system::error_code use_certificate_chain_file(
508
+ const std::string& filename, boost::system::error_code& ec);
509
+
510
+ /// Use a private key from a memory buffer.
511
+ /**
512
+ * This function is used to load a private key into the context from a buffer.
513
+ *
514
+ * @param private_key The buffer containing the private key.
515
+ *
516
+ * @param format The private key format (ASN.1 or PEM).
517
+ *
518
+ * @throws boost::system::system_error Thrown on failure.
519
+ *
520
+ * @note Calls @c SSL_CTX_use_PrivateKey or SSL_CTX_use_PrivateKey_ASN1.
521
+ */
522
+ BOOST_ASIO_DECL void use_private_key(
523
+ const const_buffer& private_key, file_format format);
524
+
525
+ /// Use a private key from a memory buffer.
526
+ /**
527
+ * This function is used to load a private key into the context from a buffer.
528
+ *
529
+ * @param private_key The buffer containing the private key.
530
+ *
531
+ * @param format The private key format (ASN.1 or PEM).
532
+ *
533
+ * @param ec Set to indicate what error occurred, if any.
534
+ *
535
+ * @note Calls @c SSL_CTX_use_PrivateKey or SSL_CTX_use_PrivateKey_ASN1.
536
+ */
537
+ BOOST_ASIO_DECL boost::system::error_code use_private_key(
538
+ const const_buffer& private_key, file_format format,
539
+ boost::system::error_code& ec);
540
+
541
+ /// Use a private key from a file.
542
+ /**
543
+ * This function is used to load a private key into the context from a file.
544
+ *
545
+ * @param filename The name of the file containing the private key.
546
+ *
547
+ * @param format The file format (ASN.1 or PEM).
548
+ *
549
+ * @throws boost::system::system_error Thrown on failure.
550
+ *
551
+ * @note Calls @c SSL_CTX_use_PrivateKey_file.
552
+ */
553
+ BOOST_ASIO_DECL void use_private_key_file(
554
+ const std::string& filename, file_format format);
555
+
556
+ /// Use a private key from a file.
557
+ /**
558
+ * This function is used to load a private key into the context from a file.
559
+ *
560
+ * @param filename The name of the file containing the private key.
561
+ *
562
+ * @param format The file format (ASN.1 or PEM).
563
+ *
564
+ * @param ec Set to indicate what error occurred, if any.
565
+ *
566
+ * @note Calls @c SSL_CTX_use_PrivateKey_file.
567
+ */
568
+ BOOST_ASIO_DECL boost::system::error_code use_private_key_file(
569
+ const std::string& filename, file_format format,
570
+ boost::system::error_code& ec);
571
+
572
+ /// Use an RSA private key from a memory buffer.
573
+ /**
574
+ * This function is used to load an RSA private key into the context from a
575
+ * buffer.
576
+ *
577
+ * @param private_key The buffer containing the RSA private key.
578
+ *
579
+ * @param format The private key format (ASN.1 or PEM).
580
+ *
581
+ * @throws boost::system::system_error Thrown on failure.
582
+ *
583
+ * @note Calls @c SSL_CTX_use_RSAPrivateKey or SSL_CTX_use_RSAPrivateKey_ASN1.
584
+ */
585
+ BOOST_ASIO_DECL void use_rsa_private_key(
586
+ const const_buffer& private_key, file_format format);
587
+
588
+ /// Use an RSA private key from a memory buffer.
589
+ /**
590
+ * This function is used to load an RSA private key into the context from a
591
+ * buffer.
592
+ *
593
+ * @param private_key The buffer containing the RSA private key.
594
+ *
595
+ * @param format The private key format (ASN.1 or PEM).
596
+ *
597
+ * @param ec Set to indicate what error occurred, if any.
598
+ *
599
+ * @note Calls @c SSL_CTX_use_RSAPrivateKey or SSL_CTX_use_RSAPrivateKey_ASN1.
600
+ */
601
+ BOOST_ASIO_DECL boost::system::error_code use_rsa_private_key(
602
+ const const_buffer& private_key, file_format format,
603
+ boost::system::error_code& ec);
604
+
605
+ /// Use an RSA private key from a file.
606
+ /**
607
+ * This function is used to load an RSA private key into the context from a
608
+ * file.
609
+ *
610
+ * @param filename The name of the file containing the RSA private key.
611
+ *
612
+ * @param format The file format (ASN.1 or PEM).
613
+ *
614
+ * @throws boost::system::system_error Thrown on failure.
615
+ *
616
+ * @note Calls @c SSL_CTX_use_RSAPrivateKey_file.
617
+ */
618
+ BOOST_ASIO_DECL void use_rsa_private_key_file(
619
+ const std::string& filename, file_format format);
620
+
621
+ /// Use an RSA private key from a file.
622
+ /**
623
+ * This function is used to load an RSA private key into the context from a
624
+ * file.
625
+ *
626
+ * @param filename The name of the file containing the RSA private key.
627
+ *
628
+ * @param format The file format (ASN.1 or PEM).
629
+ *
630
+ * @param ec Set to indicate what error occurred, if any.
631
+ *
632
+ * @note Calls @c SSL_CTX_use_RSAPrivateKey_file.
633
+ */
634
+ BOOST_ASIO_DECL boost::system::error_code use_rsa_private_key_file(
635
+ const std::string& filename, file_format format,
636
+ boost::system::error_code& ec);
637
+
638
+ /// Use the specified memory buffer to obtain the temporary Diffie-Hellman
639
+ /// parameters.
640
+ /**
641
+ * This function is used to load Diffie-Hellman parameters into the context
642
+ * from a buffer.
643
+ *
644
+ * @param dh The memory buffer containing the Diffie-Hellman parameters. The
645
+ * buffer must use the PEM format.
646
+ *
647
+ * @throws boost::system::system_error Thrown on failure.
648
+ *
649
+ * @note Calls @c SSL_CTX_set_tmp_dh.
650
+ */
651
+ BOOST_ASIO_DECL void use_tmp_dh(const const_buffer& dh);
652
+
653
+ /// Use the specified memory buffer to obtain the temporary Diffie-Hellman
654
+ /// parameters.
655
+ /**
656
+ * This function is used to load Diffie-Hellman parameters into the context
657
+ * from a buffer.
658
+ *
659
+ * @param dh The memory buffer containing the Diffie-Hellman parameters. The
660
+ * buffer must use the PEM format.
661
+ *
662
+ * @param ec Set to indicate what error occurred, if any.
663
+ *
664
+ * @note Calls @c SSL_CTX_set_tmp_dh.
665
+ */
666
+ BOOST_ASIO_DECL boost::system::error_code use_tmp_dh(
667
+ const const_buffer& dh, boost::system::error_code& ec);
668
+
669
+ /// Use the specified file to obtain the temporary Diffie-Hellman parameters.
670
+ /**
671
+ * This function is used to load Diffie-Hellman parameters into the context
672
+ * from a file.
673
+ *
674
+ * @param filename The name of the file containing the Diffie-Hellman
675
+ * parameters. The file must use the PEM format.
676
+ *
677
+ * @throws boost::system::system_error Thrown on failure.
678
+ *
679
+ * @note Calls @c SSL_CTX_set_tmp_dh.
680
+ */
681
+ BOOST_ASIO_DECL void use_tmp_dh_file(const std::string& filename);
682
+
683
+ /// Use the specified file to obtain the temporary Diffie-Hellman parameters.
684
+ /**
685
+ * This function is used to load Diffie-Hellman parameters into the context
686
+ * from a file.
687
+ *
688
+ * @param filename The name of the file containing the Diffie-Hellman
689
+ * parameters. The file must use the PEM format.
690
+ *
691
+ * @param ec Set to indicate what error occurred, if any.
692
+ *
693
+ * @note Calls @c SSL_CTX_set_tmp_dh.
694
+ */
695
+ BOOST_ASIO_DECL boost::system::error_code use_tmp_dh_file(
696
+ const std::string& filename, boost::system::error_code& ec);
697
+
698
+ /// Set the password callback.
699
+ /**
700
+ * This function is used to specify a callback function to obtain password
701
+ * information about an encrypted key in PEM format.
702
+ *
703
+ * @param callback The function object to be used for obtaining the password.
704
+ * The function signature of the handler must be:
705
+ * @code std::string password_callback(
706
+ * std::size_t max_length, // The maximum size for a password.
707
+ * password_purpose purpose // Whether password is for reading or writing.
708
+ * ); @endcode
709
+ * The return value of the callback is a string containing the password.
710
+ *
711
+ * @throws boost::system::system_error Thrown on failure.
712
+ *
713
+ * @note Calls @c SSL_CTX_set_default_passwd_cb.
714
+ */
715
+ template <typename PasswordCallback>
716
+ void set_password_callback(PasswordCallback callback);
717
+
718
+ /// Set the password callback.
719
+ /**
720
+ * This function is used to specify a callback function to obtain password
721
+ * information about an encrypted key in PEM format.
722
+ *
723
+ * @param callback The function object to be used for obtaining the password.
724
+ * The function signature of the handler must be:
725
+ * @code std::string password_callback(
726
+ * std::size_t max_length, // The maximum size for a password.
727
+ * password_purpose purpose // Whether password is for reading or writing.
728
+ * ); @endcode
729
+ * The return value of the callback is a string containing the password.
730
+ *
731
+ * @param ec Set to indicate what error occurred, if any.
732
+ *
733
+ * @note Calls @c SSL_CTX_set_default_passwd_cb.
734
+ */
735
+ template <typename PasswordCallback>
736
+ boost::system::error_code set_password_callback(PasswordCallback callback,
737
+ boost::system::error_code& ec);
738
+
739
+ private:
740
+ struct bio_cleanup;
741
+ struct x509_cleanup;
742
+ struct evp_pkey_cleanup;
743
+ struct rsa_cleanup;
744
+ struct dh_cleanup;
745
+
746
+ // Helper function used to set a peer certificate verification callback.
747
+ BOOST_ASIO_DECL boost::system::error_code do_set_verify_callback(
748
+ detail::verify_callback_base* callback, boost::system::error_code& ec);
749
+
750
+ // Callback used when the SSL implementation wants to verify a certificate.
751
+ BOOST_ASIO_DECL static int verify_callback_function(
752
+ int preverified, X509_STORE_CTX* ctx);
753
+
754
+ // Helper function used to set a password callback.
755
+ BOOST_ASIO_DECL boost::system::error_code do_set_password_callback(
756
+ detail::password_callback_base* callback, boost::system::error_code& ec);
757
+
758
+ // Callback used when the SSL implementation wants a password.
759
+ BOOST_ASIO_DECL static int password_callback_function(
760
+ char* buf, int size, int purpose, void* data);
761
+
762
+ // Helper function to set the temporary Diffie-Hellman parameters from a BIO.
763
+ BOOST_ASIO_DECL boost::system::error_code do_use_tmp_dh(
764
+ BIO* bio, boost::system::error_code& ec);
765
+
766
+ // Helper function to make a BIO from a memory buffer.
767
+ BOOST_ASIO_DECL BIO* make_buffer_bio(const const_buffer& b);
768
+
769
+ // The underlying native implementation.
770
+ native_handle_type handle_;
771
+
772
+ // Ensure openssl is initialised.
773
+ boost::asio::ssl::detail::openssl_init<> init_;
774
+ };
775
+
776
+ #endif // defined(BOOST_ASIO_ENABLE_OLD_SSL)
777
+
778
+ } // namespace ssl
779
+ } // namespace asio
780
+ } // namespace boost
781
+
782
+ #include <boost/asio/detail/pop_options.hpp>
783
+
784
+ #include <boost/asio/ssl/impl/context.hpp>
785
+ #if defined(BOOST_ASIO_HEADER_ONLY)
786
+ # include <boost/asio/ssl/impl/context.ipp>
787
+ #endif // defined(BOOST_ASIO_HEADER_ONLY)
788
+
789
+ #endif // BOOST_ASIO_SSL_CONTEXT_HPP