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
data/ext/common/Utils/HashMap.h
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
* Phusion Passenger - https://www.phusionpassenger.com/
|
3
|
-
* Copyright (c) 2010 Phusion
|
3
|
+
* Copyright (c) 2010-2013 Phusion
|
4
4
|
*
|
5
5
|
* "Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.
|
6
6
|
*
|
@@ -30,10 +30,19 @@
|
|
30
30
|
* There are too many ways to include hash_map/unordered_map!
|
31
31
|
* This header autodetects the correct method.
|
32
32
|
*/
|
33
|
-
#if defined(
|
33
|
+
#if defined(HAS_UNORDERED_MAP)
|
34
|
+
#include <unordered_map>
|
35
|
+
#define HashMap std::unordered_map
|
36
|
+
#elif defined(HAS_TR1_UNORDERED_MAP)
|
34
37
|
#include <tr1/unordered_map>
|
35
38
|
#define HashMap std::tr1::unordered_map
|
36
39
|
#elif defined(HASH_NAMESPACE) && defined(HASH_MAP_HEADER)
|
40
|
+
#ifndef _GLIBCXX_PERMIT_BACKWARD_HASH
|
41
|
+
// Prevent deprecation warning on newer libstdc++ systems.
|
42
|
+
// The warning suggests using unordered_map, but that is only
|
43
|
+
// available when C++11 features are explicitly enabled.
|
44
|
+
#define _GLIBCXX_PERMIT_BACKWARD_HASH
|
45
|
+
#endif
|
37
46
|
#include HASH_MAP_HEADER
|
38
47
|
#define HashMap HASH_NAMESPACE::hash_map
|
39
48
|
#elif defined(__GNUC__)
|
@@ -43,8 +52,8 @@
|
|
43
52
|
#include <hash_map>
|
44
53
|
#define HashMap stdext::hash_map
|
45
54
|
#else
|
46
|
-
#include <
|
47
|
-
#define HashMap
|
55
|
+
#include <boost/unordered_map.hpp>
|
56
|
+
#define HashMap boost::unordered_map
|
48
57
|
#endif
|
49
58
|
|
50
59
|
#endif /* _PASSENGER_HASH_MAP_H_ */
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
* Phusion Passenger - https://www.phusionpassenger.com/
|
3
|
-
* Copyright (c) 2010-
|
3
|
+
* Copyright (c) 2010-2013 Phusion
|
4
4
|
*
|
5
5
|
* "Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.
|
6
6
|
*
|
@@ -817,14 +817,14 @@ findDataPositionIndexAndOffset(struct iovec data[], size_t count,
|
|
817
817
|
*offset = 0;
|
818
818
|
}
|
819
819
|
|
820
|
-
ssize_t
|
821
|
-
|
820
|
+
static ssize_t
|
821
|
+
realGatheredWrite(int fd, const StaticString *data, unsigned int dataCount, string &restBuffer,
|
822
|
+
struct iovec *iov)
|
823
|
+
{
|
822
824
|
size_t totalSize, iovCount, i;
|
823
825
|
ssize_t ret;
|
824
826
|
|
825
827
|
if (restBuffer.empty()) {
|
826
|
-
struct iovec iov[dataCount];
|
827
|
-
|
828
828
|
totalSize = staticStringArrayToIoVec(data, dataCount, iov, iovCount);
|
829
829
|
if (totalSize == 0) {
|
830
830
|
errno = 0;
|
@@ -876,8 +876,6 @@ gatheredWrite(int fd, const StaticString *data, unsigned int dataCount, string &
|
|
876
876
|
return totalSize;
|
877
877
|
}
|
878
878
|
} else {
|
879
|
-
struct iovec iov[dataCount + 1];
|
880
|
-
|
881
879
|
iov[0].iov_base = (char *) restBuffer.data();
|
882
880
|
iov[0].iov_len = restBuffer.size();
|
883
881
|
totalSize = staticStringArrayToIoVec(data, dataCount, iov + 1, iovCount);
|
@@ -946,6 +944,18 @@ gatheredWrite(int fd, const StaticString *data, unsigned int dataCount, string &
|
|
946
944
|
}
|
947
945
|
}
|
948
946
|
|
947
|
+
ssize_t
|
948
|
+
gatheredWrite(int fd, const StaticString *data, unsigned int dataCount, string &restBuffer) {
|
949
|
+
if (dataCount < 8) {
|
950
|
+
struct iovec iov[8];
|
951
|
+
return realGatheredWrite(fd, data, dataCount, restBuffer, iov);
|
952
|
+
} else {
|
953
|
+
vector<struct iovec> iov;
|
954
|
+
iov.reserve(dataCount + 1);
|
955
|
+
return realGatheredWrite(fd, data, dataCount, restBuffer, &iov[0]);
|
956
|
+
}
|
957
|
+
}
|
958
|
+
|
949
959
|
static size_t
|
950
960
|
eraseBeginningOfIoVec(struct iovec *iov, size_t count, size_t index, size_t offset) {
|
951
961
|
size_t i, newCount;
|
@@ -961,9 +971,10 @@ eraseBeginningOfIoVec(struct iovec *iov, size_t count, size_t index, size_t offs
|
|
961
971
|
return newCount;
|
962
972
|
}
|
963
973
|
|
964
|
-
void
|
965
|
-
|
966
|
-
struct iovec iov
|
974
|
+
static void
|
975
|
+
realGatheredWrite(int fd, const StaticString *data, unsigned int count, unsigned long long *timeout,
|
976
|
+
struct iovec *iov)
|
977
|
+
{
|
967
978
|
size_t total, iovCount;
|
968
979
|
size_t written = 0;
|
969
980
|
|
@@ -988,6 +999,18 @@ gatheredWrite(int fd, const StaticString *data, unsigned int count, unsigned lon
|
|
988
999
|
assert(written == total);
|
989
1000
|
}
|
990
1001
|
|
1002
|
+
void
|
1003
|
+
gatheredWrite(int fd, const StaticString *data, unsigned int count, unsigned long long *timeout) {
|
1004
|
+
if (count <= 8) {
|
1005
|
+
struct iovec iov[8];
|
1006
|
+
realGatheredWrite(fd, data, count, timeout, iov);
|
1007
|
+
} else {
|
1008
|
+
vector<struct iovec> iov;
|
1009
|
+
iov.reserve(count);
|
1010
|
+
realGatheredWrite(fd, data, count, timeout, &iov[0]);
|
1011
|
+
}
|
1012
|
+
}
|
1013
|
+
|
991
1014
|
void
|
992
1015
|
setWritevFunction(WritevFunction func) {
|
993
1016
|
if (func != NULL) {
|
data/ext/common/Utils/IniFile.h
CHANGED
@@ -165,7 +165,7 @@ public:
|
|
165
165
|
};
|
166
166
|
};
|
167
167
|
|
168
|
-
typedef shared_ptr<IniFileLexer::Token> TokenPtr;
|
168
|
+
typedef boost::shared_ptr<IniFileLexer::Token> TokenPtr;
|
169
169
|
|
170
170
|
|
171
171
|
|
@@ -342,7 +342,7 @@ public:
|
|
342
342
|
TokenPtr peekToken() {
|
343
343
|
if (upcomingTokenPtrIsStale) {
|
344
344
|
Token upcomingToken = getToken();
|
345
|
-
upcomingTokenPtr = make_shared<Token>(upcomingToken);
|
345
|
+
upcomingTokenPtr = boost::make_shared<Token>(upcomingToken);
|
346
346
|
upcomingTokenPtrIsStale = false;
|
347
347
|
}
|
348
348
|
|
@@ -396,7 +396,7 @@ public:
|
|
396
396
|
}
|
397
397
|
};
|
398
398
|
|
399
|
-
typedef shared_ptr<IniFileSection> IniFileSectionPtr;
|
399
|
+
typedef boost::shared_ptr<IniFileSection> IniFileSectionPtr;
|
400
400
|
|
401
401
|
|
402
402
|
class IniFile {
|
data/ext/common/Utils/Lock.h
CHANGED
@@ -12,10 +12,10 @@ typedef boost::lock_guard<boost::mutex> LockGuard;
|
|
12
12
|
typedef boost::unique_lock<boost::mutex> ScopedLock;
|
13
13
|
|
14
14
|
/** Nicer syntax for conditionally locking the mutex during construction. */
|
15
|
-
class DynamicScopedLock: public unique_lock<boost::mutex> {
|
15
|
+
class DynamicScopedLock: public boost::unique_lock<boost::mutex> {
|
16
16
|
public:
|
17
17
|
DynamicScopedLock(boost::mutex &m, bool lockNow = true)
|
18
|
-
: unique_lock<boost::mutex>(m, defer_lock)
|
18
|
+
: boost::unique_lock<boost::mutex>(m, boost::defer_lock)
|
19
19
|
{
|
20
20
|
if (lockNow) {
|
21
21
|
lock();
|
@@ -62,8 +62,8 @@ using namespace boost;
|
|
62
62
|
*/
|
63
63
|
class MessageBox;
|
64
64
|
struct Message;
|
65
|
-
typedef shared_ptr<MessageBox> MessageBoxPtr;
|
66
|
-
typedef shared_ptr<Message> MessagePtr;
|
65
|
+
typedef boost::shared_ptr<MessageBox> MessageBoxPtr;
|
66
|
+
typedef boost::shared_ptr<Message> MessagePtr;
|
67
67
|
|
68
68
|
inline void _sendToMessageBox(const MessageBoxPtr &messageBox, const MessagePtr &message);
|
69
69
|
|
@@ -71,7 +71,7 @@ inline void _sendToMessageBox(const MessageBoxPtr &messageBox, const MessagePtr
|
|
71
71
|
struct Message {
|
72
72
|
string name;
|
73
73
|
VariantMap args;
|
74
|
-
weak_ptr<MessageBox> from;
|
74
|
+
boost::weak_ptr<MessageBox> from;
|
75
75
|
void *data;
|
76
76
|
void (*freeData)(void *p);
|
77
77
|
|
@@ -101,7 +101,7 @@ struct Message {
|
|
101
101
|
}
|
102
102
|
|
103
103
|
void setFrom(const MessageBoxPtr &messageBox) {
|
104
|
-
from = weak_ptr<MessageBox>(messageBox);
|
104
|
+
from = boost::weak_ptr<MessageBox>(messageBox);
|
105
105
|
}
|
106
106
|
|
107
107
|
void sendReply(const MessagePtr &message) {
|
@@ -117,13 +117,13 @@ struct Message {
|
|
117
117
|
};
|
118
118
|
|
119
119
|
|
120
|
-
class MessageBox: public enable_shared_from_this<MessageBox> {
|
120
|
+
class MessageBox: public boost::enable_shared_from_this<MessageBox> {
|
121
121
|
typedef list<MessagePtr> MessageList;
|
122
122
|
typedef MessageList::iterator Iterator;
|
123
123
|
typedef MessageList::const_iterator ConstIterator;
|
124
124
|
|
125
125
|
mutable boost::mutex syncher;
|
126
|
-
condition_variable cond;
|
126
|
+
boost::condition_variable cond;
|
127
127
|
MessageList messages;
|
128
128
|
|
129
129
|
Iterator search(const string &name) {
|
@@ -163,7 +163,7 @@ class MessageBox: public enable_shared_from_this<MessageBox> {
|
|
163
163
|
return end;
|
164
164
|
}
|
165
165
|
|
166
|
-
bool checkTimeout(unique_lock<boost::mutex> &l, unsigned long long *timeout,
|
166
|
+
bool checkTimeout(boost::unique_lock<boost::mutex> &l, unsigned long long *timeout,
|
167
167
|
unsigned long long beginTime, posix_time::ptime deadline)
|
168
168
|
{
|
169
169
|
posix_time::time_duration diff = deadline -
|
@@ -209,7 +209,7 @@ public:
|
|
209
209
|
}
|
210
210
|
|
211
211
|
const MessagePtr peek(const string &name) const {
|
212
|
-
unique_lock<boost::mutex> l(syncher);
|
212
|
+
boost::unique_lock<boost::mutex> l(syncher);
|
213
213
|
ConstIterator it = search(name);
|
214
214
|
if (it == messages.end()) {
|
215
215
|
return MessagePtr();
|
@@ -219,7 +219,7 @@ public:
|
|
219
219
|
}
|
220
220
|
|
221
221
|
MessagePtr recv(const string &name, unsigned long long *timeout = NULL) {
|
222
|
-
unique_lock<boost::mutex> l(syncher);
|
222
|
+
boost::unique_lock<boost::mutex> l(syncher);
|
223
223
|
posix_time::ptime deadline;
|
224
224
|
unsigned long long beginTime = 0; // Shut up compiler warning.
|
225
225
|
if (timeout != NULL) {
|
@@ -258,7 +258,7 @@ public:
|
|
258
258
|
|
259
259
|
template<typename StringCollection>
|
260
260
|
MessagePtr recvAny(const StringCollection &names, unsigned long long *timeout = NULL) {
|
261
|
-
unique_lock<boost::mutex> l(syncher);
|
261
|
+
boost::unique_lock<boost::mutex> l(syncher);
|
262
262
|
posix_time::ptime deadline;
|
263
263
|
unsigned long long beginTime = 0; // Shut up compiler warning.
|
264
264
|
if (timeout != NULL) {
|
@@ -219,10 +219,8 @@ private:
|
|
219
219
|
*data = endOfWord;
|
220
220
|
return result;
|
221
221
|
}
|
222
|
-
|
223
|
-
static long long
|
224
|
-
StaticString word = readNextWord(data);
|
225
|
-
char nullTerminatedWord[word.size() + 1];
|
222
|
+
|
223
|
+
static long long processNextWordAsLongLong(const StaticString &word, char *nullTerminatedWord) {
|
226
224
|
memcpy(nullTerminatedWord, word.c_str(), word.size());
|
227
225
|
nullTerminatedWord[word.size()] = '\0';
|
228
226
|
if (*nullTerminatedWord == '\0') {
|
@@ -232,9 +230,18 @@ private:
|
|
232
230
|
}
|
233
231
|
}
|
234
232
|
|
235
|
-
static
|
233
|
+
static long long readNextWordAsLongLong(const char **data) {
|
236
234
|
StaticString word = readNextWord(data);
|
237
|
-
|
235
|
+
if (word.size() < 50) {
|
236
|
+
char nullTerminatedWord[50];
|
237
|
+
return processNextWordAsLongLong(word, nullTerminatedWord);
|
238
|
+
} else {
|
239
|
+
string nullTerminatedWord(word.size() + 1, '\0');
|
240
|
+
return processNextWordAsLongLong(word, &nullTerminatedWord[0]);
|
241
|
+
}
|
242
|
+
}
|
243
|
+
|
244
|
+
static int processNextWordAsInt(const StaticString &word, char *nullTerminatedWord) {
|
238
245
|
memcpy(nullTerminatedWord, word.c_str(), word.size());
|
239
246
|
nullTerminatedWord[word.size()] = '\0';
|
240
247
|
if (*nullTerminatedWord == '\0') {
|
@@ -244,6 +251,17 @@ private:
|
|
244
251
|
}
|
245
252
|
}
|
246
253
|
|
254
|
+
static int readNextWordAsInt(const char **data) {
|
255
|
+
StaticString word = readNextWord(data);
|
256
|
+
if (word.size() < 50) {
|
257
|
+
char nullTerminatedWord[50];
|
258
|
+
return processNextWordAsInt(word, nullTerminatedWord);
|
259
|
+
} else {
|
260
|
+
string nullTerminatedWord(word.size() + 1, '\0');
|
261
|
+
return processNextWordAsInt(word, &nullTerminatedWord[0]);
|
262
|
+
}
|
263
|
+
}
|
264
|
+
|
247
265
|
string runCommandAndCaptureOutput(const char **command) const {
|
248
266
|
pid_t pid;
|
249
267
|
int e;
|
@@ -50,13 +50,13 @@ using namespace oxt;
|
|
50
50
|
*/
|
51
51
|
class ScopeGuard: public noncopyable {
|
52
52
|
private:
|
53
|
-
function<void ()> func;
|
53
|
+
boost::function<void ()> func;
|
54
54
|
bool interruptable;
|
55
55
|
|
56
56
|
public:
|
57
57
|
ScopeGuard() { }
|
58
58
|
|
59
|
-
ScopeGuard(const function<void ()> &func, bool interruptable = false) {
|
59
|
+
ScopeGuard(const boost::function<void ()> &func, bool interruptable = false) {
|
60
60
|
this->func = func;
|
61
61
|
this->interruptable = interruptable;
|
62
62
|
}
|
@@ -74,12 +74,12 @@ public:
|
|
74
74
|
}
|
75
75
|
|
76
76
|
void clear() {
|
77
|
-
func = function<void()>();
|
77
|
+
func = boost::function<void()>();
|
78
78
|
}
|
79
79
|
|
80
80
|
void runNow() {
|
81
|
-
function<void ()> oldFunc = func;
|
82
|
-
func = function<void()>();
|
81
|
+
boost::function<void ()> oldFunc = func;
|
82
|
+
func = boost::function<void()>();
|
83
83
|
if (interruptable) {
|
84
84
|
oldFunc();
|
85
85
|
} else {
|
@@ -203,6 +203,7 @@ uintToString( LargestUInt value,
|
|
203
203
|
#include <cstring>
|
204
204
|
#include <iostream>
|
205
205
|
#include <stdexcept>
|
206
|
+
#include <string.h>
|
206
207
|
|
207
208
|
#if _MSC_VER >= 1400 // VC++ 8.0
|
208
209
|
#pragma warning( disable : 4996 ) // disable warning about strdup being deprecated.
|
@@ -3397,6 +3398,7 @@ Path::make( Value &root ) const
|
|
3397
3398
|
#include <iostream>
|
3398
3399
|
#include <sstream>
|
3399
3400
|
#include <iomanip>
|
3401
|
+
#include <ios>
|
3400
3402
|
|
3401
3403
|
#if _MSC_VER >= 1400 // VC++ 8.0
|
3402
3404
|
#pragma warning( disable : 4996 ) // disable warning about strdup being deprecated.
|
@@ -77,45 +77,45 @@ using namespace boost;
|
|
77
77
|
* All FileBackedPipe methods may only be called from the event loop on which it
|
78
78
|
* is installed.
|
79
79
|
*
|
80
|
-
* FileBackedPipe *must* be dynamically allocated and assigned to a shared_ptr.
|
80
|
+
* FileBackedPipe *must* be dynamically allocated and assigned to a boost::shared_ptr.
|
81
81
|
*/
|
82
|
-
class FileBackedPipe: public enable_shared_from_this<FileBackedPipe> {
|
82
|
+
class FileBackedPipe: public boost::enable_shared_from_this<FileBackedPipe> {
|
83
83
|
public:
|
84
84
|
class ConsumeCallback {
|
85
85
|
private:
|
86
|
-
mutable weak_ptr<FileBackedPipe> wself;
|
86
|
+
mutable boost::weak_ptr<FileBackedPipe> wself;
|
87
87
|
unsigned int generation;
|
88
88
|
|
89
89
|
public:
|
90
90
|
ConsumeCallback() { }
|
91
91
|
|
92
|
-
ConsumeCallback(const shared_ptr<FileBackedPipe> &self, unsigned int _generation)
|
92
|
+
ConsumeCallback(const boost::shared_ptr<FileBackedPipe> &self, unsigned int _generation)
|
93
93
|
: wself(self),
|
94
94
|
generation(_generation)
|
95
95
|
{ }
|
96
96
|
|
97
97
|
void operator()(size_t consumed, bool done) const {
|
98
|
-
shared_ptr<FileBackedPipe> self = wself.lock();
|
98
|
+
boost::shared_ptr<FileBackedPipe> self = wself.lock();
|
99
99
|
if (self != NULL) {
|
100
100
|
wself.reset();
|
101
101
|
self->dataConsumed(consumed, done, generation);
|
102
102
|
}
|
103
103
|
}
|
104
104
|
|
105
|
-
function<void (size_t, bool)> toFunction() const {
|
106
|
-
shared_ptr<FileBackedPipe> self = wself.lock();
|
105
|
+
boost::function<void (size_t, bool)> toFunction() const {
|
106
|
+
boost::shared_ptr<FileBackedPipe> self = wself.lock();
|
107
107
|
if (self != NULL) {
|
108
108
|
return boost::bind(&ConsumeCallback::operator(), this, _1, _2);
|
109
109
|
} else {
|
110
|
-
return function<void (size_t, bool)>();
|
110
|
+
return boost::function<void (size_t, bool)>();
|
111
111
|
}
|
112
112
|
}
|
113
113
|
};
|
114
114
|
|
115
|
-
typedef void (*DataCallback)(const shared_ptr<FileBackedPipe> &source, const char *data,
|
115
|
+
typedef void (*DataCallback)(const boost::shared_ptr<FileBackedPipe> &source, const char *data,
|
116
116
|
size_t size, const ConsumeCallback &consumed);
|
117
|
-
typedef void (*ErrorCallback)(const shared_ptr<FileBackedPipe> &source, int errorCode);
|
118
|
-
typedef void (*Callback)(const shared_ptr<FileBackedPipe> &source);
|
117
|
+
typedef void (*ErrorCallback)(const boost::shared_ptr<FileBackedPipe> &source, int errorCode);
|
118
|
+
typedef void (*Callback)(const boost::shared_ptr<FileBackedPipe> &source);
|
119
119
|
|
120
120
|
enum DataState {
|
121
121
|
IN_MEMORY,
|
@@ -124,9 +124,9 @@ public:
|
|
124
124
|
};
|
125
125
|
|
126
126
|
private:
|
127
|
-
typedef function<void (int err, const char *data, size_t size)> EioReadCallback;
|
127
|
+
typedef boost::function<void (int err, const char *data, size_t size)> EioReadCallback;
|
128
128
|
|
129
|
-
// We already have a shared_ptr reference to libev through MultiLibeio.
|
129
|
+
// We already have a boost::shared_ptr reference to libev through MultiLibeio.
|
130
130
|
const string dir;
|
131
131
|
size_t threshold;
|
132
132
|
|
@@ -271,7 +271,7 @@ private:
|
|
271
271
|
libeio.open(filename.str().c_str(), O_CREAT | O_RDWR | O_TRUNC, 0, 0,
|
272
272
|
boost::bind(&FileBackedPipe::openCallback, this,
|
273
273
|
_1, filename.str(), generation,
|
274
|
-
weak_ptr<FileBackedPipe>(shared_from_this())
|
274
|
+
boost::weak_ptr<FileBackedPipe>(shared_from_this())
|
275
275
|
)
|
276
276
|
);
|
277
277
|
}
|
@@ -302,7 +302,7 @@ private:
|
|
302
302
|
&FileBackedPipe::writeBufferToFileCallback, this,
|
303
303
|
_1, file.fd, buffer, file.writeBuffer.size(),
|
304
304
|
generation,
|
305
|
-
weak_ptr<FileBackedPipe>(shared_from_this())
|
305
|
+
boost::weak_ptr<FileBackedPipe>(shared_from_this())
|
306
306
|
)
|
307
307
|
);
|
308
308
|
}
|
@@ -310,9 +310,9 @@ private:
|
|
310
310
|
|
311
311
|
void writeBufferToFileCallback(eio_req req, FileDescriptor fd,
|
312
312
|
shared_array<char> buffer, size_t size,
|
313
|
-
unsigned int generation, weak_ptr<FileBackedPipe> wself)
|
313
|
+
unsigned int generation, boost::weak_ptr<FileBackedPipe> wself)
|
314
314
|
{
|
315
|
-
shared_ptr<FileBackedPipe> self = wself.lock();
|
315
|
+
boost::shared_ptr<FileBackedPipe> self = wself.lock();
|
316
316
|
if (self == NULL || EIO_CANCELLED(&req) || generation != self->generation) {
|
317
317
|
return;
|
318
318
|
}
|
@@ -333,9 +333,9 @@ private:
|
|
333
333
|
}
|
334
334
|
|
335
335
|
void openCallback(eio_req req, string filename, unsigned int generation,
|
336
|
-
weak_ptr<FileBackedPipe> &wself)
|
336
|
+
boost::weak_ptr<FileBackedPipe> &wself)
|
337
337
|
{
|
338
|
-
shared_ptr<FileBackedPipe> self = wself.lock();
|
338
|
+
boost::shared_ptr<FileBackedPipe> self = wself.lock();
|
339
339
|
if (self == NULL || EIO_CANCELLED(&req) || generation != self->generation) {
|
340
340
|
if (req.result != -1 || EIO_CANCELLED(&req)) {
|
341
341
|
eio_close(req.result, 0, successCallback, NULL);
|
@@ -354,7 +354,7 @@ private:
|
|
354
354
|
} else {
|
355
355
|
getLibev()->runAfter(openTimeout,
|
356
356
|
boost::bind(&FileBackedPipe::finalizeOpenFileAfterTimeout, this,
|
357
|
-
weak_ptr<FileBackedPipe>(shared_from_this()),
|
357
|
+
boost::weak_ptr<FileBackedPipe>(shared_from_this()),
|
358
358
|
generation, FileDescriptor(req.result)));
|
359
359
|
}
|
360
360
|
}
|
@@ -366,10 +366,10 @@ private:
|
|
366
366
|
writeBufferToFile();
|
367
367
|
}
|
368
368
|
|
369
|
-
void finalizeOpenFileAfterTimeout(weak_ptr<FileBackedPipe> wself,
|
369
|
+
void finalizeOpenFileAfterTimeout(boost::weak_ptr<FileBackedPipe> wself,
|
370
370
|
unsigned int generation, FileDescriptor fd)
|
371
371
|
{
|
372
|
-
shared_ptr<FileBackedPipe> self = wself.lock();
|
372
|
+
boost::shared_ptr<FileBackedPipe> self = wself.lock();
|
373
373
|
if (self != NULL || generation != self->generation) {
|
374
374
|
self->finalizeOpenFile(fd);
|
375
375
|
}
|
@@ -390,7 +390,7 @@ private:
|
|
390
390
|
boost::bind(
|
391
391
|
&FileBackedPipe::readCallback, this,
|
392
392
|
_1, file.fd, buffer, callback, generation,
|
393
|
-
weak_ptr<FileBackedPipe>(shared_from_this())
|
393
|
+
boost::weak_ptr<FileBackedPipe>(shared_from_this())
|
394
394
|
)
|
395
395
|
);
|
396
396
|
if (req == NULL) {
|
@@ -400,9 +400,9 @@ private:
|
|
400
400
|
}
|
401
401
|
|
402
402
|
void readCallback(eio_req req, FileDescriptor fd, shared_array<char> buffer,
|
403
|
-
EioReadCallback callback, unsigned int generation, weak_ptr<FileBackedPipe> wself)
|
403
|
+
EioReadCallback callback, unsigned int generation, boost::weak_ptr<FileBackedPipe> wself)
|
404
404
|
{
|
405
|
-
shared_ptr<FileBackedPipe> self = wself.lock();
|
405
|
+
boost::shared_ptr<FileBackedPipe> self = wself.lock();
|
406
406
|
if (self == NULL || EIO_CANCELLED(&req) || generation != self->generation) {
|
407
407
|
return;
|
408
408
|
}
|
@@ -724,7 +724,7 @@ public:
|
|
724
724
|
}
|
725
725
|
};
|
726
726
|
|
727
|
-
typedef shared_ptr<FileBackedPipe> FileBackedPipePtr;
|
727
|
+
typedef boost::shared_ptr<FileBackedPipe> FileBackedPipePtr;
|
728
728
|
|
729
729
|
|
730
730
|
} // namespace Passenger
|