passenger 6.0.11 → 6.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (280) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +24 -1
  3. data/CONTRIBUTORS +3 -0
  4. data/src/agent/Core/Config.h +1 -1
  5. data/src/agent/Core/Controller/CheckoutSession.cpp +24 -13
  6. data/src/agent/Core/Controller/Config.h +1 -1
  7. data/src/agent/Core/Controller/InternalUtils.cpp +32 -6
  8. data/src/agent/Core/Controller.h +4 -1
  9. data/src/agent/Watchdog/Config.h +1 -1
  10. data/src/cxx_supportlib/Constants.h +1 -1
  11. data/src/cxx_supportlib/IOTools/IOUtils.cpp +4 -4
  12. data/src/cxx_supportlib/vendor-modified/boost/align/aligned_alloc.hpp +47 -0
  13. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_posix.hpp +41 -0
  14. data/src/cxx_supportlib/vendor-modified/boost/align/detail/is_alignment.hpp +28 -0
  15. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +53 -1
  16. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_cancellation_slot.hpp +179 -0
  17. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +57 -1
  18. data/src/cxx_supportlib/vendor-modified/boost/asio/associator.hpp +37 -0
  19. data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +789 -106
  20. data/src/cxx_supportlib/vendor-modified/boost/asio/awaitable.hpp +1 -1
  21. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +80 -0
  22. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +10 -0
  23. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +80 -0
  24. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +30 -0
  25. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +20 -0
  26. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +90 -0
  27. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +60 -0
  28. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +10 -0
  29. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +723 -0
  30. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +191 -12
  31. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_signal.hpp +361 -0
  32. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_state.hpp +237 -0
  33. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_type.hpp +176 -0
  34. data/src/cxx_supportlib/vendor-modified/boost/asio/co_spawn.hpp +30 -2
  35. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +60 -0
  36. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_cancellation_state.hpp +165 -0
  37. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +209 -76
  38. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +149 -60
  39. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +40 -0
  40. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +8 -4
  41. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +14 -4
  42. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/functional.hpp +6 -0
  43. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +14 -10
  44. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +21 -18
  45. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +30 -19
  46. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +8 -0
  47. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +14 -0
  48. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +20 -0
  49. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +30 -0
  50. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +20 -0
  51. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +29 -0
  52. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +24 -0
  53. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +19 -0
  54. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +3 -1
  55. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +6 -0
  56. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +15 -5
  57. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +60 -0
  58. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +8 -0
  59. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +27 -0
  60. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +93 -0
  61. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +77 -0
  62. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +111 -0
  63. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +4 -0
  64. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +44 -0
  65. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +2 -1
  66. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +2 -2
  67. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +14 -4
  68. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +90 -24
  69. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +30 -1
  70. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +4 -0
  71. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +5 -1
  72. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +5 -2
  73. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +12 -12
  74. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_execute.hpp +10 -8
  75. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/connect.hpp +8 -8
  76. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/execute.hpp +7 -7
  77. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/schedule.hpp +7 -7
  78. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_done.hpp +7 -7
  79. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_error.hpp +7 -7
  80. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_value.hpp +13 -13
  81. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/start.hpp +7 -7
  82. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/submit.hpp +8 -8
  83. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/append.hpp +73 -0
  84. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_tuple.hpp +133 -0
  85. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/awaitable_operators.hpp +538 -0
  86. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/cancellation_condition.hpp +157 -0
  87. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro.hpp +1057 -0
  88. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/deferred.hpp +607 -0
  89. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/completion_handler_erasure.hpp +160 -0
  90. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +120 -0
  91. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_traits.hpp +185 -0
  92. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +181 -0
  93. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/append.hpp +219 -0
  94. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +14 -28
  95. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_tuple.hpp +248 -0
  96. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/deferred.hpp +106 -0
  97. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/parallel_group.hpp +434 -0
  98. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/prepend.hpp +219 -0
  99. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/promise.hpp +100 -0
  100. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +217 -0
  101. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/prepend.hpp +73 -0
  102. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +608 -0
  103. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +284 -0
  104. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +344 -20
  105. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +23 -54
  106. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +23 -54
  107. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +66 -18
  108. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/compose.hpp +55 -5
  109. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +68 -80
  110. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +8 -4
  111. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +8 -4
  112. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +3 -2
  113. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +8 -4
  114. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +98 -113
  115. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +71 -82
  116. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +210 -266
  117. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +248 -30
  118. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +11 -21
  119. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_awaitable.hpp +15 -3
  120. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +71 -87
  121. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +46 -68
  122. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +4 -4
  123. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +2 -7
  124. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +10 -0
  125. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +23 -3
  126. data/src/cxx_supportlib/vendor-modified/boost/asio/prefer.hpp +21 -21
  127. data/src/cxx_supportlib/vendor-modified/boost/asio/query.hpp +9 -9
  128. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +88 -0
  129. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +44 -0
  130. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +132 -0
  131. data/src/cxx_supportlib/vendor-modified/boost/asio/require.hpp +21 -21
  132. data/src/cxx_supportlib/vendor-modified/boost/asio/require_concept.hpp +9 -9
  133. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +1 -1
  134. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +5 -0
  135. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +1 -1
  136. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +14 -0
  137. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +36 -27
  138. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +1 -1
  139. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +2 -2
  140. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +37 -0
  141. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +1 -1
  142. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +14 -7
  143. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +73 -1
  144. data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +4 -4
  145. data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +235 -0
  146. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +4 -4
  147. data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +7 -10
  148. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +1 -1
  149. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +20 -0
  150. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +20 -0
  151. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +88 -0
  152. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +44 -0
  153. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +6 -0
  154. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +14 -1
  155. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +17 -13
  156. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +14 -1
  157. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx03.hpp +2 -5
  158. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx11.hpp +2 -5
  159. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx14.hpp +2 -2
  160. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx17.hpp +2 -2
  161. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx20.hpp +56 -0
  162. data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +1 -5
  163. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +31 -11
  164. data/src/cxx_supportlib/vendor-modified/boost/config/detail/cxx_composite.hpp +20 -4
  165. data/src/cxx_supportlib/vendor-modified/boost/config/detail/select_platform_config.hpp +5 -0
  166. data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +81 -0
  167. data/src/cxx_supportlib/vendor-modified/boost/config/platform/bsd.hpp +5 -8
  168. data/src/cxx_supportlib/vendor-modified/boost/config/platform/wasm.hpp +17 -0
  169. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +26 -0
  170. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +49 -0
  171. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +46 -4
  172. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +2 -2
  173. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
  174. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +2 -2
  175. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +2 -2
  176. data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +3 -0
  177. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +2 -2
  178. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +1 -1
  179. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +1 -1
  180. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +6 -6
  181. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +4 -4
  182. data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +45 -38
  183. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +24 -0
  184. data/src/cxx_supportlib/vendor-modified/boost/core/ignore_unused.hpp +32 -2
  185. data/src/cxx_supportlib/vendor-modified/boost/core/uncaught_exceptions.hpp +7 -7
  186. data/src/cxx_supportlib/vendor-modified/boost/date_time/compiler_config.hpp +0 -24
  187. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_parsers.hpp +4 -0
  188. data/src/cxx_supportlib/vendor-modified/boost/intrusive/any_hook.hpp +4 -4
  189. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +83 -83
  190. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +43 -43
  191. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +31 -31
  192. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +85 -85
  193. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +68 -68
  194. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +72 -62
  195. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +19 -20
  196. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +19 -19
  197. data/src/cxx_supportlib/vendor-modified/boost/intrusive/derivation_value_traits.hpp +4 -4
  198. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +2 -2
  199. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/bstree_algorithms_base.hpp +3 -3
  200. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +5 -5
  201. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/config_begin.hpp +1 -0
  202. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +8 -8
  203. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_combine.hpp +2 -4
  204. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +1 -1
  205. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/math.hpp +2 -50
  206. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_cloner_disposer.hpp +1 -1
  207. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +71 -70
  208. data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +15 -14
  209. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +84 -82
  210. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list_hook.hpp +10 -10
  211. data/src/cxx_supportlib/vendor-modified/boost/intrusive/member_value_traits.hpp +4 -4
  212. data/src/cxx_supportlib/vendor-modified/boost/intrusive/parent_from_member.hpp +2 -2
  213. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_plus_bits.hpp +4 -4
  214. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +18 -18
  215. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +43 -43
  216. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +26 -26
  217. data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +85 -85
  218. data/src/cxx_supportlib/vendor-modified/boost/intrusive/set_hook.hpp +12 -12
  219. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +93 -93
  220. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +51 -51
  221. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +24 -24
  222. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +104 -104
  223. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist_hook.hpp +8 -6
  224. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +91 -91
  225. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +46 -46
  226. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +31 -31
  227. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +51 -51
  228. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +18 -18
  229. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +97 -97
  230. data/src/cxx_supportlib/vendor-modified/boost/intrusive/trivial_value_traits.hpp +6 -4
  231. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +63 -63
  232. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +15 -15
  233. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +4 -1
  234. data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_begin.hpp +1 -0
  235. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_traits.hpp +1 -0
  236. data/src/cxx_supportlib/vendor-modified/boost/move/detail/nsec_clock.hpp +1 -1
  237. data/src/cxx_supportlib/vendor-modified/boost/operators.hpp +2 -0
  238. data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +1 -1
  239. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +3 -0
  240. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/unicode_iterator.hpp +112 -31
  241. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_parser.hpp +3 -0
  242. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/mem_block_cache.hpp +4 -8
  243. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/unicode_iterator.hpp +0 -2
  244. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/w32_regex_traits.hpp +6 -2
  245. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +1 -1
  246. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +22 -2
  247. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +59 -1
  248. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +9 -11
  249. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +27 -21
  250. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +34 -3
  251. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.hpp +378 -36
  252. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_condition.hpp +97 -21
  253. data/src/cxx_supportlib/vendor-modified/boost/system/detail/interop_category.hpp +107 -0
  254. data/src/cxx_supportlib/vendor-modified/boost/system/detail/is_same.hpp +33 -0
  255. data/src/cxx_supportlib/vendor-modified/boost/system/detail/snprintf.hpp +70 -0
  256. data/src/cxx_supportlib/vendor-modified/boost/system/detail/{to_std_category.hpp → std_category.hpp} +5 -55
  257. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_impl.hpp +2 -12
  258. data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +0 -33
  259. data/src/cxx_supportlib/vendor-modified/boost/utility/detail/result_of_variadic.hpp +190 -0
  260. data/src/cxx_supportlib/vendor-modified/boost/utility/result_of.hpp +20 -9
  261. data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +3 -1
  262. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  263. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +8 -0
  264. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +6 -0
  265. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +12 -0
  266. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +5 -0
  267. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +21 -0
  268. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +13 -0
  269. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +3 -0
  270. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +4 -0
  271. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +3 -2
  272. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +8 -1
  273. data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +6 -0
  274. data/src/ruby_supportlib/phusion_passenger/packaging.rb +1 -0
  275. data/src/ruby_supportlib/phusion_passenger/platform_info/openssl.rb +1 -1
  276. data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +8 -0
  277. data/src/ruby_supportlib/phusion_passenger/request_handler.rb +4 -1
  278. data/src/ruby_supportlib/phusion_passenger.rb +1 -1
  279. metadata +39 -4
  280. data/src/cxx_supportlib/vendor-modified/boost/system/detail/is_generic_value.hpp +0 -125
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 76fff612d535f2e68d251bf4911e80c690901bea
4
- data.tar.gz: 83758cb887cba27cea75e0efc68160e9e59ee9c1
3
+ metadata.gz: 536d56479491f031585ad9f7a050a49978a965be
4
+ data.tar.gz: 2074da45c50faf1754c190f448c8fd89bd1e0bfe
5
5
  SHA512:
6
- metadata.gz: 243a091f1776a5422254eb7e5258a581257c6bcd7996823a094fffcdbac561f5d188174bc1dbec200cd09ddfcc270c0215bb538c542ff0f32cd95ca3ca4da340
7
- data.tar.gz: 3490862543d1cda081c3b5fb6c808107750a3cc5395a1078ae4edb6487d27e99340711c460a1f61e448886c7095287d2b5c9100956523e701658c8199774d628
6
+ metadata.gz: a9c3b77e7ccf78b9018135ac0501a864c3bb2f695df9c5d3aa8510aa75fc04440ed4aaf6c9db3876fa8512965436ac5e3959dadb0905f4ca375f5830dd8c0091
7
+ data.tar.gz: 5e64ae1f36a459ab8661849c2c48af6fabe5a91ccb88485ecde138323686393557dde2399bfee4c2aa45e121e5cf12bb9c6f59b09e774d393b20db7803b8411c
data/CHANGELOG CHANGED
@@ -1,4 +1,27 @@
1
- Release 6.0.11 (Not yet released)
1
+ Release 6.0.12 (Not yet released)
2
+ -------------
3
+ * [Debian] Fix compilation on 32 bit arm. Contributed by Antonio Terceiro.
4
+ * [Debian] Add Bullseye Debian packages.
5
+ * Add formatted error messages to responses. Contributed by Mohammad Aboelnour.
6
+ * Fixes for running under WSL 1. Contributed by Luke Pearce. Closes GH-2036.
7
+ * Upgrades Boost to 1.77. To go along with 32 bit arm fix.
8
+ * [MacOS] Fixes autodetection of openssl lib on apple silicon. Contributed by Taketo Takashima. Closes GH-2389.
9
+ * Reconnect to mongoid databases after fork, like we do for ActiveRecord. Contributed by Mohammad Aboelnour.
10
+ * [Ubuntu] add missing apache name in instance registry dir detection.
11
+ * [Ubuntu] replace hirsute apt packages with impish.
12
+ * [Nginx] add new config option to choose the status code returned when application spawning fails. (passenger_spawn_exception_status_code).
13
+ * Updated various library versions used in precompiled binaries (used for e.g. gem installs):
14
+
15
+ - ccache: 4.4.1 → 4.4.2
16
+ - cmake: 3.21.2 → 3.21.4
17
+ - curl: 7.78.0 → 7.79.1
18
+ - git: 2.33.0 → 2.33.1
19
+ - gnupg: 2.3.2 → 2.3.3
20
+ - rubygems: 3.2.27 → 3.2.30
21
+ - s3cmd: 2.1.0 → 2.2.0
22
+
23
+
24
+ Release 6.0.11
2
25
  -------------
3
26
  * Fix compilation on GCC 4.4, fixes a regression in 6.0.8 where Passenger would no longer compiler without a C++11 compiler.
4
27
  * [CentOS] Fix version detection on CentOS Stream. Contributed by Taketo Takashima. Closes GH-2377.
data/CONTRIBUTORS CHANGED
@@ -9,6 +9,7 @@ Andre Ferraz
9
9
  Andre Nathan
10
10
  Andrei Belov
11
11
  Andy Allan
12
+ Antonio Terceiro
12
13
  Benjamin Fleischer
13
14
  Bernd Ahlers
14
15
  Bernhard M. Wiedemann
@@ -64,6 +65,7 @@ Joshua Lund
64
65
  jpatterson
65
66
  Jude Nagurney
66
67
  Kenneth Powers
68
+ Luke Pearce
67
69
  Luuk Hafkamp (Phusion)
68
70
  Luuk Hendriks (Phusion)
69
71
  MAEDA Go
@@ -74,6 +76,7 @@ Michal Papis
74
76
  Michał Pokrywka
75
77
  Mike
76
78
  Mike Boone
79
+ Mohammad Aboelnour
77
80
  Morton Jonuschat
78
81
  Nathaniel Bibler
79
82
  Neil Wilson
@@ -164,7 +164,7 @@ using namespace std;
164
164
  * security_update_checker_interval unsigned integer - default(86400)
165
165
  * security_update_checker_proxy_url string - -
166
166
  * security_update_checker_url string - default("https://securitycheck.phusionpassenger.com/v1/check.json")
167
- * server_software string - default("Phusion_Passenger/6.0.11")
167
+ * server_software string - default("Phusion_Passenger/6.0.12")
168
168
  * show_version_in_header boolean - default(true)
169
169
  * single_app_mode_app_root string - default,read_only
170
170
  * single_app_mode_app_start_command string - read_only
@@ -242,19 +242,25 @@ Controller::reportSessionCheckoutError(Client *client, Request *req,
242
242
  writeOtherExceptionErrorResponse(client, req, e);
243
243
  }
244
244
 
245
- void
246
- Controller::writeRequestQueueFullExceptionErrorResponse(Client *client, Request *req,
247
- const boost::shared_ptr<RequestQueueFullException> &e)
245
+ int
246
+ Controller::lookupCodeFromHeader(Request *req, const char* header, int statusCode)
248
247
  {
249
- TRACE_POINT();
250
- const LString *value = req->secureHeaders.lookup(
251
- "!~PASSENGER_REQUEST_QUEUE_OVERFLOW_STATUS_CODE");
252
- int requestQueueOverflowStatusCode = 503;
248
+ const LString *value = req->secureHeaders.lookup(header);
253
249
  if (value != NULL && value->size > 0) {
254
250
  value = psg_lstr_make_contiguous(value, req->pool);
255
- requestQueueOverflowStatusCode = stringToInt(
251
+ statusCode = stringToInt(
256
252
  StaticString(value->start->data, value->size));
257
253
  }
254
+ return statusCode;
255
+ }
256
+
257
+ void
258
+ Controller::writeRequestQueueFullExceptionErrorResponse(Client *client, Request *req,
259
+ const boost::shared_ptr<RequestQueueFullException> &e)
260
+ {
261
+ TRACE_POINT();
262
+
263
+ int requestQueueOverflowStatusCode = lookupCodeFromHeader(req, "!~PASSENGER_REQUEST_QUEUE_OVERFLOW_STATUS_CODE", 503);
258
264
 
259
265
  SKC_WARN(client, "Returning HTTP " << requestQueueOverflowStatusCode <<
260
266
  " due to: " << e->what());
@@ -271,15 +277,20 @@ Controller::writeSpawnExceptionErrorResponse(Client *client, Request *req,
271
277
  const boost::shared_ptr<SpawningKit::SpawnException> &e)
272
278
  {
273
279
  TRACE_POINT();
280
+ int spawnExceptionStatusCode = lookupCodeFromHeader(req, "!~PASSENGER_SPAWN_EXCEPTION_STATUS_CODE", 500);
274
281
  SKC_ERROR(client, "Cannot checkout session because a spawning error occurred. " <<
275
282
  "The identifier of the error is " << e->getId() << ". Please see earlier logs for " <<
276
283
  "details about the error.");
277
- endRequestWithErrorResponse(&client, &req, *e);
284
+ endRequestWithErrorResponse(&client, &req, *e, spawnExceptionStatusCode);
278
285
  }
279
286
 
280
287
  void
281
288
  Controller::writeOtherExceptionErrorResponse(Client *client, Request *req, const ExceptionPtr &e) {
282
289
  TRACE_POINT();
290
+
291
+ // ATM "other" exceptions always return a spawn exception error message, so use the matching status code
292
+ int otherExceptionStatusCode = lookupCodeFromHeader(req, "!~PASSENGER_SPAWN_EXCEPTION_STATUS_CODE", 500);
293
+
283
294
  string typeName;
284
295
  const oxt::tracable_exception &eptr = *e;
285
296
  #ifdef CXX_ABI_API_AVAILABLE
@@ -324,16 +335,16 @@ Controller::writeOtherExceptionErrorResponse(Client *client, Request *req, const
324
335
  }
325
336
  pos = appendData(pos, end, "</p>");
326
337
 
327
- endRequestWithSimpleResponse(&client, &req, StaticString(buf, pos - buf), 500);
338
+ endRequestWithSimpleResponse(&client, &req, StaticString(buf, pos - buf), otherExceptionStatusCode);
328
339
  } else {
329
340
  endRequestWithSimpleResponse(&client, &req, "<h2>Internal server error</h2>"
330
- "Application could not be started. Please try again later.", 500);
341
+ "Application could not be started. Please try again later.", otherExceptionStatusCode);
331
342
  }
332
343
  }
333
344
 
334
345
  void
335
346
  Controller::endRequestWithErrorResponse(Client **c, Request **r,
336
- const SpawningKit::SpawnException &e)
347
+ const SpawningKit::SpawnException &e, int statusCode)
337
348
  {
338
349
  TRACE_POINT();
339
350
  Client *client = *c;
@@ -359,7 +370,7 @@ Controller::endRequestWithErrorResponse(Client **c, Request **r,
359
370
  }
360
371
  }
361
372
 
362
- endRequestWithSimpleResponse(c, r, psg_pstrdup(req->pool, data), 500);
373
+ endRequestWithSimpleResponse(c, r, psg_pstrdup(req->pool, data), statusCode);
363
374
  }
364
375
 
365
376
  bool
@@ -115,7 +115,7 @@ parseControllerBenchmarkMode(const StaticString &mode) {
115
115
  * multi_app boolean - default(true),read_only
116
116
  * request_freelist_limit unsigned integer - default(1024)
117
117
  * response_buffer_high_watermark unsigned integer - default(134217728)
118
- * server_software string - default("Phusion_Passenger/6.0.11")
118
+ * server_software string - default("Phusion_Passenger/6.0.12")
119
119
  * show_version_in_header boolean - default(true)
120
120
  * start_reading_after_accept boolean - default(true)
121
121
  * stat_throttle_rate unsigned integer - default(10)
@@ -96,7 +96,7 @@ Controller::endRequestWithAppSocketIncompleteResponse(Client **client, Request *
96
96
  SKC_WARN(*client, "Sending 502 response: application did not send a complete response");
97
97
  }
98
98
  endRequestWithSimpleResponse(client, req,
99
- "<h2>Incomplete response received from application</h2>", 502);
99
+ getFormattedMessage(*req, "Incomplete response received from application"), 502);
100
100
  } else {
101
101
  disconnectWithAppSocketIncompleteResponseError(client);
102
102
  }
@@ -107,12 +107,39 @@ Controller::endRequestWithAppSocketReadError(Client **client, Request **req, int
107
107
  Client *c = *client;
108
108
  if (!(*req)->responseBegun) {
109
109
  SKC_WARN(*client, "Sending 502 response: application socket read error");
110
- endRequestWithSimpleResponse(client, req, "<h2>Application socket read error</h2>", 502);
110
+ endRequestWithSimpleResponse(client, req,
111
+ getFormattedMessage(*req, "Application socket read error"), 502);
111
112
  } else {
112
113
  disconnectWithAppSocketReadError(&c, e);
113
114
  }
114
115
  }
115
116
 
117
+ ServerKit::HeaderTable
118
+ Controller::getHeadersWithContentType(Request *req)
119
+ {
120
+ ServerKit::HeaderTable headers;
121
+ const LString *value = req->headers.lookup(P_STATIC_STRING("content-type"));
122
+ if (value != NULL) {
123
+ if (psg_lstr_cmp(value, P_STATIC_STRING("application/json"))) {
124
+ headers.insert(req->pool, "content-type", "application/json");
125
+ }
126
+ // Here we can extend setting `content-type` with more supported formats, ie: xml,...
127
+ }
128
+ return headers;
129
+ }
130
+
131
+ const StaticString
132
+ Controller::getFormattedMessage(Request *req, const StaticString &body)
133
+ {
134
+ const LString *value = req->headers.lookup(P_STATIC_STRING("content-type"));
135
+ if (value != NULL) {
136
+ if (psg_lstr_cmp(value, P_STATIC_STRING("application/json"))) {
137
+ return "{\"status\":\"error\", \"message\": \""+body+"\"}";
138
+ }
139
+ }
140
+ return "<h1>"+body+"</h1>";
141
+ }
142
+
116
143
  /**
117
144
  * `data` must outlive the request.
118
145
  */
@@ -122,8 +149,7 @@ Controller::endRequestWithSimpleResponse(Client **c, Request **r,
122
149
  {
123
150
  Client *client = *c;
124
151
  Request *req = *r;
125
- ServerKit::HeaderTable headers;
126
-
152
+ ServerKit::HeaderTable headers = getHeadersWithContentType(req);
127
153
  headers.insert(req->pool, "cache-control", "no-cache, no-store, must-revalidate");
128
154
  writeSimpleResponse(client, code, &headers, body);
129
155
  endRequest(c, r);
@@ -134,9 +160,9 @@ Controller::endRequestAsBadGateway(Client **client, Request **req) {
134
160
  if ((*req)->responseBegun) {
135
161
  disconnectWithError(client, "bad gateway");
136
162
  } else {
137
- ServerKit::HeaderTable headers;
163
+ ServerKit::HeaderTable headers = getHeadersWithContentType(*req);
138
164
  headers.insert((*req)->pool, "cache-control", "no-cache, no-store, must-revalidate");
139
- writeSimpleResponse(*client, 502, &headers, "<h1>Bad Gateway</h1>");
165
+ writeSimpleResponse(*client, 502, &headers, getFormattedMessage(*req, "Bad Gateway"));
140
166
  endRequest(client, req);
141
167
  }
142
168
  }
@@ -207,6 +207,7 @@ private:
207
207
  static void checkoutSessionLater(Request *req);
208
208
  void reportSessionCheckoutError(Client *client, Request *req,
209
209
  const ExceptionPtr &e);
210
+ int lookupCodeFromHeader(Request *req, const char* header, int statusCode);
210
211
  void writeRequestQueueFullExceptionErrorResponse(Client *client,
211
212
  Request *req, const boost::shared_ptr<RequestQueueFullException> &e);
212
213
  void writeSpawnExceptionErrorResponse(Client *client, Request *req,
@@ -214,7 +215,7 @@ private:
214
215
  void writeOtherExceptionErrorResponse(Client *client, Request *req,
215
216
  const ExceptionPtr &e);
216
217
  void endRequestWithErrorResponse(Client **c, Request **r,
217
- const SpawningKit::SpawnException &e);
218
+ const SpawningKit::SpawnException &e, int statusCode);
218
219
  bool friendlyErrorPagesEnabled(Request *req);
219
220
 
220
221
 
@@ -313,6 +314,8 @@ private:
313
314
  Request **req);
314
315
  void endRequestWithAppSocketReadError(Client **client, Request **req,
315
316
  int e);
317
+ ServerKit::HeaderTable getHeadersWithContentType(Request *req);
318
+ const StaticString getFormattedMessage(Request *req, const StaticString &body);
316
319
  void endRequestWithSimpleResponse(Client **c, Request **r,
317
320
  const StaticString &body, int code = 200);
318
321
  void endRequestAsBadGateway(Client **client, Request **req);
@@ -153,7 +153,7 @@ using namespace std;
153
153
  * security_update_checker_interval unsigned integer - default(86400)
154
154
  * security_update_checker_proxy_url string - -
155
155
  * security_update_checker_url string - default("https://securitycheck.phusionpassenger.com/v1/check.json")
156
- * server_software string - default("Phusion_Passenger/6.0.11")
156
+ * server_software string - default("Phusion_Passenger/6.0.12")
157
157
  * setsid boolean - default(false)
158
158
  * show_version_in_header boolean - default(true)
159
159
  * single_app_mode_app_root string - default,read_only
@@ -83,7 +83,7 @@
83
83
  #define PASSENGER_API_VERSION_MAJOR 0
84
84
  #define PASSENGER_API_VERSION_MINOR 3
85
85
  #define PASSENGER_DEFAULT_USER "nobody"
86
- #define PASSENGER_VERSION "6.0.11"
86
+ #define PASSENGER_VERSION "6.0.12"
87
87
  #define POOL_HELPER_THREAD_STACK_SIZE 262144
88
88
  #define PROCESS_SHUTDOWN_TIMEOUT 60
89
89
  #define PROCESS_SHUTDOWN_TIMEOUT_DISPLAY "1 minute"
@@ -1183,7 +1183,7 @@ readFileDescriptor(int fd, unsigned long long *timeout) {
1183
1183
  struct msghdr msg;
1184
1184
  struct iovec vec;
1185
1185
  char dummy[1];
1186
- #if defined(__APPLE__) || defined(__SOLARIS__) || defined(__arm__)
1186
+ #if defined(__APPLE__) || defined(__SOLARIS__)
1187
1187
  // File descriptor passing macros (CMSG_*) seem to be broken
1188
1188
  // on 64-bit MacOS X. This structure works around the problem.
1189
1189
  struct {
@@ -1226,7 +1226,7 @@ readFileDescriptor(int fd, unsigned long long *timeout) {
1226
1226
  throw IOException("No valid file descriptor received.");
1227
1227
  }
1228
1228
 
1229
- #if defined(__APPLE__) || defined(__SOLARIS__) || defined(__arm__)
1229
+ #if defined(__APPLE__) || defined(__SOLARIS__)
1230
1230
  return control_data.fd;
1231
1231
  #else
1232
1232
  return *((int *) CMSG_DATA(control_header));
@@ -1242,7 +1242,7 @@ writeFileDescriptor(int fd, int fdToSend, unsigned long long *timeout) {
1242
1242
  struct msghdr msg;
1243
1243
  struct iovec vec;
1244
1244
  char dummy[1];
1245
- #if defined(__APPLE__) || defined(__SOLARIS__) || defined(__arm__)
1245
+ #if defined(__APPLE__) || defined(__SOLARIS__)
1246
1246
  struct {
1247
1247
  struct cmsghdr header;
1248
1248
  int fd;
@@ -1273,7 +1273,7 @@ writeFileDescriptor(int fd, int fdToSend, unsigned long long *timeout) {
1273
1273
  control_header = CMSG_FIRSTHDR(&msg);
1274
1274
  control_header->cmsg_level = SOL_SOCKET;
1275
1275
  control_header->cmsg_type = SCM_RIGHTS;
1276
- #if defined(__APPLE__) || defined(__SOLARIS__) || defined(__arm__)
1276
+ #if defined(__APPLE__) || defined(__SOLARIS__)
1277
1277
  control_header->cmsg_len = sizeof(control_data);
1278
1278
  control_data.fd = fdToSend;
1279
1279
  #else
@@ -0,0 +1,47 @@
1
+ /*
2
+ Copyright 2014-2015 Glen Joseph Fernandes
3
+ (glenjofe@gmail.com)
4
+
5
+ Distributed under the Boost Software License, Version 1.0.
6
+ (http://www.boost.org/LICENSE_1_0.txt)
7
+ */
8
+ #ifndef BOOST_ALIGN_ALIGNED_ALLOC_HPP
9
+ #define BOOST_ALIGN_ALIGNED_ALLOC_HPP
10
+
11
+ #include <boost/config.hpp>
12
+
13
+ #if defined(BOOST_HAS_UNISTD_H)
14
+ #include <unistd.h>
15
+ #endif
16
+
17
+ #if defined(__APPLE__) || defined(__APPLE_CC__) || defined(macintosh)
18
+ #include <AvailabilityMacros.h>
19
+ #endif
20
+
21
+ #if defined(BOOST_ALIGN_USE_ALIGN)
22
+ #include <boost/align/detail/aligned_alloc.hpp>
23
+ #elif defined(BOOST_ALIGN_USE_NEW)
24
+ #include <boost/align/detail/aligned_alloc_new.hpp>
25
+ #elif defined(_MSC_VER) && !defined(UNDER_CE)
26
+ #include <boost/align/detail/aligned_alloc_msvc.hpp>
27
+ #elif defined(__MINGW32__) && (__MSVCRT_VERSION__ >= 0x0700)
28
+ #include <boost/align/detail/aligned_alloc_msvc.hpp>
29
+ #elif defined(__MINGW32__)
30
+ #include <boost/align/detail/aligned_alloc_mingw.hpp>
31
+ #elif MAC_OS_X_VERSION_MIN_REQUIRED >= 1090
32
+ #include <boost/align/detail/aligned_alloc_posix.hpp>
33
+ #elif MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
34
+ #include <boost/align/detail/aligned_alloc_macos.hpp>
35
+ #elif defined(__ANDROID__)
36
+ #include <boost/align/detail/aligned_alloc_android.hpp>
37
+ #elif defined(__SunOS_5_11) || defined(__SunOS_5_12)
38
+ #include <boost/align/detail/aligned_alloc_posix.hpp>
39
+ #elif defined(sun) || defined(__sun)
40
+ #include <boost/align/detail/aligned_alloc_sunos.hpp>
41
+ #elif (_POSIX_C_SOURCE >= 200112L) || (_XOPEN_SOURCE >= 600)
42
+ #include <boost/align/detail/aligned_alloc_posix.hpp>
43
+ #else
44
+ #include <boost/align/detail/aligned_alloc.hpp>
45
+ #endif
46
+
47
+ #endif
@@ -0,0 +1,41 @@
1
+ /*
2
+ Copyright 2014 Glen Joseph Fernandes
3
+ (glenjofe@gmail.com)
4
+
5
+ Distributed under the Boost Software License, Version 1.0.
6
+ (http://www.boost.org/LICENSE_1_0.txt)
7
+ */
8
+ #ifndef BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_POSIX_HPP
9
+ #define BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_POSIX_HPP
10
+
11
+ #include <boost/align/detail/is_alignment.hpp>
12
+ #include <boost/assert.hpp>
13
+ #include <stdlib.h>
14
+
15
+ namespace boost {
16
+ namespace alignment {
17
+
18
+ inline void*
19
+ aligned_alloc(std::size_t alignment, std::size_t size) BOOST_NOEXCEPT
20
+ {
21
+ BOOST_ASSERT(detail::is_alignment(alignment));
22
+ if (alignment < sizeof(void*)) {
23
+ alignment = sizeof(void*);
24
+ }
25
+ void* p;
26
+ if (::posix_memalign(&p, alignment, size) != 0) {
27
+ p = 0;
28
+ }
29
+ return p;
30
+ }
31
+
32
+ inline void
33
+ aligned_free(void* ptr) BOOST_NOEXCEPT
34
+ {
35
+ ::free(ptr);
36
+ }
37
+
38
+ } /* alignment */
39
+ } /* boost */
40
+
41
+ #endif
@@ -0,0 +1,28 @@
1
+ /*
2
+ Copyright 2014 Glen Joseph Fernandes
3
+ (glenjofe@gmail.com)
4
+
5
+ Distributed under the Boost Software License, Version 1.0.
6
+ (http://www.boost.org/LICENSE_1_0.txt)
7
+ */
8
+ #ifndef BOOST_ALIGN_DETAIL_IS_ALIGNMENT_HPP
9
+ #define BOOST_ALIGN_DETAIL_IS_ALIGNMENT_HPP
10
+
11
+ #include <boost/config.hpp>
12
+ #include <cstddef>
13
+
14
+ namespace boost {
15
+ namespace alignment {
16
+ namespace detail {
17
+
18
+ BOOST_CONSTEXPR inline bool
19
+ is_alignment(std::size_t value) BOOST_NOEXCEPT
20
+ {
21
+ return (value > 0) && ((value & (value - 1)) == 0);
22
+ }
23
+
24
+ } /* detail */
25
+ } /* alignment */
26
+ } /* boost */
27
+
28
+ #endif
@@ -17,15 +17,33 @@
17
17
 
18
18
  #include <boost/asio/detail/config.hpp>
19
19
  #include <memory>
20
+ #include <boost/asio/associator.hpp>
21
+ #include <boost/asio/detail/functional.hpp>
20
22
  #include <boost/asio/detail/type_traits.hpp>
21
23
 
22
24
  #include <boost/asio/detail/push_options.hpp>
23
25
 
24
26
  namespace boost {
25
27
  namespace asio {
28
+
29
+ template <typename T, typename Allocator>
30
+ struct associated_allocator;
31
+
26
32
  namespace detail {
27
33
 
28
- template <typename T, typename E, typename = void>
34
+ template <typename T, typename = void>
35
+ struct has_allocator_type : false_type
36
+ {
37
+ };
38
+
39
+ template <typename T>
40
+ struct has_allocator_type<T,
41
+ typename void_type<typename T::executor_type>::type>
42
+ : true_type
43
+ {
44
+ };
45
+
46
+ template <typename T, typename E, typename = void, typename = void>
29
47
  struct associated_allocator_impl
30
48
  {
31
49
  typedef E type;
@@ -48,6 +66,17 @@ struct associated_allocator_impl<T, E,
48
66
  }
49
67
  };
50
68
 
69
+ template <typename T, typename E>
70
+ struct associated_allocator_impl<T, E,
71
+ typename enable_if<
72
+ !has_allocator_type<T>::value
73
+ >::type,
74
+ typename void_type<
75
+ typename associator<associated_allocator, T, E>::type
76
+ >::type> : associator<associated_allocator, T, E>
77
+ {
78
+ };
79
+
51
80
  } // namespace detail
52
81
 
53
82
  /// Traits type used to obtain the allocator associated with an object.
@@ -119,6 +148,29 @@ using associated_allocator_t
119
148
 
120
149
  #endif // defined(BOOST_ASIO_HAS_ALIAS_TEMPLATES)
121
150
 
151
+ #if defined(BOOST_ASIO_HAS_STD_REFERENCE_WRAPPER) \
152
+ || defined(GENERATING_DOCUMENTATION)
153
+
154
+ /// Specialisation of associated_allocator for @c std::reference_wrapper.
155
+ template <typename T, typename Allocator>
156
+ struct associated_allocator<reference_wrapper<T>, Allocator>
157
+ {
158
+ /// Forwards @c type to the associator specialisation for the unwrapped type
159
+ /// @c T.
160
+ typedef typename associated_allocator<T, Allocator>::type type;
161
+
162
+ /// Forwards the request to get the allocator to the associator specialisation
163
+ /// for the unwrapped type @c T.
164
+ static type get(reference_wrapper<T> t,
165
+ const Allocator& a = Allocator()) BOOST_ASIO_NOEXCEPT
166
+ {
167
+ return associated_allocator<T, Allocator>::get(t.get(), a);
168
+ }
169
+ };
170
+
171
+ #endif // defined(BOOST_ASIO_HAS_STD_REFERENCE_WRAPPER)
172
+ // || defined(GENERATING_DOCUMENTATION)
173
+
122
174
  } // namespace asio
123
175
  } // namespace boost
124
176