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.
- checksums.yaml +8 -8
- checksums.yaml.gz.asc +7 -7
- data.tar.gz.asc +7 -7
- data/.gitignore +1 -0
- data/.travis.yml +1 -1
- data/NEWS +15 -0
- data/README.md +5 -3
- data/Rakefile +1 -0
- data/bin/passenger-config +1 -5
- data/bin/passenger-install-apache2-module +53 -5
- data/bin/passenger-install-nginx-module +19 -6
- data/bin/passenger-memory-stats +3 -3
- data/build/agents.rb +11 -8
- data/build/apache2.rb +9 -5
- data/build/basics.rb +15 -21
- data/build/common_library.rb +16 -6
- data/build/cplusplus_support.rb +5 -5
- data/build/cxx_tests.rb +3 -3
- data/build/documentation.rb +1 -1
- data/build/misc.rb +4 -37
- data/build/node_tests.rb +29 -0
- data/build/oxt_tests.rb +1 -1
- data/build/packaging.rb +29 -10
- data/build/preprocessor.rb +2 -1
- data/build/test_basics.rb +15 -6
- data/debian.template/locations.ini.template +1 -0
- data/debian.template/passenger.install.template +1 -0
- data/dev/copy_boost_headers.rb +7 -3
- data/dev/run_travis.sh +32 -16
- data/doc/Users guide Apache.idmap.txt +22 -34
- data/doc/Users guide Apache.txt +20 -234
- data/doc/Users guide Nginx.idmap.txt +84 -66
- data/doc/Users guide Nginx.txt +50 -1
- data/doc/Users guide Standalone.idmap.txt +74 -0
- data/doc/Users guide Standalone.txt +22 -9
- data/doc/Users guide.txt +51 -0
- data/doc/users_guide_snippets/environment_variables.txt +0 -3
- data/doc/users_guide_snippets/installation.txt +337 -380
- data/doc/users_guide_snippets/installation/run_installer.txt +58 -0
- data/doc/users_guide_snippets/installation/verify_running_epilogue.txt +6 -0
- data/doc/users_guide_snippets/support_information.txt +2 -9
- data/doc/users_guide_snippets/troubleshooting/default.txt +112 -0
- data/doc/users_guide_snippets/troubleshooting/rails.txt +56 -0
- data/doc/users_guide_snippets/where_to_get_support.txt +9 -0
- data/ext/apache2/Bucket.h +1 -1
- data/ext/apache2/Configuration.hpp +0 -44
- data/ext/apache2/CreateDirConfig.cpp +1 -1
- data/ext/apache2/CreateDirConfig.cpp.erb +1 -1
- data/ext/apache2/Hooks.cpp +28 -21
- data/ext/apache2/MergeDirConfig.cpp +1 -0
- data/ext/apache2/MergeDirConfig.cpp.erb +1 -1
- data/ext/apache2/SetHeaders.cpp +73 -0
- data/ext/apache2/SetHeaders.cpp.erb +88 -0
- data/ext/boost/algorithm/string/detail/find_format.hpp +5 -5
- data/ext/boost/algorithm/string/detail/find_format_all.hpp +5 -5
- data/ext/boost/algorithm/string/detail/finder.hpp +1 -1
- data/ext/boost/algorithm/string/formatter.hpp +2 -2
- data/ext/boost/assert.hpp +6 -1
- data/ext/boost/atomic.hpp +18 -0
- data/ext/boost/atomic/atomic.hpp +241 -0
- data/ext/boost/atomic/detail/base.hpp +585 -0
- data/ext/boost/atomic/detail/cas32strong.hpp +885 -0
- data/ext/boost/atomic/detail/cas32weak.hpp +947 -0
- data/ext/boost/atomic/detail/cas64strong.hpp +443 -0
- data/ext/boost/atomic/detail/config.hpp +54 -0
- data/ext/boost/atomic/detail/gcc-alpha.hpp +368 -0
- data/ext/boost/atomic/detail/gcc-armv6plus.hpp +252 -0
- data/ext/boost/atomic/detail/gcc-cas.hpp +157 -0
- data/ext/boost/atomic/detail/gcc-ppc.hpp +2850 -0
- data/ext/boost/atomic/detail/gcc-sparcv9.hpp +1259 -0
- data/ext/boost/atomic/detail/gcc-x86.hpp +1766 -0
- data/ext/boost/atomic/detail/generic-cas.hpp +206 -0
- data/ext/boost/atomic/detail/interlocked.hpp +200 -0
- data/ext/boost/atomic/detail/linux-arm.hpp +189 -0
- data/ext/boost/atomic/detail/lockpool.hpp +97 -0
- data/ext/boost/atomic/detail/platform.hpp +62 -0
- data/ext/boost/atomic/detail/type-classification.hpp +45 -0
- data/ext/boost/chrono/config.hpp +8 -3
- data/ext/boost/chrono/duration.hpp +9 -10
- data/ext/boost/chrono/system_clocks.hpp +1 -1
- data/ext/boost/chrono/time_point.hpp +4 -3
- data/ext/boost/config/auto_link.hpp +53 -52
- data/ext/boost/config/compiler/borland.hpp +1 -0
- data/ext/boost/config/compiler/clang.hpp +24 -1
- data/ext/boost/config/compiler/codegear.hpp +1 -0
- data/ext/boost/config/compiler/common_edg.hpp +1 -0
- data/ext/boost/config/compiler/cray.hpp +1 -0
- data/ext/boost/config/compiler/digitalmars.hpp +1 -0
- data/ext/boost/config/compiler/gcc.hpp +29 -3
- data/ext/boost/config/compiler/gcc_xml.hpp +2 -1
- data/ext/boost/config/compiler/hp_acc.hpp +1 -0
- data/ext/boost/config/compiler/intel.hpp +1 -1
- data/ext/boost/config/compiler/metrowerks.hpp +1 -0
- data/ext/boost/config/compiler/mpw.hpp +1 -0
- data/ext/boost/config/compiler/pathscale.hpp +1 -0
- data/ext/boost/config/compiler/pgi.hpp +1 -0
- data/ext/boost/config/compiler/sunpro_cc.hpp +1 -0
- data/ext/boost/config/compiler/vacpp.hpp +3 -2
- data/ext/boost/config/compiler/visualc.hpp +25 -11
- data/ext/boost/config/platform/vxworks.hpp +353 -15
- data/ext/boost/config/select_compiler_config.hpp +4 -4
- data/ext/boost/config/stdlib/dinkumware.hpp +10 -3
- data/ext/boost/config/stdlib/libstdcpp3.hpp +2 -1
- data/ext/boost/config/suffix.hpp +45 -19
- data/ext/boost/date_time/format_date_parser.hpp +1 -11
- data/ext/boost/date_time/strings_from_facet.hpp +5 -3
- data/ext/boost/detail/atomic_redef_macros.hpp +19 -0
- data/ext/boost/detail/atomic_undef_macros.hpp +39 -0
- data/ext/boost/detail/endian.hpp +52 -4
- data/ext/boost/detail/scoped_enum_emulation.hpp +10 -10
- data/ext/boost/detail/select_type.hpp +36 -0
- data/ext/boost/exception/current_exception_cast.hpp +1 -1
- data/ext/boost/exception/detail/error_info_impl.hpp +3 -5
- data/ext/boost/exception/detail/exception_ptr.hpp +3 -3
- data/ext/boost/exception/detail/is_output_streamable.hpp +1 -1
- data/ext/boost/exception/detail/object_hex_dump.hpp +1 -1
- data/ext/boost/exception/detail/type_info.hpp +1 -1
- data/ext/boost/exception/diagnostic_information.hpp +15 -14
- data/ext/boost/exception/exception.hpp +1 -1
- data/ext/boost/exception/get_error_info.hpp +1 -1
- data/ext/boost/exception/info.hpp +12 -13
- data/ext/boost/exception/to_string.hpp +6 -1
- data/ext/boost/exception/to_string_stub.hpp +9 -1
- data/ext/boost/foreach.hpp +5 -5
- data/ext/boost/function/function_template.hpp +6 -6
- data/ext/boost/functional/hash/detail/float_functions.hpp +90 -0
- data/ext/boost/functional/hash/detail/hash_float.hpp +11 -2
- data/ext/boost/functional/hash/extensions.hpp +14 -2
- data/ext/boost/functional/hash/hash.hpp +26 -5
- data/ext/boost/get_pointer.hpp +17 -2
- data/ext/boost/integer_traits.hpp +1 -1
- data/ext/boost/lexical_cast.hpp +615 -395
- data/ext/boost/libs/atomic/lockpool.cpp +24 -0
- data/ext/boost/libs/system/src/error_code.cpp +25 -18
- data/ext/boost/libs/thread/src/future.cpp +7 -5
- data/ext/boost/libs/thread/src/pthread/once.cpp +9 -3
- data/ext/boost/libs/thread/src/pthread/once_atomic.cpp +90 -0
- data/ext/boost/libs/thread/src/pthread/thread.cpp +129 -95
- data/ext/boost/libs/thread/src/pthread/timeconv.inl +20 -1
- data/ext/boost/limits.hpp +1 -1
- data/ext/boost/math/policies/policy.hpp +10 -0
- data/ext/boost/math/special_functions/detail/round_fwd.hpp +17 -4
- data/ext/boost/math/special_functions/fpclassify.hpp +114 -45
- data/ext/boost/math/special_functions/math_fwd.hpp +195 -83
- data/ext/boost/math/special_functions/sign.hpp +13 -8
- data/ext/boost/math/tools/config.hpp +38 -16
- data/ext/boost/move/algorithm.hpp +275 -0
- data/ext/boost/move/core.hpp +332 -0
- data/ext/boost/move/detail/config_begin.hpp +23 -0
- data/ext/boost/move/detail/config_end.hpp +20 -0
- data/ext/boost/move/detail/meta_utils.hpp +158 -0
- data/ext/boost/move/iterator.hpp +298 -0
- data/ext/boost/move/move.hpp +10 -1256
- data/ext/boost/move/traits.hpp +142 -0
- data/ext/boost/move/utility.hpp +194 -0
- data/ext/boost/mpl/assert.hpp +72 -4
- data/ext/boost/noncopyable.hpp +15 -3
- data/ext/boost/pointer_to_other.hpp +55 -0
- data/ext/boost/range/concepts.hpp +4 -4
- data/ext/boost/range/detail/extract_optional_type.hpp +1 -1
- data/ext/boost/range/empty.hpp +1 -1
- data/ext/boost/range/iterator_range_core.hpp +4 -1
- data/ext/boost/range/iterator_range_io.hpp +2 -2
- data/ext/boost/ratio/config.hpp +6 -0
- data/ext/boost/ratio/detail/overflow_helpers.hpp +2 -2
- data/ext/boost/smart_ptr/allocate_shared_array.hpp +250 -0
- data/ext/boost/smart_ptr/detail/allocate_array_helper.hpp +169 -0
- data/ext/boost/smart_ptr/detail/array_deleter.hpp +124 -0
- data/ext/boost/smart_ptr/detail/array_traits.hpp +53 -0
- data/ext/boost/smart_ptr/detail/array_utility.hpp +178 -0
- data/ext/boost/smart_ptr/detail/make_array_helper.hpp +157 -0
- data/ext/boost/smart_ptr/detail/operator_bool.hpp +16 -9
- data/ext/boost/smart_ptr/detail/shared_count.hpp +78 -7
- data/ext/boost/smart_ptr/detail/sp_convertible.hpp +15 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base.hpp +12 -6
- data/ext/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_aix.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_nt.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_pt.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +162 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_spin.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_sync.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_impl.hpp +15 -0
- data/ext/boost/smart_ptr/detail/sp_forward.hpp +39 -0
- data/ext/boost/smart_ptr/detail/sp_has_sync.hpp +19 -3
- data/ext/boost/smart_ptr/detail/sp_if_array.hpp +31 -0
- data/ext/boost/smart_ptr/detail/sp_nullptr_t.hpp +45 -0
- data/ext/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +5 -12
- data/ext/boost/smart_ptr/enable_shared_from_this.hpp +4 -4
- data/ext/boost/smart_ptr/make_shared.hpp +5 -1060
- data/ext/boost/smart_ptr/make_shared_array.hpp +247 -0
- data/ext/boost/smart_ptr/make_shared_object.hpp +1128 -0
- data/ext/boost/smart_ptr/scoped_array.hpp +32 -7
- data/ext/boost/smart_ptr/scoped_ptr.hpp +31 -5
- data/ext/boost/smart_ptr/shared_array.hpp +135 -20
- data/ext/boost/smart_ptr/shared_ptr.hpp +444 -126
- data/ext/boost/smart_ptr/weak_ptr.hpp +39 -28
- data/ext/boost/static_assert.hpp +74 -17
- data/ext/boost/system/error_code.hpp +76 -68
- data/ext/boost/system/system_error.hpp +5 -1
- data/ext/boost/thread/barrier.hpp +6 -2
- data/ext/boost/thread/completion_latch.hpp +233 -0
- data/ext/boost/thread/condition.hpp +6 -1
- data/ext/boost/thread/detail/async_func.hpp +571 -0
- data/ext/boost/thread/detail/config.hpp +248 -40
- data/ext/boost/thread/detail/counter.hpp +93 -0
- data/ext/boost/thread/detail/delete.hpp +12 -0
- data/ext/boost/thread/detail/invoke.hpp +1351 -0
- data/ext/boost/thread/detail/is_convertible.hpp +48 -0
- data/ext/boost/thread/detail/lockable_wrapper.hpp +45 -0
- data/ext/boost/thread/detail/log.hpp +83 -0
- data/ext/boost/thread/detail/make_tuple_indices.hpp +224 -0
- data/ext/boost/thread/detail/move.hpp +32 -16
- data/ext/boost/thread/detail/thread.hpp +236 -41
- data/ext/boost/thread/detail/thread_group.hpp +55 -9
- data/ext/boost/thread/detail/thread_interruption.hpp +4 -1
- data/ext/boost/thread/exceptions.hpp +2 -0
- data/ext/boost/thread/externally_locked.hpp +351 -0
- data/ext/boost/thread/externally_locked_stream.hpp +170 -0
- data/ext/boost/thread/future.hpp +2517 -455
- data/ext/boost/thread/future_error_code.hpp +61 -0
- data/ext/boost/thread/is_locked_by_this_thread.hpp +39 -0
- data/ext/boost/thread/latch.hpp +142 -0
- data/ext/boost/thread/lock_algorithms.hpp +468 -0
- data/ext/boost/thread/lock_concepts.hpp +197 -0
- data/ext/boost/thread/lock_factories.hpp +78 -0
- data/ext/boost/thread/lock_guard.hpp +88 -0
- data/ext/boost/thread/lock_options.hpp +31 -0
- data/ext/boost/thread/lock_traits.hpp +45 -0
- data/ext/boost/thread/lock_types.hpp +1226 -0
- data/ext/boost/thread/lockable_adapter.hpp +226 -0
- data/ext/boost/thread/lockable_concepts.hpp +157 -0
- data/ext/boost/thread/lockable_traits.hpp +207 -0
- data/ext/boost/thread/locks.hpp +5 -1816
- data/ext/boost/thread/mutex.hpp +33 -1
- data/ext/boost/thread/null_mutex.hpp +243 -0
- data/ext/boost/thread/once.hpp +10 -1
- data/ext/boost/thread/poly_lockable.hpp +68 -0
- data/ext/boost/thread/poly_lockable_adapter.hpp +89 -0
- data/ext/boost/thread/poly_shared_lockable.hpp +135 -0
- data/ext/boost/thread/poly_shared_lockable_adapter.hpp +170 -0
- data/ext/boost/thread/pthread/condition_variable.hpp +74 -26
- data/ext/boost/thread/pthread/condition_variable_fwd.hpp +54 -27
- data/ext/boost/thread/pthread/mutex.hpp +101 -38
- data/ext/boost/thread/pthread/once.hpp +459 -44
- data/ext/boost/thread/pthread/once_atomic.hpp +313 -0
- data/ext/boost/thread/pthread/recursive_mutex.hpp +19 -10
- data/ext/boost/thread/pthread/shared_mutex.hpp +226 -61
- data/ext/boost/thread/pthread/shared_mutex_assert.hpp +724 -0
- data/ext/boost/thread/pthread/thread_data.hpp +53 -50
- data/ext/boost/thread/pthread/timespec.hpp +96 -12
- data/ext/boost/thread/recursive_mutex.hpp +44 -1
- data/ext/boost/thread/reverse_lock.hpp +3 -2
- data/ext/boost/thread/scoped_thread.hpp +285 -0
- data/ext/boost/thread/shared_lock_guard.hpp +2 -1
- data/ext/boost/thread/shared_mutex.hpp +23 -0
- data/ext/boost/thread/strict_lock.hpp +235 -0
- data/ext/boost/thread/sync_bounded_queue.hpp +594 -0
- data/ext/boost/thread/sync_queue.hpp +516 -0
- data/ext/boost/thread/synchronized_value.hpp +1001 -0
- data/ext/boost/thread/testable_mutex.hpp +148 -0
- data/ext/boost/thread/thread.hpp +1 -13
- data/ext/boost/thread/thread_functors.hpp +57 -0
- data/ext/boost/thread/thread_guard.hpp +46 -0
- data/ext/boost/thread/thread_only.hpp +29 -0
- data/ext/boost/thread/v2/shared_mutex.hpp +1062 -0
- data/ext/boost/thread/v2/thread.hpp +37 -10
- data/ext/boost/thread/xtime.hpp +2 -1
- data/ext/boost/token_functions.hpp +16 -16
- data/ext/boost/type_traits/add_lvalue_reference.hpp +26 -0
- data/ext/boost/type_traits/add_reference.hpp +1 -1
- data/ext/boost/type_traits/add_rvalue_reference.hpp +4 -4
- data/ext/boost/type_traits/aligned_storage.hpp +13 -0
- data/ext/boost/type_traits/common_type.hpp +11 -12
- data/ext/boost/type_traits/config.hpp +1 -1
- data/ext/boost/type_traits/detail/common_type_imp.hpp +1 -1
- data/ext/boost/type_traits/detail/has_binary_operator.hpp +1 -1
- data/ext/boost/type_traits/detail/is_function_ptr_tester.hpp +1 -1
- data/ext/boost/type_traits/has_left_shift.hpp +49 -0
- data/ext/boost/type_traits/has_right_shift.hpp +49 -0
- data/ext/boost/type_traits/has_trivial_move_assign.hpp +57 -0
- data/ext/boost/type_traits/has_trivial_move_constructor.hpp +57 -0
- data/ext/boost/type_traits/intrinsics.hpp +18 -2
- data/ext/boost/type_traits/is_abstract.hpp +1 -1
- data/ext/boost/type_traits/is_array.hpp +1 -1
- data/ext/boost/type_traits/is_const.hpp +1 -1
- data/ext/boost/type_traits/is_convertible.hpp +78 -17
- data/ext/boost/type_traits/is_function.hpp +6 -1
- data/ext/boost/type_traits/is_integral.hpp +6 -1
- data/ext/boost/type_traits/is_nothrow_move_assignable.hpp +84 -0
- data/ext/boost/type_traits/is_nothrow_move_constructible.hpp +84 -0
- data/ext/boost/type_traits/is_pod.hpp +3 -1
- data/ext/boost/type_traits/is_rvalue_reference.hpp +1 -1
- data/ext/boost/type_traits/is_volatile.hpp +1 -1
- data/ext/boost/type_traits/make_signed.hpp +153 -0
- data/ext/boost/type_traits/make_unsigned.hpp +16 -0
- data/ext/boost/type_traits/remove_const.hpp +1 -1
- data/ext/boost/type_traits/remove_cv.hpp +1 -1
- data/ext/boost/type_traits/remove_reference.hpp +1 -1
- data/ext/boost/type_traits/remove_volatile.hpp +1 -1
- data/ext/boost/unordered/detail/allocate.hpp +1120 -0
- data/ext/boost/unordered/detail/buckets.hpp +876 -0
- data/ext/boost/unordered/detail/equivalent.hpp +680 -0
- data/ext/boost/unordered/detail/extract_key.hpp +183 -0
- data/ext/boost/unordered/detail/fwd.hpp +23 -0
- data/ext/boost/unordered/detail/table.hpp +861 -0
- data/ext/boost/unordered/detail/unique.hpp +622 -0
- data/ext/boost/unordered/detail/util.hpp +260 -0
- data/ext/boost/unordered/unordered_map.hpp +1652 -0
- data/ext/boost/unordered/unordered_map_fwd.hpp +65 -0
- data/ext/boost/unordered/unordered_set.hpp +1549 -0
- data/ext/boost/unordered/unordered_set_fwd.hpp +63 -0
- data/ext/boost/unordered_map.hpp +18 -0
- data/ext/boost/unordered_set.hpp +18 -0
- data/ext/boost/utility/addressof.hpp +2 -2
- data/ext/boost/utility/result_of.hpp +8 -1
- data/ext/boost/version.hpp +2 -2
- data/ext/common/Account.h +1 -1
- data/ext/common/AccountsDatabase.h +1 -1
- data/ext/common/AgentsStarter.cpp +3 -1
- data/ext/common/AgentsStarter.h +2 -2
- data/ext/common/ApplicationPool2/AppTypes.cpp +24 -6
- data/ext/common/ApplicationPool2/AppTypes.h +17 -8
- data/ext/common/ApplicationPool2/Common.h +12 -12
- data/ext/common/ApplicationPool2/DirectSpawner.h +2 -2
- data/ext/common/ApplicationPool2/DummySpawner.h +3 -3
- data/ext/common/ApplicationPool2/Group.h +6 -6
- data/ext/common/ApplicationPool2/Implementation.cpp +19 -19
- data/ext/common/ApplicationPool2/PipeWatcher.h +5 -5
- data/ext/common/ApplicationPool2/Pool.h +21 -21
- data/ext/common/ApplicationPool2/Process.h +6 -6
- data/ext/common/ApplicationPool2/Session.h +1 -1
- data/ext/common/ApplicationPool2/SmartSpawner.h +24 -12
- data/ext/common/ApplicationPool2/Socket.h +2 -2
- data/ext/common/ApplicationPool2/Spawner.h +64 -14
- data/ext/common/ApplicationPool2/SpawnerFactory.h +7 -7
- data/ext/common/ApplicationPool2/SuperGroup.h +5 -5
- data/ext/common/BackgroundEventLoop.cpp +4 -4
- data/ext/common/BackgroundEventLoop.h +1 -1
- data/ext/common/Constants.h +13 -1
- data/ext/common/EventedBufferedInput.h +8 -8
- data/ext/common/Exceptions.cpp +71 -0
- data/ext/common/Exceptions.h +60 -7
- data/ext/common/FileDescriptor.h +4 -4
- data/ext/common/MessageClient.h +1 -1
- data/ext/common/MessageServer.h +5 -5
- data/ext/common/MultiLibeio.cpp +3 -3
- data/ext/common/MultiLibeio.h +2 -2
- data/ext/common/RandomGenerator.h +11 -11
- data/ext/common/ResourceLocator.h +8 -1
- data/ext/common/SafeLibev.h +12 -12
- data/ext/common/ServerInstanceDir.h +11 -3
- data/ext/common/UnionStation.h +10 -10
- data/ext/common/Utils.cpp +11 -13
- data/ext/common/Utils.h +9 -9
- data/ext/common/Utils/BlockingQueue.h +10 -10
- data/ext/common/Utils/BufferedIO.h +1 -1
- data/ext/common/Utils/CachedFileStat.hpp +2 -2
- data/ext/common/Utils/FileChangeChecker.h +1 -1
- data/ext/common/Utils/HashMap.h +13 -4
- data/ext/common/Utils/IOUtils.cpp +33 -10
- data/ext/common/Utils/IniFile.h +3 -3
- data/ext/common/Utils/Lock.h +2 -2
- data/ext/common/Utils/MessagePassing.h +10 -10
- data/ext/common/Utils/ProcessMetricsCollector.h +24 -6
- data/ext/common/Utils/ScopeGuard.h +5 -5
- data/ext/common/Utils/jsoncpp.cpp +2 -0
- data/ext/common/agents/HelperAgent/FileBackedPipe.h +26 -26
- data/ext/common/agents/HelperAgent/Main.cpp +18 -18
- data/ext/common/agents/HelperAgent/RequestHandler.cpp +4 -4
- data/ext/common/agents/HelperAgent/RequestHandler.h +30 -21
- data/ext/common/agents/LoggingAgent/AdminController.h +1 -1
- data/ext/common/agents/LoggingAgent/FilterSupport.h +13 -11
- data/ext/common/agents/LoggingAgent/LoggingServer.h +11 -11
- data/ext/common/agents/LoggingAgent/Main.cpp +9 -9
- data/ext/common/agents/LoggingAgent/RemoteSender.h +3 -3
- data/ext/common/agents/SpawnPreparer.cpp +1 -0
- data/ext/common/agents/Watchdog/AgentWatcher.cpp +8 -7
- data/ext/common/agents/Watchdog/Main.cpp +81 -73
- data/ext/common/agents/Watchdog/ServerInstanceDirToucher.cpp +1 -1
- data/ext/libev/Changes +57 -0
- data/ext/libev/LICENSE +2 -1
- data/ext/libev/Makefile.in +110 -50
- data/ext/libev/README +8 -8
- data/ext/libev/aclocal.m4 +1503 -861
- data/ext/libev/config.guess +290 -304
- data/ext/libev/config.sub +77 -198
- data/ext/libev/configure +1735 -890
- data/ext/libev/configure.ac +3 -2
- data/ext/libev/ev++.h +6 -6
- data/ext/libev/ev.c +541 -214
- data/ext/libev/ev.h +106 -100
- data/ext/libev/ev_epoll.c +1 -1
- data/ext/libev/ev_kqueue.c +20 -4
- data/ext/libev/ev_vars.h +15 -16
- data/ext/libev/ev_win32.c +12 -2
- data/ext/libev/ev_wrap.h +162 -160
- data/ext/libev/event.c +29 -6
- data/ext/libev/event.h +9 -2
- data/ext/libev/ltmain.sh +2632 -1384
- data/ext/nginx/ConfigurationCommands.c +1 -1
- data/ext/nginx/ConfigurationCommands.c.erb +3 -1
- data/ext/nginx/ContentHandler.c +25 -2
- data/ext/nginx/CreateLocationConfig.c +1 -0
- data/ext/nginx/CreateLocationConfig.c.erb +1 -1
- data/ext/nginx/MergeLocationConfig.c +1 -0
- data/ext/nginx/MergeLocationConfig.c.erb +1 -1
- data/ext/nginx/config +12 -0
- data/ext/oxt/dynamic_thread_group.hpp +7 -4
- data/ext/oxt/system_calls.cpp +5 -1
- data/ext/oxt/system_calls.hpp +3 -0
- data/helper-scripts/node-loader.js +117 -249
- data/lib/phusion_passenger.rb +27 -5
- data/lib/phusion_passenger/abstract_installer.rb +104 -9
- data/lib/phusion_passenger/admin_tools/memory_stats.rb +10 -9
- data/lib/phusion_passenger/apache2/config_options.rb +6 -3
- data/lib/phusion_passenger/common_library.rb +7 -1
- data/lib/phusion_passenger/constants.rb +6 -0
- data/lib/phusion_passenger/loader_shared_helpers.rb +7 -4
- data/lib/phusion_passenger/nginx/config_options.rb +2 -1
- data/lib/phusion_passenger/packaging.rb +3 -0
- data/lib/phusion_passenger/platform_info/apache.rb +43 -6
- data/lib/phusion_passenger/platform_info/apache_detector.rb +15 -5
- data/lib/phusion_passenger/platform_info/compiler.rb +167 -32
- data/lib/phusion_passenger/platform_info/cxx_portability.rb +133 -77
- data/lib/phusion_passenger/platform_info/depcheck.rb +17 -7
- data/lib/phusion_passenger/platform_info/depcheck_specs/apache2.rb +3 -3
- data/lib/phusion_passenger/platform_info/depcheck_specs/compiler_toolchain.rb +4 -4
- data/lib/phusion_passenger/platform_info/depcheck_specs/ruby.rb +5 -6
- data/lib/phusion_passenger/platform_info/linux.rb +2 -1
- data/lib/phusion_passenger/platform_info/operating_system.rb +1 -1
- data/lib/phusion_passenger/platform_info/ruby.rb +18 -3
- data/lib/phusion_passenger/standalone/runtime_installer.rb +6 -2
- data/lib/phusion_passenger/standalone/start_command.rb +8 -2
- data/lib/phusion_passenger/utils/ansi_colors.rb +9 -0
- data/lib/phusion_passenger/utils/hosts_file_parser.rb +4 -2
- data/node_lib/phusion_passenger/httplib_emulation.js +141 -0
- data/node_lib/phusion_passenger/line_reader.js +154 -0
- data/node_lib/phusion_passenger/request_handler.js +65 -0
- data/node_lib/phusion_passenger/session_protocol_parser.js +113 -0
- data/resources/templates/apache2/deployment_example.txt.erb +2 -1
- data/resources/templates/apache2/installing_against_a_different_apache.txt.erb +14 -0
- data/resources/templates/apache2/multiple_apache_installations_detected.txt.erb +15 -0
- data/resources/templates/apache2/possible_solutions_for_compilation_and_installation_problems.txt.erb +4 -5
- data/resources/templates/general_error_with_html.html.template +1 -1
- data/resources/templates/installer_common/gem_install_permission_problems.txt.erb +17 -0
- data/resources/templates/installer_common/low_amount_of_memory_warning.txt.erb +6 -4
- data/resources/templates/installer_common/world_inaccessible_directories.txt.erb +16 -0
- data/resources/templates/nginx/deployment_example.txt.erb +2 -1
- data/resources/templates/nginx/possible_solutions_for_compilation_and_installation_problems.txt.erb +4 -5
- data/resources/templates/standalone/config.erb +1 -0
- data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +3 -3
- data/test/cxx/ApplicationPool2/PoolTest.cpp +4 -4
- data/test/cxx/ApplicationPool2/ProcessTest.cpp +5 -5
- data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +5 -5
- data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +1 -1
- data/test/cxx/EventedBufferedInputTest.cpp +6 -6
- data/test/cxx/FileBackedPipeTest.cpp +1 -1
- data/test/cxx/MessagePassingTest.cpp +1 -1
- data/test/cxx/MessageServerTest.cpp +4 -4
- data/test/cxx/RequestHandlerTest.cpp +7 -7
- data/test/cxx/UnionStationTest.cpp +2 -2
- data/test/node/line_reader_spec.js +338 -0
- data/test/node/spec_helper.js +27 -0
- data/test/ruby/standalone/runtime_installer_spec.rb +2 -1
- metadata +131 -22
- metadata.gz.asc +7 -7
- data/ext/boost/functional/hash/detail/container_fwd_0x.hpp +0 -29
- data/ext/boost/lambda/core.hpp +0 -79
- data/ext/boost/lambda/detail/actions.hpp +0 -174
- data/ext/boost/lambda/detail/arity_code.hpp +0 -110
- data/ext/boost/lambda/detail/function_adaptors.hpp +0 -789
- data/ext/boost/lambda/detail/is_instance_of.hpp +0 -104
- data/ext/boost/lambda/detail/lambda_config.hpp +0 -48
- data/ext/boost/lambda/detail/lambda_functor_base.hpp +0 -615
- data/ext/boost/lambda/detail/lambda_functors.hpp +0 -324
- data/ext/boost/lambda/detail/lambda_fwd.hpp +0 -74
- data/ext/boost/lambda/detail/lambda_traits.hpp +0 -578
- data/ext/boost/lambda/detail/member_ptr.hpp +0 -737
- data/ext/boost/lambda/detail/operator_actions.hpp +0 -139
- data/ext/boost/lambda/detail/operator_lambda_func_base.hpp +0 -271
- data/ext/boost/lambda/detail/operator_return_type_traits.hpp +0 -917
- data/ext/boost/lambda/detail/operators.hpp +0 -370
- data/ext/boost/lambda/detail/ret.hpp +0 -325
- data/ext/boost/lambda/detail/return_type_traits.hpp +0 -282
- data/ext/boost/lambda/detail/select_functions.hpp +0 -74
- data/ext/boost/lambda/lambda.hpp +0 -34
@@ -29,23 +29,23 @@ private:
|
|
29
29
|
|
30
30
|
public:
|
31
31
|
|
32
|
-
typedef T element_type;
|
32
|
+
typedef typename boost::detail::sp_element< T >::type element_type;
|
33
33
|
|
34
|
-
weak_ptr(): px(0), pn() // never throws in 1.30+
|
34
|
+
weak_ptr() BOOST_NOEXCEPT : px(0), pn() // never throws in 1.30+
|
35
35
|
{
|
36
36
|
}
|
37
37
|
|
38
38
|
// generated copy constructor, assignment, destructor are fine...
|
39
39
|
|
40
|
-
#if defined(
|
40
|
+
#if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES )
|
41
41
|
|
42
42
|
// ... except in C++0x, move disables the implicit copy
|
43
43
|
|
44
|
-
weak_ptr( weak_ptr const & r ): px( r.px ), pn( r.pn )
|
44
|
+
weak_ptr( weak_ptr const & r ) BOOST_NOEXCEPT : px( r.px ), pn( r.pn )
|
45
45
|
{
|
46
46
|
}
|
47
47
|
|
48
|
-
weak_ptr & operator=( weak_ptr const & r )
|
48
|
+
weak_ptr & operator=( weak_ptr const & r ) BOOST_NOEXCEPT
|
49
49
|
{
|
50
50
|
px = r.px;
|
51
51
|
pn = r.pn;
|
@@ -81,11 +81,12 @@ public:
|
|
81
81
|
weak_ptr( weak_ptr<Y> const & r )
|
82
82
|
|
83
83
|
#endif
|
84
|
-
: px(r.lock().get()), pn(r.pn)
|
84
|
+
BOOST_NOEXCEPT : px(r.lock().get()), pn(r.pn)
|
85
85
|
{
|
86
|
+
boost::detail::sp_assert_convertible< Y, T >();
|
86
87
|
}
|
87
88
|
|
88
|
-
#if defined(
|
89
|
+
#if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES )
|
89
90
|
|
90
91
|
template<class Y>
|
91
92
|
#if !defined( BOOST_SP_NO_SP_CONVERTIBLE )
|
@@ -97,19 +98,21 @@ public:
|
|
97
98
|
weak_ptr( weak_ptr<Y> && r )
|
98
99
|
|
99
100
|
#endif
|
100
|
-
: px( r.lock().get() ), pn( static_cast< boost::detail::weak_count && >( r.pn ) )
|
101
|
+
BOOST_NOEXCEPT : px( r.lock().get() ), pn( static_cast< boost::detail::weak_count && >( r.pn ) )
|
101
102
|
{
|
103
|
+
boost::detail::sp_assert_convertible< Y, T >();
|
102
104
|
r.px = 0;
|
103
105
|
}
|
104
106
|
|
105
107
|
// for better efficiency in the T == Y case
|
106
|
-
weak_ptr( weak_ptr && r )
|
108
|
+
weak_ptr( weak_ptr && r )
|
109
|
+
BOOST_NOEXCEPT : px( r.px ), pn( static_cast< boost::detail::weak_count && >( r.pn ) )
|
107
110
|
{
|
108
111
|
r.px = 0;
|
109
112
|
}
|
110
113
|
|
111
114
|
// for better efficiency in the T == Y case
|
112
|
-
weak_ptr & operator=( weak_ptr && r )
|
115
|
+
weak_ptr & operator=( weak_ptr && r ) BOOST_NOEXCEPT
|
113
116
|
{
|
114
117
|
this_type( static_cast< weak_ptr && >( r ) ).swap( *this );
|
115
118
|
return *this;
|
@@ -128,24 +131,28 @@ public:
|
|
128
131
|
weak_ptr( shared_ptr<Y> const & r )
|
129
132
|
|
130
133
|
#endif
|
131
|
-
: px( r.px ), pn( r.pn )
|
134
|
+
BOOST_NOEXCEPT : px( r.px ), pn( r.pn )
|
132
135
|
{
|
136
|
+
boost::detail::sp_assert_convertible< Y, T >();
|
133
137
|
}
|
134
138
|
|
135
139
|
#if !defined(BOOST_MSVC) || (BOOST_MSVC >= 1300)
|
136
140
|
|
137
141
|
template<class Y>
|
138
|
-
weak_ptr & operator=(weak_ptr<Y> const & r)
|
142
|
+
weak_ptr & operator=( weak_ptr<Y> const & r ) BOOST_NOEXCEPT
|
139
143
|
{
|
144
|
+
boost::detail::sp_assert_convertible< Y, T >();
|
145
|
+
|
140
146
|
px = r.lock().get();
|
141
147
|
pn = r.pn;
|
148
|
+
|
142
149
|
return *this;
|
143
150
|
}
|
144
151
|
|
145
|
-
#if defined(
|
152
|
+
#if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES )
|
146
153
|
|
147
154
|
template<class Y>
|
148
|
-
weak_ptr & operator=( weak_ptr<Y> && r )
|
155
|
+
weak_ptr & operator=( weak_ptr<Y> && r ) BOOST_NOEXCEPT
|
149
156
|
{
|
150
157
|
this_type( static_cast< weak_ptr<Y> && >( r ) ).swap( *this );
|
151
158
|
return *this;
|
@@ -154,26 +161,29 @@ public:
|
|
154
161
|
#endif
|
155
162
|
|
156
163
|
template<class Y>
|
157
|
-
weak_ptr & operator=(shared_ptr<Y> const & r)
|
164
|
+
weak_ptr & operator=( shared_ptr<Y> const & r ) BOOST_NOEXCEPT
|
158
165
|
{
|
166
|
+
boost::detail::sp_assert_convertible< Y, T >();
|
167
|
+
|
159
168
|
px = r.px;
|
160
169
|
pn = r.pn;
|
170
|
+
|
161
171
|
return *this;
|
162
172
|
}
|
163
173
|
|
164
174
|
#endif
|
165
175
|
|
166
|
-
shared_ptr<T> lock() const
|
176
|
+
shared_ptr<T> lock() const BOOST_NOEXCEPT
|
167
177
|
{
|
168
|
-
return shared_ptr<
|
178
|
+
return shared_ptr<T>( *this, boost::detail::sp_nothrow_tag() );
|
169
179
|
}
|
170
180
|
|
171
|
-
long use_count() const
|
181
|
+
long use_count() const BOOST_NOEXCEPT
|
172
182
|
{
|
173
183
|
return pn.use_count();
|
174
184
|
}
|
175
185
|
|
176
|
-
bool expired() const
|
186
|
+
bool expired() const BOOST_NOEXCEPT
|
177
187
|
{
|
178
188
|
return pn.use_count() == 0;
|
179
189
|
}
|
@@ -183,29 +193,30 @@ public:
|
|
183
193
|
return pn.empty();
|
184
194
|
}
|
185
195
|
|
186
|
-
void reset() // never throws in 1.30+
|
196
|
+
void reset() BOOST_NOEXCEPT // never throws in 1.30+
|
187
197
|
{
|
188
198
|
this_type().swap(*this);
|
189
199
|
}
|
190
200
|
|
191
|
-
void swap(this_type & other)
|
201
|
+
void swap(this_type & other) BOOST_NOEXCEPT
|
192
202
|
{
|
193
203
|
std::swap(px, other.px);
|
194
204
|
pn.swap(other.pn);
|
195
205
|
}
|
196
206
|
|
197
|
-
|
207
|
+
template<typename Y>
|
208
|
+
void _internal_aliasing_assign(weak_ptr<Y> const & r, element_type * px2)
|
198
209
|
{
|
199
210
|
px = px2;
|
200
|
-
pn =
|
211
|
+
pn = r.pn;
|
201
212
|
}
|
202
213
|
|
203
|
-
template<class Y> bool owner_before( weak_ptr<Y> const & rhs ) const
|
214
|
+
template<class Y> bool owner_before( weak_ptr<Y> const & rhs ) const BOOST_NOEXCEPT
|
204
215
|
{
|
205
216
|
return pn < rhs.pn;
|
206
217
|
}
|
207
218
|
|
208
|
-
template<class Y> bool owner_before( shared_ptr<Y> const & rhs ) const
|
219
|
+
template<class Y> bool owner_before( shared_ptr<Y> const & rhs ) const BOOST_NOEXCEPT
|
209
220
|
{
|
210
221
|
return pn < rhs.pn;
|
211
222
|
}
|
@@ -222,17 +233,17 @@ private:
|
|
222
233
|
|
223
234
|
#endif
|
224
235
|
|
225
|
-
|
236
|
+
element_type * px; // contained pointer
|
226
237
|
boost::detail::weak_count pn; // reference counter
|
227
238
|
|
228
239
|
}; // weak_ptr
|
229
240
|
|
230
|
-
template<class T, class U> inline bool operator<(weak_ptr<T> const & a, weak_ptr<U> const & b)
|
241
|
+
template<class T, class U> inline bool operator<(weak_ptr<T> const & a, weak_ptr<U> const & b) BOOST_NOEXCEPT
|
231
242
|
{
|
232
243
|
return a.owner_before( b );
|
233
244
|
}
|
234
245
|
|
235
|
-
template<class T> void swap(weak_ptr<T> & a, weak_ptr<T> & b)
|
246
|
+
template<class T> void swap(weak_ptr<T> & a, weak_ptr<T> & b) BOOST_NOEXCEPT
|
236
247
|
{
|
237
248
|
a.swap(b);
|
238
249
|
}
|
data/ext/boost/static_assert.hpp
CHANGED
@@ -17,10 +17,23 @@
|
|
17
17
|
#include <boost/config.hpp>
|
18
18
|
#include <boost/detail/workaround.hpp>
|
19
19
|
|
20
|
-
#
|
21
|
-
|
20
|
+
#if defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__)
|
21
|
+
//
|
22
|
+
// This is horrible, but it seems to be the only we can shut up the
|
23
|
+
// "anonymous variadic macros were introduced in C99 [-Wvariadic-macros]"
|
24
|
+
// warning that get spewed out otherwise in non-C++11 mode.
|
25
|
+
//
|
26
|
+
#pragma GCC system_header
|
27
|
+
#endif
|
28
|
+
|
29
|
+
#ifndef BOOST_NO_CXX11_STATIC_ASSERT
|
30
|
+
# ifndef BOOST_NO_CXX11_VARIADIC_MACROS
|
31
|
+
# define BOOST_STATIC_ASSERT_MSG( ... ) static_assert(__VA_ARGS__)
|
32
|
+
# else
|
33
|
+
# define BOOST_STATIC_ASSERT_MSG( B, Msg ) BOOST_STATIC_ASSERT( B )
|
34
|
+
# endif
|
22
35
|
#else
|
23
|
-
#
|
36
|
+
# define BOOST_STATIC_ASSERT_MSG( B, Msg ) BOOST_STATIC_ASSERT( B )
|
24
37
|
#endif
|
25
38
|
|
26
39
|
#ifdef __BORLANDC__
|
@@ -39,13 +52,33 @@
|
|
39
52
|
// then enable this:
|
40
53
|
//
|
41
54
|
#if defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4)))
|
42
|
-
#
|
55
|
+
# ifndef BOOST_NO_CXX11_VARIADIC_MACROS
|
56
|
+
# define BOOST_STATIC_ASSERT_BOOL_CAST( ... ) ((__VA_ARGS__) == 0 ? false : true)
|
57
|
+
# else
|
58
|
+
# define BOOST_STATIC_ASSERT_BOOL_CAST( x ) ((x) == 0 ? false : true)
|
59
|
+
# endif
|
60
|
+
#else
|
61
|
+
# ifndef BOOST_NO_CXX11_VARIADIC_MACROS
|
62
|
+
# define BOOST_STATIC_ASSERT_BOOL_CAST( ... ) (bool)(__VA_ARGS__)
|
63
|
+
# else
|
64
|
+
# define BOOST_STATIC_ASSERT_BOOL_CAST(x) (bool)(x)
|
65
|
+
# endif
|
66
|
+
#endif
|
67
|
+
//
|
68
|
+
// If the compiler warns about unused typedefs then enable this:
|
69
|
+
//
|
70
|
+
#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)))
|
71
|
+
# define BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE __attribute__((unused))
|
43
72
|
#else
|
44
|
-
# define
|
73
|
+
# define BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE
|
45
74
|
#endif
|
46
75
|
|
47
|
-
#ifndef
|
48
|
-
#
|
76
|
+
#ifndef BOOST_NO_CXX11_STATIC_ASSERT
|
77
|
+
# ifndef BOOST_NO_CXX11_VARIADIC_MACROS
|
78
|
+
# define BOOST_STATIC_ASSERT( ... ) static_assert(__VA_ARGS__, #__VA_ARGS__)
|
79
|
+
# else
|
80
|
+
# define BOOST_STATIC_ASSERT( B ) static_assert(B, #B)
|
81
|
+
# endif
|
49
82
|
#else
|
50
83
|
|
51
84
|
namespace boost{
|
@@ -91,17 +124,28 @@ template<int x> struct static_assert_test{};
|
|
91
124
|
typedef ::boost::static_assert_test<\
|
92
125
|
sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >)\
|
93
126
|
> boost_static_assert_typedef_
|
94
|
-
#elif defined(BOOST_MSVC)
|
127
|
+
#elif defined(BOOST_MSVC) && defined(BOOST_NO_CXX11_VARIADIC_MACROS)
|
95
128
|
#define BOOST_STATIC_ASSERT( B ) \
|
96
129
|
typedef ::boost::static_assert_test<\
|
97
130
|
sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST ( B ) >)>\
|
98
131
|
BOOST_JOIN(boost_static_assert_typedef_, __COUNTER__)
|
99
|
-
#elif defined(
|
132
|
+
#elif defined(BOOST_MSVC)
|
133
|
+
#define BOOST_STATIC_ASSERT(...) \
|
134
|
+
typedef ::boost::static_assert_test<\
|
135
|
+
sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST (__VA_ARGS__) >)>\
|
136
|
+
BOOST_JOIN(boost_static_assert_typedef_, __COUNTER__)
|
137
|
+
#elif (defined(BOOST_INTEL_CXX_VERSION) || defined(BOOST_SA_GCC_WORKAROUND)) && defined(BOOST_NO_CXX11_VARIADIC_MACROS)
|
100
138
|
// agurt 15/sep/02: a special care is needed to force Intel C++ issue an error
|
101
139
|
// instead of warning in case of failure
|
102
140
|
# define BOOST_STATIC_ASSERT( B ) \
|
103
141
|
typedef char BOOST_JOIN(boost_static_assert_typedef_, __LINE__) \
|
104
142
|
[ ::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >::value ]
|
143
|
+
#elif (defined(BOOST_INTEL_CXX_VERSION) || defined(BOOST_SA_GCC_WORKAROUND)) && !defined(BOOST_NO_CXX11_VARIADIC_MACROS)
|
144
|
+
// agurt 15/sep/02: a special care is needed to force Intel C++ issue an error
|
145
|
+
// instead of warning in case of failure
|
146
|
+
# define BOOST_STATIC_ASSERT(...) \
|
147
|
+
typedef char BOOST_JOIN(boost_static_assert_typedef_, __LINE__) \
|
148
|
+
[ ::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) >::value ]
|
105
149
|
#elif defined(__sgi)
|
106
150
|
// special version for SGI MIPSpro compiler
|
107
151
|
#define BOOST_STATIC_ASSERT( B ) \
|
@@ -119,19 +163,32 @@ template<int x> struct static_assert_test{};
|
|
119
163
|
sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >) )
|
120
164
|
#else
|
121
165
|
// generic version
|
122
|
-
#
|
123
|
-
|
124
|
-
|
125
|
-
|
166
|
+
# ifndef BOOST_NO_CXX11_VARIADIC_MACROS
|
167
|
+
# define BOOST_STATIC_ASSERT( ... ) \
|
168
|
+
typedef ::boost::static_assert_test<\
|
169
|
+
sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) >)>\
|
170
|
+
BOOST_JOIN(boost_static_assert_typedef_, __LINE__) BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE
|
171
|
+
# else
|
172
|
+
# define BOOST_STATIC_ASSERT( B ) \
|
173
|
+
typedef ::boost::static_assert_test<\
|
174
|
+
sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >)>\
|
175
|
+
BOOST_JOIN(boost_static_assert_typedef_, __LINE__) BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE
|
176
|
+
# endif
|
126
177
|
#endif
|
127
178
|
|
128
179
|
#else
|
129
180
|
// alternative enum based implementation:
|
130
|
-
#
|
131
|
-
|
132
|
-
|
181
|
+
# ifndef BOOST_NO_CXX11_VARIADIC_MACROS
|
182
|
+
# define BOOST_STATIC_ASSERT( ... ) \
|
183
|
+
enum { BOOST_JOIN(boost_static_assert_enum_, __LINE__) \
|
184
|
+
= sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( __VA_ARGS__ ) >) }
|
185
|
+
# else
|
186
|
+
# define BOOST_STATIC_ASSERT(B) \
|
187
|
+
enum { BOOST_JOIN(boost_static_assert_enum_, __LINE__) \
|
188
|
+
= sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >) }
|
189
|
+
# endif
|
133
190
|
#endif
|
134
|
-
#endif // defined(
|
191
|
+
#endif // defined(BOOST_NO_CXX11_STATIC_ASSERT)
|
135
192
|
|
136
193
|
#endif // BOOST_STATIC_ASSERT_HPP
|
137
194
|
|
@@ -23,7 +23,7 @@
|
|
23
23
|
#include <functional>
|
24
24
|
|
25
25
|
// TODO: undef these macros if not already defined
|
26
|
-
#include <boost/cerrno.hpp>
|
26
|
+
#include <boost/cerrno.hpp>
|
27
27
|
|
28
28
|
#if !defined(BOOST_POSIX_API) && !defined(BOOST_WINDOWS_API)
|
29
29
|
# error BOOST_POSIX_API or BOOST_WINDOWS_API must be defined
|
@@ -31,6 +31,10 @@
|
|
31
31
|
|
32
32
|
#include <boost/config/abi_prefix.hpp> // must be the last #include
|
33
33
|
|
34
|
+
#ifndef BOOST_SYSTEM_NOEXCEPT
|
35
|
+
#define BOOST_SYSTEM_NOEXCEPT BOOST_NOEXCEPT
|
36
|
+
#endif
|
37
|
+
|
34
38
|
namespace boost
|
35
39
|
{
|
36
40
|
namespace system
|
@@ -184,17 +188,17 @@ namespace boost
|
|
184
188
|
public:
|
185
189
|
virtual ~error_category(){}
|
186
190
|
|
187
|
-
virtual const char * name() const = 0;
|
191
|
+
virtual const char * name() const BOOST_SYSTEM_NOEXCEPT = 0;
|
188
192
|
virtual std::string message( int ev ) const = 0;
|
189
|
-
virtual error_condition default_error_condition( int ev ) const;
|
190
|
-
virtual bool equivalent( int code,
|
191
|
-
const error_condition & condition ) const;
|
192
|
-
virtual bool equivalent( const error_code & code,
|
193
|
-
int condition ) const;
|
194
|
-
|
195
|
-
bool operator==(const error_category & rhs) const { return this == &rhs; }
|
196
|
-
bool operator!=(const error_category & rhs) const { return this != &rhs; }
|
197
|
-
bool operator<( const error_category & rhs ) const
|
193
|
+
inline virtual error_condition default_error_condition( int ev ) const BOOST_SYSTEM_NOEXCEPT;
|
194
|
+
inline virtual bool equivalent( int code,
|
195
|
+
const error_condition & condition ) const BOOST_SYSTEM_NOEXCEPT;
|
196
|
+
inline virtual bool equivalent( const error_code & code,
|
197
|
+
int condition ) const BOOST_SYSTEM_NOEXCEPT;
|
198
|
+
|
199
|
+
bool operator==(const error_category & rhs) const BOOST_SYSTEM_NOEXCEPT { return this == &rhs; }
|
200
|
+
bool operator!=(const error_category & rhs) const BOOST_SYSTEM_NOEXCEPT { return this != &rhs; }
|
201
|
+
bool operator<( const error_category & rhs ) const BOOST_SYSTEM_NOEXCEPT
|
198
202
|
{
|
199
203
|
return std::less<const error_category*>()( this, &rhs );
|
200
204
|
}
|
@@ -202,9 +206,13 @@ namespace boost
|
|
202
206
|
|
203
207
|
// predefined error categories -----------------------------------------//
|
204
208
|
|
205
|
-
|
206
|
-
|
207
|
-
|
209
|
+
# ifdef BOOST_ERROR_CODE_HEADER_ONLY
|
210
|
+
inline const error_category & system_category() BOOST_SYSTEM_NOEXCEPT;
|
211
|
+
inline const error_category & generic_category() BOOST_SYSTEM_NOEXCEPT;
|
212
|
+
#else
|
213
|
+
BOOST_SYSTEM_DECL const error_category & system_category() BOOST_SYSTEM_NOEXCEPT;
|
214
|
+
BOOST_SYSTEM_DECL const error_category & generic_category() BOOST_SYSTEM_NOEXCEPT;
|
215
|
+
#endif
|
208
216
|
// deprecated synonyms --------------------------------------------------//
|
209
217
|
|
210
218
|
# ifndef BOOST_SYSTEM_NO_DEPRECATED
|
@@ -225,52 +233,52 @@ namespace boost
|
|
225
233
|
public:
|
226
234
|
|
227
235
|
// constructors:
|
228
|
-
error_condition() : m_val(0), m_cat(&generic_category()) {}
|
229
|
-
error_condition( int val, const error_category & cat ) : m_val(val), m_cat(&cat) {}
|
236
|
+
error_condition() BOOST_SYSTEM_NOEXCEPT : m_val(0), m_cat(&generic_category()) {}
|
237
|
+
error_condition( int val, const error_category & cat ) BOOST_SYSTEM_NOEXCEPT : m_val(val), m_cat(&cat) {}
|
230
238
|
|
231
239
|
template <class ErrorConditionEnum>
|
232
240
|
error_condition(ErrorConditionEnum e,
|
233
|
-
typename boost::enable_if<is_error_condition_enum<ErrorConditionEnum> >::type* = 0)
|
241
|
+
typename boost::enable_if<is_error_condition_enum<ErrorConditionEnum> >::type* = 0) BOOST_SYSTEM_NOEXCEPT
|
234
242
|
{
|
235
243
|
*this = make_error_condition(e);
|
236
244
|
}
|
237
245
|
|
238
246
|
// modifiers:
|
239
247
|
|
240
|
-
void assign( int val, const error_category & cat )
|
241
|
-
{
|
248
|
+
void assign( int val, const error_category & cat ) BOOST_SYSTEM_NOEXCEPT
|
249
|
+
{
|
242
250
|
m_val = val;
|
243
251
|
m_cat = &cat;
|
244
252
|
}
|
245
|
-
|
253
|
+
|
246
254
|
template<typename ErrorConditionEnum>
|
247
255
|
typename boost::enable_if<is_error_condition_enum<ErrorConditionEnum>, error_condition>::type &
|
248
|
-
operator=( ErrorConditionEnum val )
|
249
|
-
{
|
256
|
+
operator=( ErrorConditionEnum val ) BOOST_SYSTEM_NOEXCEPT
|
257
|
+
{
|
250
258
|
*this = make_error_condition(val);
|
251
259
|
return *this;
|
252
260
|
}
|
253
261
|
|
254
|
-
void clear()
|
262
|
+
void clear() BOOST_SYSTEM_NOEXCEPT
|
255
263
|
{
|
256
264
|
m_val = 0;
|
257
265
|
m_cat = &generic_category();
|
258
266
|
}
|
259
267
|
|
260
268
|
// observers:
|
261
|
-
int value() const { return m_val; }
|
262
|
-
const error_category & category() const { return *m_cat; }
|
269
|
+
int value() const BOOST_SYSTEM_NOEXCEPT { return m_val; }
|
270
|
+
const error_category & category() const BOOST_SYSTEM_NOEXCEPT { return *m_cat; }
|
263
271
|
std::string message() const { return m_cat->message(value()); }
|
264
272
|
|
265
273
|
typedef void (*unspecified_bool_type)();
|
266
274
|
static void unspecified_bool_true() {}
|
267
275
|
|
268
|
-
operator unspecified_bool_type() const // true if error
|
269
|
-
{
|
276
|
+
operator unspecified_bool_type() const BOOST_SYSTEM_NOEXCEPT // true if error
|
277
|
+
{
|
270
278
|
return m_val == 0 ? 0 : unspecified_bool_true;
|
271
279
|
}
|
272
280
|
|
273
|
-
bool operator!() const // true if no error
|
281
|
+
bool operator!() const BOOST_SYSTEM_NOEXCEPT // true if no error
|
274
282
|
{
|
275
283
|
return m_val == 0;
|
276
284
|
}
|
@@ -279,13 +287,13 @@ namespace boost
|
|
279
287
|
// the more symmetrical non-member syntax allows enum
|
280
288
|
// conversions work for both rhs and lhs.
|
281
289
|
inline friend bool operator==( const error_condition & lhs,
|
282
|
-
const error_condition & rhs )
|
290
|
+
const error_condition & rhs ) BOOST_SYSTEM_NOEXCEPT
|
283
291
|
{
|
284
292
|
return lhs.m_cat == rhs.m_cat && lhs.m_val == rhs.m_val;
|
285
|
-
}
|
293
|
+
}
|
286
294
|
|
287
295
|
inline friend bool operator<( const error_condition & lhs,
|
288
|
-
const error_condition & rhs )
|
296
|
+
const error_condition & rhs ) BOOST_SYSTEM_NOEXCEPT
|
289
297
|
// the more symmetrical non-member syntax allows enum
|
290
298
|
// conversions work for both rhs and lhs.
|
291
299
|
{
|
@@ -312,59 +320,59 @@ namespace boost
|
|
312
320
|
public:
|
313
321
|
|
314
322
|
// constructors:
|
315
|
-
error_code() : m_val(0), m_cat(&system_category()) {}
|
316
|
-
error_code( int val, const error_category & cat ) : m_val(val), m_cat(&cat) {}
|
323
|
+
error_code() BOOST_SYSTEM_NOEXCEPT : m_val(0), m_cat(&system_category()) {}
|
324
|
+
error_code( int val, const error_category & cat ) BOOST_SYSTEM_NOEXCEPT : m_val(val), m_cat(&cat) {}
|
317
325
|
|
318
326
|
template <class ErrorCodeEnum>
|
319
327
|
error_code(ErrorCodeEnum e,
|
320
|
-
typename boost::enable_if<is_error_code_enum<ErrorCodeEnum> >::type* = 0)
|
328
|
+
typename boost::enable_if<is_error_code_enum<ErrorCodeEnum> >::type* = 0) BOOST_SYSTEM_NOEXCEPT
|
321
329
|
{
|
322
330
|
*this = make_error_code(e);
|
323
331
|
}
|
324
332
|
|
325
333
|
// modifiers:
|
326
|
-
void assign( int val, const error_category & cat )
|
327
|
-
{
|
334
|
+
void assign( int val, const error_category & cat ) BOOST_SYSTEM_NOEXCEPT
|
335
|
+
{
|
328
336
|
m_val = val;
|
329
337
|
m_cat = &cat;
|
330
338
|
}
|
331
|
-
|
339
|
+
|
332
340
|
template<typename ErrorCodeEnum>
|
333
341
|
typename boost::enable_if<is_error_code_enum<ErrorCodeEnum>, error_code>::type &
|
334
|
-
operator=( ErrorCodeEnum val )
|
335
|
-
{
|
342
|
+
operator=( ErrorCodeEnum val ) BOOST_SYSTEM_NOEXCEPT
|
343
|
+
{
|
336
344
|
*this = make_error_code(val);
|
337
345
|
return *this;
|
338
346
|
}
|
339
347
|
|
340
|
-
void clear()
|
348
|
+
void clear() BOOST_SYSTEM_NOEXCEPT
|
341
349
|
{
|
342
350
|
m_val = 0;
|
343
351
|
m_cat = &system_category();
|
344
352
|
}
|
345
353
|
|
346
354
|
// observers:
|
347
|
-
int value() const
|
348
|
-
const error_category & category() const { return *m_cat; }
|
349
|
-
error_condition default_error_condition() const { return m_cat->default_error_condition(value()); }
|
355
|
+
int value() const BOOST_SYSTEM_NOEXCEPT { return m_val; }
|
356
|
+
const error_category & category() const BOOST_SYSTEM_NOEXCEPT { return *m_cat; }
|
357
|
+
error_condition default_error_condition() const BOOST_SYSTEM_NOEXCEPT { return m_cat->default_error_condition(value()); }
|
350
358
|
std::string message() const { return m_cat->message(value()); }
|
351
359
|
|
352
360
|
typedef void (*unspecified_bool_type)();
|
353
361
|
static void unspecified_bool_true() {}
|
354
362
|
|
355
|
-
operator unspecified_bool_type() const // true if error
|
356
|
-
{
|
363
|
+
operator unspecified_bool_type() const BOOST_SYSTEM_NOEXCEPT // true if error
|
364
|
+
{
|
357
365
|
return m_val == 0 ? 0 : unspecified_bool_true;
|
358
366
|
}
|
359
367
|
|
360
|
-
bool operator!() const // true if no error
|
368
|
+
bool operator!() const BOOST_SYSTEM_NOEXCEPT // true if no error
|
361
369
|
{
|
362
370
|
return m_val == 0;
|
363
371
|
}
|
364
372
|
|
365
373
|
// relationals:
|
366
374
|
inline friend bool operator==( const error_code & lhs,
|
367
|
-
const error_code & rhs )
|
375
|
+
const error_code & rhs ) BOOST_SYSTEM_NOEXCEPT
|
368
376
|
// the more symmetrical non-member syntax allows enum
|
369
377
|
// conversions work for both rhs and lhs.
|
370
378
|
{
|
@@ -372,15 +380,15 @@ namespace boost
|
|
372
380
|
}
|
373
381
|
|
374
382
|
inline friend bool operator<( const error_code & lhs,
|
375
|
-
const error_code & rhs )
|
383
|
+
const error_code & rhs ) BOOST_SYSTEM_NOEXCEPT
|
376
384
|
// the more symmetrical non-member syntax allows enum
|
377
385
|
// conversions work for both rhs and lhs.
|
378
386
|
{
|
379
387
|
return lhs.m_cat < rhs.m_cat
|
380
388
|
|| (lhs.m_cat == rhs.m_cat && lhs.m_val < rhs.m_val);
|
381
389
|
}
|
382
|
-
|
383
|
-
|
390
|
+
|
391
|
+
private:
|
384
392
|
int m_val;
|
385
393
|
const error_category * m_cat;
|
386
394
|
|
@@ -414,43 +422,43 @@ namespace boost
|
|
414
422
|
// non-member functions ------------------------------------------------//
|
415
423
|
|
416
424
|
inline bool operator!=( const error_code & lhs,
|
417
|
-
const error_code & rhs )
|
425
|
+
const error_code & rhs ) BOOST_SYSTEM_NOEXCEPT
|
418
426
|
{
|
419
427
|
return !(lhs == rhs);
|
420
428
|
}
|
421
429
|
|
422
430
|
inline bool operator!=( const error_condition & lhs,
|
423
|
-
const error_condition & rhs )
|
431
|
+
const error_condition & rhs ) BOOST_SYSTEM_NOEXCEPT
|
424
432
|
{
|
425
433
|
return !(lhs == rhs);
|
426
434
|
}
|
427
435
|
|
428
436
|
inline bool operator==( const error_code & code,
|
429
|
-
const error_condition & condition )
|
437
|
+
const error_condition & condition ) BOOST_SYSTEM_NOEXCEPT
|
430
438
|
{
|
431
439
|
return code.category().equivalent( code.value(), condition )
|
432
440
|
|| condition.category().equivalent( code, condition.value() );
|
433
441
|
}
|
434
|
-
|
442
|
+
|
435
443
|
inline bool operator!=( const error_code & lhs,
|
436
|
-
const error_condition & rhs )
|
444
|
+
const error_condition & rhs ) BOOST_SYSTEM_NOEXCEPT
|
437
445
|
{
|
438
446
|
return !(lhs == rhs);
|
439
447
|
}
|
440
|
-
|
448
|
+
|
441
449
|
inline bool operator==( const error_condition & condition,
|
442
|
-
const error_code & code )
|
450
|
+
const error_code & code ) BOOST_SYSTEM_NOEXCEPT
|
443
451
|
{
|
444
452
|
return condition.category().equivalent( code, condition.value() )
|
445
453
|
|| code.category().equivalent( code.value(), condition );
|
446
454
|
}
|
447
|
-
|
455
|
+
|
448
456
|
inline bool operator!=( const error_condition & lhs,
|
449
|
-
const error_code & rhs )
|
457
|
+
const error_code & rhs ) BOOST_SYSTEM_NOEXCEPT
|
450
458
|
{
|
451
459
|
return !(lhs == rhs);
|
452
460
|
}
|
453
|
-
|
461
|
+
|
454
462
|
// TODO: both of these may move elsewhere, but the LWG hasn't spoken yet.
|
455
463
|
|
456
464
|
template <class charT, class traits>
|
@@ -472,29 +480,29 @@ namespace boost
|
|
472
480
|
namespace errc
|
473
481
|
{
|
474
482
|
// explicit conversion:
|
475
|
-
inline error_code make_error_code( errc_t e )
|
483
|
+
inline error_code make_error_code( errc_t e ) BOOST_SYSTEM_NOEXCEPT
|
476
484
|
{ return error_code( e, generic_category() ); }
|
477
485
|
|
478
486
|
// implicit conversion:
|
479
|
-
inline error_condition make_error_condition( errc_t e )
|
487
|
+
inline error_condition make_error_condition( errc_t e ) BOOST_SYSTEM_NOEXCEPT
|
480
488
|
{ return error_condition( e, generic_category() ); }
|
481
489
|
}
|
482
490
|
|
483
491
|
// error_category default implementation -------------------------------//
|
484
492
|
|
485
|
-
|
486
|
-
{
|
493
|
+
error_condition error_category::default_error_condition( int ev ) const BOOST_SYSTEM_NOEXCEPT
|
494
|
+
{
|
487
495
|
return error_condition( ev, *this );
|
488
496
|
}
|
489
497
|
|
490
|
-
|
491
|
-
const error_condition & condition ) const
|
498
|
+
bool error_category::equivalent( int code,
|
499
|
+
const error_condition & condition ) const BOOST_SYSTEM_NOEXCEPT
|
492
500
|
{
|
493
501
|
return default_error_condition( code ) == condition;
|
494
502
|
}
|
495
503
|
|
496
|
-
|
497
|
-
int condition ) const
|
504
|
+
bool error_category::equivalent( const error_code & code,
|
505
|
+
int condition ) const BOOST_SYSTEM_NOEXCEPT
|
498
506
|
{
|
499
507
|
return *this == code.category() && code.value() == condition;
|
500
508
|
}
|