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,340 @@
1
+ /*
2
+ * Phusion Passenger - https://www.phusionpassenger.com/
3
+ * Copyright (c) 2011-2017 Phusion Holding B.V.
4
+ *
5
+ * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
+ * trademarks of Phusion Holding B.V.
7
+ *
8
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
9
+ * of this software and associated documentation files (the "Software"), to deal
10
+ * in the Software without restriction, including without limitation the rights
11
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
+ * copies of the Software, and to permit persons to whom the Software is
13
+ * furnished to do so, subject to the following conditions:
14
+ *
15
+ * The above copyright notice and this permission notice shall be included in
16
+ * all copies or substantial portions of the Software.
17
+ *
18
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
+ * THE SOFTWARE.
25
+ */
26
+
27
+ #ifndef _PASSENGER_WATCHDOG_CONFIG_H_
28
+ #define _PASSENGER_WATCHDOG_CONFIG_H_
29
+
30
+ #include <ConfigKit/TableTranslator.h>
31
+ #include <ConfigKit/PrefixTranslator.h>
32
+ #include <Core/Config.h>
33
+ #include <Watchdog/ApiServer.h>
34
+ #include <Shared/ApiAccountUtils.h>
35
+ #include <Utils.h>
36
+ #include <Utils/StrIntUtils.h>
37
+
38
+ namespace Passenger {
39
+ namespace Watchdog {
40
+
41
+ using namespace std;
42
+
43
+
44
+ /*
45
+ * BEGIN ConfigKit schema: Passenger::Watchdog::Schema
46
+ * (do not edit: following text is automatically generated
47
+ * by 'rake configkit_schemas_inline_comments')
48
+ *
49
+ * admin_panel_authentication object - secret
50
+ * admin_panel_close_timeout float - default(10.0)
51
+ * admin_panel_connect_timeout float - default(30.0)
52
+ * admin_panel_data_debug boolean - default(false)
53
+ * admin_panel_ping_interval float - default(30.0)
54
+ * admin_panel_ping_timeout float - default(30.0)
55
+ * admin_panel_proxy_password string - secret
56
+ * admin_panel_proxy_timeout float - default(30.0)
57
+ * admin_panel_proxy_url string - -
58
+ * admin_panel_proxy_username string - -
59
+ * admin_panel_reconnect_timeout float - default(5.0)
60
+ * admin_panel_url string - read_only
61
+ * admin_panel_websocketpp_debug_access boolean - default(false)
62
+ * admin_panel_websocketpp_debug_error boolean - default(false)
63
+ * app_output_log_level string - default("notice")
64
+ * benchmark_mode string - -
65
+ * config_manifest object - read_only
66
+ * controller_accept_burst_count unsigned integer - default(32)
67
+ * controller_addresses array of strings - default,read_only
68
+ * controller_client_freelist_limit unsigned integer - default(0)
69
+ * controller_cpu_affine boolean - default(false),read_only
70
+ * controller_file_buffered_channel_auto_start_mover boolean - default(true)
71
+ * controller_file_buffered_channel_auto_truncate_file boolean - default(true)
72
+ * controller_file_buffered_channel_buffer_dir string - default
73
+ * controller_file_buffered_channel_delay_in_file_mode_switching unsigned integer - default(0)
74
+ * controller_file_buffered_channel_max_disk_chunk_read_size unsigned integer - default(0)
75
+ * controller_file_buffered_channel_threshold unsigned integer - default(131072)
76
+ * controller_mbuf_block_chunk_size unsigned integer - default(4096),read_only
77
+ * controller_min_spare_clients unsigned integer - default(0)
78
+ * controller_pid_file string - default,read_only
79
+ * controller_request_freelist_limit unsigned integer - default(1024)
80
+ * controller_secure_headers_password string - default,secret
81
+ * controller_socket_backlog unsigned integer - default(2048),read_only
82
+ * controller_start_reading_after_accept boolean - default(true)
83
+ * controller_threads unsigned integer - default,read_only
84
+ * core_api_server_accept_burst_count unsigned integer - default(32)
85
+ * core_api_server_addresses array of strings - default([]),read_only
86
+ * core_api_server_authorizations array - default("[FILTERED]"),secret
87
+ * core_api_server_client_freelist_limit unsigned integer - default(0)
88
+ * core_api_server_file_buffered_channel_auto_start_mover boolean - default(true)
89
+ * core_api_server_file_buffered_channel_auto_truncate_file boolean - default(true)
90
+ * core_api_server_file_buffered_channel_buffer_dir string - default
91
+ * core_api_server_file_buffered_channel_delay_in_file_mode_switching unsigned integer - default(0)
92
+ * core_api_server_file_buffered_channel_max_disk_chunk_read_size unsigned integer - default(0)
93
+ * core_api_server_file_buffered_channel_threshold unsigned integer - default(131072)
94
+ * core_api_server_mbuf_block_chunk_size unsigned integer - default(4096),read_only
95
+ * core_api_server_min_spare_clients unsigned integer - default(0)
96
+ * core_api_server_request_freelist_limit unsigned integer - default(1024)
97
+ * core_api_server_start_reading_after_accept boolean - default(true)
98
+ * core_file_descriptor_ulimit unsigned integer - default(0),read_only
99
+ * core_pid_file string - read_only
100
+ * daemonize boolean - default(false)
101
+ * default_abort_websockets_on_process_shutdown boolean - default(true)
102
+ * default_app_file_descriptor_ulimit unsigned integer - -
103
+ * default_environment string - default("production")
104
+ * default_force_max_concurrent_requests_per_process integer - default(-1)
105
+ * default_friendly_error_pages string - default("auto")
106
+ * default_group string - default
107
+ * default_load_shell_envvars boolean - default(false)
108
+ * default_max_preloader_idle_time unsigned integer - default(300)
109
+ * default_max_request_queue_size unsigned integer - default(100)
110
+ * default_max_requests unsigned integer - default(0)
111
+ * default_meteor_app_settings string - -
112
+ * default_min_instances unsigned integer - default(1)
113
+ * default_nodejs string - default("node")
114
+ * default_python string - default("python")
115
+ * default_ruby string - default("ruby")
116
+ * default_server_name string - default
117
+ * default_server_port unsigned integer - default
118
+ * default_spawn_method string - default("smart")
119
+ * default_sticky_sessions boolean - default(false)
120
+ * default_sticky_sessions_cookie_name string - default("_passenger_route")
121
+ * default_user string - default("nobody")
122
+ * file_descriptor_log_target any - -
123
+ * graceful_exit boolean - default(true)
124
+ * hook_after_watchdog_initialization string - -
125
+ * hook_after_watchdog_shutdown string - -
126
+ * hook_before_watchdog_initialization string - -
127
+ * hook_before_watchdog_shutdown string - -
128
+ * instance_registry_dir string - default,read_only
129
+ * integration_mode string - default("standalone")
130
+ * log_level string - default("notice")
131
+ * log_target any - default({"stderr": true})
132
+ * max_pool_size unsigned integer - default(6)
133
+ * multi_app boolean - default(false),read_only
134
+ * passenger_root string required read_only
135
+ * pidfiles_to_delete_on_exit array of strings - default([])
136
+ * pool_idle_time unsigned integer - default(300)
137
+ * pool_selfchecks boolean - default(false)
138
+ * prestart_urls array of strings - default([]),read_only
139
+ * response_buffer_high_watermark unsigned integer - default(134217728)
140
+ * security_update_checker_certificate_path string - -
141
+ * security_update_checker_disabled boolean - default(false)
142
+ * security_update_checker_interval unsigned integer - default(86400)
143
+ * security_update_checker_proxy_url string - -
144
+ * security_update_checker_url string - default("https://securitycheck.phusionpassenger.com/v1/check.json")
145
+ * server_software string - default("Phusion_Passenger/5.2.0")
146
+ * setsid boolean - default(false)
147
+ * show_version_in_header boolean - default(true)
148
+ * single_app_mode_app_root string - default,read_only
149
+ * single_app_mode_app_type string - read_only
150
+ * single_app_mode_startup_file string - read_only
151
+ * standalone_engine string - default
152
+ * startup_report_file string - -
153
+ * stat_throttle_rate unsigned integer - default(10)
154
+ * turbocaching boolean - default(true),read_only
155
+ * user string - default,read_only
156
+ * user_switching boolean - default(true)
157
+ * ust_router_address string - -
158
+ * ust_router_password string - secret
159
+ * vary_turbocache_by_cookie string - -
160
+ * watchdog_api_server_accept_burst_count unsigned integer - default(32)
161
+ * watchdog_api_server_addresses array of strings - default([]),read_only
162
+ * watchdog_api_server_authorizations array - default("[FILTERED]"),secret
163
+ * watchdog_api_server_client_freelist_limit unsigned integer - default(0)
164
+ * watchdog_api_server_file_buffered_channel_auto_start_mover boolean - default(true)
165
+ * watchdog_api_server_file_buffered_channel_auto_truncate_file boolean - default(true)
166
+ * watchdog_api_server_file_buffered_channel_buffer_dir string - default
167
+ * watchdog_api_server_file_buffered_channel_delay_in_file_mode_switching unsigned integer - default(0)
168
+ * watchdog_api_server_file_buffered_channel_max_disk_chunk_read_size unsigned integer - default(0)
169
+ * watchdog_api_server_file_buffered_channel_threshold unsigned integer - default(131072)
170
+ * watchdog_api_server_mbuf_block_chunk_size unsigned integer - default(4096),read_only
171
+ * watchdog_api_server_min_spare_clients unsigned integer - default(0)
172
+ * watchdog_api_server_request_freelist_limit unsigned integer - default(1024)
173
+ * watchdog_api_server_start_reading_after_accept boolean - default(true)
174
+ * watchdog_pid_file string - read_only
175
+ * watchdog_pid_file_autodelete boolean - default(true)
176
+ * web_server_module_version string - read_only
177
+ * web_server_version string - read_only
178
+ *
179
+ * END
180
+ */
181
+ class Schema: public ConfigKit::Schema {
182
+ private:
183
+ /**
184
+ * Scans `schema` for all options that start with `matchPrefix`. For each matching option,
185
+ * a translation is inserted in the form of `addPrefix + optionName => optionName`.
186
+ */
187
+ static void addPrefixTranslationsForKeysThatStartWith(const ConfigKit::Schema &schema,
188
+ ConfigKit::TableTranslator &translator,
189
+ const StaticString &matchPrefix, const StaticString &addPrefix)
190
+ {
191
+ const Json::Value doc = schema.inspect();
192
+ Json::Value::const_iterator it, end = doc.end();
193
+ for (it = doc.begin(); it != end; it++) {
194
+ if (startsWith(it.name(), matchPrefix)) {
195
+ translator.add(addPrefix + it.name(), it.name());
196
+ }
197
+ }
198
+ }
199
+
200
+ // Prefix config options that come from the given schema
201
+ template<typename SchemaType>
202
+ static void addSubSchemaPrefixTranslations(ConfigKit::TableTranslator &translator,
203
+ const StaticString &prefix)
204
+ {
205
+ vector<string> keys = SchemaType().inspect().getMemberNames();
206
+ vector<string>::const_iterator it, end = keys.end();
207
+ for (it = keys.begin(); it != end; it++) {
208
+ translator.add(prefix + *it, *it);
209
+ }
210
+ }
211
+
212
+ // Some options set their default value to this function to indicate
213
+ // that their actual default values cannot be inferred from a ConfigKit default
214
+ // value getter function. Instead they are determined inside WatchdogMain.cpp.
215
+ static Json::Value dummyDefaultValueGetter(const ConfigKit::Store &store) {
216
+ return Json::Value();
217
+ }
218
+
219
+ static Json::Value getDefaultControllerSecureHeadersPassword(const ConfigKit::Store &store) {
220
+ return RandomGenerator().generateAsciiString(24);
221
+ }
222
+
223
+ static Json::Value getDefaultUser(const ConfigKit::Store &store) {
224
+ if (store["user_switching"].asBool()) {
225
+ return Json::nullValue;
226
+ } else {
227
+ return store["default_user"];
228
+ }
229
+ }
230
+
231
+ static Json::Value getDefaultInstanceRegistryDir(const ConfigKit::Store &store) {
232
+ return getSystemTempDir();
233
+ }
234
+
235
+ static void validateAddresses(const ConfigKit::Store &config, vector<ConfigKit::Error> &errors) {
236
+ typedef ConfigKit::Error Error;
237
+
238
+ if (config["watchdog_api_server_addresses"].size() > SERVER_KIT_MAX_SERVER_ENDPOINTS) {
239
+ errors.push_back(Error("'{{watchdog_api_server_addresses}}' may contain at most "
240
+ + toString(SERVER_KIT_MAX_SERVER_ENDPOINTS) + " items"));
241
+ }
242
+ }
243
+
244
+ static Json::Value normalizePaths(const Json::Value &effectiveValues) {
245
+ Json::Value updates;
246
+ updates["instance_registry_dir"] = absolutizePath(effectiveValues["instance_registry_dir"].asString());
247
+ if (!effectiveValues["watchdog_pid_file"].isNull()) {
248
+ updates["watchdog_pid_file"] = absolutizePath(effectiveValues["watchdog_pid_file"].asString());
249
+ }
250
+ return updates;
251
+ }
252
+
253
+ public:
254
+ struct {
255
+ Core::Schema schema;
256
+ ConfigKit::TableTranslator translator;
257
+ } core;
258
+ struct {
259
+ ApiServer::Schema schema;
260
+ ConfigKit::TableTranslator translator;
261
+ } apiServer;
262
+ struct {
263
+ ServerKit::Schema schema;
264
+ ConfigKit::PrefixTranslator translator;
265
+ } apiServerKit;
266
+
267
+ Schema() {
268
+ using namespace ConfigKit;
269
+
270
+ // Add subschema: core
271
+ addPrefixTranslationsForKeysThatStartWith(core.schema, core.translator,
272
+ "api_server_", "core_");
273
+ core.translator.add("core_authorizations", "authorizations");
274
+ core.translator.add("core_password", "password");
275
+ core.translator.add("core_pid_file", "pid_file");
276
+ core.translator.add("core_file_descriptor_ulimit", "file_descriptor_ulimit");
277
+ core.translator.finalize();
278
+ addSubSchema(core.schema, core.translator);
279
+ erase("instance_dir");
280
+ erase("watchdog_fd_passing_password");
281
+ /***********/
282
+ /***********/
283
+
284
+ // Add subschema: apiServer
285
+ addSubSchemaPrefixTranslations<ServerKit::HttpServerSchema>(
286
+ apiServer.translator, "watchdog_api_server_");
287
+ apiServer.translator.add("watchdog_api_server_authorizations", "authorizations");
288
+ apiServer.translator.finalize();
289
+ addSubSchema(apiServer.schema, apiServer.translator);
290
+ erase("fd_passing_password");
291
+
292
+ // Add subschema: apiServerKit
293
+ apiServerKit.translator.setPrefixAndFinalize("watchdog_api_server_");
294
+ addSubSchema(apiServerKit.schema, apiServerKit.translator);
295
+ erase("watchdog_api_server_secure_mode_password");
296
+
297
+
298
+ overrideWithDynamicDefault("controller_addresses", STRING_ARRAY_TYPE,
299
+ OPTIONAL | READ_ONLY, dummyDefaultValueGetter);
300
+ overrideWithDynamicDefault("controller_pid_file", STRING_TYPE,
301
+ OPTIONAL | READ_ONLY, dummyDefaultValueGetter);
302
+
303
+ overrideWithDynamicDefault("controller_secure_headers_password", STRING_TYPE,
304
+ OPTIONAL | SECRET | CACHE_DEFAULT_VALUE, getDefaultControllerSecureHeadersPassword);
305
+ add("watchdog_pid_file", STRING_TYPE, OPTIONAL | READ_ONLY);
306
+ add("watchdog_pid_file_autodelete", BOOL_TYPE, OPTIONAL, true);
307
+ add("watchdog_api_server_addresses", STRING_ARRAY_TYPE, OPTIONAL | READ_ONLY, Json::arrayValue);
308
+ add("setsid", BOOL_TYPE, OPTIONAL, false);
309
+ add("daemonize", BOOL_TYPE, OPTIONAL, false);
310
+ add("startup_report_file", STRING_TYPE, OPTIONAL);
311
+ add("pidfiles_to_delete_on_exit", STRING_ARRAY_TYPE, OPTIONAL, Json::arrayValue);
312
+ addWithDynamicDefault("user", STRING_TYPE,
313
+ OPTIONAL | READ_ONLY | CACHE_DEFAULT_VALUE, getDefaultUser);
314
+ addWithDynamicDefault("instance_registry_dir", STRING_TYPE,
315
+ OPTIONAL | READ_ONLY | CACHE_DEFAULT_VALUE, getDefaultInstanceRegistryDir);
316
+
317
+ add("hook_before_watchdog_initialization", STRING_TYPE, OPTIONAL);
318
+ add("hook_after_watchdog_initialization", STRING_TYPE, OPTIONAL);
319
+ add("hook_before_watchdog_shutdown", STRING_TYPE, OPTIONAL);
320
+ add("hook_after_watchdog_shutdown", STRING_TYPE, OPTIONAL);
321
+
322
+ /***********/
323
+ /***********/
324
+
325
+ addValidator(validateAddresses);
326
+
327
+ addNormalizer(normalizePaths);
328
+
329
+ /***********/
330
+ /***********/
331
+
332
+ finalize();
333
+ }
334
+ };
335
+
336
+
337
+ } // namespace Watchdog
338
+ } // namespace Passenger
339
+
340
+ #endif /* _PASSENGER_WATCHDOG_CONFIG_H_ */
@@ -25,6 +25,7 @@
25
25
  */
26
26
 
27
27
  #include <Shared/Fundamentals/Utils.h>
28
+ #include <Utils/MessageIO.h>
28
29
 
29
30
  class CoreWatcher: public AgentWatcher {
30
31
  protected:
@@ -52,9 +53,27 @@ protected:
52
53
  }
53
54
 
54
55
  virtual void sendStartupArguments(pid_t pid, FileDescriptor &fd) {
55
- VariantMap options = *agentsOptions;
56
- options.erase("ust_router_authorizations");
57
- options.writeToFd(fd);
56
+ Json::Value config = watchdogSchema->core.translator.translate(
57
+ watchdogConfig->inspectEffectiveValues());
58
+
59
+ Json::Value::iterator it, end = wo->extraConfigToPassToSubAgents.end();
60
+ for (it = wo->extraConfigToPassToSubAgents.begin(); it != end; it++) {
61
+ config[it.name()] = *it;
62
+ }
63
+
64
+ config["pid_file"] = wo->corePidFile;
65
+ config["watchdog_fd_passing_password"] = wo->fdPassingPassword;
66
+ config["controller_addresses"] = wo->controllerAddresses;
67
+ config["api_server_addresses"] = wo->coreApiServerAddresses;
68
+ config["api_server_authorizations"] = wo->coreApiServerAuthorizations;
69
+
70
+ // The special value "-" means "don't set a controller secure headers password".
71
+ if (config["controller_secure_headers_password"].asString() == "-") {
72
+ config.removeMember("controller_secure_headers_password");
73
+ }
74
+
75
+ ConfigKit::Store filteredConfig(watchdogSchema->core.schema, config);
76
+ writeScalarMessage(fd, filteredConfig.inspectEffectiveValues().toStyledString());
58
77
  }
59
78
 
60
79
  virtual bool processStartupInfo(pid_t pid, FileDescriptor &fd, const vector<string> &args) {
@@ -65,17 +84,12 @@ public:
65
84
  CoreWatcher(const WorkingObjectsPtr &wo)
66
85
  : AgentWatcher(wo)
67
86
  {
68
- agentFilename = wo->resourceLocator->findSupportBinary(AGENT_EXE);
87
+ agentFilename = Agent::Fundamentals::context->
88
+ resourceLocator->findSupportBinary(AGENT_EXE);
69
89
  }
70
90
 
71
- virtual void reportAgentsInformation(VariantMap &report) {
72
- const VariantMap &options = *agentsOptions;
73
- vector<string> addresses = options.getStrSet("core_addresses");
74
- report.set("core_address", addresses.front());
75
- report.set("core_password", options.get("core_password"));
76
-
77
- // For backwards compatibility:
78
- report.set("server_address", addresses.front());
79
- report.set("server_password", options.get("core_password"));
91
+ virtual void reportAgentStartupResult(Json::Value &report) {
92
+ report["core_address"] = wo->controllerAddresses[0].asString();
93
+ report["core_password"] = watchdogConfig->get("controller_secure_headers_password").asString();
80
94
  }
81
95
  };
@@ -110,7 +110,7 @@ private:
110
110
 
111
111
  void
112
112
  threadMain() {
113
- string originalOomScore = agentsOptions->get("original_oom_score", false);
113
+ string originalOomScore = wo->extraConfigToPassToSubAgents["oom_score"].asString();
114
114
  string workingDir = wo->instanceDir->getPath().c_str();
115
115
 
116
116
  while (!boost::this_thread::interruption_requested()) {
@@ -65,7 +65,9 @@
65
65
  #include <Shared/Fundamentals/Initialization.h>
66
66
  #include <Shared/ApiServerUtils.h>
67
67
  #include <Core/OptionParser.h>
68
+ #include <Watchdog/Config.h>
68
69
  #include <Watchdog/ApiServer.h>
70
+ #include <JsonTools/Autocast.h>
69
71
  #include <Constants.h>
70
72
  #include <InstanceDirectory.h>
71
73
  #include <FileDescriptor.h>
@@ -75,7 +77,6 @@
75
77
  #include <Exceptions.h>
76
78
  #include <StaticString.h>
77
79
  #include <Hooks.h>
78
- #include <ResourceLocator.h>
79
80
  #include <Utils.h>
80
81
  #include <Utils/Timer.h>
81
82
  #include <Utils/ScopeGuard.h>
@@ -106,34 +107,46 @@ class AgentWatcher;
106
107
  /***** Working objects *****/
107
108
 
108
109
  namespace Passenger {
109
- namespace WatchdogAgent {
110
+ namespace Watchdog {
110
111
  struct WorkingObjects {
111
112
  RandomGenerator randomGenerator;
112
113
  EventFd errorEvent;
113
114
  EventFd exitEvent;
114
- ResourceLocatorPtr resourceLocator;
115
115
  uid_t defaultUid;
116
116
  gid_t defaultGid;
117
117
  InstanceDirectoryPtr instanceDir;
118
- int reportFile;
118
+ int startupReportFile;
119
119
  int lockFile;
120
120
  vector<string> cleanupPidfiles;
121
121
  bool pidsCleanedUp;
122
122
  bool pidFileCleanedUp;
123
+ string corePidFile;
124
+ string fdPassingPassword;
125
+ Json::Value extraConfigToPassToSubAgents;
126
+ Json::Value controllerAddresses;
127
+ Json::Value coreApiServerAddresses;
128
+ Json::Value coreApiServerAuthorizations;
129
+ Json::Value watchdogApiServerAddresses;
130
+ Json::Value watchdogApiServerAuthorizations;
123
131
 
124
- ApiAccountDatabase apiAccountDatabase;
125
132
  int apiServerFds[SERVER_KIT_MAX_SERVER_ENDPOINTS];
126
133
  BackgroundEventLoop *bgloop;
127
134
  ServerKit::Context *serverKitContext;
128
- ServerKit::HttpServerSchema apiServerSchema;
129
- ApiServer *apiServer;
135
+ ServerKit::Schema serverKitSchema;
136
+ ApiServer::ApiServer *apiServer;
130
137
 
131
138
  WorkingObjects()
132
139
  : errorEvent(__FILE__, __LINE__, "WorkingObjects: errorEvent"),
133
140
  exitEvent(__FILE__, __LINE__, "WorkingObjects: exitEvent"),
134
- reportFile(-1),
141
+ startupReportFile(-1),
135
142
  pidsCleanedUp(false),
136
143
  pidFileCleanedUp(false),
144
+ extraConfigToPassToSubAgents(Json::objectValue),
145
+ controllerAddresses(Json::arrayValue),
146
+ coreApiServerAddresses(Json::arrayValue),
147
+ coreApiServerAuthorizations(Json::arrayValue),
148
+ watchdogApiServerAddresses(Json::arrayValue),
149
+ watchdogApiServerAuthorizations(Json::arrayValue),
137
150
  bgloop(NULL),
138
151
  serverKitContext(NULL),
139
152
  apiServer(NULL)
@@ -145,12 +158,13 @@ namespace WatchdogAgent {
145
158
  };
146
159
 
147
160
  typedef boost::shared_ptr<WorkingObjects> WorkingObjectsPtr;
148
- } // namespace WatchdogAgent
161
+ } // namespace Watchdog
149
162
  } // namespace Passenger
150
163
 
151
- using namespace Passenger::WatchdogAgent;
164
+ using namespace Passenger::Watchdog;
152
165
 
153
- static VariantMap *agentsOptions;
166
+ static Schema *watchdogSchema;
167
+ static ConfigKit::Store *watchdogConfig;
154
168
  static WorkingObjects *workingObjects;
155
169
 
156
170
  static void cleanup(const WorkingObjectsPtr &wo);
@@ -347,10 +361,10 @@ readCleanupPids(const WorkingObjectsPtr &wo) {
347
361
  buf[ret] = '\0';
348
362
  result.push_back(atoi(buf));
349
363
  } else {
350
- P_WARN("Cannot read cleanup PID file " << filename);
364
+ P_WARN("Cannot read cleanup PID file " << relative(filename).c_str() << " (" << filename << ")");
351
365
  }
352
366
  } else {
353
- P_WARN("Cannot open cleanup PID file " << filename);
367
+ P_WARN("Cannot open cleanup PID file " << relative(filename).c_str() << " (" << filename << ")");
354
368
  }
355
369
  }
356
370
 
@@ -378,9 +392,9 @@ killCleanupPids(const WorkingObjectsPtr &wo) {
378
392
 
379
393
  static void
380
394
  deletePidFile(const WorkingObjectsPtr &wo) {
381
- string pidFile = agentsOptions->get("pid_file", false);
382
- if (!pidFile.empty() && !wo->pidFileCleanedUp && agentsOptions->getBool("delete_pid_file")) {
383
- syscalls::unlink(pidFile.c_str());
395
+ Json::Value pidFile = watchdogConfig->get("watchdog_pid_file");
396
+ if (!pidFile.isNull() && !wo->pidFileCleanedUp && watchdogConfig->get("watchdog_pid_file_autodelete").asBool()) {
397
+ syscalls::unlink(pidFile.asCString());
384
398
  wo->pidFileCleanedUp = true;
385
399
  }
386
400
  }
@@ -499,25 +513,14 @@ forceAllAgentsShutdown(const WorkingObjectsPtr &wo, vector<AgentWatcherPtr> &wat
499
513
  }
500
514
  }
501
515
 
502
- static string
503
- inferDefaultGroup(const string &defaultUser) {
504
- struct passwd *userEntry = getpwnam(defaultUser.c_str());
505
- if (userEntry == NULL) {
506
- throw ConfigurationException(
507
- string("The user that PassengerDefaultUser refers to, '") +
508
- defaultUser + "', does not exist.");
509
- }
510
- return getGroupName(userEntry->pw_gid);
511
- }
512
-
513
516
  static void
514
517
  runHookScriptAndThrowOnError(const char *name) {
515
518
  TRACE_POINT();
516
519
  HookScriptOptions options;
517
520
 
518
521
  options.name = name;
519
- options.spec = agentsOptions->get(string("hook_") + name, false);
520
- options.agentsOptions = agentsOptions;
522
+ options.spec = watchdogConfig->get(string("hook_") + name).asString();
523
+ options.agentConfig = watchdogConfig->inspectEffectiveValues();
521
524
 
522
525
  if (!runHookScripts(options)) {
523
526
  throw RuntimeException(string("Hook script ") + name + " failed");
@@ -611,13 +614,14 @@ usage() {
611
614
  }
612
615
 
613
616
  static void
614
- parseOptions(int argc, const char *argv[], VariantMap &options) {
617
+ parseOptions(int argc, const char *argv[], ConfigKit::Store &config) {
615
618
  OptionParser p(usage);
619
+ Json::Value updates(Json::objectValue);
616
620
  int i = 2;
617
621
 
618
622
  while (i < argc) {
619
623
  if (p.isValueFlag(argc, i, argv[i], '\0', "--passenger-root")) {
620
- options.set("passenger_root", argv[i + 1]);
624
+ updates["passenger_root"] = argv[i + 1];
621
625
  i += 2;
622
626
  } else if (p.isFlag(argv[i], '\0', "--BC")
623
627
  || p.isFlag(argv[i], '\0', "--begin-core-args"))
@@ -633,10 +637,20 @@ parseOptions(int argc, const char *argv[], VariantMap &options) {
633
637
  || p.isFlag(argv[i], '\0', "--begin-ust-router-args"))
634
638
  {
635
639
  break;
636
- } else if (!parseCoreOption(argc, argv, i, options)) {
637
- fprintf(stderr, "ERROR: unrecognized core argument %s. Please "
638
- "type '%s core --help' for usage.\n", argv[i], argv[0]);
639
- exit(1);
640
+ } else {
641
+ Json::Value coreUpdates(Json::objectValue);
642
+ if (!parseCoreOption(argc, argv, i, coreUpdates)) {
643
+ fprintf(stderr, "ERROR: unrecognized core argument %s. Please "
644
+ "type '%s core --help' for usage.\n", argv[i], argv[0]);
645
+ exit(1);
646
+ }
647
+
648
+ Json::Value::iterator it, end = coreUpdates.end();
649
+ for (it = coreUpdates.begin(); it != end; it++) {
650
+ string translatedName = watchdogSchema->core.translator.
651
+ reverseTranslateOne(it.name());
652
+ updates[translatedName] = *it;
653
+ }
640
654
  }
641
655
  }
642
656
  } else if (p.isFlag(argv[i], '\0', "--BU")
@@ -661,15 +675,13 @@ parseOptions(int argc, const char *argv[], VariantMap &options) {
661
675
  }
662
676
  } else if (p.isValueFlag(argc, i, argv[i], '\0', "--api-listen")) {
663
677
  if (getSocketAddressType(argv[i + 1]) != SAT_UNKNOWN) {
664
- vector<string> addresses = options.getStrSet("watchdog_api_addresses",
665
- false);
678
+ Json::Value &addresses = updates["watchdog_api_server_addresses"];
666
679
  if (addresses.size() == SERVER_KIT_MAX_SERVER_ENDPOINTS - 1) {
667
680
  fprintf(stderr, "ERROR: you may specify up to %u --api-listen addresses.\n",
668
681
  SERVER_KIT_MAX_SERVER_ENDPOINTS - 1);
669
682
  exit(1);
670
683
  }
671
- addresses.push_back(argv[i + 1]);
672
- options.setStrSet("watchdog_api_addresses", addresses);
684
+ addresses.append(argv[i + 1]);
673
685
  i += 2;
674
686
  } else {
675
687
  fprintf(stderr, "ERROR: invalid address format for --api-listen. The address "
@@ -679,9 +691,6 @@ parseOptions(int argc, const char *argv[], VariantMap &options) {
679
691
  }
680
692
  } else if (p.isValueFlag(argc, i, argv[i], '\0', "--authorize")) {
681
693
  vector<string> args;
682
- vector<string> authorizations = options.getStrSet("watchdog_authorizations",
683
- false);
684
-
685
694
  split(argv[i + 1], ':', args);
686
695
  if (args.size() < 2 || args.size() > 3) {
687
696
  fprintf(stderr, "ERROR: invalid format for --authorize. The syntax "
@@ -689,46 +698,43 @@ parseOptions(int argc, const char *argv[], VariantMap &options) {
689
698
  exit(1);
690
699
  }
691
700
 
692
- authorizations.push_back(argv[i + 1]);
693
- options.setStrSet("watchdog_authorizations", authorizations);
701
+ updates["watchdog_api_server_authorizations"].append(argv[i + 1]);
694
702
  i += 2;
695
703
  } else if (p.isValueFlag(argc, i, argv[i], '\0', "--instance-registry-dir")) {
696
- options.set("instance_registry_dir", argv[i + 1]);
704
+ updates["instance_registry_dir"] = argv[i + 1];
697
705
  i += 2;
698
706
  } else if (p.isFlag(argv[i], '\0', "--no-user-switching")) {
699
- options.setBool("user_switching", false);
707
+ updates["user_switching"] = false;
700
708
  i++;
701
709
  } else if (p.isValueFlag(argc, i, argv[i], '\0', "--default-user")) {
702
- options.set("default_user", argv[i + 1]);
710
+ updates["default_user"] = argv[i + 1];
703
711
  i += 2;
704
712
  } else if (p.isValueFlag(argc, i, argv[i], '\0', "--default-group")) {
705
- options.set("default_group", argv[i + 1]);
713
+ updates["default_group"] = argv[i + 1];
706
714
  i += 2;
707
715
  } else if (p.isFlag(argv[i], '\0', "--daemonize")) {
708
- options.setBool("daemonize", true);
716
+ updates["daemonize"] = true;
709
717
  i++;
710
718
  } else if (p.isValueFlag(argc, i, argv[i], '\0', "--user")) {
711
- options.set("user", argv[i + 1]);
719
+ updates["user"] = argv[i + 1];
712
720
  i += 2;
713
721
  } else if (p.isValueFlag(argc, i, argv[i], '\0', "--pid-file")) {
714
- options.set("pid_file", argv[i + 1]);
722
+ updates["watchdog_pid_file"] = argv[i + 1];
715
723
  i += 2;
716
724
  } else if (p.isFlag(argv[i], '\0', "--no-delete-pid-file")) {
717
- options.setBool("delete_pid_file", false);
725
+ updates["watchdog_pid_file_autodelete"] = false;
718
726
  i++;
719
727
  } else if (p.isValueFlag(argc, i, argv[i], '\0', "--log-level")) {
720
- options.setInt("log_level", atoi(argv[i + 1]));
728
+ updates["log_level"] = argv[i + 1];
721
729
  i += 2;
722
730
  } else if (p.isValueFlag(argc, i, argv[i], '\0', "--report-file")) {
723
- options.set("report_file", argv[i + 1]);
731
+ updates["startup_report_file"] = argv[i + 1];
724
732
  i += 2;
725
733
  } else if (p.isValueFlag(argc, i, argv[i], '\0', "--cleanup-pidfile")) {
726
- vector<string> pidfiles = options.getStrSet("cleanup_pidfiles", false);
727
- pidfiles.push_back(argv[i + 1]);
728
- options.setStrSet("cleanup_pidfiles", pidfiles);
734
+ updates["pidfiles_to_delete_on_exit"].append(argv[i + 1]);
729
735
  i += 2;
730
736
  } else if (p.isValueFlag(argc, i, argv[i], '\0', "--log-file")) {
731
- options.set("debug_log_file", argv[i + 1]);
737
+ updates["log_target"] = argv[i + 1];
732
738
  i += 2;
733
739
  } else if (p.isValueFlag(argc, i, argv[i], '\0', "--ctl")) {
734
740
  const char *value = strchr(argv[i + 1], '=');
@@ -744,7 +750,7 @@ parseOptions(int argc, const char *argv[], VariantMap &options) {
744
750
  "The value must be non-empty.\n", argv[i + 1]);
745
751
  exit(1);
746
752
  }
747
- options.set(name, value);
753
+ updates[name] = autocastValueToJson(value);
748
754
  i += 2;
749
755
  } else if (p.isFlag(argv[i], 'h', "--help")) {
750
756
  usage();
@@ -755,6 +761,15 @@ parseOptions(int argc, const char *argv[], VariantMap &options) {
755
761
  exit(1);
756
762
  }
757
763
  }
764
+
765
+ if (!updates.empty()) {
766
+ vector<ConfigKit::Error> errors;
767
+ if (!config.update(updates, errors)) {
768
+ P_BUG("Unable to set initial configuration: " <<
769
+ ConfigKit::toString(errors) << "\n"
770
+ "Raw initial configuration: " << updates.toStyledString());
771
+ }
772
+ }
758
773
  }
759
774
 
760
775
  static void
@@ -778,47 +793,18 @@ initializeBareEssentials(int argc, char *argv[], WorkingObjectsPtr &wo) {
778
793
  */
779
794
  string oldOomScore = setOomScoreNeverKill();
780
795
 
781
- agentsOptions = new VariantMap();
782
- *agentsOptions = initializeAgent(argc, &argv, SHORT_PROGRAM_NAME " watchdog",
796
+ watchdogSchema = new Schema();
797
+ watchdogConfig = new ConfigKit::Store(*watchdogSchema);
798
+ initializeAgent(argc, &argv, SHORT_PROGRAM_NAME " watchdog",
799
+ *watchdogConfig, watchdogSchema->core.schema.loggingKit.translator,
783
800
  parseOptions, NULL, 2);
784
- agentsOptions->set("original_oom_score", oldOomScore);
785
801
 
786
802
  // Start all sub-agents with this environment variable.
787
803
  setenv("PASSENGER_USE_FEEDBACK_FD", "true", 1);
788
804
 
789
805
  wo = boost::make_shared<WorkingObjects>();
790
806
  workingObjects = wo.get();
791
- }
792
-
793
- static void
794
- setAgentsOptionsDefaults() {
795
- VariantMap &options = *agentsOptions;
796
-
797
- options.setDefault("instance_registry_dir", getSystemTempDir());
798
- options.setDefaultBool("user_switching", true);
799
- options.setDefault("default_user", DEFAULT_WEB_APP_USER);
800
- if (!options.has("default_group")) {
801
- options.set("default_group",
802
- inferDefaultGroup(options.get("default_user")));
803
- }
804
- options.setDefault("integration_mode", DEFAULT_INTEGRATION_MODE);
805
- if (options.get("integration_mode") == "standalone") {
806
- options.setDefault("standalone_engine", "builtin");
807
- }
808
- options.setDefault("server_software", SERVER_TOKEN_NAME "/" PASSENGER_VERSION);
809
- options.setDefaultStrSet("cleanup_pidfiles", vector<string>());
810
- options.setDefault("data_buffer_dir", getSystemTempDir());
811
- options.setDefaultBool("delete_pid_file", true);
812
- }
813
-
814
- static void
815
- sanityCheckOptions() {
816
- VariantMap &options = *agentsOptions;
817
-
818
- if (!options.has("passenger_root")) {
819
- fprintf(stderr, "ERROR: please set the --passenger-root argument.\n");
820
- exit(1);
821
- }
807
+ wo->extraConfigToPassToSubAgents["oom_score"] = oldOomScore;
822
808
  }
823
809
 
824
810
  static void
@@ -831,7 +817,7 @@ maybeSetsid() {
831
817
  * WatchdogLauncher.h already calls setsid() before exec()ing
832
818
  * the Watchdog, but Flying Passenger does not.
833
819
  */
834
- if (agentsOptions->getBool("setsid", false)) {
820
+ if (watchdogConfig->get("setsid").asBool()) {
835
821
  setsid();
836
822
  }
837
823
  }
@@ -850,7 +836,7 @@ maybeDaemonize() {
850
836
  pid_t pid;
851
837
  int e;
852
838
 
853
- if (agentsOptions->getBool("daemonize", false)) {
839
+ if (watchdogConfig->get("daemonize").asBool()) {
854
840
  pid = fork();
855
841
  if (pid == 0) {
856
842
  setsid();
@@ -867,16 +853,17 @@ maybeDaemonize() {
867
853
  static void
868
854
  createPidFile() {
869
855
  TRACE_POINT();
870
- string pidFile = agentsOptions->get("pid_file", false);
871
- if (!pidFile.empty()) {
856
+ Json::Value pidFile = watchdogConfig->get("watchdog_pid_file");
857
+ if (!pidFile.isNull()) {
872
858
  char pidStr[32];
873
859
 
874
860
  snprintf(pidStr, sizeof(pidStr), "%lld", (long long) getpid());
875
861
 
876
- int fd = syscalls::open(pidFile.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0644);
862
+ int fd = syscalls::open(pidFile.asCString(), O_WRONLY | O_CREAT | O_TRUNC, 0644);
877
863
  if (fd == -1) {
878
864
  int e = errno;
879
- throw FileSystemException("Cannot create PID file " + pidFile, e, pidFile);
865
+ throw FileSystemException("Cannot create PID file " + pidFile.asString(),
866
+ e, pidFile.asString());
880
867
  }
881
868
 
882
869
  UPDATE_TRACE_POINT();
@@ -886,26 +873,27 @@ createPidFile() {
886
873
  }
887
874
 
888
875
  static void
889
- openReportFile(const WorkingObjectsPtr &wo) {
876
+ openStartupReportFile(const WorkingObjectsPtr &wo) {
890
877
  TRACE_POINT();
891
- string reportFile = agentsOptions->get("report_file", false);
892
- if (!reportFile.empty()) {
893
- int fd = syscalls::open(reportFile.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0600);
878
+ Json::Value path = watchdogConfig->get("startup_report_file");
879
+ if (!path.isNull()) {
880
+ int fd = syscalls::open(path.asCString(), O_WRONLY | O_CREAT | O_TRUNC, 0600);
894
881
  if (fd == -1) {
895
882
  int e = errno;
896
- throw FileSystemException("Cannot open report file " + reportFile, e, reportFile);
883
+ throw FileSystemException("Cannot open report file " + path.asString(),
884
+ e, path.asString());
897
885
  }
898
886
 
899
- P_LOG_FILE_DESCRIPTOR_OPEN4(fd, __FILE__, __LINE__, "WorkingObjects: reportFile");
900
- wo->reportFile = fd;
887
+ P_LOG_FILE_DESCRIPTOR_OPEN4(fd, __FILE__, __LINE__, "WorkingObjects: startupReportFile");
888
+ wo->startupReportFile = fd;
901
889
  }
902
890
  }
903
891
 
904
892
  static void
905
893
  chdirToTmpDir() {
906
- vector<string> pidfiles = agentsOptions->getStrSet("cleanup_pidfiles", false);
907
- if (pidfiles.size() > 0) {
908
- string str = pidfiles.front();
894
+ const Json::Value pidfiles = watchdogConfig->get("pidfiles_to_delete_on_exit");
895
+ if (!pidfiles.empty()) {
896
+ string str = pidfiles[0].asString();
909
897
  string dir = str.substr(0,str.find_last_of('/'));
910
898
  if (dir != "" && chdir(dir.c_str()) == -1) {
911
899
  throw RuntimeException("Cannot change working directory to " + dir);
@@ -916,8 +904,7 @@ chdirToTmpDir() {
916
904
  static void
917
905
  lowerPrivilege() {
918
906
  TRACE_POINT();
919
- const VariantMap &options = *agentsOptions;
920
- string userName = options.get("user", false);
907
+ string userName = watchdogConfig->get("user").asString();
921
908
 
922
909
  if (geteuid() == 0 && !userName.empty()) {
923
910
  struct passwd *pwUser = getpwnam(userName.c_str());
@@ -965,9 +952,8 @@ lowerPrivilege() {
965
952
 
966
953
  static void
967
954
  lookupDefaultUidGid(uid_t &uid, gid_t &gid) {
968
- VariantMap &options = *agentsOptions;
969
- const string &defaultUser = options.get("default_user");
970
- const string &defaultGroup = options.get("default_group");
955
+ const string defaultUser = watchdogConfig->get("default_user").asString();
956
+ const string defaultGroup = watchdogConfig->get("default_group").asString();
971
957
  struct passwd *userEntry;
972
958
 
973
959
  userEntry = getpwnam(defaultUser.c_str());
@@ -989,39 +975,32 @@ initializeWorkingObjects(const WorkingObjectsPtr &wo, InstanceDirToucherPtr &ins
989
975
  uid_t uidBeforeLoweringPrivilege)
990
976
  {
991
977
  TRACE_POINT();
992
- VariantMap &options = *agentsOptions;
993
- vector<string> strset;
994
-
995
- options.set("instance_registry_dir",
996
- absolutizePath(options.get("instance_registry_dir")));
997
- if (options.get("server_software").find(SERVER_TOKEN_NAME) == string::npos
998
- && options.get("server_software").find(FLYING_PASSENGER_NAME) == string::npos)
999
- {
1000
- options.set("server_software", options.get("server_software") +
1001
- (" " SERVER_TOKEN_NAME "/" PASSENGER_VERSION));
1002
- }
1003
-
1004
- wo->resourceLocator = boost::make_shared<ResourceLocator>(agentsOptions->get("passenger_root"));
978
+ Json::Value doc;
979
+ Json::Value::iterator it, end;
1005
980
 
1006
981
  UPDATE_TRACE_POINT();
1007
982
  lookupDefaultUidGid(wo->defaultUid, wo->defaultGid);
1008
- wo->cleanupPidfiles = options.getStrSet("cleanup_pidfiles", false);
983
+
984
+ doc = watchdogConfig->get("pidfiles_to_delete_on_exit");
985
+ for (it = doc.begin(); it != doc.end(); it++) {
986
+ wo->cleanupPidfiles.push_back(it->asString());
987
+ }
1009
988
 
1010
989
  UPDATE_TRACE_POINT();
1011
990
  InstanceDirectory::CreationOptions instanceOptions;
1012
- instanceOptions.userSwitching = options.getBool("user_switching");
991
+ instanceOptions.userSwitching = watchdogConfig->get("user_switching").asBool();
1013
992
  instanceOptions.originalUid = uidBeforeLoweringPrivilege;
1014
993
  instanceOptions.defaultUid = wo->defaultUid;
1015
994
  instanceOptions.defaultGid = wo->defaultGid;
1016
995
  instanceOptions.properties["name"] = wo->randomGenerator.generateAsciiString(8);
1017
- instanceOptions.properties["integration_mode"] = options.get("integration_mode");
1018
- instanceOptions.properties["server_software"] = options.get("server_software");
1019
- if (options.get("integration_mode") == "standalone") {
1020
- instanceOptions.properties["standalone_engine"] = options.get("standalone_engine");
996
+ instanceOptions.properties["integration_mode"] = watchdogConfig->get("integration_mode").asString();
997
+ instanceOptions.properties["server_software"] = watchdogConfig->get("server_software").asString();
998
+ if (watchdogConfig->get("integration_mode").asString() == "standalone") {
999
+ instanceOptions.properties["standalone_engine"] = watchdogConfig->get("standalone_engine").asString();
1021
1000
  }
1022
1001
  wo->instanceDir = boost::make_shared<InstanceDirectory>(instanceOptions,
1023
- options.get("instance_registry_dir"));
1024
- options.set("instance_dir", wo->instanceDir->getPath());
1002
+ watchdogConfig->get("instance_registry_dir").asString());
1003
+ wo->extraConfigToPassToSubAgents["instance_dir"] = wo->instanceDir->getPath();
1025
1004
  instanceDirToucher = boost::make_shared<InstanceDirToucher>(wo);
1026
1005
 
1027
1006
  UPDATE_TRACE_POINT();
@@ -1039,7 +1018,7 @@ initializeWorkingObjects(const WorkingObjectsPtr &wo, InstanceDirToucherPtr &ins
1039
1018
  UPDATE_TRACE_POINT();
1040
1019
  string readOnlyAdminPassword = wo->randomGenerator.generateAsciiString(24);
1041
1020
  string fullAdminPassword = wo->randomGenerator.generateAsciiString(24);
1042
- if (geteuid() == 0 && !options.getBool("user_switching")) {
1021
+ if (geteuid() == 0 && !watchdogConfig->get("user_switching").asBool()) {
1043
1022
  createFile(wo->instanceDir->getPath() + "/read_only_admin_password.txt",
1044
1023
  readOnlyAdminPassword, S_IRUSR, wo->defaultUid, wo->defaultGid);
1045
1024
  createFile(wo->instanceDir->getPath() + "/full_admin_password.txt",
@@ -1050,31 +1029,38 @@ initializeWorkingObjects(const WorkingObjectsPtr &wo, InstanceDirToucherPtr &ins
1050
1029
  createFile(wo->instanceDir->getPath() + "/full_admin_password.txt",
1051
1030
  fullAdminPassword, S_IRUSR | S_IWUSR);
1052
1031
  }
1053
- options.setDefault("core_pid_file", wo->instanceDir->getPath() + "/core.pid");
1054
- options.set("watchdog_fd_passing_password", wo->randomGenerator.generateAsciiString(24));
1032
+
1033
+ if (watchdogConfig->get("core_pid_file").isNull()) {
1034
+ wo->corePidFile = wo->instanceDir->getPath() + "/core.pid";
1035
+ } else {
1036
+ wo->corePidFile = watchdogConfig->get("core_pid_file").asString();
1037
+ }
1038
+ wo->fdPassingPassword = wo->randomGenerator.generateAsciiString(24);
1055
1039
 
1056
1040
  UPDATE_TRACE_POINT();
1057
- strset = options.getStrSet("core_addresses", false);
1058
- strset.insert(strset.begin(),
1059
- "unix:" + wo->instanceDir->getPath() + "/agents.s/core");
1060
- options.setStrSet("core_addresses", strset);
1061
- options.setDefault("core_password",
1062
- wo->randomGenerator.generateAsciiString(24));
1063
-
1064
- strset = options.getStrSet("core_api_addresses", false);
1065
- strset.insert(strset.begin(),
1066
- "unix:" + wo->instanceDir->getPath() + "/agents.s/core_api");
1067
- options.setStrSet("core_api_addresses", strset);
1041
+ wo->controllerAddresses.append("unix:" + wo->instanceDir->getPath() + "/agents.s/core");
1042
+ doc = watchdogConfig->get("controller_addresses");
1043
+ for (it = doc.begin(); it != doc.end(); it++) {
1044
+ wo->controllerAddresses.append(*it);
1045
+ }
1046
+
1047
+ wo->coreApiServerAddresses.append("unix:" + wo->instanceDir->getPath() + "/agents.s/core_api");
1048
+ doc = watchdogConfig->get("core_api_server_addresses");
1049
+ for (it = doc.begin(); it != doc.end(); it++) {
1050
+ wo->coreApiServerAddresses.append(*it);
1051
+ }
1068
1052
 
1069
1053
  UPDATE_TRACE_POINT();
1070
- strset = options.getStrSet("core_authorizations", false);
1071
- strset.insert(strset.begin(),
1054
+ wo->coreApiServerAuthorizations.append(
1072
1055
  "readonly:ro_admin:" + wo->instanceDir->getPath() +
1073
1056
  "/read_only_admin_password.txt");
1074
- strset.insert(strset.begin(),
1057
+ wo->coreApiServerAuthorizations.append(
1075
1058
  "full:admin:" + wo->instanceDir->getPath() +
1076
1059
  "/full_admin_password.txt");
1077
- options.setStrSet("core_authorizations", strset);
1060
+ doc = watchdogConfig->get("core_api_server_authorizations");
1061
+ for (it = doc.begin(); it != doc.end(); it++) {
1062
+ wo->coreApiServerAuthorizations.append(*it);
1063
+ }
1078
1064
  }
1079
1065
 
1080
1066
  static void
@@ -1095,57 +1081,65 @@ makeFileWorldReadableAndWritable(const string &path) {
1095
1081
  static void
1096
1082
  initializeApiServer(const WorkingObjectsPtr &wo) {
1097
1083
  TRACE_POINT();
1098
- VariantMap &options = *agentsOptions;
1099
- vector<string> authorizations = options.getStrSet("watchdog_authorizations", false);
1100
- vector<string> apiAddresses = options.getStrSet("watchdog_api_addresses", false);
1084
+ Json::Value doc;
1085
+ Json::Value::iterator it;
1101
1086
  string description;
1102
1087
 
1103
1088
  UPDATE_TRACE_POINT();
1104
- authorizations.insert(authorizations.begin(),
1089
+ wo->watchdogApiServerAuthorizations.append(
1105
1090
  "readonly:ro_admin:" + wo->instanceDir->getPath() +
1106
1091
  "/read_only_admin_password.txt");
1107
- authorizations.insert(authorizations.begin(),
1092
+ wo->watchdogApiServerAuthorizations.append(
1108
1093
  "full:admin:" + wo->instanceDir->getPath() +
1109
1094
  "/full_admin_password.txt");
1110
- options.setStrSet("watchdog_authorizations", authorizations);
1111
-
1112
- foreach (description, authorizations) {
1113
- try {
1114
- wo->apiAccountDatabase.add(description);
1115
- } catch (const ArgumentException &e) {
1116
- throw std::runtime_error(e.what());
1117
- }
1095
+ doc = watchdogConfig->get("watchdog_api_server_authorizations");
1096
+ for (it = doc.begin(); it != doc.end(); it++) {
1097
+ wo->watchdogApiServerAuthorizations.append(*it);
1118
1098
  }
1119
1099
 
1120
1100
  UPDATE_TRACE_POINT();
1121
- apiAddresses.insert(apiAddresses.begin(),
1122
- "unix:" + wo->instanceDir->getPath() + "/agents.s/watchdog_api");
1123
- options.setStrSet("watchdog_api_addresses", apiAddresses);
1101
+ wo->watchdogApiServerAddresses.append(
1102
+ "unix:" + wo->instanceDir->getPath() +
1103
+ "/agents.s/watchdog_api");
1104
+ doc = watchdogConfig->get("watchdog_api_server_addresses");
1105
+ for (it = doc.begin(); it != doc.end(); it++) {
1106
+ wo->watchdogApiServerAddresses.append(*it);
1107
+ }
1124
1108
 
1125
1109
  UPDATE_TRACE_POINT();
1126
- for (unsigned int i = 0; i < apiAddresses.size(); i++) {
1127
- P_DEBUG("API server will listen on " << apiAddresses[i]);
1128
- wo->apiServerFds[i] = createServer(apiAddresses[i], 0, true,
1110
+ for (unsigned int i = 0; i < wo->watchdogApiServerAddresses.size(); i++) {
1111
+ string address = wo->watchdogApiServerAddresses[i].asString();
1112
+ P_DEBUG("API server will listen on " << address);
1113
+ wo->apiServerFds[i] = createServer(address, 0, true,
1129
1114
  __FILE__, __LINE__);
1130
- if (getSocketAddressType(apiAddresses[i]) == SAT_UNIX) {
1131
- makeFileWorldReadableAndWritable(parseUnixSocketAddress(apiAddresses[i]));
1115
+ if (getSocketAddressType(address) == SAT_UNIX) {
1116
+ makeFileWorldReadableAndWritable(parseUnixSocketAddress(address));
1132
1117
  }
1133
1118
  }
1134
1119
 
1135
1120
  UPDATE_TRACE_POINT();
1121
+ Json::Value contextConfig = watchdogConfig->inspectEffectiveValues();
1136
1122
  wo->bgloop = new BackgroundEventLoop(true, true);
1137
- wo->serverKitContext = new ServerKit::Context(wo->bgloop->safe,
1138
- wo->bgloop->libuv_loop);
1139
- wo->serverKitContext->defaultFileBufferedChannelConfig.bufferDir =
1140
- absolutizePath(options.get("data_buffer_dir"));
1123
+ wo->serverKitContext = new ServerKit::Context(
1124
+ watchdogSchema->apiServerKit.schema,
1125
+ contextConfig,
1126
+ watchdogSchema->apiServerKit.translator);
1127
+ wo->serverKitContext->libev = wo->bgloop->safe;
1128
+ wo->serverKitContext->libuv = wo->bgloop->libuv_loop;
1129
+ wo->serverKitContext->initialize();
1141
1130
 
1142
1131
  UPDATE_TRACE_POINT();
1143
- wo->apiServer = new ApiServer(wo->serverKitContext, wo->apiServerSchema);
1144
- wo->apiServer->apiAccountDatabase = &wo->apiAccountDatabase;
1132
+ Json::Value apiServerConfig = watchdogConfig->inspectEffectiveValues();
1133
+ apiServerConfig["fd_passing_password"] = wo->fdPassingPassword;
1134
+ apiServerConfig["authorizations"] = wo->watchdogApiServerAuthorizations;
1135
+ wo->apiServer = new ApiServer::ApiServer(
1136
+ wo->serverKitContext,
1137
+ watchdogSchema->apiServer.schema,
1138
+ apiServerConfig,
1139
+ watchdogSchema->apiServer.translator);
1145
1140
  wo->apiServer->exitEvent = &wo->exitEvent;
1146
- wo->apiServer->fdPassingPassword = options.get("watchdog_fd_passing_password");
1147
1141
  wo->apiServer->initialize();
1148
- for (unsigned int i = 0; i < apiAddresses.size(); i++) {
1142
+ for (unsigned int i = 0; i < wo->watchdogApiServerAddresses.size(); i++) {
1149
1143
  wo->apiServer->listen(wo->apiServerFds[i]);
1150
1144
  }
1151
1145
  }
@@ -1199,34 +1193,27 @@ beginWatchingAgents(const WorkingObjectsPtr &wo, vector<AgentWatcherPtr> &watche
1199
1193
  }
1200
1194
 
1201
1195
  static void
1202
- reportAgentsInformation(const WorkingObjectsPtr &wo, const vector<AgentWatcherPtr> &watchers) {
1196
+ reportStartupResult(const WorkingObjectsPtr &wo, const vector<AgentWatcherPtr> &watchers) {
1203
1197
  TRACE_POINT();
1204
- VariantMap report;
1198
+ Json::Value report;
1205
1199
 
1206
- report.set("instance_dir", wo->instanceDir->getPath());
1200
+ report["instance_dir"] = wo->instanceDir->getPath();
1207
1201
 
1208
1202
  foreach (AgentWatcherPtr watcher, watchers) {
1209
- watcher->reportAgentsInformation(report);
1203
+ watcher->reportAgentStartupResult(report);
1210
1204
  }
1211
1205
 
1212
1206
  if (feedbackFdAvailable()) {
1213
- report.writeToFd(FEEDBACK_FD, "Agents information");
1207
+ writeArrayMessage(FEEDBACK_FD, "Agents information", NULL);
1208
+ writeScalarMessage(FEEDBACK_FD, report.toStyledString());
1214
1209
  }
1215
1210
 
1216
- if (wo->reportFile != -1) {
1217
- Json::Value doc;
1218
- VariantMap::ConstIterator it;
1219
- string str;
1220
-
1221
- for (it = report.begin(); it != report.end(); it++) {
1222
- doc[it->first] = it->second;
1223
- }
1224
- str = doc.toStyledString();
1225
-
1226
- writeExact(wo->reportFile, str.data(), str.size());
1227
- close(wo->reportFile);
1228
- P_LOG_FILE_DESCRIPTOR_CLOSE(wo->reportFile);
1229
- wo->reportFile = -1;
1211
+ if (wo->startupReportFile != -1) {
1212
+ string str = report.toStyledString();
1213
+ writeExact(wo->startupReportFile, str.data(), str.size());
1214
+ close(wo->startupReportFile);
1215
+ P_LOG_FILE_DESCRIPTOR_CLOSE(wo->startupReportFile);
1216
+ wo->startupReportFile = -1;
1230
1217
  }
1231
1218
  }
1232
1219
 
@@ -1262,10 +1249,7 @@ watchdogMain(int argc, char *argv[]) {
1262
1249
  WorkingObjectsPtr wo;
1263
1250
 
1264
1251
  initializeBareEssentials(argc, argv, wo);
1265
- setAgentsOptionsDefaults();
1266
- sanityCheckOptions();
1267
1252
  P_NOTICE("Starting " SHORT_PROGRAM_NAME " watchdog...");
1268
- P_DEBUG("Watchdog options: " << agentsOptions->inspect());
1269
1253
  InstanceDirToucherPtr instanceDirToucher;
1270
1254
  vector<AgentWatcherPtr> watchers;
1271
1255
  uid_t uidBeforeLoweringPrivilege = geteuid();
@@ -1275,7 +1259,7 @@ watchdogMain(int argc, char *argv[]) {
1275
1259
  maybeSetsid();
1276
1260
  maybeDaemonize();
1277
1261
  createPidFile();
1278
- openReportFile(wo);
1262
+ openStartupReportFile(wo);
1279
1263
  chdirToTmpDir();
1280
1264
  lowerPrivilege();
1281
1265
  initializeWorkingObjects(wo, instanceDirToucher, uidBeforeLoweringPrivilege);
@@ -1309,7 +1293,7 @@ watchdogMain(int argc, char *argv[]) {
1309
1293
  TRACE_POINT();
1310
1294
  startAgents(wo, watchers);
1311
1295
  beginWatchingAgents(wo, watchers);
1312
- reportAgentsInformation(wo, watchers);
1296
+ reportStartupResult(wo, watchers);
1313
1297
  finalizeInstanceDir(wo);
1314
1298
  P_INFO("All " PROGRAM_NAME " agents started!");
1315
1299
  UPDATE_TRACE_POINT();