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
@@ -35,7 +35,7 @@ using namespace boost;
|
|
35
35
|
using namespace oxt;
|
36
36
|
|
37
37
|
|
38
|
-
class SmartSpawner: public Spawner, public enable_shared_from_this<SmartSpawner> {
|
38
|
+
class SmartSpawner: public Spawner, public boost::enable_shared_from_this<SmartSpawner> {
|
39
39
|
private:
|
40
40
|
/**
|
41
41
|
* Structure containing arguments and working state for negotiating
|
@@ -159,7 +159,8 @@ private:
|
|
159
159
|
// remaining stderr output for at most 2 seconds.
|
160
160
|
if (errorKind != SpawnException::PRELOADER_STARTUP_TIMEOUT
|
161
161
|
&& errorKind != SpawnException::APP_STARTUP_TIMEOUT
|
162
|
-
&& stderrCapturer != NULL)
|
162
|
+
&& stderrCapturer != NULL)
|
163
|
+
{
|
163
164
|
bool done = false;
|
164
165
|
unsigned long long timeout = 2000;
|
165
166
|
while (!done) {
|
@@ -186,7 +187,10 @@ private:
|
|
186
187
|
|
187
188
|
// Now throw SpawnException with the captured stderr output
|
188
189
|
// as error response.
|
189
|
-
SpawnException e(msg,
|
190
|
+
SpawnException e(msg,
|
191
|
+
createErrorPageFromStderrOutput(msg, errorKind, stderrOutput),
|
192
|
+
true,
|
193
|
+
errorKind);
|
190
194
|
e.setPreloaderCommand(getPreloaderCommandString());
|
191
195
|
annotatePreloaderException(e, debugDir);
|
192
196
|
throw e;
|
@@ -215,7 +219,7 @@ private:
|
|
215
219
|
vector<string> command = createRealPreloaderCommand(options, args);
|
216
220
|
SocketPair adminSocket = createUnixSocketPair();
|
217
221
|
Pipe errorPipe = createPipe();
|
218
|
-
DebugDirPtr debugDir = make_shared<DebugDir>(preparation.uid, preparation.gid);
|
222
|
+
DebugDirPtr debugDir = boost::make_shared<DebugDir>(preparation.uid, preparation.gid);
|
219
223
|
pid_t pid;
|
220
224
|
|
221
225
|
pid = syscalls::fork();
|
@@ -285,12 +289,12 @@ private:
|
|
285
289
|
|
286
290
|
PipeWatcherPtr watcher;
|
287
291
|
|
288
|
-
watcher = make_shared<PipeWatcher>(adminSocket.second,
|
292
|
+
watcher = boost::make_shared<PipeWatcher>(adminSocket.second,
|
289
293
|
"stdout", pid, config->forwardStdout);
|
290
294
|
watcher->initialize();
|
291
295
|
watcher->start();
|
292
296
|
|
293
|
-
watcher = make_shared<PipeWatcher>(errorPipe.first,
|
297
|
+
watcher = boost::make_shared<PipeWatcher>(errorPipe.first,
|
294
298
|
"stderr", pid, config->forwardStderr);
|
295
299
|
watcher->initialize();
|
296
300
|
watcher->start();
|
@@ -529,11 +533,19 @@ private:
|
|
529
533
|
}
|
530
534
|
|
531
535
|
void handleInvalidResponseType(StartupDetails &details, const string &line) {
|
532
|
-
|
533
|
-
"
|
534
|
-
|
535
|
-
|
536
|
-
|
536
|
+
if (line.empty()) {
|
537
|
+
throwPreloaderSpawnException("An error occurred while starting up "
|
538
|
+
"the preloader. It exited before signalling successful "
|
539
|
+
"startup back to " PROGRAM_NAME ".",
|
540
|
+
SpawnException::PRELOADER_STARTUP_ERROR,
|
541
|
+
details);
|
542
|
+
} else {
|
543
|
+
throwPreloaderSpawnException("An error occurred while starting up "
|
544
|
+
"the preloader. It sent an unknown response type \"" +
|
545
|
+
cEscapeString(line) + "\".",
|
546
|
+
SpawnException::PRELOADER_STARTUP_PROTOCOL_ERROR,
|
547
|
+
details);
|
548
|
+
}
|
537
549
|
}
|
538
550
|
|
539
551
|
string negotiatePreloaderStartup(StartupDetails &details) {
|
@@ -715,7 +727,7 @@ public:
|
|
715
727
|
m_lastUsed = SystemTime::getUsec();
|
716
728
|
|
717
729
|
if (_config == NULL) {
|
718
|
-
config = make_shared<SpawnerConfig>();
|
730
|
+
config = boost::make_shared<SpawnerConfig>();
|
719
731
|
} else {
|
720
732
|
config = _config;
|
721
733
|
}
|
@@ -162,7 +162,7 @@ public:
|
|
162
162
|
}
|
163
163
|
|
164
164
|
void checkinConnection(Connection connection) {
|
165
|
-
unique_lock<boost::mutex> l(connectionPoolLock);
|
165
|
+
boost::unique_lock<boost::mutex> l(connectionPoolLock);
|
166
166
|
|
167
167
|
if (connection.persistent) {
|
168
168
|
if (connection.fail) {
|
@@ -237,7 +237,7 @@ public:
|
|
237
237
|
}
|
238
238
|
};
|
239
239
|
|
240
|
-
typedef shared_ptr<SocketList> SocketListPtr;
|
240
|
+
typedef boost::shared_ptr<SocketList> SocketListPtr;
|
241
241
|
|
242
242
|
|
243
243
|
} // namespace ApplicationPool2
|
@@ -211,16 +211,22 @@ protected:
|
|
211
211
|
}
|
212
212
|
};
|
213
213
|
|
214
|
-
typedef shared_ptr<BackgroundIOCapturer> BackgroundIOCapturerPtr;
|
214
|
+
typedef boost::shared_ptr<BackgroundIOCapturer> BackgroundIOCapturerPtr;
|
215
215
|
|
216
216
|
/**
|
217
217
|
* A temporary directory for spawned child processes to write
|
218
218
|
* debugging information to. It is removed after spawning has
|
219
219
|
* determined to be successful or failed.
|
220
220
|
*/
|
221
|
-
|
221
|
+
class DebugDir {
|
222
|
+
private:
|
222
223
|
string path;
|
223
224
|
|
225
|
+
static void doClosedir(DIR *dir) {
|
226
|
+
closedir(dir);
|
227
|
+
}
|
228
|
+
|
229
|
+
public:
|
224
230
|
DebugDir(uid_t uid, gid_t gid) {
|
225
231
|
char buf[PATH_MAX] = "/tmp/passenger.spawn-debug.XXXXXXXXXX";
|
226
232
|
const char *result = mkdtemp(buf);
|
@@ -247,7 +253,7 @@ protected:
|
|
247
253
|
map<string, string> readAll() {
|
248
254
|
map<string, string> result;
|
249
255
|
DIR *dir = opendir(path.c_str());
|
250
|
-
ScopeGuard guard(boost::bind(
|
256
|
+
ScopeGuard guard(boost::bind(doClosedir, dir));
|
251
257
|
struct dirent *ent;
|
252
258
|
|
253
259
|
while ((ent = readdir(dir)) != NULL) {
|
@@ -265,7 +271,7 @@ protected:
|
|
265
271
|
}
|
266
272
|
};
|
267
273
|
|
268
|
-
typedef shared_ptr<DebugDir> DebugDirPtr;
|
274
|
+
typedef boost::shared_ptr<DebugDir> DebugDirPtr;
|
269
275
|
|
270
276
|
/**
|
271
277
|
* Contains information that will be used after fork()ing but before exec()ing,
|
@@ -419,7 +425,7 @@ private:
|
|
419
425
|
|
420
426
|
ProcessPtr handleSpawnResponse(NegotiationDetails &details) {
|
421
427
|
TRACE_POINT();
|
422
|
-
SocketListPtr sockets = make_shared<SocketList>();
|
428
|
+
SocketListPtr sockets = boost::make_shared<SocketList>();
|
423
429
|
while (true) {
|
424
430
|
string line;
|
425
431
|
|
@@ -507,7 +513,7 @@ private:
|
|
507
513
|
details);
|
508
514
|
}
|
509
515
|
|
510
|
-
return make_shared<Process>(details.libev, details.pid,
|
516
|
+
return boost::make_shared<Process>(details.libev, details.pid,
|
511
517
|
details.gupid, details.connectPassword,
|
512
518
|
details.adminSocket, details.errorPipe,
|
513
519
|
sockets, creationTime, details.spawnStartTime,
|
@@ -675,7 +681,8 @@ protected:
|
|
675
681
|
// remaining stderr output for at most 2 seconds.
|
676
682
|
if (errorKind != SpawnException::PRELOADER_STARTUP_TIMEOUT
|
677
683
|
&& errorKind != SpawnException::APP_STARTUP_TIMEOUT
|
678
|
-
&& details.stderrCapturer != NULL)
|
684
|
+
&& details.stderrCapturer != NULL)
|
685
|
+
{
|
679
686
|
bool done = false;
|
680
687
|
unsigned long long timeout = 2000;
|
681
688
|
while (!done) {
|
@@ -702,7 +709,10 @@ protected:
|
|
702
709
|
|
703
710
|
// Now throw SpawnException with the captured stderr output
|
704
711
|
// as error response.
|
705
|
-
SpawnException e(msg,
|
712
|
+
SpawnException e(msg,
|
713
|
+
createErrorPageFromStderrOutput(msg, errorKind, stderrOutput),
|
714
|
+
true,
|
715
|
+
errorKind);
|
706
716
|
annotateAppSpawnException(e, details);
|
707
717
|
throw e;
|
708
718
|
}
|
@@ -713,6 +723,37 @@ protected:
|
|
713
723
|
}
|
714
724
|
}
|
715
725
|
|
726
|
+
string createErrorPageFromStderrOutput(const string &msg,
|
727
|
+
SpawnException::ErrorKind errorKind,
|
728
|
+
const string &stderrOutput)
|
729
|
+
{
|
730
|
+
// These kinds of SpawnExceptions are not supposed to be handled through this function.
|
731
|
+
assert(errorKind != SpawnException::PRELOADER_STARTUP_EXPLAINABLE_ERROR);
|
732
|
+
assert(errorKind != SpawnException::APP_STARTUP_EXPLAINABLE_ERROR);
|
733
|
+
|
734
|
+
string result = escapeHTML(msg);
|
735
|
+
|
736
|
+
if (errorKind == SpawnException::PRELOADER_STARTUP_TIMEOUT
|
737
|
+
|| errorKind == SpawnException::APP_STARTUP_TIMEOUT
|
738
|
+
|| errorKind == SpawnException::PRELOADER_STARTUP_ERROR
|
739
|
+
|| errorKind == SpawnException::APP_STARTUP_ERROR)
|
740
|
+
{
|
741
|
+
result.append(" Please read <a href=\"https://github.com/phusion/passenger/wiki/Debugging-application-startup-problems\">this article</a> "
|
742
|
+
"for more information about this problem.");
|
743
|
+
}
|
744
|
+
result.append("<br>\n<h2>Raw process output:</h2>\n");
|
745
|
+
|
746
|
+
if (strip(stderrOutput).empty()) {
|
747
|
+
result.append("(empty)");
|
748
|
+
} else {
|
749
|
+
result.append("<pre>");
|
750
|
+
result.append(escapeHTML(stderrOutput));
|
751
|
+
result.append("</pre>");
|
752
|
+
}
|
753
|
+
|
754
|
+
return result;
|
755
|
+
}
|
756
|
+
|
716
757
|
template<typename Details>
|
717
758
|
string readMessageLine(Details &details) {
|
718
759
|
TRACE_POINT();
|
@@ -942,6 +983,7 @@ protected:
|
|
942
983
|
|
943
984
|
appendNullTerminatedKeyValue(result, "IN_PASSENGER", "1");
|
944
985
|
appendNullTerminatedKeyValue(result, "PYTHONUNBUFFERED", "1");
|
986
|
+
appendNullTerminatedKeyValue(result, "NODE_PATH", resourceLocator.getNodeLibDir());
|
945
987
|
appendNullTerminatedKeyValue(result, "RAILS_ENV", options.environment);
|
946
988
|
appendNullTerminatedKeyValue(result, "RACK_ENV", options.environment);
|
947
989
|
appendNullTerminatedKeyValue(result, "WSGI_ENV", options.environment);
|
@@ -1229,11 +1271,19 @@ protected:
|
|
1229
1271
|
}
|
1230
1272
|
|
1231
1273
|
void handleInvalidSpawnResponseType(const string &line, NegotiationDetails &details) {
|
1232
|
-
|
1233
|
-
"
|
1234
|
-
|
1235
|
-
|
1236
|
-
|
1274
|
+
if (line.empty()) {
|
1275
|
+
throwAppSpawnException("An error occurred while starting "
|
1276
|
+
"the web application. It exited before signalling successful "
|
1277
|
+
"startup back to " PROGRAM_NAME ".",
|
1278
|
+
SpawnException::APP_STARTUP_ERROR,
|
1279
|
+
details);
|
1280
|
+
} else {
|
1281
|
+
throwAppSpawnException("An error occurred while starting "
|
1282
|
+
"the web application. It sent an unknown response type \"" +
|
1283
|
+
cEscapeString(line) + "\".",
|
1284
|
+
SpawnException::APP_STARTUP_PROTOCOL_ERROR,
|
1285
|
+
details);
|
1286
|
+
}
|
1237
1287
|
}
|
1238
1288
|
|
1239
1289
|
public:
|
@@ -1266,7 +1316,7 @@ public:
|
|
1266
1316
|
return config;
|
1267
1317
|
}
|
1268
1318
|
};
|
1269
|
-
typedef shared_ptr<Spawner> SpawnerPtr;
|
1319
|
+
typedef boost::shared_ptr<Spawner> SpawnerPtr;
|
1270
1320
|
|
1271
1321
|
|
1272
1322
|
} // namespace ApplicationPool2
|
@@ -60,7 +60,7 @@ private:
|
|
60
60
|
} else {
|
61
61
|
return SpawnerPtr();
|
62
62
|
}
|
63
|
-
return make_shared<SmartSpawner>(libev, resourceLocator,
|
63
|
+
return boost::make_shared<SmartSpawner>(libev, resourceLocator,
|
64
64
|
generation, preloaderCommand, options, config);
|
65
65
|
}
|
66
66
|
|
@@ -74,7 +74,7 @@ public:
|
|
74
74
|
generation(_generation)
|
75
75
|
{
|
76
76
|
if (_config == NULL) {
|
77
|
-
config = make_shared<SpawnerConfig>();
|
77
|
+
config = boost::make_shared<SpawnerConfig>();
|
78
78
|
} else {
|
79
79
|
config = _config;
|
80
80
|
}
|
@@ -86,13 +86,13 @@ public:
|
|
86
86
|
if (options.spawnMethod == "smart" || options.spawnMethod == "smart-lv2") {
|
87
87
|
SpawnerPtr spawner = tryCreateSmartSpawner(options);
|
88
88
|
if (spawner == NULL) {
|
89
|
-
spawner = make_shared<DirectSpawner>(libev,
|
89
|
+
spawner = boost::make_shared<DirectSpawner>(libev,
|
90
90
|
resourceLocator, generation, config);
|
91
91
|
}
|
92
92
|
return spawner;
|
93
93
|
} else if (options.spawnMethod == "direct" || options.spawnMethod == "conservative") {
|
94
|
-
shared_ptr<DirectSpawner> spawner = make_shared<DirectSpawner>(
|
95
|
-
resourceLocator, generation, config);
|
94
|
+
boost::shared_ptr<DirectSpawner> spawner = boost::make_shared<DirectSpawner>(
|
95
|
+
libev, resourceLocator, generation, config);
|
96
96
|
return spawner;
|
97
97
|
} else if (options.spawnMethod == "dummy") {
|
98
98
|
syscalls::usleep(config->spawnerCreationSleepTime);
|
@@ -110,7 +110,7 @@ public:
|
|
110
110
|
DummySpawnerPtr getDummySpawner() {
|
111
111
|
boost::lock_guard<boost::mutex> l(syncher);
|
112
112
|
if (dummySpawner == NULL) {
|
113
|
-
dummySpawner = make_shared<DummySpawner>(resourceLocator, config);
|
113
|
+
dummySpawner = boost::make_shared<DummySpawner>(resourceLocator, config);
|
114
114
|
}
|
115
115
|
return dummySpawner;
|
116
116
|
}
|
@@ -131,7 +131,7 @@ public:
|
|
131
131
|
}
|
132
132
|
};
|
133
133
|
|
134
|
-
typedef shared_ptr<SpawnerFactory> SpawnerFactoryPtr;
|
134
|
+
typedef boost::shared_ptr<SpawnerFactory> SpawnerFactoryPtr;
|
135
135
|
|
136
136
|
|
137
137
|
} // namespace ApplicationPool2
|
@@ -111,7 +111,7 @@ using namespace oxt;
|
|
111
111
|
* Except for otherwise documented parts, this class is not thread-safe,
|
112
112
|
* so only access it within the ApplicationPool lock.
|
113
113
|
*/
|
114
|
-
class SuperGroup: public enable_shared_from_this<SuperGroup> {
|
114
|
+
class SuperGroup: public boost::enable_shared_from_this<SuperGroup> {
|
115
115
|
public:
|
116
116
|
enum State {
|
117
117
|
/** This SuperGroup is being initialized. `groups` is empty and
|
@@ -168,7 +168,7 @@ public:
|
|
168
168
|
CANCELED
|
169
169
|
};
|
170
170
|
|
171
|
-
typedef function<void (ShutdownResult result)> ShutdownCallback;
|
171
|
+
typedef boost::function<void (ShutdownResult result)> ShutdownCallback;
|
172
172
|
|
173
173
|
private:
|
174
174
|
friend class Pool;
|
@@ -193,7 +193,7 @@ private:
|
|
193
193
|
static void runAllActions(const vector<Callback> &actions);
|
194
194
|
string generateSecret() const;
|
195
195
|
|
196
|
-
void createInterruptableThread(const function<void ()> &func, const string &name,
|
196
|
+
void createInterruptableThread(const boost::function<void ()> &func, const string &name,
|
197
197
|
unsigned int stackSize);
|
198
198
|
|
199
199
|
void verifyInvariants() const {
|
@@ -328,7 +328,7 @@ private:
|
|
328
328
|
// Wait until 'detachedGroups' is empty.
|
329
329
|
UPDATE_TRACE_POINT();
|
330
330
|
PoolPtr pool = getPool();
|
331
|
-
unique_lock<boost::mutex> lock(getPoolSyncher(pool));
|
331
|
+
boost::unique_lock<boost::mutex> lock(getPoolSyncher(pool));
|
332
332
|
verifyInvariants();
|
333
333
|
while (true) {
|
334
334
|
if (OXT_UNLIKELY(this->generation != generation)) {
|
@@ -366,7 +366,7 @@ private:
|
|
366
366
|
|
367
367
|
public:
|
368
368
|
mutable boost::mutex backrefSyncher;
|
369
|
-
const weak_ptr<Pool> pool;
|
369
|
+
const boost::weak_ptr<Pool> pool;
|
370
370
|
|
371
371
|
State state;
|
372
372
|
string name;
|
@@ -41,7 +41,7 @@ using namespace oxt;
|
|
41
41
|
struct BackgroundEventLoopPrivate {
|
42
42
|
oxt::thread *thr;
|
43
43
|
boost::mutex lock;
|
44
|
-
condition_variable cond;
|
44
|
+
boost::condition_variable cond;
|
45
45
|
bool started;
|
46
46
|
};
|
47
47
|
|
@@ -53,7 +53,7 @@ signalBackgroundEventLoopExit(struct ev_loop *loop, ev_async *async, int revents
|
|
53
53
|
|
54
54
|
static void
|
55
55
|
startBackgroundLoop(BackgroundEventLoop *bg) {
|
56
|
-
unique_lock<boost::mutex> l(bg->priv->lock);
|
56
|
+
boost::unique_lock<boost::mutex> l(bg->priv->lock);
|
57
57
|
bg->safe->setCurrentThread();
|
58
58
|
bg->priv->started = true;
|
59
59
|
bg->priv->cond.notify_all();
|
@@ -83,7 +83,7 @@ BackgroundEventLoop::BackgroundEventLoop(bool scalable) {
|
|
83
83
|
async->data = this;
|
84
84
|
ev_async_init(async, signalBackgroundEventLoopExit);
|
85
85
|
ev_async_start(loop, async);
|
86
|
-
safe = make_shared<SafeLibev>(loop);
|
86
|
+
safe = boost::make_shared<SafeLibev>(loop);
|
87
87
|
priv = new BackgroundEventLoopPrivate();
|
88
88
|
priv->thr = NULL;
|
89
89
|
priv->started = false;
|
@@ -99,7 +99,7 @@ BackgroundEventLoop::~BackgroundEventLoop() {
|
|
99
99
|
void
|
100
100
|
BackgroundEventLoop::start(const string &threadName, unsigned int stackSize) {
|
101
101
|
assert(priv->thr == NULL);
|
102
|
-
unique_lock<boost::mutex> l(priv->lock);
|
102
|
+
boost::unique_lock<boost::mutex> l(priv->lock);
|
103
103
|
priv->thr = new oxt::thread(
|
104
104
|
boost::bind(startBackgroundLoop, this),
|
105
105
|
threadName,
|
data/ext/common/Constants.h
CHANGED
@@ -36,6 +36,8 @@
|
|
36
36
|
#define DEFAULT_BACKEND_ACCOUNT_RIGHTS Account::DETACH
|
37
37
|
|
38
38
|
|
39
|
+
#define APACHE2_DOC_URL "http://www.modrails.com/documentation/Users%20guide%20Apache.html"
|
40
|
+
|
39
41
|
#define DEFAULT_ANALYTICS_LOG_GROUP ""
|
40
42
|
|
41
43
|
#define DEFAULT_ANALYTICS_LOG_PERMISSIONS "u=rwx,g=rx,o=rx"
|
@@ -68,11 +70,15 @@
|
|
68
70
|
|
69
71
|
#define FEEDBACK_FD 3
|
70
72
|
|
73
|
+
#define INDEX_DOC_URL "http://www.modrails.com/documentation/Users%20guide.html"
|
74
|
+
|
71
75
|
#define MESSAGE_SERVER_MAX_PASSWORD_SIZE 100
|
72
76
|
|
73
77
|
#define MESSAGE_SERVER_MAX_USERNAME_SIZE 100
|
74
78
|
|
75
|
-
#define
|
79
|
+
#define NGINX_DOC_URL "http://www.modrails.com/documentation/Users%20guide%20Nginx.html"
|
80
|
+
|
81
|
+
#define PASSENGER_VERSION "4.0.21"
|
76
82
|
|
77
83
|
#define POOL_HELPER_THREAD_STACK_SIZE 262144
|
78
84
|
|
@@ -80,6 +86,8 @@
|
|
80
86
|
|
81
87
|
#define PROCESS_SHUTDOWN_TIMEOUT_DISPLAY "1 minute"
|
82
88
|
|
89
|
+
#define PROGRAM_NAME "Phusion Passenger"
|
90
|
+
|
83
91
|
#define SERVER_INSTANCE_DIR_GENERATION_STRUCTURE_MAJOR_VERSION 2
|
84
92
|
|
85
93
|
#define SERVER_INSTANCE_DIR_GENERATION_STRUCTURE_MINOR_VERSION 0
|
@@ -88,7 +96,11 @@
|
|
88
96
|
|
89
97
|
#define SERVER_INSTANCE_DIR_STRUCTURE_MINOR_VERSION 0
|
90
98
|
|
99
|
+
#define STANDALONE_DOC_URL "http://www.modrails.com/documentation/Users%20guide%20Standalone.html"
|
100
|
+
|
91
101
|
#define STANDALONE_NGINX_CONFIGURE_OPTIONS "--with-cc-opt='-Wno-error' --without-http_fastcgi_module --without-http_scgi_module --without-http_uwsgi_module --with-http_gzip_static_module --with-http_stub_status_module"
|
92
102
|
|
103
|
+
#define SUPPORT_URL "http://www.phusionpassenger.com/support"
|
104
|
+
|
93
105
|
|
94
106
|
#endif /* _PASSENGER_CONSTANTS_H */
|