passenger 4.0.20 → 4.0.21

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 (496) hide show
  1. checksums.yaml +8 -8
  2. checksums.yaml.gz.asc +7 -7
  3. data.tar.gz.asc +7 -7
  4. data/.gitignore +1 -0
  5. data/.travis.yml +1 -1
  6. data/NEWS +15 -0
  7. data/README.md +5 -3
  8. data/Rakefile +1 -0
  9. data/bin/passenger-config +1 -5
  10. data/bin/passenger-install-apache2-module +53 -5
  11. data/bin/passenger-install-nginx-module +19 -6
  12. data/bin/passenger-memory-stats +3 -3
  13. data/build/agents.rb +11 -8
  14. data/build/apache2.rb +9 -5
  15. data/build/basics.rb +15 -21
  16. data/build/common_library.rb +16 -6
  17. data/build/cplusplus_support.rb +5 -5
  18. data/build/cxx_tests.rb +3 -3
  19. data/build/documentation.rb +1 -1
  20. data/build/misc.rb +4 -37
  21. data/build/node_tests.rb +29 -0
  22. data/build/oxt_tests.rb +1 -1
  23. data/build/packaging.rb +29 -10
  24. data/build/preprocessor.rb +2 -1
  25. data/build/test_basics.rb +15 -6
  26. data/debian.template/locations.ini.template +1 -0
  27. data/debian.template/passenger.install.template +1 -0
  28. data/dev/copy_boost_headers.rb +7 -3
  29. data/dev/run_travis.sh +32 -16
  30. data/doc/Users guide Apache.idmap.txt +22 -34
  31. data/doc/Users guide Apache.txt +20 -234
  32. data/doc/Users guide Nginx.idmap.txt +84 -66
  33. data/doc/Users guide Nginx.txt +50 -1
  34. data/doc/Users guide Standalone.idmap.txt +74 -0
  35. data/doc/Users guide Standalone.txt +22 -9
  36. data/doc/Users guide.txt +51 -0
  37. data/doc/users_guide_snippets/environment_variables.txt +0 -3
  38. data/doc/users_guide_snippets/installation.txt +337 -380
  39. data/doc/users_guide_snippets/installation/run_installer.txt +58 -0
  40. data/doc/users_guide_snippets/installation/verify_running_epilogue.txt +6 -0
  41. data/doc/users_guide_snippets/support_information.txt +2 -9
  42. data/doc/users_guide_snippets/troubleshooting/default.txt +112 -0
  43. data/doc/users_guide_snippets/troubleshooting/rails.txt +56 -0
  44. data/doc/users_guide_snippets/where_to_get_support.txt +9 -0
  45. data/ext/apache2/Bucket.h +1 -1
  46. data/ext/apache2/Configuration.hpp +0 -44
  47. data/ext/apache2/CreateDirConfig.cpp +1 -1
  48. data/ext/apache2/CreateDirConfig.cpp.erb +1 -1
  49. data/ext/apache2/Hooks.cpp +28 -21
  50. data/ext/apache2/MergeDirConfig.cpp +1 -0
  51. data/ext/apache2/MergeDirConfig.cpp.erb +1 -1
  52. data/ext/apache2/SetHeaders.cpp +73 -0
  53. data/ext/apache2/SetHeaders.cpp.erb +88 -0
  54. data/ext/boost/algorithm/string/detail/find_format.hpp +5 -5
  55. data/ext/boost/algorithm/string/detail/find_format_all.hpp +5 -5
  56. data/ext/boost/algorithm/string/detail/finder.hpp +1 -1
  57. data/ext/boost/algorithm/string/formatter.hpp +2 -2
  58. data/ext/boost/assert.hpp +6 -1
  59. data/ext/boost/atomic.hpp +18 -0
  60. data/ext/boost/atomic/atomic.hpp +241 -0
  61. data/ext/boost/atomic/detail/base.hpp +585 -0
  62. data/ext/boost/atomic/detail/cas32strong.hpp +885 -0
  63. data/ext/boost/atomic/detail/cas32weak.hpp +947 -0
  64. data/ext/boost/atomic/detail/cas64strong.hpp +443 -0
  65. data/ext/boost/atomic/detail/config.hpp +54 -0
  66. data/ext/boost/atomic/detail/gcc-alpha.hpp +368 -0
  67. data/ext/boost/atomic/detail/gcc-armv6plus.hpp +252 -0
  68. data/ext/boost/atomic/detail/gcc-cas.hpp +157 -0
  69. data/ext/boost/atomic/detail/gcc-ppc.hpp +2850 -0
  70. data/ext/boost/atomic/detail/gcc-sparcv9.hpp +1259 -0
  71. data/ext/boost/atomic/detail/gcc-x86.hpp +1766 -0
  72. data/ext/boost/atomic/detail/generic-cas.hpp +206 -0
  73. data/ext/boost/atomic/detail/interlocked.hpp +200 -0
  74. data/ext/boost/atomic/detail/linux-arm.hpp +189 -0
  75. data/ext/boost/atomic/detail/lockpool.hpp +97 -0
  76. data/ext/boost/atomic/detail/platform.hpp +62 -0
  77. data/ext/boost/atomic/detail/type-classification.hpp +45 -0
  78. data/ext/boost/chrono/config.hpp +8 -3
  79. data/ext/boost/chrono/duration.hpp +9 -10
  80. data/ext/boost/chrono/system_clocks.hpp +1 -1
  81. data/ext/boost/chrono/time_point.hpp +4 -3
  82. data/ext/boost/config/auto_link.hpp +53 -52
  83. data/ext/boost/config/compiler/borland.hpp +1 -0
  84. data/ext/boost/config/compiler/clang.hpp +24 -1
  85. data/ext/boost/config/compiler/codegear.hpp +1 -0
  86. data/ext/boost/config/compiler/common_edg.hpp +1 -0
  87. data/ext/boost/config/compiler/cray.hpp +1 -0
  88. data/ext/boost/config/compiler/digitalmars.hpp +1 -0
  89. data/ext/boost/config/compiler/gcc.hpp +29 -3
  90. data/ext/boost/config/compiler/gcc_xml.hpp +2 -1
  91. data/ext/boost/config/compiler/hp_acc.hpp +1 -0
  92. data/ext/boost/config/compiler/intel.hpp +1 -1
  93. data/ext/boost/config/compiler/metrowerks.hpp +1 -0
  94. data/ext/boost/config/compiler/mpw.hpp +1 -0
  95. data/ext/boost/config/compiler/pathscale.hpp +1 -0
  96. data/ext/boost/config/compiler/pgi.hpp +1 -0
  97. data/ext/boost/config/compiler/sunpro_cc.hpp +1 -0
  98. data/ext/boost/config/compiler/vacpp.hpp +3 -2
  99. data/ext/boost/config/compiler/visualc.hpp +25 -11
  100. data/ext/boost/config/platform/vxworks.hpp +353 -15
  101. data/ext/boost/config/select_compiler_config.hpp +4 -4
  102. data/ext/boost/config/stdlib/dinkumware.hpp +10 -3
  103. data/ext/boost/config/stdlib/libstdcpp3.hpp +2 -1
  104. data/ext/boost/config/suffix.hpp +45 -19
  105. data/ext/boost/date_time/format_date_parser.hpp +1 -11
  106. data/ext/boost/date_time/strings_from_facet.hpp +5 -3
  107. data/ext/boost/detail/atomic_redef_macros.hpp +19 -0
  108. data/ext/boost/detail/atomic_undef_macros.hpp +39 -0
  109. data/ext/boost/detail/endian.hpp +52 -4
  110. data/ext/boost/detail/scoped_enum_emulation.hpp +10 -10
  111. data/ext/boost/detail/select_type.hpp +36 -0
  112. data/ext/boost/exception/current_exception_cast.hpp +1 -1
  113. data/ext/boost/exception/detail/error_info_impl.hpp +3 -5
  114. data/ext/boost/exception/detail/exception_ptr.hpp +3 -3
  115. data/ext/boost/exception/detail/is_output_streamable.hpp +1 -1
  116. data/ext/boost/exception/detail/object_hex_dump.hpp +1 -1
  117. data/ext/boost/exception/detail/type_info.hpp +1 -1
  118. data/ext/boost/exception/diagnostic_information.hpp +15 -14
  119. data/ext/boost/exception/exception.hpp +1 -1
  120. data/ext/boost/exception/get_error_info.hpp +1 -1
  121. data/ext/boost/exception/info.hpp +12 -13
  122. data/ext/boost/exception/to_string.hpp +6 -1
  123. data/ext/boost/exception/to_string_stub.hpp +9 -1
  124. data/ext/boost/foreach.hpp +5 -5
  125. data/ext/boost/function/function_template.hpp +6 -6
  126. data/ext/boost/functional/hash/detail/float_functions.hpp +90 -0
  127. data/ext/boost/functional/hash/detail/hash_float.hpp +11 -2
  128. data/ext/boost/functional/hash/extensions.hpp +14 -2
  129. data/ext/boost/functional/hash/hash.hpp +26 -5
  130. data/ext/boost/get_pointer.hpp +17 -2
  131. data/ext/boost/integer_traits.hpp +1 -1
  132. data/ext/boost/lexical_cast.hpp +615 -395
  133. data/ext/boost/libs/atomic/lockpool.cpp +24 -0
  134. data/ext/boost/libs/system/src/error_code.cpp +25 -18
  135. data/ext/boost/libs/thread/src/future.cpp +7 -5
  136. data/ext/boost/libs/thread/src/pthread/once.cpp +9 -3
  137. data/ext/boost/libs/thread/src/pthread/once_atomic.cpp +90 -0
  138. data/ext/boost/libs/thread/src/pthread/thread.cpp +129 -95
  139. data/ext/boost/libs/thread/src/pthread/timeconv.inl +20 -1
  140. data/ext/boost/limits.hpp +1 -1
  141. data/ext/boost/math/policies/policy.hpp +10 -0
  142. data/ext/boost/math/special_functions/detail/round_fwd.hpp +17 -4
  143. data/ext/boost/math/special_functions/fpclassify.hpp +114 -45
  144. data/ext/boost/math/special_functions/math_fwd.hpp +195 -83
  145. data/ext/boost/math/special_functions/sign.hpp +13 -8
  146. data/ext/boost/math/tools/config.hpp +38 -16
  147. data/ext/boost/move/algorithm.hpp +275 -0
  148. data/ext/boost/move/core.hpp +332 -0
  149. data/ext/boost/move/detail/config_begin.hpp +23 -0
  150. data/ext/boost/move/detail/config_end.hpp +20 -0
  151. data/ext/boost/move/detail/meta_utils.hpp +158 -0
  152. data/ext/boost/move/iterator.hpp +298 -0
  153. data/ext/boost/move/move.hpp +10 -1256
  154. data/ext/boost/move/traits.hpp +142 -0
  155. data/ext/boost/move/utility.hpp +194 -0
  156. data/ext/boost/mpl/assert.hpp +72 -4
  157. data/ext/boost/noncopyable.hpp +15 -3
  158. data/ext/boost/pointer_to_other.hpp +55 -0
  159. data/ext/boost/range/concepts.hpp +4 -4
  160. data/ext/boost/range/detail/extract_optional_type.hpp +1 -1
  161. data/ext/boost/range/empty.hpp +1 -1
  162. data/ext/boost/range/iterator_range_core.hpp +4 -1
  163. data/ext/boost/range/iterator_range_io.hpp +2 -2
  164. data/ext/boost/ratio/config.hpp +6 -0
  165. data/ext/boost/ratio/detail/overflow_helpers.hpp +2 -2
  166. data/ext/boost/smart_ptr/allocate_shared_array.hpp +250 -0
  167. data/ext/boost/smart_ptr/detail/allocate_array_helper.hpp +169 -0
  168. data/ext/boost/smart_ptr/detail/array_deleter.hpp +124 -0
  169. data/ext/boost/smart_ptr/detail/array_traits.hpp +53 -0
  170. data/ext/boost/smart_ptr/detail/array_utility.hpp +178 -0
  171. data/ext/boost/smart_ptr/detail/make_array_helper.hpp +157 -0
  172. data/ext/boost/smart_ptr/detail/operator_bool.hpp +16 -9
  173. data/ext/boost/smart_ptr/detail/shared_count.hpp +78 -7
  174. data/ext/boost/smart_ptr/detail/sp_convertible.hpp +15 -0
  175. data/ext/boost/smart_ptr/detail/sp_counted_base.hpp +12 -6
  176. data/ext/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +1 -0
  177. data/ext/boost/smart_ptr/detail/sp_counted_base_aix.hpp +1 -0
  178. data/ext/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +1 -0
  179. data/ext/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +1 -0
  180. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +1 -0
  181. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +1 -0
  182. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +1 -0
  183. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +1 -0
  184. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +1 -0
  185. data/ext/boost/smart_ptr/detail/sp_counted_base_nt.hpp +1 -0
  186. data/ext/boost/smart_ptr/detail/sp_counted_base_pt.hpp +1 -0
  187. data/ext/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +162 -0
  188. data/ext/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +1 -0
  189. data/ext/boost/smart_ptr/detail/sp_counted_base_spin.hpp +1 -0
  190. data/ext/boost/smart_ptr/detail/sp_counted_base_sync.hpp +1 -0
  191. data/ext/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +1 -0
  192. data/ext/boost/smart_ptr/detail/sp_counted_impl.hpp +15 -0
  193. data/ext/boost/smart_ptr/detail/sp_forward.hpp +39 -0
  194. data/ext/boost/smart_ptr/detail/sp_has_sync.hpp +19 -3
  195. data/ext/boost/smart_ptr/detail/sp_if_array.hpp +31 -0
  196. data/ext/boost/smart_ptr/detail/sp_nullptr_t.hpp +45 -0
  197. data/ext/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +5 -12
  198. data/ext/boost/smart_ptr/enable_shared_from_this.hpp +4 -4
  199. data/ext/boost/smart_ptr/make_shared.hpp +5 -1060
  200. data/ext/boost/smart_ptr/make_shared_array.hpp +247 -0
  201. data/ext/boost/smart_ptr/make_shared_object.hpp +1128 -0
  202. data/ext/boost/smart_ptr/scoped_array.hpp +32 -7
  203. data/ext/boost/smart_ptr/scoped_ptr.hpp +31 -5
  204. data/ext/boost/smart_ptr/shared_array.hpp +135 -20
  205. data/ext/boost/smart_ptr/shared_ptr.hpp +444 -126
  206. data/ext/boost/smart_ptr/weak_ptr.hpp +39 -28
  207. data/ext/boost/static_assert.hpp +74 -17
  208. data/ext/boost/system/error_code.hpp +76 -68
  209. data/ext/boost/system/system_error.hpp +5 -1
  210. data/ext/boost/thread/barrier.hpp +6 -2
  211. data/ext/boost/thread/completion_latch.hpp +233 -0
  212. data/ext/boost/thread/condition.hpp +6 -1
  213. data/ext/boost/thread/detail/async_func.hpp +571 -0
  214. data/ext/boost/thread/detail/config.hpp +248 -40
  215. data/ext/boost/thread/detail/counter.hpp +93 -0
  216. data/ext/boost/thread/detail/delete.hpp +12 -0
  217. data/ext/boost/thread/detail/invoke.hpp +1351 -0
  218. data/ext/boost/thread/detail/is_convertible.hpp +48 -0
  219. data/ext/boost/thread/detail/lockable_wrapper.hpp +45 -0
  220. data/ext/boost/thread/detail/log.hpp +83 -0
  221. data/ext/boost/thread/detail/make_tuple_indices.hpp +224 -0
  222. data/ext/boost/thread/detail/move.hpp +32 -16
  223. data/ext/boost/thread/detail/thread.hpp +236 -41
  224. data/ext/boost/thread/detail/thread_group.hpp +55 -9
  225. data/ext/boost/thread/detail/thread_interruption.hpp +4 -1
  226. data/ext/boost/thread/exceptions.hpp +2 -0
  227. data/ext/boost/thread/externally_locked.hpp +351 -0
  228. data/ext/boost/thread/externally_locked_stream.hpp +170 -0
  229. data/ext/boost/thread/future.hpp +2517 -455
  230. data/ext/boost/thread/future_error_code.hpp +61 -0
  231. data/ext/boost/thread/is_locked_by_this_thread.hpp +39 -0
  232. data/ext/boost/thread/latch.hpp +142 -0
  233. data/ext/boost/thread/lock_algorithms.hpp +468 -0
  234. data/ext/boost/thread/lock_concepts.hpp +197 -0
  235. data/ext/boost/thread/lock_factories.hpp +78 -0
  236. data/ext/boost/thread/lock_guard.hpp +88 -0
  237. data/ext/boost/thread/lock_options.hpp +31 -0
  238. data/ext/boost/thread/lock_traits.hpp +45 -0
  239. data/ext/boost/thread/lock_types.hpp +1226 -0
  240. data/ext/boost/thread/lockable_adapter.hpp +226 -0
  241. data/ext/boost/thread/lockable_concepts.hpp +157 -0
  242. data/ext/boost/thread/lockable_traits.hpp +207 -0
  243. data/ext/boost/thread/locks.hpp +5 -1816
  244. data/ext/boost/thread/mutex.hpp +33 -1
  245. data/ext/boost/thread/null_mutex.hpp +243 -0
  246. data/ext/boost/thread/once.hpp +10 -1
  247. data/ext/boost/thread/poly_lockable.hpp +68 -0
  248. data/ext/boost/thread/poly_lockable_adapter.hpp +89 -0
  249. data/ext/boost/thread/poly_shared_lockable.hpp +135 -0
  250. data/ext/boost/thread/poly_shared_lockable_adapter.hpp +170 -0
  251. data/ext/boost/thread/pthread/condition_variable.hpp +74 -26
  252. data/ext/boost/thread/pthread/condition_variable_fwd.hpp +54 -27
  253. data/ext/boost/thread/pthread/mutex.hpp +101 -38
  254. data/ext/boost/thread/pthread/once.hpp +459 -44
  255. data/ext/boost/thread/pthread/once_atomic.hpp +313 -0
  256. data/ext/boost/thread/pthread/recursive_mutex.hpp +19 -10
  257. data/ext/boost/thread/pthread/shared_mutex.hpp +226 -61
  258. data/ext/boost/thread/pthread/shared_mutex_assert.hpp +724 -0
  259. data/ext/boost/thread/pthread/thread_data.hpp +53 -50
  260. data/ext/boost/thread/pthread/timespec.hpp +96 -12
  261. data/ext/boost/thread/recursive_mutex.hpp +44 -1
  262. data/ext/boost/thread/reverse_lock.hpp +3 -2
  263. data/ext/boost/thread/scoped_thread.hpp +285 -0
  264. data/ext/boost/thread/shared_lock_guard.hpp +2 -1
  265. data/ext/boost/thread/shared_mutex.hpp +23 -0
  266. data/ext/boost/thread/strict_lock.hpp +235 -0
  267. data/ext/boost/thread/sync_bounded_queue.hpp +594 -0
  268. data/ext/boost/thread/sync_queue.hpp +516 -0
  269. data/ext/boost/thread/synchronized_value.hpp +1001 -0
  270. data/ext/boost/thread/testable_mutex.hpp +148 -0
  271. data/ext/boost/thread/thread.hpp +1 -13
  272. data/ext/boost/thread/thread_functors.hpp +57 -0
  273. data/ext/boost/thread/thread_guard.hpp +46 -0
  274. data/ext/boost/thread/thread_only.hpp +29 -0
  275. data/ext/boost/thread/v2/shared_mutex.hpp +1062 -0
  276. data/ext/boost/thread/v2/thread.hpp +37 -10
  277. data/ext/boost/thread/xtime.hpp +2 -1
  278. data/ext/boost/token_functions.hpp +16 -16
  279. data/ext/boost/type_traits/add_lvalue_reference.hpp +26 -0
  280. data/ext/boost/type_traits/add_reference.hpp +1 -1
  281. data/ext/boost/type_traits/add_rvalue_reference.hpp +4 -4
  282. data/ext/boost/type_traits/aligned_storage.hpp +13 -0
  283. data/ext/boost/type_traits/common_type.hpp +11 -12
  284. data/ext/boost/type_traits/config.hpp +1 -1
  285. data/ext/boost/type_traits/detail/common_type_imp.hpp +1 -1
  286. data/ext/boost/type_traits/detail/has_binary_operator.hpp +1 -1
  287. data/ext/boost/type_traits/detail/is_function_ptr_tester.hpp +1 -1
  288. data/ext/boost/type_traits/has_left_shift.hpp +49 -0
  289. data/ext/boost/type_traits/has_right_shift.hpp +49 -0
  290. data/ext/boost/type_traits/has_trivial_move_assign.hpp +57 -0
  291. data/ext/boost/type_traits/has_trivial_move_constructor.hpp +57 -0
  292. data/ext/boost/type_traits/intrinsics.hpp +18 -2
  293. data/ext/boost/type_traits/is_abstract.hpp +1 -1
  294. data/ext/boost/type_traits/is_array.hpp +1 -1
  295. data/ext/boost/type_traits/is_const.hpp +1 -1
  296. data/ext/boost/type_traits/is_convertible.hpp +78 -17
  297. data/ext/boost/type_traits/is_function.hpp +6 -1
  298. data/ext/boost/type_traits/is_integral.hpp +6 -1
  299. data/ext/boost/type_traits/is_nothrow_move_assignable.hpp +84 -0
  300. data/ext/boost/type_traits/is_nothrow_move_constructible.hpp +84 -0
  301. data/ext/boost/type_traits/is_pod.hpp +3 -1
  302. data/ext/boost/type_traits/is_rvalue_reference.hpp +1 -1
  303. data/ext/boost/type_traits/is_volatile.hpp +1 -1
  304. data/ext/boost/type_traits/make_signed.hpp +153 -0
  305. data/ext/boost/type_traits/make_unsigned.hpp +16 -0
  306. data/ext/boost/type_traits/remove_const.hpp +1 -1
  307. data/ext/boost/type_traits/remove_cv.hpp +1 -1
  308. data/ext/boost/type_traits/remove_reference.hpp +1 -1
  309. data/ext/boost/type_traits/remove_volatile.hpp +1 -1
  310. data/ext/boost/unordered/detail/allocate.hpp +1120 -0
  311. data/ext/boost/unordered/detail/buckets.hpp +876 -0
  312. data/ext/boost/unordered/detail/equivalent.hpp +680 -0
  313. data/ext/boost/unordered/detail/extract_key.hpp +183 -0
  314. data/ext/boost/unordered/detail/fwd.hpp +23 -0
  315. data/ext/boost/unordered/detail/table.hpp +861 -0
  316. data/ext/boost/unordered/detail/unique.hpp +622 -0
  317. data/ext/boost/unordered/detail/util.hpp +260 -0
  318. data/ext/boost/unordered/unordered_map.hpp +1652 -0
  319. data/ext/boost/unordered/unordered_map_fwd.hpp +65 -0
  320. data/ext/boost/unordered/unordered_set.hpp +1549 -0
  321. data/ext/boost/unordered/unordered_set_fwd.hpp +63 -0
  322. data/ext/boost/unordered_map.hpp +18 -0
  323. data/ext/boost/unordered_set.hpp +18 -0
  324. data/ext/boost/utility/addressof.hpp +2 -2
  325. data/ext/boost/utility/result_of.hpp +8 -1
  326. data/ext/boost/version.hpp +2 -2
  327. data/ext/common/Account.h +1 -1
  328. data/ext/common/AccountsDatabase.h +1 -1
  329. data/ext/common/AgentsStarter.cpp +3 -1
  330. data/ext/common/AgentsStarter.h +2 -2
  331. data/ext/common/ApplicationPool2/AppTypes.cpp +24 -6
  332. data/ext/common/ApplicationPool2/AppTypes.h +17 -8
  333. data/ext/common/ApplicationPool2/Common.h +12 -12
  334. data/ext/common/ApplicationPool2/DirectSpawner.h +2 -2
  335. data/ext/common/ApplicationPool2/DummySpawner.h +3 -3
  336. data/ext/common/ApplicationPool2/Group.h +6 -6
  337. data/ext/common/ApplicationPool2/Implementation.cpp +19 -19
  338. data/ext/common/ApplicationPool2/PipeWatcher.h +5 -5
  339. data/ext/common/ApplicationPool2/Pool.h +21 -21
  340. data/ext/common/ApplicationPool2/Process.h +6 -6
  341. data/ext/common/ApplicationPool2/Session.h +1 -1
  342. data/ext/common/ApplicationPool2/SmartSpawner.h +24 -12
  343. data/ext/common/ApplicationPool2/Socket.h +2 -2
  344. data/ext/common/ApplicationPool2/Spawner.h +64 -14
  345. data/ext/common/ApplicationPool2/SpawnerFactory.h +7 -7
  346. data/ext/common/ApplicationPool2/SuperGroup.h +5 -5
  347. data/ext/common/BackgroundEventLoop.cpp +4 -4
  348. data/ext/common/BackgroundEventLoop.h +1 -1
  349. data/ext/common/Constants.h +13 -1
  350. data/ext/common/EventedBufferedInput.h +8 -8
  351. data/ext/common/Exceptions.cpp +71 -0
  352. data/ext/common/Exceptions.h +60 -7
  353. data/ext/common/FileDescriptor.h +4 -4
  354. data/ext/common/MessageClient.h +1 -1
  355. data/ext/common/MessageServer.h +5 -5
  356. data/ext/common/MultiLibeio.cpp +3 -3
  357. data/ext/common/MultiLibeio.h +2 -2
  358. data/ext/common/RandomGenerator.h +11 -11
  359. data/ext/common/ResourceLocator.h +8 -1
  360. data/ext/common/SafeLibev.h +12 -12
  361. data/ext/common/ServerInstanceDir.h +11 -3
  362. data/ext/common/UnionStation.h +10 -10
  363. data/ext/common/Utils.cpp +11 -13
  364. data/ext/common/Utils.h +9 -9
  365. data/ext/common/Utils/BlockingQueue.h +10 -10
  366. data/ext/common/Utils/BufferedIO.h +1 -1
  367. data/ext/common/Utils/CachedFileStat.hpp +2 -2
  368. data/ext/common/Utils/FileChangeChecker.h +1 -1
  369. data/ext/common/Utils/HashMap.h +13 -4
  370. data/ext/common/Utils/IOUtils.cpp +33 -10
  371. data/ext/common/Utils/IniFile.h +3 -3
  372. data/ext/common/Utils/Lock.h +2 -2
  373. data/ext/common/Utils/MessagePassing.h +10 -10
  374. data/ext/common/Utils/ProcessMetricsCollector.h +24 -6
  375. data/ext/common/Utils/ScopeGuard.h +5 -5
  376. data/ext/common/Utils/jsoncpp.cpp +2 -0
  377. data/ext/common/agents/HelperAgent/FileBackedPipe.h +26 -26
  378. data/ext/common/agents/HelperAgent/Main.cpp +18 -18
  379. data/ext/common/agents/HelperAgent/RequestHandler.cpp +4 -4
  380. data/ext/common/agents/HelperAgent/RequestHandler.h +30 -21
  381. data/ext/common/agents/LoggingAgent/AdminController.h +1 -1
  382. data/ext/common/agents/LoggingAgent/FilterSupport.h +13 -11
  383. data/ext/common/agents/LoggingAgent/LoggingServer.h +11 -11
  384. data/ext/common/agents/LoggingAgent/Main.cpp +9 -9
  385. data/ext/common/agents/LoggingAgent/RemoteSender.h +3 -3
  386. data/ext/common/agents/SpawnPreparer.cpp +1 -0
  387. data/ext/common/agents/Watchdog/AgentWatcher.cpp +8 -7
  388. data/ext/common/agents/Watchdog/Main.cpp +81 -73
  389. data/ext/common/agents/Watchdog/ServerInstanceDirToucher.cpp +1 -1
  390. data/ext/libev/Changes +57 -0
  391. data/ext/libev/LICENSE +2 -1
  392. data/ext/libev/Makefile.in +110 -50
  393. data/ext/libev/README +8 -8
  394. data/ext/libev/aclocal.m4 +1503 -861
  395. data/ext/libev/config.guess +290 -304
  396. data/ext/libev/config.sub +77 -198
  397. data/ext/libev/configure +1735 -890
  398. data/ext/libev/configure.ac +3 -2
  399. data/ext/libev/ev++.h +6 -6
  400. data/ext/libev/ev.c +541 -214
  401. data/ext/libev/ev.h +106 -100
  402. data/ext/libev/ev_epoll.c +1 -1
  403. data/ext/libev/ev_kqueue.c +20 -4
  404. data/ext/libev/ev_vars.h +15 -16
  405. data/ext/libev/ev_win32.c +12 -2
  406. data/ext/libev/ev_wrap.h +162 -160
  407. data/ext/libev/event.c +29 -6
  408. data/ext/libev/event.h +9 -2
  409. data/ext/libev/ltmain.sh +2632 -1384
  410. data/ext/nginx/ConfigurationCommands.c +1 -1
  411. data/ext/nginx/ConfigurationCommands.c.erb +3 -1
  412. data/ext/nginx/ContentHandler.c +25 -2
  413. data/ext/nginx/CreateLocationConfig.c +1 -0
  414. data/ext/nginx/CreateLocationConfig.c.erb +1 -1
  415. data/ext/nginx/MergeLocationConfig.c +1 -0
  416. data/ext/nginx/MergeLocationConfig.c.erb +1 -1
  417. data/ext/nginx/config +12 -0
  418. data/ext/oxt/dynamic_thread_group.hpp +7 -4
  419. data/ext/oxt/system_calls.cpp +5 -1
  420. data/ext/oxt/system_calls.hpp +3 -0
  421. data/helper-scripts/node-loader.js +117 -249
  422. data/lib/phusion_passenger.rb +27 -5
  423. data/lib/phusion_passenger/abstract_installer.rb +104 -9
  424. data/lib/phusion_passenger/admin_tools/memory_stats.rb +10 -9
  425. data/lib/phusion_passenger/apache2/config_options.rb +6 -3
  426. data/lib/phusion_passenger/common_library.rb +7 -1
  427. data/lib/phusion_passenger/constants.rb +6 -0
  428. data/lib/phusion_passenger/loader_shared_helpers.rb +7 -4
  429. data/lib/phusion_passenger/nginx/config_options.rb +2 -1
  430. data/lib/phusion_passenger/packaging.rb +3 -0
  431. data/lib/phusion_passenger/platform_info/apache.rb +43 -6
  432. data/lib/phusion_passenger/platform_info/apache_detector.rb +15 -5
  433. data/lib/phusion_passenger/platform_info/compiler.rb +167 -32
  434. data/lib/phusion_passenger/platform_info/cxx_portability.rb +133 -77
  435. data/lib/phusion_passenger/platform_info/depcheck.rb +17 -7
  436. data/lib/phusion_passenger/platform_info/depcheck_specs/apache2.rb +3 -3
  437. data/lib/phusion_passenger/platform_info/depcheck_specs/compiler_toolchain.rb +4 -4
  438. data/lib/phusion_passenger/platform_info/depcheck_specs/ruby.rb +5 -6
  439. data/lib/phusion_passenger/platform_info/linux.rb +2 -1
  440. data/lib/phusion_passenger/platform_info/operating_system.rb +1 -1
  441. data/lib/phusion_passenger/platform_info/ruby.rb +18 -3
  442. data/lib/phusion_passenger/standalone/runtime_installer.rb +6 -2
  443. data/lib/phusion_passenger/standalone/start_command.rb +8 -2
  444. data/lib/phusion_passenger/utils/ansi_colors.rb +9 -0
  445. data/lib/phusion_passenger/utils/hosts_file_parser.rb +4 -2
  446. data/node_lib/phusion_passenger/httplib_emulation.js +141 -0
  447. data/node_lib/phusion_passenger/line_reader.js +154 -0
  448. data/node_lib/phusion_passenger/request_handler.js +65 -0
  449. data/node_lib/phusion_passenger/session_protocol_parser.js +113 -0
  450. data/resources/templates/apache2/deployment_example.txt.erb +2 -1
  451. data/resources/templates/apache2/installing_against_a_different_apache.txt.erb +14 -0
  452. data/resources/templates/apache2/multiple_apache_installations_detected.txt.erb +15 -0
  453. data/resources/templates/apache2/possible_solutions_for_compilation_and_installation_problems.txt.erb +4 -5
  454. data/resources/templates/general_error_with_html.html.template +1 -1
  455. data/resources/templates/installer_common/gem_install_permission_problems.txt.erb +17 -0
  456. data/resources/templates/installer_common/low_amount_of_memory_warning.txt.erb +6 -4
  457. data/resources/templates/installer_common/world_inaccessible_directories.txt.erb +16 -0
  458. data/resources/templates/nginx/deployment_example.txt.erb +2 -1
  459. data/resources/templates/nginx/possible_solutions_for_compilation_and_installation_problems.txt.erb +4 -5
  460. data/resources/templates/standalone/config.erb +1 -0
  461. data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +3 -3
  462. data/test/cxx/ApplicationPool2/PoolTest.cpp +4 -4
  463. data/test/cxx/ApplicationPool2/ProcessTest.cpp +5 -5
  464. data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +5 -5
  465. data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +1 -1
  466. data/test/cxx/EventedBufferedInputTest.cpp +6 -6
  467. data/test/cxx/FileBackedPipeTest.cpp +1 -1
  468. data/test/cxx/MessagePassingTest.cpp +1 -1
  469. data/test/cxx/MessageServerTest.cpp +4 -4
  470. data/test/cxx/RequestHandlerTest.cpp +7 -7
  471. data/test/cxx/UnionStationTest.cpp +2 -2
  472. data/test/node/line_reader_spec.js +338 -0
  473. data/test/node/spec_helper.js +27 -0
  474. data/test/ruby/standalone/runtime_installer_spec.rb +2 -1
  475. metadata +131 -22
  476. metadata.gz.asc +7 -7
  477. data/ext/boost/functional/hash/detail/container_fwd_0x.hpp +0 -29
  478. data/ext/boost/lambda/core.hpp +0 -79
  479. data/ext/boost/lambda/detail/actions.hpp +0 -174
  480. data/ext/boost/lambda/detail/arity_code.hpp +0 -110
  481. data/ext/boost/lambda/detail/function_adaptors.hpp +0 -789
  482. data/ext/boost/lambda/detail/is_instance_of.hpp +0 -104
  483. data/ext/boost/lambda/detail/lambda_config.hpp +0 -48
  484. data/ext/boost/lambda/detail/lambda_functor_base.hpp +0 -615
  485. data/ext/boost/lambda/detail/lambda_functors.hpp +0 -324
  486. data/ext/boost/lambda/detail/lambda_fwd.hpp +0 -74
  487. data/ext/boost/lambda/detail/lambda_traits.hpp +0 -578
  488. data/ext/boost/lambda/detail/member_ptr.hpp +0 -737
  489. data/ext/boost/lambda/detail/operator_actions.hpp +0 -139
  490. data/ext/boost/lambda/detail/operator_lambda_func_base.hpp +0 -271
  491. data/ext/boost/lambda/detail/operator_return_type_traits.hpp +0 -917
  492. data/ext/boost/lambda/detail/operators.hpp +0 -370
  493. data/ext/boost/lambda/detail/ret.hpp +0 -325
  494. data/ext/boost/lambda/detail/return_type_traits.hpp +0 -282
  495. data/ext/boost/lambda/detail/select_functions.hpp +0 -74
  496. data/ext/boost/lambda/lambda.hpp +0 -34
@@ -11,7 +11,7 @@
11
11
  [section:scoped_enums Scoped Enums]
12
12
 
13
13
  Generates C++0x scoped enums if the feature is present, otherwise emulates C++0x
14
- scoped enums with C++03 namespaces and enums. The Boost.Config BOOST_NO_SCOPED_ENUMS
14
+ scoped enums with C++03 namespaces and enums. The Boost.Config BOOST_NO_CXX11_SCOPED_ENUMS
15
15
  macro is used to detect feature support.
16
16
 
17
17
  See http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf for a
@@ -71,14 +71,14 @@ use
71
71
 
72
72
  And instead of
73
73
 
74
- #ifdef BOOST_NO_SCOPED_ENUMS
74
+ #ifdef BOOST_NO_CXX11_SCOPED_ENUMS
75
75
  template <>
76
76
  struct BOOST_SYMBOL_VISIBLE is_error_code_enum<future_errc> : public true_type { };
77
77
  #endif
78
78
 
79
79
  use
80
80
 
81
- #ifdef BOOST_NO_SCOPED_ENUMS
81
+ #ifdef BOOST_NO_CXX11_SCOPED_ENUMS
82
82
  template <>
83
83
  struct BOOST_SYMBOL_VISIBLE is_error_code_enum<future_errc::enum_type > : public true_type { };
84
84
  #endif
@@ -130,7 +130,7 @@ Sample usage:
130
130
  namespace boost
131
131
  {
132
132
 
133
- #ifdef BOOST_NO_SCOPED_ENUMS
133
+ #ifdef BOOST_NO_CXX11_SCOPED_ENUMS
134
134
  /**
135
135
  * Meta-function to get the underlying type of a scoped enum.
136
136
  *
@@ -193,7 +193,7 @@ namespace boost
193
193
  return e.native_value_();
194
194
  }
195
195
 
196
- #else // BOOST_NO_SCOPED_ENUMS
196
+ #else // BOOST_NO_CXX11_SCOPED_ENUMS
197
197
 
198
198
  template <typename EnumType>
199
199
  struct underlying_type
@@ -224,9 +224,9 @@ namespace boost
224
224
  }
225
225
 
226
226
 
227
- #ifdef BOOST_NO_SCOPED_ENUMS
227
+ #ifdef BOOST_NO_CXX11_SCOPED_ENUMS
228
228
 
229
- #ifndef BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
229
+ #ifndef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
230
230
 
231
231
  #define BOOST_SCOPED_ENUM_UT_DECLARE_CONVERSION_OPERATOR \
232
232
  explicit operator underlying_type() const { return get_underlying_value_(); }
@@ -305,7 +305,7 @@ namespace boost
305
305
  */
306
306
  #define BOOST_SCOPED_ENUM_FORWARD_DECLARE(EnumType) struct EnumType
307
307
 
308
- #else // BOOST_NO_SCOPED_ENUMS
308
+ #else // BOOST_NO_CXX11_SCOPED_ENUMS
309
309
 
310
310
  #define BOOST_SCOPED_ENUM_UT_DECLARE_BEGIN(EnumType,UnderlyingType) enum class EnumType:UnderlyingType
311
311
  #define BOOST_SCOPED_ENUM_DECLARE_BEGIN(EnumType) enum class EnumType
@@ -315,13 +315,13 @@ namespace boost
315
315
  #define BOOST_SCOPED_ENUM_NATIVE(EnumType) EnumType
316
316
  #define BOOST_SCOPED_ENUM_FORWARD_DECLARE(EnumType) enum class EnumType
317
317
 
318
- #endif // BOOST_NO_SCOPED_ENUMS
318
+ #endif // BOOST_NO_CXX11_SCOPED_ENUMS
319
319
 
320
320
  #define BOOST_SCOPED_ENUM_START(name) BOOST_SCOPED_ENUM_DECLARE_BEGIN(name)
321
321
  #define BOOST_SCOPED_ENUM_END BOOST_SCOPED_ENUM_DECLARE_END2()
322
322
  #define BOOST_SCOPED_ENUM(name) BOOST_SCOPED_ENUM_NATIVE(name)
323
323
 
324
- //#ifdef BOOST_NO_SCOPED_ENUMS
324
+ //#ifdef BOOST_NO_CXX11_SCOPED_ENUMS
325
325
  //
326
326
  //# define BOOST_SCOPED_ENUM_START(name) struct name { enum enum_type
327
327
  //# define BOOST_SCOPED_ENUM_END };
@@ -0,0 +1,36 @@
1
+ // (C) Copyright David Abrahams 2001.
2
+ // Distributed under the Boost Software License, Version 1.0. (See
3
+ // accompanying file LICENSE_1_0.txt or copy at
4
+ // http://www.boost.org/LICENSE_1_0.txt)
5
+ //
6
+ // See http://www.boost.org for most recent version including documentation.
7
+
8
+ // Revision History
9
+ // 09 Feb 01 Applied John Maddock's Borland patch Moving <true>
10
+ // specialization to unspecialized template (David Abrahams)
11
+ // 06 Feb 01 Created (David Abrahams)
12
+
13
+ #ifndef SELECT_TYPE_DWA20010206_HPP
14
+ # define SELECT_TYPE_DWA20010206_HPP
15
+
16
+ namespace boost { namespace detail {
17
+
18
+ // Template class if_true -- select among 2 types based on a bool constant expression
19
+ // Usage:
20
+ // typename if_true<(bool_const_expression)>::template then<true_type, false_type>::type
21
+
22
+ // HP aCC cannot deal with missing names for template value parameters
23
+ template <bool b> struct if_true
24
+ {
25
+ template <class T, class F>
26
+ struct then { typedef T type; };
27
+ };
28
+
29
+ template <>
30
+ struct if_true<false>
31
+ {
32
+ template <class T, class F>
33
+ struct then { typedef F type; };
34
+ };
35
+ }}
36
+ #endif // SELECT_TYPE_DWA20010206_HPP
@@ -5,7 +5,7 @@
5
5
 
6
6
  #ifndef UUID_7E83C166200811DE885E826156D89593
7
7
  #define UUID_7E83C166200811DE885E826156D89593
8
- #if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
8
+ #if (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
9
9
  #pragma GCC system_header
10
10
  #endif
11
11
  #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
@@ -5,7 +5,7 @@
5
5
 
6
6
  #ifndef UUID_CE6983AC753411DDA764247956D89593
7
7
  #define UUID_CE6983AC753411DDA764247956D89593
8
- #if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
8
+ #if (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
9
9
  #pragma GCC system_header
10
10
  #endif
11
11
  #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
@@ -25,8 +25,7 @@ boost
25
25
  {
26
26
  public:
27
27
 
28
- virtual std::string tag_typeid_name() const = 0;
29
- virtual std::string value_as_string() const = 0;
28
+ virtual std::string name_value_string() const = 0;
30
29
 
31
30
  protected:
32
31
 
@@ -63,8 +62,7 @@ boost
63
62
 
64
63
  private:
65
64
 
66
- std::string tag_typeid_name() const;
67
- std::string value_as_string() const;
65
+ std::string name_value_string() const;
68
66
 
69
67
  value_type value_;
70
68
  };
@@ -5,7 +5,7 @@
5
5
 
6
6
  #ifndef UUID_618474C2DE1511DEB74A388C56D89593
7
7
  #define UUID_618474C2DE1511DEB74A388C56D89593
8
- #if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
8
+ #if (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
9
9
  #pragma GCC system_header
10
10
  #endif
11
11
  #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
@@ -467,7 +467,7 @@ boost
467
467
 
468
468
  inline
469
469
  std::string
470
- diagnostic_information( exception_ptr const & p )
470
+ diagnostic_information( exception_ptr const & p, bool verbose=true )
471
471
  {
472
472
  if( p )
473
473
  try
@@ -477,7 +477,7 @@ boost
477
477
  catch(
478
478
  ... )
479
479
  {
480
- return current_exception_diagnostic_information();
480
+ return current_exception_diagnostic_information(verbose);
481
481
  }
482
482
  return "<empty>";
483
483
  }
@@ -5,7 +5,7 @@
5
5
 
6
6
  #ifndef UUID_898984B4076411DD973EDFA055D89593
7
7
  #define UUID_898984B4076411DD973EDFA055D89593
8
- #if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
8
+ #if (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
9
9
  #pragma GCC system_header
10
10
  #endif
11
11
  #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
@@ -5,7 +5,7 @@
5
5
 
6
6
  #ifndef UUID_6F463AC838DF11DDA3E6909F56D89593
7
7
  #define UUID_6F463AC838DF11DDA3E6909F56D89593
8
- #if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
8
+ #if (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
9
9
  #pragma GCC system_header
10
10
  #endif
11
11
  #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
@@ -5,7 +5,7 @@
5
5
 
6
6
  #ifndef UUID_C3E1741C754311DDB2834CCA55D89593
7
7
  #define UUID_C3E1741C754311DDB2834CCA55D89593
8
- #if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
8
+ #if (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
9
9
  #pragma GCC system_header
10
10
  #endif
11
11
  #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
@@ -5,7 +5,7 @@
5
5
 
6
6
  #ifndef UUID_0552D49838DD11DD90146B8956D89593
7
7
  #define UUID_0552D49838DD11DD90146B8956D89593
8
- #if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
8
+ #if (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
9
9
  #pragma GCC system_header
10
10
  #endif
11
11
  #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
@@ -31,17 +31,17 @@ boost
31
31
  namespace
32
32
  exception_detail
33
33
  {
34
- std::string diagnostic_information_impl( boost::exception const *, std::exception const *, bool );
34
+ std::string diagnostic_information_impl( boost::exception const *, std::exception const *, bool, bool );
35
35
  }
36
36
 
37
37
  inline
38
38
  std::string
39
- current_exception_diagnostic_information()
39
+ current_exception_diagnostic_information( bool verbose=true)
40
40
  {
41
41
  boost::exception const * be=current_exception_cast<boost::exception const>();
42
42
  std::exception const * se=current_exception_cast<std::exception const>();
43
43
  if( be || se )
44
- return exception_detail::diagnostic_information_impl(be,se,true);
44
+ return exception_detail::diagnostic_information_impl(be,se,true,verbose);
45
45
  else
46
46
  return "No diagnostic information available.";
47
47
  }
@@ -107,7 +107,7 @@ boost
107
107
 
108
108
  inline
109
109
  std::string
110
- diagnostic_information_impl( boost::exception const * be, std::exception const * se, bool with_what )
110
+ diagnostic_information_impl( boost::exception const * be, std::exception const * se, bool with_what, bool verbose )
111
111
  {
112
112
  if( !be && !se )
113
113
  return "Unknown exception.";
@@ -125,7 +125,7 @@ boost
125
125
  return wh;
126
126
  }
127
127
  std::ostringstream tmp;
128
- if( be )
128
+ if( be && verbose )
129
129
  {
130
130
  char const * const * f=get_error_info<throw_file>(*be);
131
131
  int const * l=get_error_info<throw_line>(*be);
@@ -149,36 +149,37 @@ boost
149
149
  }
150
150
  }
151
151
  #ifndef BOOST_NO_RTTI
152
- tmp << std::string("Dynamic exception type: ") <<
153
- units::detail::demangle((be?(BOOST_EXCEPTION_DYNAMIC_TYPEID(*be)):(BOOST_EXCEPTION_DYNAMIC_TYPEID(*se))).type_->name()) << '\n';
152
+ if ( verbose )
153
+ tmp << std::string("Dynamic exception type: ") <<
154
+ units::detail::demangle((be?(BOOST_EXCEPTION_DYNAMIC_TYPEID(*be)):(BOOST_EXCEPTION_DYNAMIC_TYPEID(*se))).type_->name()) << '\n';
154
155
  #endif
155
- if( with_what && se )
156
+ if( with_what && se && verbose )
156
157
  tmp << "std::exception::what: " << wh << '\n';
157
158
  if( be )
158
159
  if( char const * s=exception_detail::get_diagnostic_information(*be,tmp.str().c_str()) )
159
160
  if( *s )
160
- return s;
161
+ return std::string(s);
161
162
  return tmp.str();
162
163
  }
163
164
  }
164
165
 
165
166
  template <class T>
166
167
  std::string
167
- diagnostic_information( T const & e )
168
+ diagnostic_information( T const & e, bool verbose=true )
168
169
  {
169
- return exception_detail::diagnostic_information_impl(exception_detail::get_boost_exception(&e),exception_detail::get_std_exception(&e),true);
170
+ return exception_detail::diagnostic_information_impl(exception_detail::get_boost_exception(&e),exception_detail::get_std_exception(&e),true,verbose);
170
171
  }
171
172
 
172
173
  inline
173
174
  char const *
174
- diagnostic_information_what( exception const & e ) throw()
175
+ diagnostic_information_what( exception const & e, bool verbose=true ) throw()
175
176
  {
176
177
  char const * w=0;
177
178
  #ifndef BOOST_NO_EXCEPTIONS
178
179
  try
179
180
  {
180
181
  #endif
181
- (void) exception_detail::diagnostic_information_impl(&e,0,false);
182
+ (void) exception_detail::diagnostic_information_impl(&e,0,false,verbose);
182
183
  if( char const * di=exception_detail::get_diagnostic_information(e,0) )
183
184
  return di;
184
185
  else
@@ -5,7 +5,7 @@
5
5
 
6
6
  #ifndef UUID_274DA366004E11DCB1DDFE2E56D89593
7
7
  #define UUID_274DA366004E11DCB1DDFE2E56D89593
8
- #if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
8
+ #if (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
9
9
  #pragma GCC system_header
10
10
  #endif
11
11
  #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
@@ -5,7 +5,7 @@
5
5
 
6
6
  #ifndef UUID_1A590226753311DD9E4CCF6156D89593
7
7
  #define UUID_1A590226753311DD9E4CCF6156D89593
8
- #if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
8
+ #if (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
9
9
  #pragma GCC system_header
10
10
  #endif
11
11
  #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
@@ -5,7 +5,7 @@
5
5
 
6
6
  #ifndef UUID_8D22C4CA9CC811DCAA9133D256D89593
7
7
  #define UUID_8D22C4CA9CC811DCAA9133D256D89593
8
- #if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
8
+ #if (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
9
9
  #pragma GCC system_header
10
10
  #endif
11
11
  #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
@@ -24,41 +24,40 @@ boost
24
24
  {
25
25
  template <class Tag,class T>
26
26
  inline
27
- typename enable_if<has_to_string<T>,std::string>::type
28
- to_string( error_info<Tag,T> const & x )
27
+ std::string
28
+ error_info_name( error_info<Tag,T> const & x )
29
29
  {
30
- return to_string(x.value());
30
+ return tag_type_name<Tag>();
31
31
  }
32
32
 
33
33
  template <class Tag,class T>
34
34
  inline
35
- error_info<Tag,T>::
36
- error_info( value_type const & value ):
37
- value_(value)
35
+ std::string
36
+ to_string( error_info<Tag,T> const & x )
38
37
  {
38
+ return '[' + error_info_name(x) + "] = " + to_string_stub(x.value()) + '\n';
39
39
  }
40
40
 
41
41
  template <class Tag,class T>
42
42
  inline
43
43
  error_info<Tag,T>::
44
- ~error_info() throw()
44
+ error_info( value_type const & value ):
45
+ value_(value)
45
46
  {
46
47
  }
47
48
 
48
49
  template <class Tag,class T>
49
50
  inline
50
- std::string
51
51
  error_info<Tag,T>::
52
- tag_typeid_name() const
52
+ ~error_info() throw()
53
53
  {
54
- return tag_type_name<Tag>();
55
54
  }
56
55
 
57
56
  template <class Tag,class T>
58
57
  inline
59
58
  std::string
60
59
  error_info<Tag,T>::
61
- value_as_string() const
60
+ name_value_string() const
62
61
  {
63
62
  return to_string_stub(*this);
64
63
  }
@@ -114,7 +113,7 @@ boost
114
113
  for( error_info_map::const_iterator i=info_.begin(),end=info_.end(); i!=end; ++i )
115
114
  {
116
115
  error_info_base const & x = *i->second;
117
- tmp << '[' << x.tag_typeid_name() << "] = " << x.value_as_string() << '\n';
116
+ tmp << x.name_value_string();
118
117
  }
119
118
  tmp.str().swap(diagnostic_info_str_);
120
119
  }
@@ -5,7 +5,7 @@
5
5
 
6
6
  #ifndef UUID_7E48761AD92811DC9011477D56D89593
7
7
  #define UUID_7E48761AD92811DC9011477D56D89593
8
- #if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
8
+ #if (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
9
9
  #pragma GCC system_header
10
10
  #endif
11
11
  #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
@@ -19,11 +19,16 @@
19
19
  namespace
20
20
  boost
21
21
  {
22
+ template <class T,class U>
23
+ std::string to_string( std::pair<T,U> const & );
24
+ std::string to_string( std::exception const & );
25
+
22
26
  namespace
23
27
  to_string_detail
24
28
  {
25
29
  template <class T>
26
30
  typename disable_if<is_output_streamable<T>,char>::type to_string( T const & );
31
+ using boost::to_string;
27
32
 
28
33
  template <class,bool IsOutputStreamable>
29
34
  struct has_to_string_impl;
@@ -5,7 +5,7 @@
5
5
 
6
6
  #ifndef UUID_E788439ED9F011DCB181F25B55D89593
7
7
  #define UUID_E788439ED9F011DCB181F25B55D89593
8
- #if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
8
+ #if (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
9
9
  #pragma GCC system_header
10
10
  #endif
11
11
  #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
@@ -101,6 +101,14 @@ boost
101
101
  {
102
102
  return exception_detail::to_string_dispatch::dispatch(x,s);
103
103
  }
104
+
105
+ template <class T,class U,class Stub>
106
+ inline
107
+ std::string
108
+ to_string_stub( std::pair<T,U> const & x, Stub s )
109
+ {
110
+ return std::string("(") + to_string_stub(x.first,s) + ',' + to_string_stub(x.second,s) + ')';
111
+ }
104
112
  }
105
113
 
106
114
  #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
@@ -31,7 +31,7 @@
31
31
  #include <boost/detail/workaround.hpp>
32
32
 
33
33
  // Some compilers let us detect even const-qualified rvalues at compile-time
34
- #if !defined(BOOST_NO_RVALUE_REFERENCES) \
34
+ #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) \
35
35
  || BOOST_WORKAROUND(BOOST_MSVC, >= 1310) && !defined(_PREFAST_) \
36
36
  || (BOOST_WORKAROUND(__GNUC__, == 4) && (__GNUC_MINOR__ <= 5) && !defined(BOOST_INTEL) && \
37
37
  !defined(BOOST_CLANG)) \
@@ -228,7 +228,7 @@ template<typename T>
228
228
  inline boost::mpl::true_ *is_const_(T const &) { return 0; }
229
229
  #endif
230
230
 
231
- #ifdef BOOST_NO_RVALUE_REFERENCES
231
+ #ifdef BOOST_NO_CXX11_RVALUE_REFERENCES
232
232
  template<typename T>
233
233
  inline boost::mpl::false_ *is_rvalue_(T &, int) { return 0; }
234
234
 
@@ -459,7 +459,7 @@ inline T &derefof(T *t)
459
459
  #endif
460
460
 
461
461
  #if defined(BOOST_FOREACH_COMPILE_TIME_CONST_RVALUE_DETECTION) \
462
- && !defined(BOOST_NO_RVALUE_REFERENCES)
462
+ && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
463
463
  ///////////////////////////////////////////////////////////////////////////////
464
464
  // Rvalue references makes it drop-dead simple to detect at compile time
465
465
  // whether an expression is an rvalue.
@@ -469,7 +469,7 @@ inline T &derefof(T *t)
469
469
  boost::foreach_detail_::is_rvalue_((COL), 0)
470
470
 
471
471
  #elif defined(BOOST_FOREACH_COMPILE_TIME_CONST_RVALUE_DETECTION) \
472
- && defined(BOOST_NO_RVALUE_REFERENCES)
472
+ && defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
473
473
  ///////////////////////////////////////////////////////////////////////////////
474
474
  // Detect at compile-time whether an expression yields an rvalue or
475
475
  // an lvalue. This is rather non-standard, but some popular compilers
@@ -959,7 +959,7 @@ rderef(auto_any_t cur, type2type<T, C> *)
959
959
  (true ? boost::foreach_detail_::make_probe((COL), BOOST_FOREACH_ID(_foreach_is_rvalue)) : (COL))
960
960
 
961
961
  // The rvalue/lvalue-ness of the collection expression is determined dynamically, unless
962
- // type type is an array or is noncopyable or is non-const, in which case we know it's an lvalue.
962
+ // the type is an array or is noncopyable or is non-const, in which case we know it's an lvalue.
963
963
  // If the type happens to be a lightweight proxy, always make a copy.
964
964
  # define BOOST_FOREACH_SHOULD_COPY(COL) \
965
965
  (boost::foreach_detail_::should_copy_impl( \