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
@@ -0,0 +1,63 @@
|
|
1
|
+
|
2
|
+
// Copyright (C) 2008-2011 Daniel James.
|
3
|
+
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
4
|
+
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
5
|
+
|
6
|
+
#ifndef BOOST_UNORDERED_SET_FWD_HPP_INCLUDED
|
7
|
+
#define BOOST_UNORDERED_SET_FWD_HPP_INCLUDED
|
8
|
+
|
9
|
+
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
10
|
+
# pragma once
|
11
|
+
#endif
|
12
|
+
|
13
|
+
#include <boost/config.hpp>
|
14
|
+
#include <memory>
|
15
|
+
#include <functional>
|
16
|
+
#include <boost/functional/hash_fwd.hpp>
|
17
|
+
#include <boost/unordered/detail/fwd.hpp>
|
18
|
+
|
19
|
+
namespace boost
|
20
|
+
{
|
21
|
+
namespace unordered
|
22
|
+
{
|
23
|
+
template <class T,
|
24
|
+
class H = boost::hash<T>,
|
25
|
+
class P = std::equal_to<T>,
|
26
|
+
class A = std::allocator<T> >
|
27
|
+
class unordered_set;
|
28
|
+
|
29
|
+
template <class T, class H, class P, class A>
|
30
|
+
inline bool operator==(unordered_set<T, H, P, A> const&,
|
31
|
+
unordered_set<T, H, P, A> const&);
|
32
|
+
template <class T, class H, class P, class A>
|
33
|
+
inline bool operator!=(unordered_set<T, H, P, A> const&,
|
34
|
+
unordered_set<T, H, P, A> const&);
|
35
|
+
template <class T, class H, class P, class A>
|
36
|
+
inline void swap(unordered_set<T, H, P, A> &m1,
|
37
|
+
unordered_set<T, H, P, A> &m2);
|
38
|
+
|
39
|
+
template <class T,
|
40
|
+
class H = boost::hash<T>,
|
41
|
+
class P = std::equal_to<T>,
|
42
|
+
class A = std::allocator<T> >
|
43
|
+
class unordered_multiset;
|
44
|
+
|
45
|
+
template <class T, class H, class P, class A>
|
46
|
+
inline bool operator==(unordered_multiset<T, H, P, A> const&,
|
47
|
+
unordered_multiset<T, H, P, A> const&);
|
48
|
+
template <class T, class H, class P, class A>
|
49
|
+
inline bool operator!=(unordered_multiset<T, H, P, A> const&,
|
50
|
+
unordered_multiset<T, H, P, A> const&);
|
51
|
+
template <class T, class H, class P, class A>
|
52
|
+
inline void swap(unordered_multiset<T, H, P, A> &m1,
|
53
|
+
unordered_multiset<T, H, P, A> &m2);
|
54
|
+
}
|
55
|
+
|
56
|
+
using boost::unordered::unordered_set;
|
57
|
+
using boost::unordered::unordered_multiset;
|
58
|
+
using boost::unordered::swap;
|
59
|
+
using boost::unordered::operator==;
|
60
|
+
using boost::unordered::operator!=;
|
61
|
+
}
|
62
|
+
|
63
|
+
#endif
|
@@ -0,0 +1,18 @@
|
|
1
|
+
|
2
|
+
// Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
|
3
|
+
// Copyright (C) 2005-2008 Daniel James.
|
4
|
+
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
5
|
+
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
6
|
+
|
7
|
+
// See http://www.boost.org/libs/unordered for documentation
|
8
|
+
|
9
|
+
#ifndef BOOST_UNORDERED_MAP_HPP_INCLUDED
|
10
|
+
#define BOOST_UNORDERED_MAP_HPP_INCLUDED
|
11
|
+
|
12
|
+
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
13
|
+
# pragma once
|
14
|
+
#endif
|
15
|
+
|
16
|
+
#include <boost/unordered/unordered_map.hpp>
|
17
|
+
|
18
|
+
#endif // BOOST_UNORDERED_MAP_HPP_INCLUDED
|
@@ -0,0 +1,18 @@
|
|
1
|
+
|
2
|
+
// Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
|
3
|
+
// Copyright (C) 2005-2008 Daniel James.
|
4
|
+
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
5
|
+
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
6
|
+
|
7
|
+
// See http://www.boost.org/libs/unordered for documentation
|
8
|
+
|
9
|
+
#ifndef BOOST_UNORDERED_SET_HPP_INCLUDED
|
10
|
+
#define BOOST_UNORDERED_SET_HPP_INCLUDED
|
11
|
+
|
12
|
+
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
13
|
+
# pragma once
|
14
|
+
#endif
|
15
|
+
|
16
|
+
#include <boost/unordered/unordered_set.hpp>
|
17
|
+
|
18
|
+
#endif // BOOST_UNORDERED_SET_HPP_INCLUDED
|
@@ -1,4 +1,4 @@
|
|
1
|
-
// Copyright (C) 2002 Brad King (brad.king@kitware.com)
|
1
|
+
// Copyright (C) 2002 Brad King (brad.king@kitware.com)
|
2
2
|
// Douglas Gregor (gregod@cs.rpi.edu)
|
3
3
|
//
|
4
4
|
// Copyright (C) 2002, 2008 Peter Dimov
|
@@ -50,7 +50,7 @@ template<class T> struct addressof_impl
|
|
50
50
|
|
51
51
|
template<class T> T * addressof( T & v )
|
52
52
|
{
|
53
|
-
#if defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x610 ) )
|
53
|
+
#if (defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x610 ) ) ) || defined( __SUNPRO_CC )
|
54
54
|
|
55
55
|
return boost::detail::addressof_impl<T>::f( v, 0 );
|
56
56
|
|
@@ -46,7 +46,7 @@
|
|
46
46
|
|
47
47
|
#ifndef BOOST_RESULT_OF_USE_TR1
|
48
48
|
# ifndef BOOST_RESULT_OF_USE_DECLTYPE
|
49
|
-
# ifndef
|
49
|
+
# ifndef BOOST_NO_CXX11_DECLTYPE_N3276 // this implies !defined(BOOST_NO_CXX11_DECLTYPE)
|
50
50
|
# define BOOST_RESULT_OF_USE_DECLTYPE
|
51
51
|
# else
|
52
52
|
# define BOOST_RESULT_OF_USE_TR1
|
@@ -68,6 +68,13 @@ template<typename F, typename FArgs, bool HasResultType> struct tr1_result_of_im
|
|
68
68
|
|
69
69
|
#ifdef BOOST_NO_SFINAE_EXPR
|
70
70
|
|
71
|
+
// There doesn't seem to be any other way to turn this off such that the presence of
|
72
|
+
// the user-defined operator,() below doesn't cause spurious warning all over the place,
|
73
|
+
// so unconditionally turn it off.
|
74
|
+
#if BOOST_MSVC
|
75
|
+
# pragma warning(disable: 4913) // user defined binary operator ',' exists but no overload could convert all operands, default built-in binary operator ',' used
|
76
|
+
#endif
|
77
|
+
|
71
78
|
struct result_of_private_type {};
|
72
79
|
|
73
80
|
struct result_of_weird_type {
|
data/ext/boost/version.hpp
CHANGED
@@ -19,7 +19,7 @@
|
|
19
19
|
// BOOST_VERSION / 100 % 1000 is the minor version
|
20
20
|
// BOOST_VERSION / 100000 is the major version
|
21
21
|
|
22
|
-
#define BOOST_VERSION
|
22
|
+
#define BOOST_VERSION 105400
|
23
23
|
|
24
24
|
//
|
25
25
|
// BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION
|
@@ -27,6 +27,6 @@
|
|
27
27
|
// number, y is the minor version number, and z is the patch level if not 0.
|
28
28
|
// This is used by <config/auto_link.hpp> to select which library version to link to.
|
29
29
|
|
30
|
-
#define BOOST_LIB_VERSION "
|
30
|
+
#define BOOST_LIB_VERSION "1_54"
|
31
31
|
|
32
32
|
#endif
|
data/ext/common/Account.h
CHANGED
@@ -26,7 +26,9 @@
|
|
26
26
|
#include <set>
|
27
27
|
#include <cerrno>
|
28
28
|
#include <cstring>
|
29
|
+
#include <string.h>
|
29
30
|
#include <AgentsStarter.h>
|
31
|
+
#include <Exceptions.h>
|
30
32
|
|
31
33
|
using namespace std;
|
32
34
|
using namespace boost;
|
@@ -114,7 +116,7 @@ pp_agents_starter_start(PP_AgentsStarter *as,
|
|
114
116
|
Passenger::AgentsStarter *agentsStarter = (Passenger::AgentsStarter *) as;
|
115
117
|
this_thread::disable_syscall_interruption dsi;
|
116
118
|
try {
|
117
|
-
function<void ()> afterForkFunctionObject;
|
119
|
+
boost::function<void ()> afterForkFunctionObject;
|
118
120
|
|
119
121
|
if (afterFork != NULL) {
|
120
122
|
afterForkFunctionObject = boost::bind(afterFork, callbackArgument);
|
data/ext/common/AgentsStarter.h
CHANGED
@@ -374,7 +374,7 @@ public:
|
|
374
374
|
*/
|
375
375
|
void start(const string &passengerRoot,
|
376
376
|
const VariantMap &extraParams = VariantMap(),
|
377
|
-
const function<void ()> &afterFork = function<void ()>())
|
377
|
+
const boost::function<void ()> &afterFork = boost::function<void ()>())
|
378
378
|
{
|
379
379
|
TRACE_POINT();
|
380
380
|
this_thread::disable_interruption di;
|
@@ -533,7 +533,7 @@ public:
|
|
533
533
|
requestSocketPassword = info.get("request_socket_password");
|
534
534
|
helperAgentAdminSocketAddress = info.get("helper_agent_admin_socket_address");
|
535
535
|
helperAgentExitPassword = info.get("helper_agent_exit_password");
|
536
|
-
serverInstanceDir = make_shared<ServerInstanceDir>(info.get("server_instance_dir"), false);
|
536
|
+
serverInstanceDir = boost::make_shared<ServerInstanceDir>(info.get("server_instance_dir"), false);
|
537
537
|
generation = serverInstanceDir->getGeneration(info.getInt("generation"));
|
538
538
|
loggingSocketAddress = info.get("logging_socket_address");
|
539
539
|
loggingSocketPassword = info.get("logging_socket_password");
|
@@ -22,7 +22,10 @@
|
|
22
22
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
23
23
|
* THE SOFTWARE.
|
24
24
|
*/
|
25
|
+
|
25
26
|
#include <ApplicationPool2/AppTypes.h>
|
27
|
+
#include <exception>
|
28
|
+
#include <string.h>
|
26
29
|
|
27
30
|
namespace Passenger {
|
28
31
|
namespace ApplicationPool2 {
|
@@ -32,7 +35,7 @@ const AppTypeDefinition appTypeDefinitions[] = {
|
|
32
35
|
{ PAT_RACK, "rack", "config.ru", "Passenger RackApp" },
|
33
36
|
{ PAT_WSGI, "wsgi", "passenger_wsgi.py", "Passenger WsgiApp" },
|
34
37
|
{ PAT_CLASSIC_RAILS, "classic-rails", "config/environment.rb", "Passenger ClassicRailsApp" },
|
35
|
-
{ PAT_NODE, "node", "
|
38
|
+
{ PAT_NODE, "node", "app.js", "Passenger NodeApp" },
|
36
39
|
{ PAT_METEOR, "meteor", ".meteor", "Passenger MeteorApp" },
|
37
40
|
{ PAT_NONE, NULL, NULL, NULL }
|
38
41
|
};
|
@@ -46,7 +49,11 @@ using namespace Passenger::ApplicationPool2;
|
|
46
49
|
|
47
50
|
PP_AppTypeDetector *
|
48
51
|
pp_app_type_detector_new() {
|
49
|
-
|
52
|
+
try {
|
53
|
+
return new AppTypeDetector();
|
54
|
+
} catch (const std::bad_alloc &) {
|
55
|
+
return 0;
|
56
|
+
}
|
50
57
|
}
|
51
58
|
|
52
59
|
void
|
@@ -56,18 +63,29 @@ pp_app_type_detector_free(PP_AppTypeDetector *detector) {
|
|
56
63
|
|
57
64
|
PassengerAppType
|
58
65
|
pp_app_type_detector_check_document_root(PP_AppTypeDetector *_detector,
|
59
|
-
const char *documentRoot, unsigned int len, int resolveFirstSymlink
|
66
|
+
const char *documentRoot, unsigned int len, int resolveFirstSymlink,
|
67
|
+
PP_Error *error)
|
60
68
|
{
|
61
69
|
AppTypeDetector *detector = (AppTypeDetector *) _detector;
|
62
|
-
|
70
|
+
try {
|
71
|
+
return detector->checkDocumentRoot(StaticString(documentRoot, len), resolveFirstSymlink);
|
72
|
+
} catch (const std::exception &e) {
|
73
|
+
pp_error_set(e, error);
|
74
|
+
return PAT_ERROR;
|
75
|
+
}
|
63
76
|
}
|
64
77
|
|
65
78
|
PassengerAppType
|
66
79
|
pp_app_type_detector_check_app_root(PP_AppTypeDetector *_detector,
|
67
|
-
const char *appRoot, unsigned int len)
|
80
|
+
const char *appRoot, unsigned int len, PP_Error *error)
|
68
81
|
{
|
69
82
|
AppTypeDetector *detector = (AppTypeDetector *) _detector;
|
70
|
-
|
83
|
+
try {
|
84
|
+
return detector->checkAppRoot(StaticString(appRoot, len));
|
85
|
+
} catch (const std::exception &e) {
|
86
|
+
pp_error_set(e, error);
|
87
|
+
return PAT_ERROR;
|
88
|
+
}
|
71
89
|
}
|
72
90
|
|
73
91
|
const char *
|
@@ -33,6 +33,8 @@
|
|
33
33
|
* what kind of application lives under the given directory.
|
34
34
|
*/
|
35
35
|
|
36
|
+
#include "../Exceptions.h"
|
37
|
+
|
36
38
|
|
37
39
|
#ifdef __cplusplus
|
38
40
|
extern "C" {
|
@@ -44,7 +46,8 @@ typedef enum {
|
|
44
46
|
PAT_CLASSIC_RAILS,
|
45
47
|
PAT_NODE,
|
46
48
|
PAT_METEOR,
|
47
|
-
PAT_NONE
|
49
|
+
PAT_NONE,
|
50
|
+
PAT_ERROR
|
48
51
|
} PassengerAppType;
|
49
52
|
|
50
53
|
typedef void PP_AppTypeDetector;
|
@@ -52,9 +55,10 @@ typedef void PP_AppTypeDetector;
|
|
52
55
|
PP_AppTypeDetector *pp_app_type_detector_new();
|
53
56
|
void pp_app_type_detector_free(PP_AppTypeDetector *detector);
|
54
57
|
PassengerAppType pp_app_type_detector_check_document_root(PP_AppTypeDetector *detector,
|
55
|
-
const char *documentRoot, unsigned int len, int resolveFirstSymlink
|
58
|
+
const char *documentRoot, unsigned int len, int resolveFirstSymlink,
|
59
|
+
PP_Error *error);
|
56
60
|
PassengerAppType pp_app_type_detector_check_app_root(PP_AppTypeDetector *detector,
|
57
|
-
const char *appRoot, unsigned int len);
|
61
|
+
const char *appRoot, unsigned int len, PP_Error *error);
|
58
62
|
|
59
63
|
const char *pp_get_app_type_name(PassengerAppType type);
|
60
64
|
|
@@ -67,6 +71,7 @@ const char *pp_get_app_type_name(PassengerAppType type);
|
|
67
71
|
#include <oxt/macros.hpp>
|
68
72
|
#include <oxt/backtrace.hpp>
|
69
73
|
#include <cstdlib>
|
74
|
+
#include <limits.h>
|
70
75
|
#include <string>
|
71
76
|
#include <Logging.h>
|
72
77
|
#include <StaticString.h>
|
@@ -103,8 +108,7 @@ private:
|
|
103
108
|
pos = appendData(pos, end, name);
|
104
109
|
if (OXT_UNLIKELY(pos == end)) {
|
105
110
|
TRACE_POINT();
|
106
|
-
|
107
|
-
abort();
|
111
|
+
throw RuntimeException("Not enough buffer space");
|
108
112
|
}
|
109
113
|
return fileExists(StaticString(buf, pos - buf), cstat, throttleRate);
|
110
114
|
}
|
@@ -158,7 +162,12 @@ public:
|
|
158
162
|
return checkAppRoot(extractDirNameStatic(documentRoot));
|
159
163
|
}
|
160
164
|
} else {
|
161
|
-
|
165
|
+
if (OXT_UNLIKELY(documentRoot.size() > PATH_MAX)) {
|
166
|
+
TRACE_POINT();
|
167
|
+
throw RuntimeException("Not enough buffer space");
|
168
|
+
}
|
169
|
+
|
170
|
+
char ntDocRoot[PATH_MAX + 1];
|
162
171
|
memcpy(ntDocRoot, documentRoot.data(), documentRoot.size());
|
163
172
|
ntDocRoot[documentRoot.size()] = '\0';
|
164
173
|
string resolvedDocumentRoot = resolveSymlink(ntDocRoot);
|
@@ -181,8 +190,8 @@ public:
|
|
181
190
|
* @throws boost::thread_interrupted
|
182
191
|
*/
|
183
192
|
PassengerAppType checkAppRoot(const StaticString &appRoot) {
|
184
|
-
char buf[
|
185
|
-
const char *end = buf +
|
193
|
+
char buf[PATH_MAX + 32];
|
194
|
+
const char *end = buf + sizeof(buf) - 1;
|
186
195
|
const AppTypeDefinition *definition = &appTypeDefinitions[0];
|
187
196
|
|
188
197
|
while (definition->type != PAT_NONE) {
|
@@ -79,16 +79,16 @@ enum DisableResult {
|
|
79
79
|
DR_DEFERRED
|
80
80
|
};
|
81
81
|
|
82
|
-
typedef shared_ptr<Pool> PoolPtr;
|
83
|
-
typedef shared_ptr<SuperGroup> SuperGroupPtr;
|
84
|
-
typedef shared_ptr<Group> GroupPtr;
|
85
|
-
typedef shared_ptr<Process> ProcessPtr;
|
86
|
-
typedef shared_ptr<Session> SessionPtr;
|
87
|
-
typedef shared_ptr<tracable_exception> ExceptionPtr;
|
82
|
+
typedef boost::shared_ptr<Pool> PoolPtr;
|
83
|
+
typedef boost::shared_ptr<SuperGroup> SuperGroupPtr;
|
84
|
+
typedef boost::shared_ptr<Group> GroupPtr;
|
85
|
+
typedef boost::shared_ptr<Process> ProcessPtr;
|
86
|
+
typedef boost::shared_ptr<Session> SessionPtr;
|
87
|
+
typedef boost::shared_ptr<tracable_exception> ExceptionPtr;
|
88
88
|
typedef StringMap<SuperGroupPtr> SuperGroupMap;
|
89
|
-
typedef function<void (const SessionPtr &session, const ExceptionPtr &e)> GetCallback;
|
90
|
-
typedef function<void (const ProcessPtr &process, DisableResult result)> DisableCallback;
|
91
|
-
typedef function<void ()> Callback;
|
89
|
+
typedef boost::function<void (const SessionPtr &session, const ExceptionPtr &e)> GetCallback;
|
90
|
+
typedef boost::function<void (const ProcessPtr &process, DisableResult result)> DisableCallback;
|
91
|
+
typedef boost::function<void ()> Callback;
|
92
92
|
|
93
93
|
struct GetWaiter {
|
94
94
|
Options options;
|
@@ -104,7 +104,7 @@ struct GetWaiter {
|
|
104
104
|
|
105
105
|
struct Ticket {
|
106
106
|
boost::mutex syncher;
|
107
|
-
condition_variable cond;
|
107
|
+
boost::condition_variable cond;
|
108
108
|
SessionPtr session;
|
109
109
|
ExceptionPtr exception;
|
110
110
|
};
|
@@ -133,12 +133,12 @@ struct SpawnerConfig {
|
|
133
133
|
if (randomGenerator != NULL) {
|
134
134
|
this->randomGenerator = randomGenerator;
|
135
135
|
} else {
|
136
|
-
this->randomGenerator = make_shared<RandomGenerator>();
|
136
|
+
this->randomGenerator = boost::make_shared<RandomGenerator>();
|
137
137
|
}
|
138
138
|
}
|
139
139
|
};
|
140
140
|
|
141
|
-
typedef shared_ptr<SpawnerConfig> SpawnerConfigPtr;
|
141
|
+
typedef boost::shared_ptr<SpawnerConfig> SpawnerConfigPtr;
|
142
142
|
|
143
143
|
ExceptionPtr copyException(const tracable_exception &e);
|
144
144
|
void rethrowException(const ExceptionPtr &e);
|
@@ -155,7 +155,7 @@ public:
|
|
155
155
|
{
|
156
156
|
generation = _generation;
|
157
157
|
if (_config == NULL) {
|
158
|
-
config = make_shared<SpawnerConfig>();
|
158
|
+
config = boost::make_shared<SpawnerConfig>();
|
159
159
|
} else {
|
160
160
|
config = _config;
|
161
161
|
}
|
@@ -173,7 +173,7 @@ public:
|
|
173
173
|
vector<string> command = createCommand(options, preparation, args);
|
174
174
|
SocketPair adminSocket = createUnixSocketPair();
|
175
175
|
Pipe errorPipe = createPipe();
|
176
|
-
DebugDirPtr debugDir = make_shared<DebugDir>(preparation.uid, preparation.gid);
|
176
|
+
DebugDirPtr debugDir = boost::make_shared<DebugDir>(preparation.uid, preparation.gid);
|
177
177
|
pid_t pid;
|
178
178
|
|
179
179
|
pid = syscalls::fork();
|
@@ -57,13 +57,13 @@ public:
|
|
57
57
|
possiblyRaiseInternalError(options);
|
58
58
|
|
59
59
|
SocketPair adminSocket = createUnixSocketPair();
|
60
|
-
SocketListPtr sockets = make_shared<SocketList>();
|
60
|
+
SocketListPtr sockets = boost::make_shared<SocketList>();
|
61
61
|
sockets->add("main", "tcp://127.0.0.1:1234", "session", config->concurrency);
|
62
62
|
syscalls::usleep(config->spawnTime);
|
63
63
|
|
64
64
|
boost::lock_guard<boost::mutex> l(lock);
|
65
65
|
count++;
|
66
|
-
ProcessPtr process = make_shared<Process>(SafeLibevPtr(),
|
66
|
+
ProcessPtr process = boost::make_shared<Process>(SafeLibevPtr(),
|
67
67
|
(pid_t) count, "gupid-" + toString(count),
|
68
68
|
toString(count),
|
69
69
|
adminSocket.second, FileDescriptor(), sockets,
|
@@ -81,7 +81,7 @@ public:
|
|
81
81
|
}
|
82
82
|
};
|
83
83
|
|
84
|
-
typedef shared_ptr<DummySpawner> DummySpawnerPtr;
|
84
|
+
typedef boost::shared_ptr<DummySpawner> DummySpawnerPtr;
|
85
85
|
|
86
86
|
|
87
87
|
} // namespace ApplicationPool2
|