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/libev/ev.h
CHANGED
@@ -46,6 +46,8 @@
|
|
46
46
|
# define EV_CPP(x)
|
47
47
|
#endif
|
48
48
|
|
49
|
+
#define EV_THROW EV_CPP(throw())
|
50
|
+
|
49
51
|
EV_CPP(extern "C" {)
|
50
52
|
|
51
53
|
/*****************************************************************************/
|
@@ -56,7 +58,11 @@ EV_CPP(extern "C" {)
|
|
56
58
|
#endif
|
57
59
|
|
58
60
|
#ifndef EV_FEATURES
|
59
|
-
#
|
61
|
+
# if defined __OPTIMIZE_SIZE__
|
62
|
+
# define EV_FEATURES 0x7c
|
63
|
+
# else
|
64
|
+
# define EV_FEATURES 0x7f
|
65
|
+
# endif
|
60
66
|
#endif
|
61
67
|
|
62
68
|
#define EV_FEATURE_CODE ((EV_FEATURES) & 1)
|
@@ -199,33 +205,33 @@ struct ev_loop;
|
|
199
205
|
/*****************************************************************************/
|
200
206
|
|
201
207
|
#define EV_VERSION_MAJOR 4
|
202
|
-
#define EV_VERSION_MINOR
|
208
|
+
#define EV_VERSION_MINOR 15
|
203
209
|
|
204
210
|
/* eventmask, revents, events... */
|
205
211
|
enum {
|
206
|
-
EV_UNDEF = 0xFFFFFFFF, /* guaranteed to be invalid */
|
207
|
-
EV_NONE =
|
208
|
-
EV_READ =
|
209
|
-
EV_WRITE =
|
210
|
-
EV__IOFDSET =
|
211
|
-
EV_IO =
|
212
|
-
EV_TIMER =
|
212
|
+
EV_UNDEF = (int)0xFFFFFFFF, /* guaranteed to be invalid */
|
213
|
+
EV_NONE = 0x00, /* no events */
|
214
|
+
EV_READ = 0x01, /* ev_io detected read will not block */
|
215
|
+
EV_WRITE = 0x02, /* ev_io detected write will not block */
|
216
|
+
EV__IOFDSET = 0x80, /* internal use only */
|
217
|
+
EV_IO = EV_READ, /* alias for type-detection */
|
218
|
+
EV_TIMER = 0x00000100, /* timer timed out */
|
213
219
|
#if EV_COMPAT3
|
214
|
-
EV_TIMEOUT =
|
215
|
-
#endif
|
216
|
-
EV_PERIODIC =
|
217
|
-
EV_SIGNAL =
|
218
|
-
EV_CHILD =
|
219
|
-
EV_STAT =
|
220
|
-
EV_IDLE =
|
221
|
-
EV_PREPARE =
|
222
|
-
EV_CHECK =
|
223
|
-
EV_EMBED =
|
224
|
-
EV_FORK =
|
225
|
-
EV_CLEANUP =
|
226
|
-
EV_ASYNC =
|
227
|
-
EV_CUSTOM =
|
228
|
-
EV_ERROR = 0x80000000 /* sent when an error occurs */
|
220
|
+
EV_TIMEOUT = EV_TIMER, /* pre 4.0 API compatibility */
|
221
|
+
#endif
|
222
|
+
EV_PERIODIC = 0x00000200, /* periodic timer timed out */
|
223
|
+
EV_SIGNAL = 0x00000400, /* signal was received */
|
224
|
+
EV_CHILD = 0x00000800, /* child/pid had status change */
|
225
|
+
EV_STAT = 0x00001000, /* stat data changed */
|
226
|
+
EV_IDLE = 0x00002000, /* event loop is idling */
|
227
|
+
EV_PREPARE = 0x00004000, /* event loop about to poll */
|
228
|
+
EV_CHECK = 0x00008000, /* event loop finished poll */
|
229
|
+
EV_EMBED = 0x00010000, /* embedded event loop needs sweep */
|
230
|
+
EV_FORK = 0x00020000, /* event loop resumed in child */
|
231
|
+
EV_CLEANUP = 0x00040000, /* event loop resumed in child */
|
232
|
+
EV_ASYNC = 0x00080000, /* async intra-loop signal */
|
233
|
+
EV_CUSTOM = 0x01000000, /* for use by user code */
|
234
|
+
EV_ERROR = (int)0x80000000 /* sent when an error occurs */
|
229
235
|
};
|
230
236
|
|
231
237
|
/* can be used to add custom fields to all watchers, while losing binary compatibility */
|
@@ -327,7 +333,7 @@ typedef struct ev_periodic
|
|
327
333
|
|
328
334
|
ev_tstamp offset; /* rw */
|
329
335
|
ev_tstamp interval; /* rw */
|
330
|
-
ev_tstamp (*reschedule_cb)(struct ev_periodic *w, ev_tstamp now); /* rw */
|
336
|
+
ev_tstamp (*reschedule_cb)(struct ev_periodic *w, ev_tstamp now) EV_THROW; /* rw */
|
331
337
|
} ev_periodic;
|
332
338
|
|
333
339
|
/* invoked when the given signal has been received */
|
@@ -514,15 +520,15 @@ enum {
|
|
514
520
|
};
|
515
521
|
|
516
522
|
#if EV_PROTOTYPES
|
517
|
-
EV_API_DECL int ev_version_major (void);
|
518
|
-
EV_API_DECL int ev_version_minor (void);
|
523
|
+
EV_API_DECL int ev_version_major (void) EV_THROW;
|
524
|
+
EV_API_DECL int ev_version_minor (void) EV_THROW;
|
519
525
|
|
520
|
-
EV_API_DECL unsigned int ev_supported_backends (void);
|
521
|
-
EV_API_DECL unsigned int ev_recommended_backends (void);
|
522
|
-
EV_API_DECL unsigned int ev_embeddable_backends (void);
|
526
|
+
EV_API_DECL unsigned int ev_supported_backends (void) EV_THROW;
|
527
|
+
EV_API_DECL unsigned int ev_recommended_backends (void) EV_THROW;
|
528
|
+
EV_API_DECL unsigned int ev_embeddable_backends (void) EV_THROW;
|
523
529
|
|
524
|
-
EV_API_DECL ev_tstamp ev_time (void);
|
525
|
-
EV_API_DECL void ev_sleep (ev_tstamp delay); /* sleep for a while */
|
530
|
+
EV_API_DECL ev_tstamp ev_time (void) EV_THROW;
|
531
|
+
EV_API_DECL void ev_sleep (ev_tstamp delay) EV_THROW; /* sleep for a while */
|
526
532
|
|
527
533
|
/* Sets the allocation function to use, works like realloc.
|
528
534
|
* It is used to allocate and free memory.
|
@@ -530,26 +536,26 @@ EV_API_DECL void ev_sleep (ev_tstamp delay); /* sleep for a while */
|
|
530
536
|
* or take some potentially destructive action.
|
531
537
|
* The default is your system realloc function.
|
532
538
|
*/
|
533
|
-
EV_API_DECL void ev_set_allocator (void *(*cb)(void *ptr, long size));
|
539
|
+
EV_API_DECL void ev_set_allocator (void *(*cb)(void *ptr, long size) EV_THROW) EV_THROW;
|
534
540
|
|
535
541
|
/* set the callback function to call on a
|
536
542
|
* retryable syscall error
|
537
543
|
* (such as failed select, poll, epoll_wait)
|
538
544
|
*/
|
539
|
-
EV_API_DECL void ev_set_syserr_cb (void (*cb)(const char *msg));
|
545
|
+
EV_API_DECL void ev_set_syserr_cb (void (*cb)(const char *msg) EV_THROW) EV_THROW;
|
540
546
|
|
541
547
|
#if EV_MULTIPLICITY
|
542
548
|
|
543
549
|
/* the default loop is the only one that handles signals and child watchers */
|
544
550
|
/* you can call this as often as you like */
|
545
|
-
EV_API_DECL struct ev_loop *ev_default_loop (unsigned int flags EV_CPP (= 0));
|
551
|
+
EV_API_DECL struct ev_loop *ev_default_loop (unsigned int flags EV_CPP (= 0)) EV_THROW;
|
546
552
|
|
547
553
|
#ifdef EV_API_STATIC
|
548
554
|
EV_API_DECL struct ev_loop *ev_default_loop_ptr;
|
549
555
|
#endif
|
550
556
|
|
551
557
|
EV_INLINE struct ev_loop *
|
552
|
-
ev_default_loop_uc_ (void)
|
558
|
+
ev_default_loop_uc_ (void) EV_THROW
|
553
559
|
{
|
554
560
|
extern struct ev_loop *ev_default_loop_ptr;
|
555
561
|
|
@@ -557,31 +563,31 @@ ev_default_loop_uc_ (void)
|
|
557
563
|
}
|
558
564
|
|
559
565
|
EV_INLINE int
|
560
|
-
ev_is_default_loop (EV_P)
|
566
|
+
ev_is_default_loop (EV_P) EV_THROW
|
561
567
|
{
|
562
568
|
return EV_A == EV_DEFAULT_UC;
|
563
569
|
}
|
564
570
|
|
565
571
|
/* create and destroy alternative loops that don't handle signals */
|
566
|
-
EV_API_DECL struct ev_loop *ev_loop_new (unsigned int flags EV_CPP (= 0));
|
572
|
+
EV_API_DECL struct ev_loop *ev_loop_new (unsigned int flags EV_CPP (= 0)) EV_THROW;
|
567
573
|
|
568
|
-
EV_API_DECL ev_tstamp ev_now (EV_P); /* time w.r.t. timers and the eventloop, updated after each poll */
|
574
|
+
EV_API_DECL ev_tstamp ev_now (EV_P) EV_THROW; /* time w.r.t. timers and the eventloop, updated after each poll */
|
569
575
|
|
570
576
|
#else
|
571
577
|
|
572
|
-
EV_API_DECL int ev_default_loop (unsigned int flags EV_CPP (= 0)); /* returns true when successful */
|
578
|
+
EV_API_DECL int ev_default_loop (unsigned int flags EV_CPP (= 0)) EV_THROW; /* returns true when successful */
|
573
579
|
|
574
580
|
EV_API_DECL ev_tstamp ev_rt_now;
|
575
581
|
|
576
582
|
EV_INLINE ev_tstamp
|
577
|
-
ev_now (void)
|
583
|
+
ev_now (void) EV_THROW
|
578
584
|
{
|
579
585
|
return ev_rt_now;
|
580
586
|
}
|
581
587
|
|
582
588
|
/* looks weird, but ev_is_default_loop (EV_A) still works if this exists */
|
583
589
|
EV_INLINE int
|
584
|
-
ev_is_default_loop (void)
|
590
|
+
ev_is_default_loop (void) EV_THROW
|
585
591
|
{
|
586
592
|
return 1;
|
587
593
|
}
|
@@ -595,17 +601,17 @@ EV_API_DECL void ev_loop_destroy (EV_P);
|
|
595
601
|
/* when you want to re-use it in the child */
|
596
602
|
/* you can call it in either the parent or the child */
|
597
603
|
/* you can actually call it at any time, anywhere :) */
|
598
|
-
EV_API_DECL void ev_loop_fork (EV_P);
|
604
|
+
EV_API_DECL void ev_loop_fork (EV_P) EV_THROW;
|
599
605
|
|
600
|
-
EV_API_DECL unsigned int ev_backend (EV_P); /* backend in use by loop */
|
606
|
+
EV_API_DECL unsigned int ev_backend (EV_P) EV_THROW; /* backend in use by loop */
|
601
607
|
|
602
|
-
EV_API_DECL void ev_now_update (EV_P); /* update event loop time */
|
608
|
+
EV_API_DECL void ev_now_update (EV_P) EV_THROW; /* update event loop time */
|
603
609
|
|
604
610
|
#if EV_WALK_ENABLE
|
605
611
|
/* walk (almost) all watchers in the loop of a given type, invoking the */
|
606
612
|
/* callback on every such watcher. The callback might stop the watcher, */
|
607
613
|
/* but do nothing else with the loop */
|
608
|
-
EV_API_DECL void ev_walk (EV_P_ int types, void (*cb)(EV_P_ int type, void *w));
|
614
|
+
EV_API_DECL void ev_walk (EV_P_ int types, void (*cb)(EV_P_ int type, void *w)) EV_THROW;
|
609
615
|
#endif
|
610
616
|
|
611
617
|
#endif /* prototypes */
|
@@ -624,45 +630,45 @@ enum {
|
|
624
630
|
};
|
625
631
|
|
626
632
|
#if EV_PROTOTYPES
|
627
|
-
EV_API_DECL
|
628
|
-
EV_API_DECL void ev_break (EV_P_ int how EV_CPP (= EVBREAK_ONE)); /* break out of the loop */
|
633
|
+
EV_API_DECL int ev_run (EV_P_ int flags EV_CPP (= 0));
|
634
|
+
EV_API_DECL void ev_break (EV_P_ int how EV_CPP (= EVBREAK_ONE)) EV_THROW; /* break out of the loop */
|
629
635
|
|
630
636
|
/*
|
631
637
|
* ref/unref can be used to add or remove a refcount on the mainloop. every watcher
|
632
638
|
* keeps one reference. if you have a long-running watcher you never unregister that
|
633
639
|
* should not keep ev_loop from running, unref() after starting, and ref() before stopping.
|
634
640
|
*/
|
635
|
-
EV_API_DECL void ev_ref (EV_P);
|
636
|
-
EV_API_DECL void ev_unref (EV_P);
|
641
|
+
EV_API_DECL void ev_ref (EV_P) EV_THROW;
|
642
|
+
EV_API_DECL void ev_unref (EV_P) EV_THROW;
|
637
643
|
|
638
644
|
/*
|
639
645
|
* convenience function, wait for a single event, without registering an event watcher
|
640
646
|
* if timeout is < 0, do wait indefinitely
|
641
647
|
*/
|
642
|
-
EV_API_DECL void ev_once (EV_P_ int fd, int events, ev_tstamp timeout, void (*cb)(int revents, void *arg), void *arg);
|
648
|
+
EV_API_DECL void ev_once (EV_P_ int fd, int events, ev_tstamp timeout, void (*cb)(int revents, void *arg), void *arg) EV_THROW;
|
643
649
|
|
644
650
|
# if EV_FEATURE_API
|
645
|
-
EV_API_DECL unsigned int ev_iteration (EV_P); /* number of loop iterations */
|
646
|
-
EV_API_DECL unsigned int ev_depth (EV_P); /* #ev_loop enters - #ev_loop leaves */
|
647
|
-
EV_API_DECL void ev_verify (EV_P); /* abort if loop data corrupted */
|
651
|
+
EV_API_DECL unsigned int ev_iteration (EV_P) EV_THROW; /* number of loop iterations */
|
652
|
+
EV_API_DECL unsigned int ev_depth (EV_P) EV_THROW; /* #ev_loop enters - #ev_loop leaves */
|
653
|
+
EV_API_DECL void ev_verify (EV_P) EV_THROW; /* abort if loop data corrupted */
|
648
654
|
|
649
|
-
EV_API_DECL void ev_set_io_collect_interval (EV_P_ ev_tstamp interval); /* sleep at least this time, default 0 */
|
650
|
-
EV_API_DECL void ev_set_timeout_collect_interval (EV_P_ ev_tstamp interval); /* sleep at least this time, default 0 */
|
655
|
+
EV_API_DECL void ev_set_io_collect_interval (EV_P_ ev_tstamp interval) EV_THROW; /* sleep at least this time, default 0 */
|
656
|
+
EV_API_DECL void ev_set_timeout_collect_interval (EV_P_ ev_tstamp interval) EV_THROW; /* sleep at least this time, default 0 */
|
651
657
|
|
652
658
|
/* advanced stuff for threading etc. support, see docs */
|
653
|
-
EV_API_DECL void ev_set_userdata (EV_P_ void *data);
|
654
|
-
EV_API_DECL void *ev_userdata (EV_P);
|
655
|
-
EV_API_DECL void ev_set_invoke_pending_cb (EV_P_ void (*invoke_pending_cb)(EV_P));
|
656
|
-
EV_API_DECL void ev_set_loop_release_cb (EV_P_ void (*release)(EV_P), void (*acquire)(EV_P));
|
659
|
+
EV_API_DECL void ev_set_userdata (EV_P_ void *data) EV_THROW;
|
660
|
+
EV_API_DECL void *ev_userdata (EV_P) EV_THROW;
|
661
|
+
EV_API_DECL void ev_set_invoke_pending_cb (EV_P_ void (*invoke_pending_cb)(EV_P)) EV_THROW;
|
662
|
+
EV_API_DECL void ev_set_loop_release_cb (EV_P_ void (*release)(EV_P), void (*acquire)(EV_P) EV_THROW) EV_THROW;
|
657
663
|
|
658
|
-
EV_API_DECL unsigned int ev_pending_count (EV_P); /* number of pending events, if any */
|
664
|
+
EV_API_DECL unsigned int ev_pending_count (EV_P) EV_THROW; /* number of pending events, if any */
|
659
665
|
EV_API_DECL void ev_invoke_pending (EV_P); /* invoke all pending watchers */
|
660
666
|
|
661
667
|
/*
|
662
668
|
* stop/start the timer handling.
|
663
669
|
*/
|
664
|
-
EV_API_DECL void ev_suspend (EV_P);
|
665
|
-
EV_API_DECL void ev_resume (EV_P);
|
670
|
+
EV_API_DECL void ev_suspend (EV_P) EV_THROW;
|
671
|
+
EV_API_DECL void ev_resume (EV_P) EV_THROW;
|
666
672
|
#endif
|
667
673
|
|
668
674
|
#endif
|
@@ -729,85 +735,85 @@ EV_API_DECL void ev_resume (EV_P);
|
|
729
735
|
|
730
736
|
/* feeds an event into a watcher as if the event actually occurred */
|
731
737
|
/* accepts any ev_watcher type */
|
732
|
-
EV_API_DECL void ev_feed_event (EV_P_ void *w, int revents);
|
733
|
-
EV_API_DECL void ev_feed_fd_event (EV_P_ int fd, int revents);
|
738
|
+
EV_API_DECL void ev_feed_event (EV_P_ void *w, int revents) EV_THROW;
|
739
|
+
EV_API_DECL void ev_feed_fd_event (EV_P_ int fd, int revents) EV_THROW;
|
734
740
|
#if EV_SIGNAL_ENABLE
|
735
|
-
EV_API_DECL void ev_feed_signal (int signum);
|
736
|
-
EV_API_DECL void ev_feed_signal_event (EV_P_ int signum);
|
741
|
+
EV_API_DECL void ev_feed_signal (int signum) EV_THROW;
|
742
|
+
EV_API_DECL void ev_feed_signal_event (EV_P_ int signum) EV_THROW;
|
737
743
|
#endif
|
738
744
|
EV_API_DECL void ev_invoke (EV_P_ void *w, int revents);
|
739
|
-
EV_API_DECL int ev_clear_pending (EV_P_ void *w);
|
745
|
+
EV_API_DECL int ev_clear_pending (EV_P_ void *w) EV_THROW;
|
740
746
|
|
741
|
-
EV_API_DECL void ev_io_start (EV_P_ ev_io *w);
|
742
|
-
EV_API_DECL void ev_io_stop (EV_P_ ev_io *w);
|
747
|
+
EV_API_DECL void ev_io_start (EV_P_ ev_io *w) EV_THROW;
|
748
|
+
EV_API_DECL void ev_io_stop (EV_P_ ev_io *w) EV_THROW;
|
743
749
|
|
744
|
-
EV_API_DECL void ev_timer_start (EV_P_ ev_timer *w);
|
745
|
-
EV_API_DECL void ev_timer_stop (EV_P_ ev_timer *w);
|
750
|
+
EV_API_DECL void ev_timer_start (EV_P_ ev_timer *w) EV_THROW;
|
751
|
+
EV_API_DECL void ev_timer_stop (EV_P_ ev_timer *w) EV_THROW;
|
746
752
|
/* stops if active and no repeat, restarts if active and repeating, starts if inactive and repeating */
|
747
|
-
EV_API_DECL void ev_timer_again (EV_P_ ev_timer *w);
|
753
|
+
EV_API_DECL void ev_timer_again (EV_P_ ev_timer *w) EV_THROW;
|
748
754
|
/* return remaining time */
|
749
|
-
EV_API_DECL ev_tstamp ev_timer_remaining (EV_P_ ev_timer *w);
|
755
|
+
EV_API_DECL ev_tstamp ev_timer_remaining (EV_P_ ev_timer *w) EV_THROW;
|
750
756
|
|
751
757
|
#if EV_PERIODIC_ENABLE
|
752
|
-
EV_API_DECL void ev_periodic_start (EV_P_ ev_periodic *w);
|
753
|
-
EV_API_DECL void ev_periodic_stop (EV_P_ ev_periodic *w);
|
754
|
-
EV_API_DECL void ev_periodic_again (EV_P_ ev_periodic *w);
|
758
|
+
EV_API_DECL void ev_periodic_start (EV_P_ ev_periodic *w) EV_THROW;
|
759
|
+
EV_API_DECL void ev_periodic_stop (EV_P_ ev_periodic *w) EV_THROW;
|
760
|
+
EV_API_DECL void ev_periodic_again (EV_P_ ev_periodic *w) EV_THROW;
|
755
761
|
#endif
|
756
762
|
|
757
763
|
/* only supported in the default loop */
|
758
764
|
#if EV_SIGNAL_ENABLE
|
759
|
-
EV_API_DECL void ev_signal_start (EV_P_ ev_signal *w);
|
760
|
-
EV_API_DECL void ev_signal_stop (EV_P_ ev_signal *w);
|
765
|
+
EV_API_DECL void ev_signal_start (EV_P_ ev_signal *w) EV_THROW;
|
766
|
+
EV_API_DECL void ev_signal_stop (EV_P_ ev_signal *w) EV_THROW;
|
761
767
|
#endif
|
762
768
|
|
763
769
|
/* only supported in the default loop */
|
764
770
|
# if EV_CHILD_ENABLE
|
765
|
-
EV_API_DECL void ev_child_start (EV_P_ ev_child *w);
|
766
|
-
EV_API_DECL void ev_child_stop (EV_P_ ev_child *w);
|
771
|
+
EV_API_DECL void ev_child_start (EV_P_ ev_child *w) EV_THROW;
|
772
|
+
EV_API_DECL void ev_child_stop (EV_P_ ev_child *w) EV_THROW;
|
767
773
|
# endif
|
768
774
|
|
769
775
|
# if EV_STAT_ENABLE
|
770
|
-
EV_API_DECL void ev_stat_start (EV_P_ ev_stat *w);
|
771
|
-
EV_API_DECL void ev_stat_stop (EV_P_ ev_stat *w);
|
772
|
-
EV_API_DECL void ev_stat_stat (EV_P_ ev_stat *w);
|
776
|
+
EV_API_DECL void ev_stat_start (EV_P_ ev_stat *w) EV_THROW;
|
777
|
+
EV_API_DECL void ev_stat_stop (EV_P_ ev_stat *w) EV_THROW;
|
778
|
+
EV_API_DECL void ev_stat_stat (EV_P_ ev_stat *w) EV_THROW;
|
773
779
|
# endif
|
774
780
|
|
775
781
|
# if EV_IDLE_ENABLE
|
776
|
-
EV_API_DECL void ev_idle_start (EV_P_ ev_idle *w);
|
777
|
-
EV_API_DECL void ev_idle_stop (EV_P_ ev_idle *w);
|
782
|
+
EV_API_DECL void ev_idle_start (EV_P_ ev_idle *w) EV_THROW;
|
783
|
+
EV_API_DECL void ev_idle_stop (EV_P_ ev_idle *w) EV_THROW;
|
778
784
|
# endif
|
779
785
|
|
780
786
|
#if EV_PREPARE_ENABLE
|
781
|
-
EV_API_DECL void ev_prepare_start (EV_P_ ev_prepare *w);
|
782
|
-
EV_API_DECL void ev_prepare_stop (EV_P_ ev_prepare *w);
|
787
|
+
EV_API_DECL void ev_prepare_start (EV_P_ ev_prepare *w) EV_THROW;
|
788
|
+
EV_API_DECL void ev_prepare_stop (EV_P_ ev_prepare *w) EV_THROW;
|
783
789
|
#endif
|
784
790
|
|
785
791
|
#if EV_CHECK_ENABLE
|
786
|
-
EV_API_DECL void ev_check_start (EV_P_ ev_check *w);
|
787
|
-
EV_API_DECL void ev_check_stop (EV_P_ ev_check *w);
|
792
|
+
EV_API_DECL void ev_check_start (EV_P_ ev_check *w) EV_THROW;
|
793
|
+
EV_API_DECL void ev_check_stop (EV_P_ ev_check *w) EV_THROW;
|
788
794
|
#endif
|
789
795
|
|
790
796
|
# if EV_FORK_ENABLE
|
791
|
-
EV_API_DECL void ev_fork_start (EV_P_ ev_fork *w);
|
792
|
-
EV_API_DECL void ev_fork_stop (EV_P_ ev_fork *w);
|
797
|
+
EV_API_DECL void ev_fork_start (EV_P_ ev_fork *w) EV_THROW;
|
798
|
+
EV_API_DECL void ev_fork_stop (EV_P_ ev_fork *w) EV_THROW;
|
793
799
|
# endif
|
794
800
|
|
795
801
|
# if EV_CLEANUP_ENABLE
|
796
|
-
EV_API_DECL void ev_cleanup_start (EV_P_ ev_cleanup *w);
|
797
|
-
EV_API_DECL void ev_cleanup_stop (EV_P_ ev_cleanup *w);
|
802
|
+
EV_API_DECL void ev_cleanup_start (EV_P_ ev_cleanup *w) EV_THROW;
|
803
|
+
EV_API_DECL void ev_cleanup_stop (EV_P_ ev_cleanup *w) EV_THROW;
|
798
804
|
# endif
|
799
805
|
|
800
806
|
# if EV_EMBED_ENABLE
|
801
807
|
/* only supported when loop to be embedded is in fact embeddable */
|
802
|
-
EV_API_DECL void ev_embed_start (EV_P_ ev_embed *w);
|
803
|
-
EV_API_DECL void ev_embed_stop (EV_P_ ev_embed *w);
|
804
|
-
EV_API_DECL void ev_embed_sweep (EV_P_ ev_embed *w);
|
808
|
+
EV_API_DECL void ev_embed_start (EV_P_ ev_embed *w) EV_THROW;
|
809
|
+
EV_API_DECL void ev_embed_stop (EV_P_ ev_embed *w) EV_THROW;
|
810
|
+
EV_API_DECL void ev_embed_sweep (EV_P_ ev_embed *w) EV_THROW;
|
805
811
|
# endif
|
806
812
|
|
807
813
|
# if EV_ASYNC_ENABLE
|
808
|
-
EV_API_DECL void ev_async_start (EV_P_ ev_async *w);
|
809
|
-
EV_API_DECL void ev_async_stop (EV_P_ ev_async *w);
|
810
|
-
EV_API_DECL void ev_async_send (EV_P_ ev_async *w);
|
814
|
+
EV_API_DECL void ev_async_start (EV_P_ ev_async *w) EV_THROW;
|
815
|
+
EV_API_DECL void ev_async_stop (EV_P_ ev_async *w) EV_THROW;
|
816
|
+
EV_API_DECL void ev_async_send (EV_P_ ev_async *w) EV_THROW;
|
811
817
|
# endif
|
812
818
|
|
813
819
|
#if EV_COMPAT3
|
data/ext/libev/ev_epoll.c
CHANGED
data/ext/libev/ev_kqueue.c
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
/*
|
2
2
|
* libev kqueue backend
|
3
3
|
*
|
4
|
-
* Copyright (c) 2007,2008,2009,2010,2011 Marc Alexander Lehmann <libev@schmorp.de>
|
4
|
+
* Copyright (c) 2007,2008,2009,2010,2011,2012 Marc Alexander Lehmann <libev@schmorp.de>
|
5
5
|
* All rights reserved.
|
6
6
|
*
|
7
7
|
* Redistribution and use in source and binary forms, with or without modifica-
|
@@ -155,7 +155,8 @@ kqueue_poll (EV_P_ ev_tstamp timeout)
|
|
155
155
|
int inline_size
|
156
156
|
kqueue_init (EV_P_ int flags)
|
157
157
|
{
|
158
|
-
/*
|
158
|
+
/* initialize the kernel queue */
|
159
|
+
kqueue_fd_pid = getpid ();
|
159
160
|
if ((backend_fd = kqueue ()) < 0)
|
160
161
|
return 0;
|
161
162
|
|
@@ -185,8 +186,20 @@ kqueue_destroy (EV_P)
|
|
185
186
|
void inline_size
|
186
187
|
kqueue_fork (EV_P)
|
187
188
|
{
|
188
|
-
|
189
|
-
|
189
|
+
/* some BSD kernels don't just destroy the kqueue itself,
|
190
|
+
* but also close the fd, which isn't documented, and
|
191
|
+
* impossible to support properly.
|
192
|
+
* we remember the pid of the kqueue call and only close
|
193
|
+
* the fd if the pid is still the same.
|
194
|
+
* this leaks fds on sane kernels, but BSD interfaces are
|
195
|
+
* notoriously buggy and rarely get fixed.
|
196
|
+
*/
|
197
|
+
pid_t newpid = getpid ();
|
198
|
+
|
199
|
+
if (newpid == kqueue_fd_pid)
|
200
|
+
close (backend_fd);
|
201
|
+
|
202
|
+
kqueue_fd_pid = newpid;
|
190
203
|
while ((backend_fd = kqueue ()) < 0)
|
191
204
|
ev_syserr ("(libev) kqueue");
|
192
205
|
|
@@ -196,3 +209,6 @@ kqueue_fork (EV_P)
|
|
196
209
|
fd_rearm_all (EV_A);
|
197
210
|
}
|
198
211
|
|
212
|
+
/* sys/event.h defines EV_ERROR */
|
213
|
+
#undef EV_ERROR
|
214
|
+
|
data/ext/libev/ev_vars.h
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
/*
|
2
2
|
* loop member variable declarations
|
3
3
|
*
|
4
|
-
* Copyright (c) 2007,2008,2009,2010,2011 Marc Alexander Lehmann <libev@schmorp.de>
|
4
|
+
* Copyright (c) 2007,2008,2009,2010,2011,2012 Marc Alexander Lehmann <libev@schmorp.de>
|
5
5
|
* All rights reserved.
|
6
6
|
*
|
7
7
|
* Redistribution and use in source and binary forms, with or without modifica-
|
@@ -43,6 +43,17 @@ VARx(ev_tstamp, now_floor) /* last time we refreshed rt_time */
|
|
43
43
|
VARx(ev_tstamp, mn_now) /* monotonic clock "now" */
|
44
44
|
VARx(ev_tstamp, rtmn_diff) /* difference realtime - monotonic time */
|
45
45
|
|
46
|
+
/* for reverse feeding of events */
|
47
|
+
VARx(W *, rfeeds)
|
48
|
+
VARx(int, rfeedmax)
|
49
|
+
VARx(int, rfeedcnt)
|
50
|
+
|
51
|
+
VAR (pendings, ANPENDING *pendings [NUMPRI])
|
52
|
+
VAR (pendingmax, int pendingmax [NUMPRI])
|
53
|
+
VAR (pendingcnt, int pendingcnt [NUMPRI])
|
54
|
+
VARx(int, pendingpri) /* highest priority currently pending */
|
55
|
+
VARx(ev_prepare, pending_w) /* dummy pending watcher */
|
56
|
+
|
46
57
|
VARx(ev_tstamp, io_blocktime)
|
47
58
|
VARx(ev_tstamp, timeout_blocktime)
|
48
59
|
|
@@ -58,19 +69,6 @@ VAR (backend_poll , void (*backend_poll)(EV_P_ ev_tstamp timeout))
|
|
58
69
|
VARx(ANFD *, anfds)
|
59
70
|
VARx(int, anfdmax)
|
60
71
|
|
61
|
-
VAR (pendings, ANPENDING *pendings [NUMPRI])
|
62
|
-
VAR (pendingmax, int pendingmax [NUMPRI])
|
63
|
-
VAR (pendingcnt, int pendingcnt [NUMPRI])
|
64
|
-
VARx(ev_prepare, pending_w) /* dummy pending watcher */
|
65
|
-
|
66
|
-
/* for reverse feeding of events */
|
67
|
-
VARx(W *, rfeeds)
|
68
|
-
VARx(int, rfeedmax)
|
69
|
-
VARx(int, rfeedcnt)
|
70
|
-
|
71
|
-
#if EV_USE_EVENTFD || EV_GENWRAP
|
72
|
-
VARx(int, evfd)
|
73
|
-
#endif
|
74
72
|
VAR (evpipe, int evpipe [2])
|
75
73
|
VARx(ev_io, pipe_w)
|
76
74
|
VARx(EV_ATOMIC_T, pipe_write_wanted)
|
@@ -110,6 +108,7 @@ VARx(int, epoll_epermmax)
|
|
110
108
|
#endif
|
111
109
|
|
112
110
|
#if EV_USE_KQUEUE || EV_GENWRAP
|
111
|
+
VARx(pid_t, kqueue_fd_pid)
|
113
112
|
VARx(struct kevent *, kqueue_changes)
|
114
113
|
VARx(int, kqueue_changemax)
|
115
114
|
VARx(int, kqueue_changecnt)
|
@@ -195,8 +194,8 @@ VARx(unsigned int, loop_count) /* total number of loop iterations/blocks */
|
|
195
194
|
VARx(unsigned int, loop_depth) /* #ev_run enters - #ev_run leaves */
|
196
195
|
|
197
196
|
VARx(void *, userdata)
|
198
|
-
VAR (release_cb, void (*release_cb)(EV_P))
|
199
|
-
VAR (acquire_cb, void (*acquire_cb)(EV_P))
|
197
|
+
VAR (release_cb, void (*release_cb)(EV_P) EV_THROW)
|
198
|
+
VAR (acquire_cb, void (*acquire_cb)(EV_P) EV_THROW)
|
200
199
|
VAR (invoke_cb , void (*invoke_cb) (EV_P))
|
201
200
|
#endif
|
202
201
|
|