passenger 4.0.60 → 5.0.0.beta1
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/.editorconfig +5 -0
- data/.travis.yml +3 -2
- data/CHANGELOG +31 -53
- data/CONTRIBUTING.md +4 -4
- data/CONTRIBUTORS +0 -1
- data/Gemfile +18 -0
- data/Gemfile.lock +41 -0
- data/Rakefile +16 -0
- data/bin/passenger +2 -2
- data/bin/passenger-install-apache2-module +12 -12
- data/bin/passenger-install-nginx-module +9 -14
- data/bin/passenger-status +125 -87
- data/build/agents.rb +112 -140
- data/build/apache2.rb +4 -9
- data/build/basics.rb +5 -3
- data/build/common_library.rb +1 -0
- data/build/cxx_tests.rb +69 -47
- data/build/debian.rb +4 -2
- data/build/documentation.rb +1 -0
- data/build/integration_tests.rb +28 -43
- data/build/misc.rb +0 -18
- data/build/nginx.rb +2 -6
- data/build/packaging.rb +33 -22
- data/build/preprocessor.rb +2 -4
- data/build/ruby_tests.rb +7 -26
- data/build/test_basics.rb +24 -25
- data/debian.template/control.template +2 -2
- data/debian.template/locations.ini.template +2 -3
- data/debian.template/passenger.install.template +2 -2
- data/debian.template/rules.template +1 -1
- data/dev/ci/run_jenkins.sh +0 -1
- data/dev/ci/run_rpm_tests.sh +3 -0
- data/dev/ci/run_travis.sh +63 -17
- data/dev/copy_boost_headers +22 -6
- data/dev/ruby_server.rb +244 -0
- data/dev/vagrant/provision.sh +3 -1
- data/doc/DebuggingAndStressTesting.md +3 -3
- data/doc/Design and Architecture.txt +5 -6
- data/doc/Packaging.txt.md +35 -6
- data/doc/ServerOptimizationGuide.txt.md +339 -0
- data/doc/Users guide Apache.idmap.txt +177 -187
- data/doc/Users guide Apache.txt +143 -219
- data/doc/Users guide Nginx.idmap.txt +166 -166
- data/doc/Users guide Nginx.txt +265 -223
- data/doc/Users guide Standalone.txt +3 -3
- data/doc/templates/markdown.html.erb +37 -6
- data/doc/users_guide_snippets/environment_variables.txt +1 -1
- data/doc/users_guide_snippets/support_information.txt +1 -1
- data/doc/users_guide_snippets/tips.txt +2 -2
- data/ext/apache2/Configuration.cpp +23 -81
- data/ext/apache2/Configuration.hpp +18 -92
- data/ext/apache2/ConfigurationCommands.cpp +64 -15
- data/ext/apache2/ConfigurationCommands.cpp.erb +8 -4
- data/ext/apache2/ConfigurationFields.hpp +12 -0
- data/ext/apache2/ConfigurationSetters.cpp +73 -1
- data/ext/apache2/ConfigurationSetters.cpp.erb +3 -2
- data/ext/apache2/CreateDirConfig.cpp +6 -0
- data/ext/apache2/DirectoryMapper.h +11 -6
- data/ext/apache2/Hooks.cpp +291 -408
- data/ext/apache2/MergeDirConfig.cpp +42 -0
- data/ext/apache2/SetHeaders.cpp +61 -16
- data/ext/apache2/SetHeaders.cpp.erb +9 -7
- data/ext/boost/container/allocator_traits.hpp +400 -0
- data/ext/boost/container/deque.hpp +2012 -0
- data/ext/boost/container/detail/adaptive_node_pool_impl.hpp +874 -0
- data/ext/boost/container/detail/advanced_insert_int.hpp +369 -0
- data/ext/boost/container/detail/algorithms.hpp +84 -0
- data/ext/boost/container/detail/allocation_type.hpp +54 -0
- data/ext/boost/container/detail/allocator_version_traits.hpp +163 -0
- data/ext/boost/container/detail/config_begin.hpp +49 -0
- data/ext/boost/container/detail/config_end.hpp +17 -0
- data/ext/boost/container/detail/destroyers.hpp +365 -0
- data/ext/boost/container/detail/flat_tree.hpp +1055 -0
- data/ext/boost/container/detail/function_detector.hpp +88 -0
- data/ext/boost/container/detail/iterators.hpp +611 -0
- data/ext/boost/container/detail/math_functions.hpp +113 -0
- data/ext/boost/container/detail/memory_util.hpp +83 -0
- data/ext/boost/container/detail/mpl.hpp +160 -0
- data/ext/boost/container/detail/multiallocation_chain.hpp +286 -0
- data/ext/boost/container/detail/node_alloc_holder.hpp +386 -0
- data/ext/boost/container/detail/node_pool_impl.hpp +365 -0
- data/ext/boost/container/detail/pair.hpp +354 -0
- data/ext/boost/container/detail/pool_common.hpp +52 -0
- data/ext/boost/container/detail/preprocessor.hpp +232 -0
- data/ext/boost/container/detail/transform_iterator.hpp +176 -0
- data/ext/boost/container/detail/tree.hpp +1134 -0
- data/ext/boost/container/detail/type_traits.hpp +210 -0
- data/ext/boost/container/detail/utilities.hpp +1141 -0
- data/ext/boost/container/detail/value_init.hpp +45 -0
- data/ext/boost/container/detail/variadic_templates_tools.hpp +153 -0
- data/ext/boost/container/detail/version_type.hpp +92 -0
- data/ext/boost/container/detail/workaround.hpp +44 -0
- data/ext/boost/container/flat_map.hpp +1674 -0
- data/ext/boost/container/flat_set.hpp +1408 -0
- data/ext/boost/container/list.hpp +1475 -0
- data/ext/boost/container/map.hpp +1508 -0
- data/ext/boost/container/scoped_allocator.hpp +1503 -0
- data/ext/boost/container/scoped_allocator_fwd.hpp +83 -0
- data/ext/boost/container/set.hpp +1280 -0
- data/ext/boost/container/slist.hpp +1706 -0
- data/ext/boost/container/stable_vector.hpp +1869 -0
- data/ext/boost/container/static_vector.hpp +1053 -0
- data/ext/boost/container/string.hpp +2856 -0
- data/ext/boost/container/throw_exception.hpp +110 -0
- data/ext/boost/container/vector.hpp +2671 -0
- data/ext/boost/detail/is_xxx.hpp +61 -0
- data/ext/boost/intrusive/any_hook.hpp +344 -0
- data/ext/boost/intrusive/avl_set.hpp +2528 -0
- data/ext/boost/intrusive/avl_set_hook.hpp +297 -0
- data/ext/boost/intrusive/avltree.hpp +1786 -0
- data/ext/boost/intrusive/avltree_algorithms.hpp +968 -0
- data/ext/boost/intrusive/bs_set_hook.hpp +296 -0
- data/ext/boost/intrusive/circular_list_algorithms.hpp +413 -0
- data/ext/boost/intrusive/circular_slist_algorithms.hpp +404 -0
- data/ext/boost/intrusive/derivation_value_traits.hpp +70 -0
- data/ext/boost/intrusive/detail/any_node_and_algorithms.hpp +297 -0
- data/ext/boost/intrusive/detail/assert.hpp +41 -0
- data/ext/boost/intrusive/detail/avltree_node.hpp +197 -0
- data/ext/boost/intrusive/detail/clear_on_destructor_base.hpp +36 -0
- data/ext/boost/intrusive/detail/common_slist_algorithms.hpp +102 -0
- data/ext/boost/intrusive/detail/config_begin.hpp +52 -0
- data/ext/boost/intrusive/detail/config_end.hpp +15 -0
- data/ext/boost/intrusive/detail/ebo_functor_holder.hpp +95 -0
- data/ext/boost/intrusive/detail/function_detector.hpp +88 -0
- data/ext/boost/intrusive/detail/generic_hook.hpp +209 -0
- data/ext/boost/intrusive/detail/has_member_function_callable_with.hpp +357 -0
- data/ext/boost/intrusive/detail/hashtable_node.hpp +249 -0
- data/ext/boost/intrusive/detail/is_stateful_value_traits.hpp +77 -0
- data/ext/boost/intrusive/detail/list_node.hpp +196 -0
- data/ext/boost/intrusive/detail/memory_util.hpp +288 -0
- data/ext/boost/intrusive/detail/mpl.hpp +383 -0
- data/ext/boost/intrusive/detail/parent_from_member.hpp +97 -0
- data/ext/boost/intrusive/detail/preprocessor.hpp +52 -0
- data/ext/boost/intrusive/detail/rbtree_node.hpp +201 -0
- data/ext/boost/intrusive/detail/slist_node.hpp +166 -0
- data/ext/boost/intrusive/detail/transform_iterator.hpp +173 -0
- data/ext/boost/intrusive/detail/tree_algorithms.hpp +1742 -0
- data/ext/boost/intrusive/detail/tree_node.hpp +199 -0
- data/ext/boost/intrusive/detail/utilities.hpp +858 -0
- data/ext/boost/intrusive/detail/workaround.hpp +22 -0
- data/ext/boost/intrusive/hashtable.hpp +3110 -0
- data/ext/boost/intrusive/intrusive_fwd.hpp +542 -0
- data/ext/boost/intrusive/linear_slist_algorithms.hpp +327 -0
- data/ext/boost/intrusive/link_mode.hpp +46 -0
- data/ext/boost/intrusive/list.hpp +1525 -0
- data/ext/boost/intrusive/list_hook.hpp +290 -0
- data/ext/boost/intrusive/member_value_traits.hpp +70 -0
- data/ext/boost/intrusive/options.hpp +810 -0
- data/ext/boost/intrusive/parent_from_member.hpp +42 -0
- data/ext/boost/intrusive/pointer_plus_bits.hpp +86 -0
- data/ext/boost/intrusive/pointer_traits.hpp +265 -0
- data/ext/boost/intrusive/priority_compare.hpp +39 -0
- data/ext/boost/intrusive/rbtree.hpp +1785 -0
- data/ext/boost/intrusive/rbtree_algorithms.hpp +934 -0
- data/ext/boost/intrusive/set.hpp +2554 -0
- data/ext/boost/intrusive/set_hook.hpp +300 -0
- data/ext/boost/intrusive/sg_set.hpp +2601 -0
- data/ext/boost/intrusive/sgtree.hpp +2009 -0
- data/ext/boost/intrusive/sgtree_algorithms.hpp +807 -0
- data/ext/boost/intrusive/slist.hpp +2219 -0
- data/ext/boost/intrusive/slist_hook.hpp +294 -0
- data/ext/boost/intrusive/splay_set.hpp +2575 -0
- data/ext/boost/intrusive/splay_set_hook.hpp +292 -0
- data/ext/boost/intrusive/splaytree.hpp +1784 -0
- data/ext/boost/intrusive/splaytree_algorithms.hpp +1008 -0
- data/ext/boost/intrusive/treap.hpp +1882 -0
- data/ext/boost/intrusive/treap_algorithms.hpp +919 -0
- data/ext/boost/intrusive/treap_set.hpp +2751 -0
- data/ext/boost/intrusive/trivial_value_traits.hpp +46 -0
- data/ext/boost/intrusive/unordered_set.hpp +2115 -0
- data/ext/boost/intrusive/unordered_set_hook.hpp +434 -0
- data/ext/boost/intrusive_ptr.hpp +18 -0
- data/ext/boost/math/common_factor_ct.hpp +180 -0
- data/ext/boost/math_fwd.hpp +108 -0
- data/ext/boost/move/detail/move_helpers.hpp +175 -0
- data/ext/boost/parameter.hpp +21 -0
- data/ext/boost/parameter/aux_/arg_list.hpp +459 -0
- data/ext/boost/parameter/aux_/cast.hpp +143 -0
- data/ext/boost/parameter/aux_/default.hpp +69 -0
- data/ext/boost/parameter/aux_/is_maybe.hpp +26 -0
- data/ext/boost/parameter/aux_/maybe.hpp +120 -0
- data/ext/boost/parameter/aux_/overloads.hpp +88 -0
- data/ext/boost/parameter/aux_/parameter_requirements.hpp +25 -0
- data/ext/boost/parameter/aux_/parenthesized_type.hpp +119 -0
- data/ext/boost/parameter/aux_/preprocessor/flatten.hpp +115 -0
- data/ext/boost/parameter/aux_/preprocessor/for_each.hpp +103 -0
- data/ext/boost/parameter/aux_/python/invoker.hpp +132 -0
- data/ext/boost/parameter/aux_/python/invoker_iterate.hpp +93 -0
- data/ext/boost/parameter/aux_/result_of0.hpp +36 -0
- data/ext/boost/parameter/aux_/set.hpp +67 -0
- data/ext/boost/parameter/aux_/tag.hpp +38 -0
- data/ext/boost/parameter/aux_/tagged_argument.hpp +188 -0
- data/ext/boost/parameter/aux_/template_keyword.hpp +47 -0
- data/ext/boost/parameter/aux_/unwrap_cv_reference.hpp +97 -0
- data/ext/boost/parameter/aux_/void.hpp +29 -0
- data/ext/boost/parameter/aux_/yesno.hpp +26 -0
- data/ext/boost/parameter/binding.hpp +106 -0
- data/ext/boost/parameter/config.hpp +14 -0
- data/ext/boost/parameter/keyword.hpp +152 -0
- data/ext/boost/parameter/macros.hpp +99 -0
- data/ext/boost/parameter/match.hpp +55 -0
- data/ext/boost/parameter/name.hpp +156 -0
- data/ext/boost/parameter/parameters.hpp +931 -0
- data/ext/boost/parameter/preprocessor.hpp +1178 -0
- data/ext/boost/parameter/python.hpp +735 -0
- data/ext/boost/parameter/value_type.hpp +108 -0
- data/ext/boost/pool/detail/for.m4 +107 -0
- data/ext/boost/pool/detail/guard.hpp +69 -0
- data/ext/boost/pool/detail/mutex.hpp +42 -0
- data/ext/boost/pool/detail/pool_construct.bat +24 -0
- data/ext/boost/pool/detail/pool_construct.ipp +852 -0
- data/ext/boost/pool/detail/pool_construct.m4 +84 -0
- data/ext/boost/pool/detail/pool_construct.sh +12 -0
- data/ext/boost/pool/detail/pool_construct_simple.bat +25 -0
- data/ext/boost/pool/detail/pool_construct_simple.ipp +43 -0
- data/ext/boost/pool/detail/pool_construct_simple.m4 +72 -0
- data/ext/boost/pool/detail/pool_construct_simple.sh +12 -0
- data/ext/boost/pool/object_pool.hpp +287 -0
- data/ext/boost/pool/pool.hpp +1024 -0
- data/ext/boost/pool/pool_alloc.hpp +488 -0
- data/ext/boost/pool/poolfwd.hpp +82 -0
- data/ext/boost/pool/simple_segregated_storage.hpp +377 -0
- data/ext/boost/pool/singleton_pool.hpp +251 -0
- data/ext/boost/preprocessor/arithmetic.hpp +25 -0
- data/ext/boost/preprocessor/arithmetic/detail/div_base.hpp +61 -0
- data/ext/boost/preprocessor/arithmetic/div.hpp +39 -0
- data/ext/boost/preprocessor/arithmetic/mod.hpp +39 -0
- data/ext/boost/preprocessor/arithmetic/mul.hpp +53 -0
- data/ext/boost/preprocessor/array.hpp +32 -0
- data/ext/boost/preprocessor/array/enum.hpp +33 -0
- data/ext/boost/preprocessor/array/insert.hpp +55 -0
- data/ext/boost/preprocessor/array/pop_back.hpp +37 -0
- data/ext/boost/preprocessor/array/pop_front.hpp +38 -0
- data/ext/boost/preprocessor/array/push_back.hpp +33 -0
- data/ext/boost/preprocessor/array/push_front.hpp +33 -0
- data/ext/boost/preprocessor/array/remove.hpp +54 -0
- data/ext/boost/preprocessor/array/replace.hpp +49 -0
- data/ext/boost/preprocessor/array/reverse.hpp +29 -0
- data/ext/boost/preprocessor/array/to_list.hpp +33 -0
- data/ext/boost/preprocessor/array/to_seq.hpp +33 -0
- data/ext/boost/preprocessor/array/to_tuple.hpp +22 -0
- data/ext/boost/preprocessor/assert_msg.hpp +17 -0
- data/ext/boost/preprocessor/comma.hpp +17 -0
- data/ext/boost/preprocessor/comparison.hpp +24 -0
- data/ext/boost/preprocessor/comparison/equal.hpp +34 -0
- data/ext/boost/preprocessor/comparison/greater.hpp +38 -0
- data/ext/boost/preprocessor/comparison/greater_equal.hpp +38 -0
- data/ext/boost/preprocessor/comparison/less.hpp +46 -0
- data/ext/boost/preprocessor/comparison/less_equal.hpp +39 -0
- data/ext/boost/preprocessor/comparison/not_equal.hpp +814 -0
- data/ext/boost/preprocessor/config/limits.hpp +30 -0
- data/ext/boost/preprocessor/control.hpp +22 -0
- data/ext/boost/preprocessor/control/deduce_d.hpp +22 -0
- data/ext/boost/preprocessor/control/detail/dmc/while.hpp +536 -0
- data/ext/boost/preprocessor/control/detail/edg/while.hpp +534 -0
- data/ext/boost/preprocessor/control/detail/msvc/while.hpp +277 -0
- data/ext/boost/preprocessor/control/expr_if.hpp +30 -0
- data/ext/boost/preprocessor/debug.hpp +18 -0
- data/ext/boost/preprocessor/debug/assert.hpp +44 -0
- data/ext/boost/preprocessor/debug/line.hpp +35 -0
- data/ext/boost/preprocessor/detail/dmc/auto_rec.hpp +286 -0
- data/ext/boost/preprocessor/detail/is_nullary.hpp +30 -0
- data/ext/boost/preprocessor/detail/is_unary.hpp +30 -0
- data/ext/boost/preprocessor/detail/null.hpp +17 -0
- data/ext/boost/preprocessor/detail/split.hpp +35 -0
- data/ext/boost/preprocessor/enum_params_with_defaults.hpp +17 -0
- data/ext/boost/preprocessor/enum_shifted.hpp +17 -0
- data/ext/boost/preprocessor/expand.hpp +17 -0
- data/ext/boost/preprocessor/expr_if.hpp +17 -0
- data/ext/boost/preprocessor/facilities.hpp +23 -0
- data/ext/boost/preprocessor/facilities/apply.hpp +34 -0
- data/ext/boost/preprocessor/facilities/expand.hpp +28 -0
- data/ext/boost/preprocessor/facilities/is_1.hpp +23 -0
- data/ext/boost/preprocessor/facilities/is_empty.hpp +43 -0
- data/ext/boost/preprocessor/facilities/is_empty_or_1.hpp +30 -0
- data/ext/boost/preprocessor/for.hpp +17 -0
- data/ext/boost/preprocessor/if.hpp +17 -0
- data/ext/boost/preprocessor/iteration.hpp +19 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/lower3.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/lower4.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/lower5.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/upper3.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/upper4.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/upper5.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/finish.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/iter/forward3.hpp +1338 -0
- data/ext/boost/preprocessor/iteration/detail/iter/forward4.hpp +1338 -0
- data/ext/boost/preprocessor/iteration/detail/iter/forward5.hpp +1338 -0
- data/ext/boost/preprocessor/iteration/detail/iter/reverse2.hpp +1296 -0
- data/ext/boost/preprocessor/iteration/detail/iter/reverse3.hpp +1296 -0
- data/ext/boost/preprocessor/iteration/detail/iter/reverse4.hpp +1296 -0
- data/ext/boost/preprocessor/iteration/detail/iter/reverse5.hpp +1296 -0
- data/ext/boost/preprocessor/iteration/detail/local.hpp +812 -0
- data/ext/boost/preprocessor/iteration/detail/rlocal.hpp +782 -0
- data/ext/boost/preprocessor/iteration/detail/self.hpp +21 -0
- data/ext/boost/preprocessor/iteration/detail/start.hpp +99 -0
- data/ext/boost/preprocessor/iteration/local.hpp +26 -0
- data/ext/boost/preprocessor/iteration/self.hpp +19 -0
- data/ext/boost/preprocessor/library.hpp +36 -0
- data/ext/boost/preprocessor/limits.hpp +17 -0
- data/ext/boost/preprocessor/list.hpp +37 -0
- data/ext/boost/preprocessor/list/at.hpp +39 -0
- data/ext/boost/preprocessor/list/cat.hpp +42 -0
- data/ext/boost/preprocessor/list/detail/dmc/fold_left.hpp +279 -0
- data/ext/boost/preprocessor/list/detail/edg/fold_left.hpp +536 -0
- data/ext/boost/preprocessor/list/detail/edg/fold_right.hpp +794 -0
- data/ext/boost/preprocessor/list/enum.hpp +41 -0
- data/ext/boost/preprocessor/list/filter.hpp +54 -0
- data/ext/boost/preprocessor/list/first_n.hpp +58 -0
- data/ext/boost/preprocessor/list/for_each.hpp +49 -0
- data/ext/boost/preprocessor/list/for_each_product.hpp +141 -0
- data/ext/boost/preprocessor/list/rest_n.hpp +55 -0
- data/ext/boost/preprocessor/list/size.hpp +58 -0
- data/ext/boost/preprocessor/list/to_array.hpp +123 -0
- data/ext/boost/preprocessor/list/to_seq.hpp +32 -0
- data/ext/boost/preprocessor/list/to_tuple.hpp +38 -0
- data/ext/boost/preprocessor/logical.hpp +29 -0
- data/ext/boost/preprocessor/logical/bitnor.hpp +38 -0
- data/ext/boost/preprocessor/logical/bitor.hpp +38 -0
- data/ext/boost/preprocessor/logical/bitxor.hpp +38 -0
- data/ext/boost/preprocessor/logical/nor.hpp +30 -0
- data/ext/boost/preprocessor/logical/not.hpp +30 -0
- data/ext/boost/preprocessor/logical/or.hpp +30 -0
- data/ext/boost/preprocessor/logical/xor.hpp +30 -0
- data/ext/boost/preprocessor/max.hpp +17 -0
- data/ext/boost/preprocessor/min.hpp +17 -0
- data/ext/boost/preprocessor/punctuation.hpp +20 -0
- data/ext/boost/preprocessor/punctuation/paren_if.hpp +38 -0
- data/ext/boost/preprocessor/repeat_3rd.hpp +17 -0
- data/ext/boost/preprocessor/repeat_from_to.hpp +17 -0
- data/ext/boost/preprocessor/repeat_from_to_2nd.hpp +17 -0
- data/ext/boost/preprocessor/repeat_from_to_3rd.hpp +17 -0
- data/ext/boost/preprocessor/repetition.hpp +32 -0
- data/ext/boost/preprocessor/repetition/deduce_r.hpp +22 -0
- data/ext/boost/preprocessor/repetition/deduce_z.hpp +22 -0
- data/ext/boost/preprocessor/repetition/detail/dmc/for.hpp +536 -0
- data/ext/boost/preprocessor/repetition/detail/edg/for.hpp +534 -0
- data/ext/boost/preprocessor/repetition/detail/msvc/for.hpp +277 -0
- data/ext/boost/preprocessor/repetition/enum_params_with_defaults.hpp +24 -0
- data/ext/boost/preprocessor/repetition/enum_shifted.hpp +68 -0
- data/ext/boost/preprocessor/repetition/enum_shifted_binary_params.hpp +51 -0
- data/ext/boost/preprocessor/repetition/enum_trailing.hpp +63 -0
- data/ext/boost/preprocessor/repetition/enum_trailing_binary_params.hpp +53 -0
- data/ext/boost/preprocessor/selection.hpp +18 -0
- data/ext/boost/preprocessor/selection/max.hpp +39 -0
- data/ext/boost/preprocessor/selection/min.hpp +39 -0
- data/ext/boost/preprocessor/seq.hpp +43 -0
- data/ext/boost/preprocessor/seq/cat.hpp +49 -0
- data/ext/boost/preprocessor/seq/detail/binary_transform.hpp +40 -0
- data/ext/boost/preprocessor/seq/detail/split.hpp +284 -0
- data/ext/boost/preprocessor/seq/filter.hpp +54 -0
- data/ext/boost/preprocessor/seq/first_n.hpp +30 -0
- data/ext/boost/preprocessor/seq/fold_left.hpp +1070 -0
- data/ext/boost/preprocessor/seq/fold_right.hpp +288 -0
- data/ext/boost/preprocessor/seq/for_each.hpp +60 -0
- data/ext/boost/preprocessor/seq/for_each_product.hpp +126 -0
- data/ext/boost/preprocessor/seq/insert.hpp +28 -0
- data/ext/boost/preprocessor/seq/pop_back.hpp +29 -0
- data/ext/boost/preprocessor/seq/pop_front.hpp +27 -0
- data/ext/boost/preprocessor/seq/push_back.hpp +19 -0
- data/ext/boost/preprocessor/seq/push_front.hpp +19 -0
- data/ext/boost/preprocessor/seq/remove.hpp +29 -0
- data/ext/boost/preprocessor/seq/replace.hpp +29 -0
- data/ext/boost/preprocessor/seq/rest_n.hpp +30 -0
- data/ext/boost/preprocessor/seq/reverse.hpp +39 -0
- data/ext/boost/preprocessor/seq/subseq.hpp +28 -0
- data/ext/boost/preprocessor/seq/to_array.hpp +28 -0
- data/ext/boost/preprocessor/seq/to_list.hpp +29 -0
- data/ext/boost/preprocessor/seq/to_tuple.hpp +27 -0
- data/ext/boost/preprocessor/seq/transform.hpp +48 -0
- data/ext/boost/preprocessor/slot.hpp +17 -0
- data/ext/boost/preprocessor/slot/counter.hpp +25 -0
- data/ext/boost/preprocessor/slot/detail/counter.hpp +269 -0
- data/ext/boost/preprocessor/slot/detail/slot1.hpp +267 -0
- data/ext/boost/preprocessor/slot/detail/slot2.hpp +267 -0
- data/ext/boost/preprocessor/slot/detail/slot3.hpp +267 -0
- data/ext/boost/preprocessor/slot/detail/slot4.hpp +267 -0
- data/ext/boost/preprocessor/slot/detail/slot5.hpp +267 -0
- data/ext/boost/preprocessor/tuple.hpp +28 -0
- data/ext/boost/preprocessor/tuple/enum.hpp +22 -0
- data/ext/boost/preprocessor/tuple/reverse.hpp +114 -0
- data/ext/boost/preprocessor/tuple/size.hpp +28 -0
- data/ext/boost/preprocessor/tuple/to_array.hpp +37 -0
- data/ext/boost/preprocessor/tuple/to_seq.hpp +114 -0
- data/ext/boost/preprocessor/variadic.hpp +23 -0
- data/ext/boost/preprocessor/variadic/to_array.hpp +32 -0
- data/ext/boost/preprocessor/variadic/to_list.hpp +25 -0
- data/ext/boost/preprocessor/variadic/to_seq.hpp +25 -0
- data/ext/boost/preprocessor/variadic/to_tuple.hpp +24 -0
- data/ext/boost/preprocessor/while.hpp +17 -0
- data/ext/boost/preprocessor/wstringize.hpp +29 -0
- data/ext/boost/smart_ptr/intrusive_ptr.hpp +324 -0
- data/ext/common/AccountsDatabase.h +3 -4
- data/ext/common/AgentsStarter.cpp +12 -15
- data/ext/common/AgentsStarter.h +54 -120
- data/ext/common/ApplicationPool2/AppTypes.cpp +12 -5
- data/ext/common/ApplicationPool2/AppTypes.h +21 -14
- data/ext/common/ApplicationPool2/Common.h +36 -19
- data/ext/common/ApplicationPool2/DirectSpawner.h +15 -16
- data/ext/common/ApplicationPool2/DummySpawner.h +9 -8
- data/ext/common/ApplicationPool2/ErrorRenderer.h +1 -1
- data/ext/common/ApplicationPool2/Group.h +304 -171
- data/ext/common/ApplicationPool2/Implementation.cpp +234 -125
- data/ext/common/ApplicationPool2/Options.h +50 -62
- data/ext/common/ApplicationPool2/Pool.h +285 -189
- data/ext/common/ApplicationPool2/Process.h +126 -115
- data/ext/common/ApplicationPool2/Session.h +70 -30
- data/ext/common/ApplicationPool2/SmartSpawner.h +19 -18
- data/ext/common/ApplicationPool2/Socket.h +57 -43
- data/ext/common/ApplicationPool2/SpawnObject.h +83 -0
- data/ext/common/ApplicationPool2/Spawner.h +59 -38
- data/ext/common/ApplicationPool2/SpawnerFactory.h +8 -14
- data/ext/common/ApplicationPool2/SuperGroup.h +69 -40
- data/ext/common/BackgroundEventLoop.cpp +48 -1
- data/ext/common/BackgroundEventLoop.h +3 -1
- data/ext/common/Constants.h +30 -8
- data/ext/common/DataStructures/HashedStaticString.h +103 -0
- data/ext/common/DataStructures/LString.h +396 -0
- data/ext/common/DataStructures/StringKeyTable.h +588 -0
- data/ext/common/EventedMessageServer.h +1 -0
- data/ext/common/FileDescriptor.h +5 -0
- data/ext/common/InstanceDirectory.h +240 -0
- data/ext/common/Logging.cpp +38 -13
- data/ext/common/Logging.h +53 -22
- data/ext/common/MemoryKit/mbuf.cpp +413 -0
- data/ext/common/MemoryKit/mbuf.h +266 -0
- data/ext/common/MemoryKit/palloc.cpp +337 -0
- data/ext/common/MemoryKit/palloc.h +121 -0
- data/ext/common/ResourceLocator.h +62 -6
- data/ext/common/SafeLibev.h +4 -4
- data/ext/common/ServerKit/AcceptLoadBalancer.h +275 -0
- data/ext/common/ServerKit/Channel.h +747 -0
- data/ext/common/ServerKit/Client.h +166 -0
- data/ext/common/ServerKit/ClientRef.h +130 -0
- data/ext/common/ServerKit/Context.h +129 -0
- data/ext/common/ServerKit/Errors.h +103 -0
- data/ext/common/ServerKit/FdSinkChannel.h +206 -0
- data/ext/common/ServerKit/FdSourceChannel.h +230 -0
- data/ext/common/ServerKit/FileBufferedChannel.h +1399 -0
- data/ext/common/ServerKit/FileBufferedFdSinkChannel.h +228 -0
- data/ext/common/ServerKit/HeaderTable.h +472 -0
- data/ext/common/ServerKit/Hooks.h +79 -0
- data/ext/common/ServerKit/HttpChunkedBodyParser.h +289 -0
- data/ext/common/ServerKit/HttpChunkedBodyParserState.h +70 -0
- data/ext/common/ServerKit/HttpClient.h +94 -0
- data/ext/common/ServerKit/HttpHeaderParser.h +477 -0
- data/ext/common/ServerKit/HttpHeaderParserState.h +60 -0
- data/ext/common/ServerKit/HttpRequest.h +276 -0
- data/ext/common/ServerKit/HttpRequestRef.h +130 -0
- data/ext/common/ServerKit/HttpServer.h +1152 -0
- data/ext/common/ServerKit/Implementation.cpp +47 -0
- data/ext/common/ServerKit/Server.h +1040 -0
- data/ext/common/ServerKit/http_parser.cpp +2259 -0
- data/ext/common/ServerKit/http_parser.h +330 -0
- data/ext/common/StaticString.h +8 -0
- data/ext/common/Utils.cpp +14 -12
- data/ext/common/Utils.h +9 -103
- data/ext/common/Utils/BufferedIO.h +1 -0
- data/ext/common/Utils/CachedFileStat.hpp +1 -7
- data/ext/common/Utils/DateParsing.h +379 -0
- data/ext/common/Utils/FileChangeChecker.h +3 -9
- data/ext/common/Utils/Hasher.cpp +52 -0
- data/ext/common/Utils/Hasher.h +58 -0
- data/ext/common/Utils/IOUtils.cpp +62 -62
- data/ext/common/Utils/JsonUtils.h +21 -0
- data/ext/common/Utils/OptionParsing.h +75 -0
- data/ext/common/Utils/StrIntUtils.cpp +112 -19
- data/ext/common/Utils/StrIntUtils.h +52 -12
- data/ext/common/Utils/StrIntUtilsNoStrictAliasing.cpp +174 -0
- data/ext/common/Utils/VariantMap.h +18 -7
- data/ext/common/Utils/modp_b64.cpp +290 -0
- data/ext/common/Utils/modp_b64.h +241 -0
- data/ext/common/Utils/modp_b64_data.h +479 -0
- data/ext/common/Utils/sysqueue.h +811 -0
- data/ext/common/agents/Base.cpp +71 -98
- data/ext/common/agents/Base.h +11 -3
- data/ext/common/agents/HelperAgent/AdminServer.h +690 -0
- data/ext/common/agents/HelperAgent/Main.cpp +899 -487
- data/ext/common/agents/HelperAgent/OptionParser.h +311 -0
- data/ext/common/agents/HelperAgent/RequestHandler.h +315 -2548
- data/ext/common/agents/HelperAgent/RequestHandler/AppResponse.h +225 -0
- data/ext/common/agents/HelperAgent/RequestHandler/BufferBody.cpp +93 -0
- data/ext/common/agents/HelperAgent/RequestHandler/CheckoutSession.cpp +346 -0
- data/ext/common/agents/HelperAgent/RequestHandler/Client.h +54 -0
- data/ext/common/agents/HelperAgent/RequestHandler/ForwardResponse.cpp +846 -0
- data/ext/common/agents/HelperAgent/RequestHandler/Hooks.cpp +231 -0
- data/ext/common/agents/HelperAgent/RequestHandler/InitRequest.cpp +434 -0
- data/ext/common/agents/HelperAgent/RequestHandler/Request.h +149 -0
- data/ext/common/agents/HelperAgent/RequestHandler/SendRequest.cpp +887 -0
- data/ext/common/agents/HelperAgent/RequestHandler/TurboCaching.h +293 -0
- data/ext/common/agents/HelperAgent/RequestHandler/Utils.cpp +301 -0
- data/ext/common/agents/HelperAgent/ResponseCache.h +624 -0
- data/ext/common/agents/HelperAgent/SystemMetricsTool.cpp +21 -23
- data/ext/common/agents/LoggingAgent/AdminServer.h +369 -0
- data/ext/common/agents/LoggingAgent/LoggingServer.h +1 -0
- data/ext/common/agents/LoggingAgent/Main.cpp +422 -215
- data/ext/common/agents/LoggingAgent/OptionParser.h +167 -0
- data/ext/common/agents/LoggingAgent/RemoteSender.h +3 -3
- data/ext/common/agents/Main.cpp +107 -0
- data/ext/common/agents/SpawnPreparer/Main.cpp +207 -0
- data/ext/common/agents/TempDirToucher/Main.cpp +429 -0
- data/ext/common/agents/Watchdog/AdminServer.h +390 -0
- data/ext/common/agents/Watchdog/AgentWatcher.cpp +7 -5
- data/ext/common/agents/Watchdog/HelperAgentWatcher.cpp +18 -39
- data/ext/common/agents/Watchdog/InstanceDirToucher.cpp +116 -0
- data/ext/common/agents/Watchdog/LoggingAgentWatcher.cpp +13 -17
- data/ext/common/agents/Watchdog/Main.cpp +743 -202
- data/ext/libeio/eio.c +17 -0
- data/ext/libeio/eio.h +2 -0
- data/ext/nginx/CacheLocationConfig.c +177 -198
- data/ext/nginx/CacheLocationConfig.c.erb +35 -22
- data/ext/nginx/Configuration.c +402 -236
- data/ext/nginx/Configuration.h +12 -5
- data/ext/nginx/ConfigurationCommands.c +35 -15
- data/ext/nginx/ConfigurationCommands.c.erb +4 -4
- data/ext/nginx/ConfigurationFields.h +9 -5
- data/ext/nginx/ConfigurationFields.h.erb +3 -1
- data/ext/nginx/ContentHandler.c +393 -362
- data/ext/nginx/CreateLocationConfig.c +8 -4
- data/ext/nginx/CreateLocationConfig.c.erb +8 -3
- data/ext/nginx/MergeLocationConfig.c +36 -6
- data/ext/nginx/MergeLocationConfig.c.erb +42 -1
- data/ext/nginx/ngx_http_passenger_module.c +28 -15
- data/ext/oxt/detail/backtrace_disabled.hpp +2 -1
- data/ext/oxt/detail/backtrace_enabled.hpp +15 -2
- data/ext/oxt/implementation.cpp +92 -20
- data/ext/oxt/thread.hpp +5 -0
- data/ext/ruby/extconf.rb +3 -6
- data/ext/ruby/passenger_native_support.c +13 -40
- data/helper-scripts/download_binaries/extconf.rb +4 -4
- data/helper-scripts/meteor-loader.rb +12 -112
- data/helper-scripts/node-loader.js +3 -91
- data/helper-scripts/rack-loader.rb +13 -14
- data/helper-scripts/rack-preloader.rb +16 -17
- data/helper-scripts/wsgi-loader.py +11 -7
- data/lib/phusion_passenger.rb +100 -79
- data/lib/phusion_passenger/abstract_installer.rb +28 -3
- data/lib/phusion_passenger/admin_tools.rb +3 -3
- data/lib/phusion_passenger/admin_tools/instance.rb +207 -0
- data/lib/phusion_passenger/admin_tools/instance_registry.rb +98 -0
- data/lib/phusion_passenger/apache2/config_options.rb +72 -22
- data/lib/phusion_passenger/common_library.rb +79 -14
- data/lib/phusion_passenger/config/about_command.rb +17 -23
- data/lib/phusion_passenger/config/admin_command_command.rb +175 -0
- data/lib/phusion_passenger/config/agent_compiler.rb +170 -0
- data/lib/phusion_passenger/config/command.rb +1 -4
- data/lib/phusion_passenger/config/compile_agent_command.rb +102 -0
- data/lib/phusion_passenger/config/compile_nginx_engine_command.rb +112 -0
- data/lib/phusion_passenger/config/detach_process_command.rb +32 -10
- data/lib/phusion_passenger/config/download_agent_command.rb +285 -0
- data/lib/phusion_passenger/config/download_nginx_engine_command.rb +281 -0
- data/lib/phusion_passenger/config/install_agent_command.rb +174 -0
- data/lib/phusion_passenger/config/install_standalone_runtime_command.rb +231 -0
- data/lib/phusion_passenger/config/installation_utils.rb +241 -0
- data/lib/phusion_passenger/config/list_instances_command.rb +13 -25
- data/lib/phusion_passenger/config/main.rb +43 -14
- data/lib/phusion_passenger/config/nginx_engine_compiler.rb +337 -0
- data/lib/phusion_passenger/config/reopen_logs_command.rb +110 -0
- data/lib/phusion_passenger/config/restart_app_command.rb +61 -14
- data/lib/phusion_passenger/config/system_metrics_command.rb +2 -1
- data/lib/phusion_passenger/config/utils.rb +64 -39
- data/lib/phusion_passenger/config/validate_install_command.rb +2 -2
- data/lib/phusion_passenger/constants.rb +27 -6
- data/lib/phusion_passenger/debug_logging.rb +32 -15
- data/lib/phusion_passenger/loader_shared_helpers.rb +2 -5
- data/lib/phusion_passenger/message_client.rb +21 -22
- data/lib/phusion_passenger/native_support.rb +26 -31
- data/lib/phusion_passenger/nginx/config_options.rb +32 -19
- data/lib/phusion_passenger/packaging.rb +7 -3
- data/lib/phusion_passenger/platform_info/cxx_portability.rb +1 -2
- data/lib/phusion_passenger/platform_info/depcheck_specs/libs.rb +3 -4
- data/lib/phusion_passenger/platform_info/operating_system.rb +6 -6
- data/lib/phusion_passenger/preloader_shared_helpers.rb +2 -2
- data/lib/phusion_passenger/rack/out_of_band_gc.rb +2 -2
- data/lib/phusion_passenger/rack/thread_handler_extension.rb +168 -65
- data/lib/phusion_passenger/request_handler.rb +47 -82
- data/lib/phusion_passenger/request_handler/thread_handler.rb +46 -10
- data/lib/phusion_passenger/ruby_core_enhancements.rb +25 -77
- data/lib/phusion_passenger/ruby_core_io_enhancements.rb +108 -0
- data/lib/phusion_passenger/standalone/app_finder.rb +39 -59
- data/lib/phusion_passenger/standalone/command.rb +27 -275
- data/lib/phusion_passenger/standalone/command2.rb +292 -0
- data/lib/phusion_passenger/standalone/config_utils.rb +87 -0
- data/lib/phusion_passenger/standalone/control_utils.rb +88 -0
- data/lib/phusion_passenger/standalone/main.rb +69 -71
- data/lib/phusion_passenger/standalone/start2_command.rb +799 -0
- data/lib/phusion_passenger/standalone/start_command.rb +406 -467
- data/lib/phusion_passenger/standalone/start_command/builtin_engine.rb +167 -0
- data/lib/phusion_passenger/standalone/start_command/nginx_engine.rb +165 -0
- data/lib/phusion_passenger/standalone/status_command.rb +64 -23
- data/lib/phusion_passenger/standalone/stop_command.rb +69 -32
- data/lib/phusion_passenger/standalone/version_command.rb +1 -5
- data/lib/phusion_passenger/utils.rb +0 -4
- data/lib/phusion_passenger/utils/json.rb +70 -4
- data/lib/phusion_passenger/utils/progress_bar.rb +56 -0
- data/lib/phusion_passenger/utils/tee_input.rb +3 -3
- data/lib/phusion_passenger/utils/unseekable_socket.rb +30 -0
- data/packaging/rpm/nginx_spec/nginx.spec.template +4 -3
- data/packaging/rpm/passenger_spec/passenger.spec.template +6 -10
- data/packaging/rpm/setup-system +2 -1
- data/resources/oss-binaries.phusionpassenger.com.crt +208 -0
- data/resources/templates/config/agent_compiler/confirm_enable_optimizations.txt.erb +5 -0
- data/resources/templates/config/installation_utils/cannot_create_user_support_binaries_dir.txt.erb +15 -0
- data/resources/templates/config/installation_utils/download_tool_missing.txt.erb +7 -0
- data/resources/templates/config/installation_utils/passenger_not_installed_as_root.txt.erb +12 -0
- data/resources/templates/config/installation_utils/support_binaries_dir_not_writable_despite_running_as_root.txt.erb +13 -0
- data/resources/templates/config/installation_utils/unexpected_filesystem_problem.txt.erb +16 -0
- data/{packaging/debian/debian_specs/passenger/patches/series → resources/templates/config/installation_utils/user_support_binaries_dir_not_writable.txt.erb} +0 -0
- data/resources/templates/nginx/nginx_module_sources_not_available.txt.erb +2 -2
- data/resources/templates/standalone/config.erb +14 -16
- data/resources/templates/standalone/possible_solutions_for_download_and_extraction_problems.txt.erb +1 -1
- data/test/.rspec +1 -0
- data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +20 -17
- data/test/cxx/ApplicationPool2/OptionsTest.cpp +0 -14
- data/test/cxx/ApplicationPool2/PoolTest.cpp +113 -90
- data/test/cxx/ApplicationPool2/ProcessTest.cpp +18 -27
- data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +51 -53
- data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +55 -57
- data/test/cxx/BufferedIOTest.cpp +40 -40
- data/test/cxx/CxxTestMain.cpp +4 -22
- data/test/cxx/DataStructures/LStringTest.cpp +275 -0
- data/test/cxx/DataStructures/StringKeyTableTest.cpp +199 -0
- data/test/cxx/MemoryKit/MbufTest.cpp +213 -0
- data/test/cxx/MessageServerTest.cpp +62 -55
- data/test/cxx/RequestHandlerTest.cpp +26 -27
- data/test/cxx/ServerKit/ChannelTest.cpp +1467 -0
- data/test/cxx/ServerKit/FileBufferedChannelTest.cpp +817 -0
- data/test/cxx/ServerKit/HeaderTableTest.cpp +171 -0
- data/test/cxx/ServerKit/HttpServerTest.cpp +1503 -0
- data/test/cxx/ServerKit/ServerTest.cpp +408 -0
- data/test/cxx/TestSupport.cpp +51 -15
- data/test/cxx/TestSupport.h +31 -21
- data/test/cxx/UnionStationTest.cpp +121 -122
- data/test/cxx/UtilsTest.cpp +9 -33
- data/test/integration_tests/apache2_tests.rb +65 -27
- data/test/integration_tests/downloaded_binaries_tests.rb +30 -6
- data/test/integration_tests/native_packaging_spec.rb +32 -17
- data/test/integration_tests/nginx_tests.rb +28 -10
- data/test/integration_tests/shared/example_webapp_tests.rb +40 -27
- data/test/integration_tests/standalone_tests.rb +232 -169
- data/test/ruby/debug_logging_spec.rb +44 -40
- data/test/ruby/rails3.0/preloader_spec.rb +1 -1
- data/test/ruby/rails3.1/preloader_spec.rb +1 -1
- data/test/ruby/rails3.2/preloader_spec.rb +1 -1
- data/test/ruby/rails4.0/preloader_spec.rb +1 -1
- data/test/ruby/rails4.1/preloader_spec.rb +1 -1
- data/test/ruby/request_handler_spec.rb +62 -24
- data/test/ruby/shared/loader_sharedspec.rb +10 -9
- data/test/ruby/shared/rails/union_station_extensions_sharedspec.rb +23 -22
- data/test/ruby/spec_helper.rb +2 -11
- data/test/ruby/standalone/runtime_installer_spec.rb +15 -13
- data/test/ruby/union_station_spec.rb +45 -40
- data/test/ruby/utils/tee_input_spec.rb +5 -5
- data/test/ruby/utils_spec.rb +3 -39
- data/test/stub/apache2/httpd.conf.erb +5 -2
- data/test/stub/nginx/nginx.conf.erb +3 -1
- data/test/support/apache2_controller.rb +25 -25
- data/test/support/nginx_controller.rb +14 -14
- data/test/support/test_helper.rb +74 -75
- metadata +439 -643
- metadata.gz.asc +7 -7
- data/ext/common/MultiLibeio.cpp +0 -204
- data/ext/common/MultiLibeio.h +0 -67
- data/ext/common/ServerInstanceDir.h +0 -402
- data/ext/common/Utils/Base64.cpp +0 -143
- data/ext/common/Utils/Base64.h +0 -83
- data/ext/common/Utils/HttpHeaderBufferer.h +0 -184
- data/ext/common/Utils/PriorityQueue.h +0 -54
- data/ext/common/Utils/StreamBoyerMooreHorspool.h +0 -512
- data/ext/common/Utils/fib.c +0 -699
- data/ext/common/Utils/fib.h +0 -101
- data/ext/common/Utils/fibpriv.h +0 -67
- data/ext/common/agents/EnvPrinter.c +0 -16
- data/ext/common/agents/HelperAgent/AgentOptions.h +0 -109
- data/ext/common/agents/HelperAgent/FileBackedPipe.h +0 -732
- data/ext/common/agents/HelperAgent/RequestHandler.cpp +0 -294
- data/ext/common/agents/HelperAgent/ScgiRequestParser.h +0 -457
- data/ext/common/agents/LoggingAgent/AdminController.h +0 -96
- data/ext/common/agents/SpawnPreparer.cpp +0 -206
- data/ext/common/agents/TempDirToucher.c +0 -383
- data/ext/common/agents/Watchdog/ServerInstanceDirToucher.cpp +0 -116
- data/helper-scripts/classic-rails-loader.rb +0 -166
- data/helper-scripts/classic-rails-preloader.rb +0 -193
- data/lib/phusion_passenger/admin_tools/server_instance.rb +0 -339
- data/lib/phusion_passenger/classic_rails/cgi_fixed.rb +0 -68
- data/lib/phusion_passenger/classic_rails/thread_handler_extension.rb +0 -40
- data/lib/phusion_passenger/platform_info/openssl.rb +0 -61
- data/lib/phusion_passenger/standalone/config_file.rb +0 -119
- data/lib/phusion_passenger/standalone/help_command.rb +0 -57
- data/lib/phusion_passenger/standalone/runtime_installer.rb +0 -712
- data/lib/phusion_passenger/standalone/runtime_locator.rb +0 -170
- data/lib/phusion_passenger/standalone/utils.rb +0 -58
- data/lib/phusion_passenger/utils/tmpdir.rb +0 -69
- data/packaging/debian/LICENSE.md +0 -19
- data/packaging/debian/README.md +0 -320
- data/packaging/debian/Vagrantfile +0 -25
- data/packaging/debian/build +0 -210
- data/packaging/debian/debian_specs/nginx/changelog +0 -1989
- data/packaging/debian/debian_specs/nginx/compat.erb +0 -5
- data/packaging/debian/debian_specs/nginx/conf/fastcgi.conf +0 -25
- data/packaging/debian/debian_specs/nginx/conf/fastcgi_params +0 -24
- data/packaging/debian/debian_specs/nginx/conf/koi-utf +0 -109
- data/packaging/debian/debian_specs/nginx/conf/koi-win +0 -103
- data/packaging/debian/debian_specs/nginx/conf/mime.types +0 -89
- data/packaging/debian/debian_specs/nginx/conf/nginx.conf.erb +0 -97
- data/packaging/debian/debian_specs/nginx/conf/proxy_params +0 -4
- data/packaging/debian/debian_specs/nginx/conf/scgi_params +0 -16
- data/packaging/debian/debian_specs/nginx/conf/sites-available/default.erb +0 -93
- data/packaging/debian/debian_specs/nginx/conf/snippets/fastcgi-php.conf +0 -13
- data/packaging/debian/debian_specs/nginx/conf/snippets/snakeoil.conf +0 -5
- data/packaging/debian/debian_specs/nginx/conf/uwsgi_params +0 -16
- data/packaging/debian/debian_specs/nginx/conf/win-utf +0 -125
- data/packaging/debian/debian_specs/nginx/control.erb +0 -226
- data/packaging/debian/debian_specs/nginx/copyright +0 -196
- data/packaging/debian/debian_specs/nginx/debian-full.lintian-overrides +0 -1
- data/packaging/debian/debian_specs/nginx/gbp.conf +0 -2
- data/packaging/debian/debian_specs/nginx/help/docs/fcgiwrap +0 -14
- data/packaging/debian/debian_specs/nginx/help/docs/php +0 -119
- data/packaging/debian/debian_specs/nginx/help/docs/support-irc +0 -28
- data/packaging/debian/debian_specs/nginx/help/docs/upstream +0 -51
- data/packaging/debian/debian_specs/nginx/help/examples/drupal +0 -114
- data/packaging/debian/debian_specs/nginx/help/examples/http +0 -59
- data/packaging/debian/debian_specs/nginx/help/examples/mail +0 -30
- data/packaging/debian/debian_specs/nginx/help/examples/mailman +0 -59
- data/packaging/debian/debian_specs/nginx/help/examples/nginx.conf +0 -34
- data/packaging/debian/debian_specs/nginx/help/examples/nginx_modsite +0 -162
- data/packaging/debian/debian_specs/nginx/help/examples/virtual_hosts +0 -155
- data/packaging/debian/debian_specs/nginx/help/examples/wordpress +0 -74
- data/packaging/debian/debian_specs/nginx/helpers.rb +0 -41
- data/packaging/debian/debian_specs/nginx/index-debian.html.in +0 -32
- data/packaging/debian/debian_specs/nginx/index-ubuntu.html.in +0 -32
- data/packaging/debian/debian_specs/nginx/index.html.erb +0 -10
- data/packaging/debian/debian_specs/nginx/modules/README.Modules-versions +0 -65
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/README.markdown +0 -510
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/config +0 -5
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/doc/HttpHeadersMoreModule.wiki +0 -395
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ddebug.h +0 -119
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_filter_module.c +0 -348
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_filter_module.h +0 -80
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_in.c +0 -826
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_in.h +0 -26
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_out.c +0 -716
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_out.h +0 -26
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_util.c +0 -380
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_util.h +0 -52
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/util/build.sh +0 -32
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/valgrind.suppress +0 -215
- data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/ChangeLog +0 -35
- data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/LICENSE +0 -25
- data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/README.md +0 -93
- data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/config +0 -4
- data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/ngx_http_auth_pam_module.c +0 -462
- data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/CHANGES +0 -66
- data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/LICENSE +0 -26
- data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/README.md +0 -171
- data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/TODO.md +0 -7
- data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/config +0 -21
- data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/ngx_cache_purge_module.c +0 -1803
- data/packaging/debian/debian_specs/nginx/modules/nginx-dav-ext-module/README +0 -29
- data/packaging/debian/debian_specs/nginx/modules/nginx-dav-ext-module/config +0 -9
- data/packaging/debian/debian_specs/nginx/modules/nginx-dav-ext-module/ngx_http_dav_ext_module.c +0 -824
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/README +0 -139
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/README_AUTO_LIB +0 -395
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/TODO +0 -1
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/actions/array +0 -10
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/actions/palloc +0 -8
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/build +0 -597
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/action_replacements +0 -5
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/action_types +0 -12
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/conf_args +0 -22
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/conf_locs +0 -25
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/conf_macros +0 -35
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/contexts +0 -22
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/header_files +0 -3
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/headers +0 -4
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/module_dependencies +0 -5
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/modules_optional +0 -15
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/prefixes +0 -2
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/array.h +0 -7
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/conf_cmd_basic.h +0 -43
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/conf_merge.h +0 -78
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/palloc.h +0 -6
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/text/autogen +0 -12
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/config +0 -49
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/core/action_macros +0 -63
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/core/conf_cmds +0 -62
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/modules/set_var +0 -124
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/patches/more_logging_info +0 -48
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/upstream/list +0 -45
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/examples/README +0 -12
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/examples/http/set_var/config +0 -4
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/examples/http/set_var/ngx_http_set_var_examples_module.c +0 -136
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/ngx_auto_lib_core +0 -797
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/notes/CHANGES +0 -17
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/notes/LICENSE +0 -24
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_array.h +0 -113
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_conf_cmd_basic.h +0 -2203
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_conf_cmd_extra.h +0 -5423
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_conf_merge.h +0 -227
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_config.c +0 -72
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_config.h +0 -98
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_includes.h +0 -66
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_palloc.h +0 -112
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/patches/auto_config +0 -16
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/patches/expose_rewrite_functions +0 -291
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/patches/rewrite_phase_handler +0 -19
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/hash/md5.h +0 -117
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/hash/murmurhash2.c +0 -77
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/hash/sha.h +0 -200
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk.c +0 -155
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk.h +0 -58
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_buf.c +0 -43
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_buf.h +0 -5
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_path.c +0 -129
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_path.h +0 -30
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_value.c +0 -192
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_value.h +0 -21
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_conf_file.c +0 -396
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_conf_file.h +0 -44
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_debug.c +0 -72
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_debug.h +0 -171
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_encoding.c +0 -57
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_encoding.h +0 -12
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_hash.c +0 -82
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_hash.h +0 -45
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_http.c +0 -138
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_http.h +0 -3
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_http_headers.h +0 -35
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_log.c +0 -3
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_log.h +0 -165
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_parse.h +0 -67
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_path.c +0 -583
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_path.h +0 -22
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_process.c +0 -20
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_process.h +0 -12
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_regex.c +0 -215
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_regex.h +0 -7
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_rewrite.c +0 -103
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_rewrite.h +0 -26
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_set_var.c +0 -602
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_set_var.h +0 -44
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_string.c +0 -434
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_string.h +0 -37
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_string_util.h +0 -14
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_upstream_list.c +0 -205
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_upstream_list.h +0 -27
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_uri.c +0 -45
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_uri.h +0 -6
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/LICENSE +0 -25
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/README.markdown +0 -1850
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/config +0 -5
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/doc/HttpEchoModule.wiki +0 -1558
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ddebug.h +0 -109
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_echo.c +0 -344
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_echo.h +0 -25
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_filter.c +0 -282
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_filter.h +0 -15
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_foreach.c +0 -183
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_foreach.h +0 -16
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_handler.c +0 -429
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_handler.h +0 -18
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_location.c +0 -178
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_location.h +0 -13
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_module.c +0 -667
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_module.h +0 -137
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_request_info.c +0 -452
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_request_info.h +0 -31
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_sleep.c +0 -208
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_sleep.h +0 -16
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_subrequest.c +0 -788
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_subrequest.h +0 -19
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_timer.c +0 -96
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_timer.h +0 -13
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_util.c +0 -298
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_util.h +0 -58
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_var.c +0 -110
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_var.h +0 -9
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/util/build.sh +0 -45
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/util/releng +0 -8
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/util/wiki2pod.pl +0 -131
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/valgrind.suppress +0 -38
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/LICENCE +0 -24
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/README +0 -206
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/changelog.txt +0 -54
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/config +0 -26
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/protocol.txt +0 -191
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_defs.c +0 -59
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_defs.h +0 -73
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_module.c +0 -783
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_module.h +0 -31
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_module_setup.c +0 -361
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_types.h +0 -120
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/memory/store.c +0 -1180
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/memory/store.h +0 -1
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_http_push_module_ipc.c +0 -146
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_http_push_module_ipc.h +0 -5
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_http_push_store.h +0 -51
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_rwlock.c +0 -178
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_rwlock.h +0 -5
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/rbtree_util.c +0 -246
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/rbtree_util.h +0 -9
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/Changes +0 -51
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/README.markdown +0 -6954
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/config +0 -363
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/doc/HttpLuaModule.wiki +0 -5898
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/dtrace/ngx_lua_provider.d +0 -61
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/misc/recv-until-pm/Makefile +0 -3
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/misc/recv-until-pm/lib/RecvUntil.pm +0 -138
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/misc/recv-until-pm/t/sanity.t +0 -140
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/api/ngx_http_lua_api.h +0 -52
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ddebug.h +0 -82
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_accessby.c +0 -377
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_accessby.h +0 -22
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_api.c +0 -77
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_args.c +0 -537
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_args.h +0 -20
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_bodyfilterby.c +0 -632
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_bodyfilterby.h +0 -31
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_cache.c +0 -296
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_cache.h +0 -24
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_capturefilter.c +0 -175
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_capturefilter.h +0 -20
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_clfactory.c +0 -887
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_clfactory.h +0 -22
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_common.h +0 -478
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_config.c +0 -67
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_config.h +0 -19
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_consts.c +0 -148
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_consts.h +0 -20
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_contentby.c +0 -369
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_contentby.h +0 -26
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_control.c +0 -483
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_control.h +0 -20
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_coroutine.c +0 -379
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_coroutine.h +0 -23
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ctx.c +0 -216
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ctx.h +0 -23
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_directive.c +0 -1081
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_directive.h +0 -56
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_exception.c +0 -58
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_exception.h +0 -33
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headerfilterby.c +0 -302
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headerfilterby.h +0 -29
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers.c +0 -1370
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers.h +0 -22
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_in.c +0 -782
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_in.h +0 -22
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_out.c +0 -625
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_out.h +0 -23
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initby.c +0 -42
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initby.h +0 -23
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initworkerby.c +0 -320
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initworkerby.h +0 -25
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_log.c +0 -300
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_log.h +0 -20
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_logby.c +0 -227
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_logby.h +0 -22
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_misc.c +0 -252
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_misc.h +0 -20
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_module.c +0 -924
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ndk.c +0 -184
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ndk.h +0 -21
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_output.c +0 -794
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_output.h +0 -28
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_pcrefix.c +0 -106
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_pcrefix.h +0 -23
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_phase.c +0 -94
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_phase.h +0 -13
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_probe.h +0 -85
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_regex.c +0 -2468
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_regex.h +0 -22
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_body.c +0 -1169
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_body.h +0 -20
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_method.c +0 -252
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_method.h +0 -19
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_rewriteby.c +0 -351
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_rewriteby.h +0 -22
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_script.c +0 -538
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_script.h +0 -86
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_setby.c +0 -216
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_setby.h +0 -15
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_shdict.c +0 -1844
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_shdict.h +0 -52
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_sleep.c +0 -191
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_sleep.h +0 -20
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_tcp.c +0 -5314
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_tcp.h +0 -156
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_udp.c +0 -1624
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_udp.h +0 -56
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_string.c +0 -704
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_string.h +0 -20
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_subrequest.c +0 -1741
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_subrequest.h +0 -46
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_time.c +0 -278
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_time.h +0 -21
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_timer.c +0 -661
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_timer.h +0 -20
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uri.c +0 -110
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uri.h +0 -20
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uthread.c +0 -283
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uthread.h +0 -36
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_util.c +0 -3972
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_util.h +0 -423
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_variable.c +0 -499
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_variable.h +0 -20
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_worker.c +0 -64
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_worker.h +0 -17
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/tapset/ngx_lua.stp +0 -5
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/build.sh +0 -39
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/build2.sh +0 -55
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/fix-comments +0 -27
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/gdbinit +0 -415
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/ngx-links +0 -62
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/reindex +0 -64
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/releng +0 -8
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/retab +0 -8
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/revim +0 -102
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/run_test.sh +0 -10
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/update-readme.sh +0 -4
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/valgrind.suppress +0 -144
- data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/CHANGES +0 -107
- data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/LICENSE +0 -25
- data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/Makefile +0 -8
- data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/README +0 -329
- data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/config +0 -3
- data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/ngx_http_uploadprogress_module.c +0 -1774
- data/packaging/debian/debian_specs/nginx/modules/nginx-upstream-fair/README +0 -53
- data/packaging/debian/debian_specs/nginx/modules/nginx-upstream-fair/config +0 -3
- data/packaging/debian/debian_specs/nginx/modules/nginx-upstream-fair/ngx_http_upstream_fair_module.c +0 -1356
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/CHANGELOG.md +0 -37
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/HACKING.md +0 -24
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/LICENSE +0 -20
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/README.rst +0 -182
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/config +0 -8
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/nginx-0.6-support.patch +0 -23
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/ngx_http_fancyindex_module.c +0 -1305
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/template.awk +0 -52
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/template.h +0 -103
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/template.html +0 -102
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/CHANGES +0 -37
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/README +0 -141
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/config +0 -3
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/doc/README.google_code_home_page.wiki +0 -120
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/doc/README.html +0 -199
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/doc/README.wiki +0 -123
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/ngx_http_subs_filter_module.c +0 -1298
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/README +0 -275
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/AutoInstall.pm +0 -820
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install.pm +0 -470
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/AutoInstall.pm +0 -82
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Base.pm +0 -83
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Can.pm +0 -81
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Fetch.pm +0 -93
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Include.pm +0 -34
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Makefile.pm +0 -415
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Metadata.pm +0 -716
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/TestBase.pm +0 -29
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Win32.pm +0 -64
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/WriteAll.pm +0 -63
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Spiffy.pm +0 -539
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Base.pm +0 -682
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Base/Filter.pm +0 -341
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Builder.pm +0 -1413
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Builder/Module.pm +0 -81
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/More.pm +0 -735
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx.pm +0 -315
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx/LWP.pm +0 -524
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx/Socket.pm +0 -1749
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx/Util.pm +0 -874
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs.t +0 -136
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_capture.t +0 -32
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_fix_string.t +0 -32
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_regex.t +0 -108
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_types.t +0 -59
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/test.sh +0 -5
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/util/update-readme.sh +0 -7
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/util/wiki2google_code_homepage.pl +0 -29
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/util/wiki2pod.pl +0 -129
- data/packaging/debian/debian_specs/nginx/nginx-common.NEWS +0 -135
- data/packaging/debian/debian_specs/nginx/nginx-common.README.Debian +0 -45
- data/packaging/debian/debian_specs/nginx/nginx-common.dirs.erb +0 -32
- data/packaging/debian/debian_specs/nginx/nginx-common.install +0 -3
- data/packaging/debian/debian_specs/nginx/nginx-common.lintian-overrides +0 -2
- data/packaging/debian/debian_specs/nginx/nginx-common.manpages +0 -1
- data/packaging/debian/debian_specs/nginx/nginx-common.nginx.default +0 -10
- data/packaging/debian/debian_specs/nginx/nginx-common.nginx.init.erb +0 -214
- data/packaging/debian/debian_specs/nginx/nginx-common.nginx.logrotate +0 -18
- data/packaging/debian/debian_specs/nginx/nginx-common.nginx.service.erb +0 -37
- data/packaging/debian/debian_specs/nginx/nginx-common.postinst.erb +0 -66
- data/packaging/debian/debian_specs/nginx/nginx-common.postrm.erb +0 -46
- data/packaging/debian/debian_specs/nginx/nginx-common.preinst +0 -47
- data/packaging/debian/debian_specs/nginx/nginx-common.prerm.erb +0 -28
- data/packaging/debian/debian_specs/nginx/nginx-doc.docs +0 -2
- data/packaging/debian/debian_specs/nginx/nginx-doc.examples +0 -1
- data/packaging/debian/debian_specs/nginx/nginx-extras.install.erb +0 -17
- data/packaging/debian/debian_specs/nginx/nginx-extras.lintian-overrides +0 -1
- data/packaging/debian/debian_specs/nginx/nginx-extras.postinst.erb +0 -44
- data/packaging/debian/debian_specs/nginx/nginx-extras.prerm +0 -22
- data/packaging/debian/debian_specs/nginx/nginx.1 +0 -47
- data/packaging/debian/debian_specs/nginx/patches/perl-use-dpkg-buildflags.patch +0 -23
- data/packaging/debian/debian_specs/nginx/patches/series +0 -1
- data/packaging/debian/debian_specs/nginx/rules.erb +0 -185
- data/packaging/debian/debian_specs/nginx/source/format +0 -1
- data/packaging/debian/debian_specs/nginx/tests/control +0 -4
- data/packaging/debian/debian_specs/nginx/ufw/nginx +0 -14
- data/packaging/debian/debian_specs/nginx/upstream/signing-key.asc +0 -34
- data/packaging/debian/debian_specs/nginx/watch +0 -3
- data/packaging/debian/debian_specs/passenger/README.Debian +0 -12
- data/packaging/debian/debian_specs/passenger/changelog +0 -316
- data/packaging/debian/debian_specs/passenger/compat +0 -1
- data/packaging/debian/debian_specs/passenger/control.erb +0 -123
- data/packaging/debian/debian_specs/passenger/copyright +0 -385
- data/packaging/debian/debian_specs/passenger/helpers.rb +0 -24
- data/packaging/debian/debian_specs/passenger/libapache2-mod-passenger.install +0 -3
- data/packaging/debian/debian_specs/passenger/libapache2-mod-passenger.postinst +0 -36
- data/packaging/debian/debian_specs/passenger/libapache2-mod-passenger.prerm +0 -15
- data/packaging/debian/debian_specs/passenger/locations.ini.erb +0 -14
- data/packaging/debian/debian_specs/passenger/passenger-dev.install.erb +0 -3
- data/packaging/debian/debian_specs/passenger/passenger-doc.install.erb +0 -2
- data/packaging/debian/debian_specs/passenger/passenger.conf +0 -6
- data/packaging/debian/debian_specs/passenger/passenger.docs +0 -4
- data/packaging/debian/debian_specs/passenger/passenger.install.erb +0 -16
- data/packaging/debian/debian_specs/passenger/passenger.load +0 -3
- data/packaging/debian/debian_specs/passenger/passenger.manpages +0 -3
- data/packaging/debian/debian_specs/passenger/passenger_free_ruby.c +0 -29
- data/packaging/debian/debian_specs/passenger/passenger_ruby_utils.c +0 -54
- data/packaging/debian/debian_specs/passenger/passenger_system_ruby.c.erb +0 -37
- data/packaging/debian/debian_specs/passenger/rules.erb +0 -84
- data/packaging/debian/debian_specs/passenger/source/format +0 -1
- data/packaging/debian/debian_specs/passenger_enterprise/README.Debian +0 -12
- data/packaging/debian/debian_specs/passenger_enterprise/changelog +0 -316
- data/packaging/debian/debian_specs/passenger_enterprise/compat +0 -1
- data/packaging/debian/debian_specs/passenger_enterprise/control.erb +0 -123
- data/packaging/debian/debian_specs/passenger_enterprise/copyright +0 -385
- data/packaging/debian/debian_specs/passenger_enterprise/helpers.rb +0 -2
- data/packaging/debian/debian_specs/passenger_enterprise/libapache2-mod-passenger-enterprise.install +0 -3
- data/packaging/debian/debian_specs/passenger_enterprise/libapache2-mod-passenger-enterprise.postinst +0 -36
- data/packaging/debian/debian_specs/passenger_enterprise/libapache2-mod-passenger-enterprise.prerm +0 -15
- data/packaging/debian/debian_specs/passenger_enterprise/locations.ini.erb +0 -14
- data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise-dev.install.erb +0 -3
- data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise-doc.install.erb +0 -2
- data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise.docs +0 -4
- data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise.install.erb +0 -14
- data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise.manpages +0 -3
- data/packaging/debian/debian_specs/passenger_enterprise/passenger.conf +0 -6
- data/packaging/debian/debian_specs/passenger_enterprise/passenger.load +0 -3
- data/packaging/debian/debian_specs/passenger_enterprise/passenger_free_ruby.c.erb +0 -1
- data/packaging/debian/debian_specs/passenger_enterprise/passenger_ruby_utils.c.erb +0 -1
- data/packaging/debian/debian_specs/passenger_enterprise/passenger_system_ruby.c.erb +0 -1
- data/packaging/debian/debian_specs/passenger_enterprise/patches/series +0 -0
- data/packaging/debian/debian_specs/passenger_enterprise/rules.erb +0 -84
- data/packaging/debian/debian_specs/passenger_enterprise/source/format +0 -1
- data/packaging/debian/docker_images/Makefile +0 -38
- data/packaging/debian/docker_images/buildbox/CONTAINER_VERSION.txt +0 -0
- data/packaging/debian/docker_images/buildbox/Dockerfile +0 -3
- data/packaging/debian/docker_images/buildbox/Gemfile +0 -9
- data/packaging/debian/docker_images/buildbox/Gemfile.lock +0 -42
- data/packaging/debian/docker_images/buildbox/install.sh +0 -85
- data/packaging/debian/docker_images/buildbox/pbuilderrc +0 -4
- data/packaging/debian/docker_images/buildbox/sudoers.conf +0 -6
- data/packaging/debian/docker_images/setup-buildbox-docker-image +0 -7
- data/packaging/debian/docker_images/setup-testbox-docker-image-debian-6 +0 -7
- data/packaging/debian/docker_images/setup-testbox-docker-image-debian-7 +0 -7
- data/packaging/debian/docker_images/setup-testbox-docker-image-debian-8 +0 -7
- data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-12.04 +0 -7
- data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-14.04 +0 -7
- data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-15.04 +0 -7
- data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-15.10 +0 -7
- data/packaging/debian/docker_images/testbox-debian-6/Dockerfile +0 -3
- data/packaging/debian/docker_images/testbox-debian-6/Gemfile +0 -2
- data/packaging/debian/docker_images/testbox-debian-6/Gemfile.lock +0 -23
- data/packaging/debian/docker_images/testbox-debian-6/argparse.py +0 -2374
- data/packaging/debian/docker_images/testbox-debian-6/install.sh +0 -78
- data/packaging/debian/docker_images/testbox-debian-7/Dockerfile +0 -3
- data/packaging/debian/docker_images/testbox-debian-7/Gemfile +0 -2
- data/packaging/debian/docker_images/testbox-debian-7/Gemfile.lock +0 -23
- data/packaging/debian/docker_images/testbox-debian-7/install.sh +0 -71
- data/packaging/debian/docker_images/testbox-debian-8/Dockerfile +0 -3
- data/packaging/debian/docker_images/testbox-debian-8/Gemfile +0 -2
- data/packaging/debian/docker_images/testbox-debian-8/Gemfile.lock +0 -23
- data/packaging/debian/docker_images/testbox-debian-8/install.sh +0 -70
- data/packaging/debian/docker_images/testbox-ubuntu-12.04/Dockerfile +0 -3
- data/packaging/debian/docker_images/testbox-ubuntu-12.04/Gemfile +0 -2
- data/packaging/debian/docker_images/testbox-ubuntu-12.04/Gemfile.lock +0 -23
- data/packaging/debian/docker_images/testbox-ubuntu-12.04/install.sh +0 -69
- data/packaging/debian/docker_images/testbox-ubuntu-14.04/Dockerfile +0 -3
- data/packaging/debian/docker_images/testbox-ubuntu-14.04/Gemfile +0 -2
- data/packaging/debian/docker_images/testbox-ubuntu-14.04/Gemfile.lock +0 -23
- data/packaging/debian/docker_images/testbox-ubuntu-14.04/install.sh +0 -69
- data/packaging/debian/docker_images/testbox-ubuntu-15.04/Dockerfile +0 -3
- data/packaging/debian/docker_images/testbox-ubuntu-15.04/Gemfile +0 -2
- data/packaging/debian/docker_images/testbox-ubuntu-15.04/Gemfile.lock +0 -23
- data/packaging/debian/docker_images/testbox-ubuntu-15.04/install.sh +0 -69
- data/packaging/debian/docker_images/testbox-ubuntu-15.10/Dockerfile +0 -3
- data/packaging/debian/docker_images/testbox-ubuntu-15.10/Gemfile +0 -2
- data/packaging/debian/docker_images/testbox-ubuntu-15.10/Gemfile.lock +0 -23
- data/packaging/debian/docker_images/testbox-ubuntu-15.10/install.sh +0 -69
- data/packaging/debian/internal/build/Rakefile +0 -235
- data/packaging/debian/internal/build/build-passenger-orig-tarball.sh +0 -76
- data/packaging/debian/internal/build/build-source-package.rb +0 -121
- data/packaging/debian/internal/build/download-nginx-orig-tarball.sh +0 -17
- data/packaging/debian/internal/build/rakefile_support.rb +0 -96
- data/packaging/debian/internal/build/setup-environment-essentials.sh +0 -15
- data/packaging/debian/internal/build/setup-environment.sh +0 -29
- data/packaging/debian/internal/lib/distro_info.rb +0 -82
- data/packaging/debian/internal/lib/distro_info.sh +0 -303
- data/packaging/debian/internal/lib/distro_info.sh.erb +0 -65
- data/packaging/debian/internal/lib/library.sh +0 -83
- data/packaging/debian/internal/lib/preprocessor.rb +0 -173
- data/packaging/debian/internal/lib/tracking.rb +0 -95
- data/packaging/debian/internal/lib/tracking_category.rb +0 -45
- data/packaging/debian/internal/lib/tracking_database.rb +0 -132
- data/packaging/debian/internal/lib/tracking_task.rb +0 -148
- data/packaging/debian/internal/lib/utils.rb +0 -78
- data/packaging/debian/internal/publish/Rakefile +0 -97
- data/packaging/debian/internal/publish/oss-binaries.phusionpassenger.com-fingerprint.txt +0 -1
- data/packaging/debian/internal/publish/packagecloud_fingerprint.txt +0 -1
- data/packaging/debian/internal/publish/passenger_website_fingerprint.txt +0 -1
- data/packaging/debian/internal/publish/preinit.sh +0 -7
- data/packaging/debian/internal/publish/rakefile_support.rb +0 -183
- data/packaging/debian/internal/scripts/gpg_noninteractive/gpg +0 -11
- data/packaging/debian/internal/scripts/initccache.sh +0 -35
- data/packaging/debian/internal/scripts/inituidgid.sh +0 -19
- data/packaging/debian/internal/scripts/my_init +0 -340
- data/packaging/debian/internal/scripts/pin_certificates +0 -34
- data/packaging/debian/internal/scripts/regen_distro_info_script.sh +0 -3
- data/packaging/debian/internal/scripts/setup-vagrant.sh +0 -12
- data/packaging/debian/internal/scripts/setuser +0 -31
- data/packaging/debian/internal/shell/initpbuilder.sh +0 -3
- data/packaging/debian/internal/shell/preinit.sh +0 -28
- data/packaging/debian/internal/shell/sudoers.conf +0 -1
- data/packaging/debian/internal/test/apache/apache-24.conf +0 -5
- data/packaging/debian/internal/test/apache/apache-pre-24.conf +0 -4
- data/packaging/debian/internal/test/apache/vhost.conf +0 -17
- data/packaging/debian/internal/test/misc/config.json +0 -15
- data/packaging/debian/internal/test/misc/hosts.conf +0 -4
- data/packaging/debian/internal/test/misc/init.sh +0 -25
- data/packaging/debian/internal/test/misc/nodejs_test_app.js +0 -6
- data/packaging/debian/internal/test/misc/python_test_app.py +0 -3
- data/packaging/debian/internal/test/misc/ruby_test_app.rb +0 -5
- data/packaging/debian/internal/test/misc/test_support.rb +0 -61
- data/packaging/debian/internal/test/nginx/vhost.conf +0 -23
- data/packaging/debian/internal/test/system_web_server_test.rb +0 -126
- data/packaging/debian/internal/test/test.sh +0 -141
- data/packaging/debian/jenkins/publish/clear_caches.rb +0 -48
- data/packaging/debian/jenkins/publish/publish.sh +0 -69
- data/packaging/debian/jenkins/test/test.sh +0 -63
- data/packaging/debian/passenger_apt_automation.sublime-project +0 -14
- data/packaging/debian/publish +0 -172
- data/packaging/debian/shell +0 -116
- data/packaging/debian/test +0 -142
- data/packaging/rpm/passenger_spec/rubygem-passenger-4.0.18-gcc47-include-sys_types.patch +0 -45
- data/test/cxx/Base64Test.cpp +0 -50
- data/test/cxx/FileBackedPipeTest.cpp +0 -626
- data/test/cxx/HttpHeaderBuffererTest.cpp +0 -257
- data/test/cxx/ScgiRequestParserTest.cpp +0 -423
- data/test/cxx/ServerInstanceDirTest.cpp +0 -175
- data/test/ruby/admin_tools_spec.rb +0 -360
- data/test/ruby/classic_rails/loader_spec.rb +0 -46
- data/test/ruby/classic_rails/preloader_spec.rb +0 -52
- data/test/ruby/standalone/runtime_locator_spec.rb +0 -214
- data/test/stub/rails2.3/Rakefile +0 -10
- data/test/stub/rails2.3/app/controllers/application_controller.rb +0 -10
- data/test/stub/rails2.3/app/controllers/bar_controller_1.rb +0 -5
- data/test/stub/rails2.3/app/controllers/bar_controller_2.rb +0 -5
- data/test/stub/rails2.3/app/controllers/foo_controller.rb +0 -21
- data/test/stub/rails2.3/app/helpers/application_helper.rb +0 -3
- data/test/stub/rails2.3/app/helpers/bar_helper.rb +0 -2
- data/test/stub/rails2.3/app/helpers/foo_helper.rb +0 -2
- data/test/stub/rails2.3/config/boot.rb +0 -110
- data/test/stub/rails2.3/config/database.yml +0 -19
- data/test/stub/rails2.3/config/environment.rb +0 -62
- data/test/stub/rails2.3/config/environments/development.rb +0 -17
- data/test/stub/rails2.3/config/environments/production.rb +0 -18
- data/test/stub/rails2.3/config/environments/staging.rb +0 -18
- data/test/stub/rails2.3/config/initializers/inflections.rb +0 -10
- data/test/stub/rails2.3/config/initializers/mime_types.rb +0 -5
- data/test/stub/rails2.3/config/routes.rb +0 -35
- data/test/stub/rails2.3/log/.gitignore +0 -1
- data/test/stub/rails2.3/public/.gitignore +0 -1
- data/test/stub/rails2.3/script/about +0 -3
- data/test/stub/rails2.3/script/console +0 -3
- data/test/stub/rails2.3/script/dbconsole +0 -3
- data/test/stub/rails2.3/script/destroy +0 -3
- data/test/stub/rails2.3/script/generate +0 -3
- data/test/stub/rails2.3/script/performance/benchmarker +0 -3
- data/test/stub/rails2.3/script/performance/profiler +0 -3
- data/test/stub/rails2.3/script/performance/request +0 -3
- data/test/stub/rails2.3/script/plugin +0 -3
- data/test/stub/rails2.3/script/process/inspector +0 -3
- data/test/stub/rails2.3/script/process/reaper +0 -3
- data/test/stub/rails2.3/script/process/spawner +0 -3
- data/test/stub/rails2.3/script/runner +0 -3
- data/test/stub/rails2.3/script/server +0 -3
- data/test/stub/rails2.3/tmp/cache/.gitignore +0 -1
- data/test/stub/rails2.3/tmp/pids/.gitignore +0 -1
- data/test/stub/rails2.3/tmp/sessions/.gitignore +0 -1
- data/test/stub/rails2.3/tmp/sockets/.gitignore +0 -1
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
* Phusion Passenger - https://www.phusionpassenger.com/
|
3
|
-
* Copyright (c) 2010-
|
3
|
+
* Copyright (c) 2010-2014 Phusion
|
4
4
|
*
|
5
5
|
* "Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.
|
6
6
|
*
|
@@ -104,6 +104,7 @@ private:
|
|
104
104
|
result.push_back(&options.ruby);
|
105
105
|
result.push_back(&options.python);
|
106
106
|
result.push_back(&options.nodejs);
|
107
|
+
result.push_back(&options.environmentVariables);
|
107
108
|
result.push_back(&options.loggingAgentAddress);
|
108
109
|
result.push_back(&options.loggingAgentUsername);
|
109
110
|
result.push_back(&options.loggingAgentPassword);
|
@@ -158,7 +159,7 @@ public:
|
|
158
159
|
* application, this is the folder that contains 'app/', 'public/', 'config/',
|
159
160
|
* etc. This must be a valid directory, but the path does not have to be absolute.
|
160
161
|
*/
|
161
|
-
|
162
|
+
HashedStaticString appRoot;
|
162
163
|
|
163
164
|
/**
|
164
165
|
* A name used by ApplicationPool to uniquely identify an application.
|
@@ -168,7 +169,7 @@ public:
|
|
168
169
|
*
|
169
170
|
* If left empty, then the app root is used as the app group name.
|
170
171
|
*/
|
171
|
-
|
172
|
+
HashedStaticString appGroupName;
|
172
173
|
|
173
174
|
/** The application's type, used for determining the command to invoke to
|
174
175
|
* spawn an application process as well as determining the startup file's
|
@@ -267,9 +268,12 @@ public:
|
|
267
268
|
|
268
269
|
/**
|
269
270
|
* Environment variables which should be passed to the spawned application
|
270
|
-
* process.
|
271
|
+
* process. This is a base64-encoded string of key-value pairs, with each
|
272
|
+
* element terminated by a NUL character. For example:
|
273
|
+
*
|
274
|
+
* base64("PATH\0/usr/bin\0RUBY\0/usr/bin/ruby\0")
|
271
275
|
*/
|
272
|
-
|
276
|
+
StaticString environmentVariables;
|
273
277
|
|
274
278
|
/** Whether debugger support should be enabled. */
|
275
279
|
bool debugger;
|
@@ -396,6 +400,11 @@ public:
|
|
396
400
|
*/
|
397
401
|
unsigned long maxRequests;
|
398
402
|
|
403
|
+
/** If the current time (in microseconds) has already been queried, set it
|
404
|
+
* here. Pool will use this timestamp instead of querying it again.
|
405
|
+
*/
|
406
|
+
unsigned long long currentTime;
|
407
|
+
|
399
408
|
/** When true, Pool::get() and Pool::asyncGet() will create the necessary
|
400
409
|
* SuperGroup and Group structures just as normally, and will even handle
|
401
410
|
* restarting logic, but will not actually spawn any processes and will not
|
@@ -433,33 +442,35 @@ public:
|
|
433
442
|
* Creates a new Options object with the default values filled in.
|
434
443
|
* One must still set appRoot manually, after having used this constructor.
|
435
444
|
*/
|
436
|
-
Options()
|
437
|
-
logLevel
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
445
|
+
Options()
|
446
|
+
: logLevel(DEFAULT_LOG_LEVEL),
|
447
|
+
startTimeout(90 * 1000),
|
448
|
+
environment(DEFAULT_APP_ENV, sizeof(DEFAULT_APP_ENV) - 1),
|
449
|
+
baseURI("/", 1),
|
450
|
+
spawnMethod(DEFAULT_SPAWN_METHOD, sizeof(DEFAULT_SPAWN_METHOD) - 1),
|
451
|
+
defaultUser("nobody", sizeof("nobody") - 1),
|
452
|
+
ruby(DEFAULT_RUBY, sizeof(DEFAULT_RUBY) - 1),
|
453
|
+
python(DEFAULT_PYTHON, sizeof(DEFAULT_PYTHON) - 1),
|
454
|
+
nodejs(DEFAULT_NODEJS, sizeof(DEFAULT_NODEJS) - 1),
|
455
|
+
rights(DEFAULT_BACKEND_ACCOUNT_RIGHTS),
|
456
|
+
debugger(false),
|
457
|
+
loadShellEnvvars(true),
|
458
|
+
analytics(false),
|
459
|
+
raiseInternalError(false),
|
460
|
+
|
461
|
+
minProcesses(1),
|
462
|
+
maxProcesses(0),
|
463
|
+
maxPreloaderIdleTime(-1),
|
464
|
+
maxOutOfBandWorkInstances(1),
|
465
|
+
maxRequestQueueSize(100),
|
466
|
+
|
467
|
+
stickySessionId(0),
|
468
|
+
statThrottleRate(DEFAULT_STAT_THROTTLE_RATE),
|
469
|
+
maxRequests(0),
|
470
|
+
currentTime(0),
|
471
|
+
noop(false)
|
472
|
+
/*********************************/
|
473
|
+
{
|
463
474
|
/*********************************/
|
464
475
|
}
|
465
476
|
|
@@ -493,10 +504,6 @@ public:
|
|
493
504
|
for (i = 0; i < otherStrings.size(); i++) {
|
494
505
|
otherLen += otherStrings[i]->size() + 1;
|
495
506
|
}
|
496
|
-
for (i = 0; i < other.environmentVariables.size(); i++) {
|
497
|
-
otherLen += environmentVariables[i].first.size() + 1;
|
498
|
-
otherLen += environmentVariables[i].second.size() + 1;
|
499
|
-
}
|
500
507
|
|
501
508
|
shared_array<char> data(new char[otherLen]);
|
502
509
|
end = data.get();
|
@@ -518,30 +525,12 @@ public:
|
|
518
525
|
*str = StaticString(pos, end - pos - 1);
|
519
526
|
}
|
520
527
|
|
521
|
-
// Copy environmentVariables names and values into the internal storage area.
|
522
|
-
for (i = 0; i < other.environmentVariables.size(); i++) {
|
523
|
-
const pair<StaticString, StaticString> &p = other.environmentVariables[i];
|
524
|
-
|
525
|
-
environmentVariables[i] = make_pair(
|
526
|
-
StaticString(end, p.first.size()),
|
527
|
-
StaticString(end + p.first.size() + 1, p.second.size())
|
528
|
-
);
|
529
|
-
|
530
|
-
// Copy over string data.
|
531
|
-
memcpy(end, p.first.data(), p.first.size());
|
532
|
-
end += p.first.size();
|
533
|
-
*end = '\0';
|
534
|
-
end++;
|
535
|
-
|
536
|
-
// Copy over value data.
|
537
|
-
memcpy(end, p.second.data(), p.second.size());
|
538
|
-
end += p.second.size();
|
539
|
-
*end = '\0';
|
540
|
-
end++;
|
541
|
-
}
|
542
|
-
|
543
528
|
storage = data;
|
544
529
|
|
530
|
+
// Fix up HashedStaticStrings' hashes.
|
531
|
+
appRoot.setHash(other.appRoot.hash());
|
532
|
+
appGroupName.setHash(other.appGroupName.hash());
|
533
|
+
|
545
534
|
return *this;
|
546
535
|
}
|
547
536
|
|
@@ -549,6 +538,7 @@ public:
|
|
549
538
|
hostName = StaticString();
|
550
539
|
uri = StaticString();
|
551
540
|
stickySessionId = 0;
|
541
|
+
currentTime = 0;
|
552
542
|
noop = false;
|
553
543
|
return detachFromUnionStationTransaction();
|
554
544
|
}
|
@@ -634,7 +624,7 @@ public:
|
|
634
624
|
* Returns the app group name. If there is no explicitly set app group name
|
635
625
|
* then the app root is considered to be the app group name.
|
636
626
|
*/
|
637
|
-
|
627
|
+
const HashedStaticString &getAppGroupName() const {
|
638
628
|
if (appGroupName.empty()) {
|
639
629
|
return appRoot;
|
640
630
|
} else {
|
@@ -643,9 +633,7 @@ public:
|
|
643
633
|
}
|
644
634
|
|
645
635
|
string getStartCommand(const ResourceLocator &resourceLocator) const {
|
646
|
-
if (appType == P_STATIC_STRING("
|
647
|
-
return ruby + "\t" + resourceLocator.getHelperScriptsDir() + "/classic-rails-loader.rb";
|
648
|
-
} else if (appType == P_STATIC_STRING("rack")) {
|
636
|
+
if (appType == P_STATIC_STRING("rack")) {
|
649
637
|
return ruby + "\t" + resourceLocator.getHelperScriptsDir() + "/rack-loader.rb";
|
650
638
|
} else if (appType == P_STATIC_STRING("wsgi")) {
|
651
639
|
return python + "\t" + resourceLocator.getHelperScriptsDir() + "/wsgi-loader.py";
|
@@ -37,6 +37,11 @@
|
|
37
37
|
#include <boost/make_shared.hpp>
|
38
38
|
#include <boost/function.hpp>
|
39
39
|
#include <boost/foreach.hpp>
|
40
|
+
#include <boost/pool/object_pool.hpp>
|
41
|
+
// We use boost::container::vector instead of std::vector, because the
|
42
|
+
// former does not allocate memory in its default constructor. This is
|
43
|
+
// useful for post lock action vectors which often remain empty.
|
44
|
+
#include <boost/container/vector.hpp>
|
40
45
|
#include <boost/date_time/posix_time/posix_time_types.hpp>
|
41
46
|
#include <oxt/dynamic_thread_group.hpp>
|
42
47
|
#include <oxt/backtrace.hpp>
|
@@ -47,6 +52,7 @@
|
|
47
52
|
#include <ApplicationPool2/Session.h>
|
48
53
|
#include <ApplicationPool2/SpawnerFactory.h>
|
49
54
|
#include <ApplicationPool2/Options.h>
|
55
|
+
#include <MemoryKit/palloc.h>
|
50
56
|
#include <Logging.h>
|
51
57
|
#include <Exceptions.h>
|
52
58
|
#include <Hooks.h>
|
@@ -68,6 +74,8 @@ using namespace oxt;
|
|
68
74
|
|
69
75
|
class Pool: public boost::enable_shared_from_this<Pool> {
|
70
76
|
public:
|
77
|
+
typedef void (*AbortLongRunningConnectionsCallback)(const ProcessPtr &process);
|
78
|
+
|
71
79
|
struct InspectOptions {
|
72
80
|
bool colorize;
|
73
81
|
bool verbose;
|
@@ -128,6 +136,7 @@ public:
|
|
128
136
|
mutable boost::mutex syncher;
|
129
137
|
unsigned int max;
|
130
138
|
unsigned long long maxIdleTime;
|
139
|
+
bool selfchecking;
|
131
140
|
|
132
141
|
boost::condition_variable garbageCollectionCond;
|
133
142
|
|
@@ -150,7 +159,10 @@ public:
|
|
150
159
|
SHUT_DOWN
|
151
160
|
} lifeStatus;
|
152
161
|
|
153
|
-
SuperGroupMap superGroups;
|
162
|
+
mutable SuperGroupMap superGroups;
|
163
|
+
boost::mutex sessionObjectPoolSyncher;
|
164
|
+
object_pool<Session> sessionObjectPool;
|
165
|
+
psg_pool_t *palloc;
|
154
166
|
|
155
167
|
/**
|
156
168
|
* get() requests that...
|
@@ -193,14 +205,14 @@ public:
|
|
193
205
|
const VariantMap *agentsOptions;
|
194
206
|
DebugSupportPtr debugSupport;
|
195
207
|
|
196
|
-
static void runAllActions(const vector<Callback> &actions) {
|
197
|
-
vector<Callback>::const_iterator it, end = actions.end();
|
208
|
+
static void runAllActions(const boost::container::vector<Callback> &actions) {
|
209
|
+
boost::container::vector<Callback>::const_iterator it, end = actions.end();
|
198
210
|
for (it = actions.begin(); it != end; it++) {
|
199
211
|
(*it)();
|
200
212
|
}
|
201
213
|
}
|
202
214
|
|
203
|
-
static void runAllActionsWithCopy(vector<Callback> actions) {
|
215
|
+
static void runAllActionsWithCopy(boost::container::vector<Callback> actions) {
|
204
216
|
runAllActions(actions);
|
205
217
|
}
|
206
218
|
|
@@ -214,16 +226,25 @@ public:
|
|
214
226
|
|
215
227
|
void verifyInvariants() const {
|
216
228
|
// !a || b: logical equivalent of a IMPLIES b.
|
217
|
-
|
218
|
-
|
229
|
+
#ifndef NDEBUG
|
230
|
+
if (!selfchecking) {
|
231
|
+
return;
|
232
|
+
}
|
233
|
+
assert(!( !getWaitlist.empty() ) || ( atFullCapacityUnlocked() ));
|
234
|
+
assert(!( !atFullCapacityUnlocked() ) || ( getWaitlist.empty() ));
|
235
|
+
#endif
|
219
236
|
}
|
220
237
|
|
221
238
|
void verifyExpensiveInvariants() const {
|
222
239
|
#ifndef NDEBUG
|
240
|
+
if (!selfchecking) {
|
241
|
+
return;
|
242
|
+
}
|
223
243
|
vector<GetWaiter>::const_iterator it, end = getWaitlist.end();
|
224
244
|
for (it = getWaitlist.begin(); it != end; it++) {
|
225
245
|
const GetWaiter &waiter = *it;
|
226
|
-
|
246
|
+
const SuperGroupPtr *superGroup;
|
247
|
+
assert(!superGroups.lookup(waiter.options.getAppGroupName(), &superGroup));
|
227
248
|
}
|
228
249
|
#endif
|
229
250
|
}
|
@@ -234,14 +255,16 @@ public:
|
|
234
255
|
UPDATE_TRACE_POINT();
|
235
256
|
verifyExpensiveInvariants();
|
236
257
|
UPDATE_TRACE_POINT();
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
258
|
+
|
259
|
+
SuperGroupMap::ConstIterator sg_it(superGroups);
|
260
|
+
while (*sg_it != NULL) {
|
261
|
+
const SuperGroupPtr &superGroup = sg_it.getValue();
|
262
|
+
superGroup->verifyInvariants();
|
263
|
+
foreach (GroupPtr group, superGroup->groups) {
|
242
264
|
group->verifyInvariants();
|
243
265
|
group->verifyExpensiveInvariants();
|
244
266
|
}
|
267
|
+
sg_it.next();
|
245
268
|
}
|
246
269
|
}
|
247
270
|
|
@@ -289,11 +312,11 @@ public:
|
|
289
312
|
ProcessPtr findOldestIdleProcess(const Group *exclude = NULL) const {
|
290
313
|
ProcessPtr oldestIdleProcess;
|
291
314
|
|
292
|
-
SuperGroupMap::
|
293
|
-
|
294
|
-
const SuperGroupPtr &superGroup =
|
295
|
-
const
|
296
|
-
|
315
|
+
SuperGroupMap::ConstIterator sg_it(superGroups);
|
316
|
+
while (*sg_it != NULL) {
|
317
|
+
const SuperGroupPtr &superGroup = sg_it.getValue();
|
318
|
+
const SuperGroup::GroupList &groups = superGroup->groups;
|
319
|
+
SuperGroup::GroupList::const_iterator g_it, g_end = groups.end();
|
297
320
|
for (g_it = groups.begin(); g_it != g_end; g_it++) {
|
298
321
|
const GroupPtr &group = *g_it;
|
299
322
|
if (group.get() == exclude) {
|
@@ -311,6 +334,7 @@ public:
|
|
311
334
|
}
|
312
335
|
}
|
313
336
|
}
|
337
|
+
sg_it.next();
|
314
338
|
}
|
315
339
|
|
316
340
|
return oldestIdleProcess;
|
@@ -319,11 +343,11 @@ public:
|
|
319
343
|
ProcessPtr findBestProcessToTrash() const {
|
320
344
|
ProcessPtr oldestProcess;
|
321
345
|
|
322
|
-
SuperGroupMap::
|
323
|
-
|
324
|
-
const SuperGroupPtr &superGroup =
|
325
|
-
const
|
326
|
-
|
346
|
+
SuperGroupMap::ConstIterator sg_it(superGroups);
|
347
|
+
while (*sg_it != NULL) {
|
348
|
+
const SuperGroupPtr &superGroup = sg_it.getValue();
|
349
|
+
const SuperGroup::GroupList &groups = superGroup->groups;
|
350
|
+
SuperGroup::GroupList::const_iterator g_it, g_end = groups.end();
|
327
351
|
for (g_it = groups.begin(); g_it != g_end; g_it++) {
|
328
352
|
const GroupPtr &group = *g_it;
|
329
353
|
const ProcessList &processes = group->enabledProcesses;
|
@@ -336,6 +360,7 @@ public:
|
|
336
360
|
}
|
337
361
|
}
|
338
362
|
}
|
363
|
+
sg_it.next();
|
339
364
|
}
|
340
365
|
|
341
366
|
return oldestProcess;
|
@@ -345,7 +370,7 @@ public:
|
|
345
370
|
* This function assigns sessions to them by calling get() on the corresponding
|
346
371
|
* SuperGroups, or by creating more SuperGroups, in so far the new capacity allows.
|
347
372
|
*/
|
348
|
-
void assignSessionsToGetWaiters(vector<Callback> &postLockActions) {
|
373
|
+
void assignSessionsToGetWaiters(boost::container::vector<Callback> &postLockActions) {
|
349
374
|
bool done = false;
|
350
375
|
vector<GetWaiter>::iterator it, end = getWaitlist.end();
|
351
376
|
vector<GetWaiter> newWaitlist;
|
@@ -358,13 +383,13 @@ public:
|
|
358
383
|
SessionPtr session = superGroup->get(waiter.options, waiter.callback,
|
359
384
|
postLockActions);
|
360
385
|
if (session != NULL) {
|
361
|
-
postLockActions.push_back(boost::bind(
|
386
|
+
postLockActions.push_back(boost::bind(GetCallback::call,
|
362
387
|
waiter.callback, session, ExceptionPtr()));
|
363
388
|
}
|
364
389
|
/* else: the callback has now been put in
|
365
390
|
* the group's get wait list.
|
366
391
|
*/
|
367
|
-
} else if (!
|
392
|
+
} else if (!atFullCapacityUnlocked()) {
|
368
393
|
createSuperGroupAndAsyncGetFromIt(waiter.options, waiter.callback,
|
369
394
|
postLockActions);
|
370
395
|
} else {
|
@@ -381,10 +406,10 @@ public:
|
|
381
406
|
template<typename Queue>
|
382
407
|
static void assignExceptionToGetWaiters(Queue &getWaitlist,
|
383
408
|
const ExceptionPtr &exception,
|
384
|
-
vector<Callback> &postLockActions)
|
409
|
+
boost::container::vector<Callback> &postLockActions)
|
385
410
|
{
|
386
411
|
while (!getWaitlist.empty()) {
|
387
|
-
postLockActions.push_back(boost::bind(
|
412
|
+
postLockActions.push_back(boost::bind(GetCallback::call,
|
388
413
|
getWaitlist.front().callback, SessionPtr(),
|
389
414
|
exception));
|
390
415
|
getWaitlist.pop_front();
|
@@ -392,36 +417,39 @@ public:
|
|
392
417
|
}
|
393
418
|
|
394
419
|
void possiblySpawnMoreProcessesForExistingGroups() {
|
395
|
-
StringMap<SuperGroupPtr>::const_iterator sg_it, sg_end = superGroups.end();
|
396
420
|
/* Looks for Groups that are waiting for capacity to become available,
|
397
421
|
* and spawn processes in those groups.
|
398
422
|
*/
|
399
|
-
|
400
|
-
|
401
|
-
|
423
|
+
SuperGroupMap::ConstIterator sg_it(superGroups);
|
424
|
+
while (*sg_it != NULL) {
|
425
|
+
const SuperGroupPtr &superGroup = sg_it.getValue();
|
426
|
+
foreach (GroupPtr group, superGroup->groups) {
|
402
427
|
if (group->isWaitingForCapacity()) {
|
403
428
|
P_DEBUG("Group " << group->name << " is waiting for capacity");
|
404
429
|
group->spawn();
|
405
|
-
if (
|
430
|
+
if (atFullCapacityUnlocked()) {
|
406
431
|
return;
|
407
432
|
}
|
408
433
|
}
|
409
434
|
}
|
435
|
+
sg_it.next();
|
410
436
|
}
|
411
437
|
/* Now look for Groups that haven't maximized their allowed capacity
|
412
438
|
* yet, and spawn processes in those groups.
|
413
439
|
*/
|
414
|
-
|
415
|
-
|
416
|
-
|
440
|
+
sg_it = SuperGroupMap::ConstIterator(superGroups);
|
441
|
+
while (*sg_it != NULL) {
|
442
|
+
const SuperGroupPtr &superGroup = sg_it.getValue();
|
443
|
+
foreach (GroupPtr group, superGroup->groups) {
|
417
444
|
if (group->shouldSpawn()) {
|
418
445
|
P_DEBUG("Group " << group->name << " requests more processes to be spawned");
|
419
446
|
group->spawn();
|
420
|
-
if (
|
447
|
+
if (atFullCapacityUnlocked()) {
|
421
448
|
return;
|
422
449
|
}
|
423
450
|
}
|
424
451
|
}
|
452
|
+
sg_it.next();
|
425
453
|
}
|
426
454
|
}
|
427
455
|
|
@@ -433,24 +461,46 @@ public:
|
|
433
461
|
}
|
434
462
|
}
|
435
463
|
|
464
|
+
unsigned int capacityUsedUnlocked() const {
|
465
|
+
if (superGroups.size() == 1) {
|
466
|
+
SuperGroupPtr *superGroup;
|
467
|
+
superGroups.lookupRandom(NULL, &superGroup);
|
468
|
+
return (*superGroup)->capacityUsed();
|
469
|
+
} else {
|
470
|
+
SuperGroupMap::ConstIterator sg_it(superGroups);
|
471
|
+
int result = 0;
|
472
|
+
while (*sg_it != NULL) {
|
473
|
+
const SuperGroupPtr &superGroup = sg_it.getValue();
|
474
|
+
result += superGroup->capacityUsed();
|
475
|
+
sg_it.next();
|
476
|
+
}
|
477
|
+
return result;
|
478
|
+
}
|
479
|
+
}
|
480
|
+
|
481
|
+
bool atFullCapacityUnlocked() const {
|
482
|
+
return capacityUsedUnlocked() >= max;
|
483
|
+
}
|
484
|
+
|
436
485
|
/**
|
437
486
|
* Calls Group::detach() so be sure to fix up the invariants afterwards.
|
438
487
|
* See the comments for Group::detach() and the code for detachProcessUnlocked().
|
439
488
|
*/
|
440
489
|
ProcessPtr forceFreeCapacity(const Group *exclude,
|
441
|
-
vector<Callback> &postLockActions)
|
490
|
+
boost::container::vector<Callback> &postLockActions)
|
442
491
|
{
|
443
492
|
ProcessPtr process = findOldestIdleProcess(exclude);
|
444
493
|
if (process != NULL) {
|
445
494
|
P_DEBUG("Forcefully detaching process " << process->inspect() <<
|
446
495
|
" in order to free capacity in the pool");
|
447
496
|
|
448
|
-
|
497
|
+
Group *group = process->getGroup();
|
449
498
|
assert(group != NULL);
|
450
499
|
assert(group->getWaitlist.empty());
|
451
500
|
|
452
|
-
|
501
|
+
SuperGroup *superGroup = group->getSuperGroup();
|
453
502
|
assert(superGroup != NULL);
|
503
|
+
(void) superGroup;
|
454
504
|
|
455
505
|
group->detach(process, postLockActions);
|
456
506
|
}
|
@@ -466,24 +516,27 @@ public:
|
|
466
516
|
* operation, so running them in a thread is advised.
|
467
517
|
*/
|
468
518
|
void forceDetachSuperGroup(const SuperGroupPtr &superGroup,
|
469
|
-
vector<Callback> &postLockActions,
|
519
|
+
boost::container::vector<Callback> &postLockActions,
|
470
520
|
const SuperGroup::ShutdownCallback &callback)
|
471
521
|
{
|
472
522
|
const SuperGroupPtr sp = superGroup; // Prevent premature destruction.
|
473
|
-
bool removed = superGroups.
|
523
|
+
bool removed = superGroups.erase(superGroup->name);
|
474
524
|
assert(removed);
|
475
525
|
(void) removed; // Shut up compiler warning.
|
476
526
|
superGroup->destroy(false, postLockActions, callback);
|
477
527
|
}
|
478
528
|
|
479
|
-
bool detachProcessUnlocked(const ProcessPtr &process,
|
529
|
+
bool detachProcessUnlocked(const ProcessPtr &process,
|
530
|
+
boost::container::vector<Callback> &postLockActions)
|
531
|
+
{
|
480
532
|
if (OXT_LIKELY(process->isAlive())) {
|
481
533
|
verifyInvariants();
|
482
534
|
|
483
|
-
|
484
|
-
|
535
|
+
Group *group = process->getGroup();
|
536
|
+
SuperGroup *superGroup = group->getSuperGroup();
|
485
537
|
assert(superGroup->state != SuperGroup::INITIALIZING);
|
486
538
|
assert(superGroup->getWaitlist.empty());
|
539
|
+
(void) superGroup;
|
487
540
|
|
488
541
|
group->detach(process, postLockActions);
|
489
542
|
// 'process' may now be a stale pointer so don't use it anymore.
|
@@ -535,9 +588,9 @@ public:
|
|
535
588
|
}
|
536
589
|
|
537
590
|
const Socket *socket;
|
538
|
-
if (options.verbose && (socket = process->sockets
|
591
|
+
if (options.verbose && (socket = process->sockets.findSocketWithName("http")) != NULL) {
|
539
592
|
result << " URL : http://" << replaceString(socket->address, "tcp://", "") << endl;
|
540
|
-
result << " Password: " <<
|
593
|
+
result << " Password: " << StaticString(group->secret, Group::SECRET_SIZE) << endl;
|
541
594
|
}
|
542
595
|
}
|
543
596
|
}
|
@@ -589,7 +642,10 @@ public:
|
|
589
642
|
ticket->cond.notify_one();
|
590
643
|
}
|
591
644
|
|
592
|
-
static void syncGetCallback(
|
645
|
+
static void syncGetCallback(const SessionPtr &session, const ExceptionPtr &e,
|
646
|
+
void *userData)
|
647
|
+
{
|
648
|
+
Ticket *ticket = static_cast<Ticket *>(userData);
|
593
649
|
ScopedLock lock(ticket->syncher);
|
594
650
|
if (OXT_LIKELY(session != NULL)) {
|
595
651
|
ticket->session = session;
|
@@ -600,13 +656,18 @@ public:
|
|
600
656
|
}
|
601
657
|
|
602
658
|
SuperGroup *findMatchingSuperGroup(const Options &options) {
|
603
|
-
|
659
|
+
SuperGroupPtr *superGroup;
|
660
|
+
if (superGroups.lookup(options.getAppGroupName(), &superGroup)) {
|
661
|
+
return superGroup->get();
|
662
|
+
} else {
|
663
|
+
return NULL;
|
664
|
+
}
|
604
665
|
}
|
605
666
|
|
606
667
|
struct GarbageCollectorState {
|
607
668
|
unsigned long long now;
|
608
669
|
unsigned long long nextGcRunTime;
|
609
|
-
vector<Callback> actions;
|
670
|
+
boost::container::vector<Callback> actions;
|
610
671
|
};
|
611
672
|
|
612
673
|
static void garbageCollect(PoolPtr self) {
|
@@ -638,24 +699,43 @@ public:
|
|
638
699
|
}
|
639
700
|
}
|
640
701
|
|
641
|
-
void
|
642
|
-
const ProcessPtr &process, ProcessList
|
702
|
+
void checkWhetherProcessCanBeGarbageCollected(GarbageCollectorState &state,
|
703
|
+
const GroupPtr &group, const ProcessPtr &process, ProcessList &output)
|
643
704
|
{
|
644
705
|
assert(maxIdleTime > 0);
|
645
|
-
unsigned long long processGcTime =
|
646
|
-
process->lastUsed + maxIdleTime;
|
706
|
+
unsigned long long processGcTime = process->lastUsed + maxIdleTime;
|
647
707
|
if (process->sessions == 0
|
648
708
|
&& state.now >= processGcTime
|
649
709
|
&& (unsigned long) group->getProcessCount() > group->options.minProcesses)
|
650
710
|
{
|
651
|
-
|
652
|
-
|
711
|
+
if (output.capacity() == 0) {
|
712
|
+
output.reserve(group->enabledCount);
|
713
|
+
}
|
714
|
+
output.push_back(process);
|
715
|
+
} else {
|
716
|
+
maybeUpdateNextGcRuntime(state, processGcTime);
|
717
|
+
}
|
718
|
+
}
|
719
|
+
|
720
|
+
void garbageCollectProcessesInGroup(GarbageCollectorState &state,
|
721
|
+
const GroupPtr &group)
|
722
|
+
{
|
723
|
+
ProcessList &processes = group->enabledProcesses;
|
724
|
+
ProcessList processesToGc;
|
725
|
+
ProcessList::iterator p_it, p_end = processes.end();
|
726
|
+
|
727
|
+
for (p_it = processes.begin(); p_it != p_end; p_it++) {
|
728
|
+
const ProcessPtr &process = *p_it;
|
729
|
+
checkWhetherProcessCanBeGarbageCollected(state, group, process,
|
730
|
+
processesToGc);
|
731
|
+
}
|
732
|
+
|
733
|
+
p_end = processesToGc.end();
|
734
|
+
for (p_it = processesToGc.begin(); p_it != p_end; p_it++) {
|
735
|
+
ProcessPtr process = *p_it;
|
653
736
|
P_DEBUG("Garbage collect idle process: " << process->inspect() <<
|
654
737
|
", group=" << group->name);
|
655
738
|
group->detach(process, state.actions);
|
656
|
-
p_it = prev;
|
657
|
-
} else {
|
658
|
-
maybeUpdateNextGcRuntime(state, processGcTime);
|
659
739
|
}
|
660
740
|
}
|
661
741
|
|
@@ -676,7 +756,7 @@ public:
|
|
676
756
|
unsigned long long realGarbageCollect() {
|
677
757
|
TRACE_POINT();
|
678
758
|
ScopedLock lock(syncher);
|
679
|
-
SuperGroupMap::
|
759
|
+
SuperGroupMap::ConstIterator sg_it(superGroups);
|
680
760
|
GarbageCollectorState state;
|
681
761
|
state.now = SystemTime::getUsec();
|
682
762
|
state.nextGcRunTime = 0;
|
@@ -685,10 +765,10 @@ public:
|
|
685
765
|
verifyInvariants();
|
686
766
|
|
687
767
|
// For all supergroups and groups...
|
688
|
-
|
689
|
-
SuperGroupPtr superGroup =
|
690
|
-
|
691
|
-
|
768
|
+
while (*sg_it != NULL) {
|
769
|
+
const SuperGroupPtr superGroup = sg_it.getValue();
|
770
|
+
SuperGroup::GroupList &groups = superGroup->groups;
|
771
|
+
SuperGroup::GroupList::iterator g_it, g_end = groups.end();
|
692
772
|
|
693
773
|
superGroup->verifyInvariants();
|
694
774
|
|
@@ -696,14 +776,8 @@ public:
|
|
696
776
|
GroupPtr group = *g_it;
|
697
777
|
|
698
778
|
if (maxIdleTime > 0) {
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
for (p_it = processes.begin(); p_it != p_end; p_it++) {
|
703
|
-
ProcessPtr process = *p_it;
|
704
|
-
// ...detach processes that have been idle for more than maxIdleTime.
|
705
|
-
maybeDetachIdleProcess(state, group, process, p_it);
|
706
|
-
}
|
779
|
+
// ...detach processes that have been idle for more than maxIdleTime.
|
780
|
+
garbageCollectProcessesInGroup(state, group);
|
707
781
|
}
|
708
782
|
|
709
783
|
group->verifyInvariants();
|
@@ -713,6 +787,7 @@ public:
|
|
713
787
|
}
|
714
788
|
|
715
789
|
superGroup->verifyInvariants();
|
790
|
+
sg_it.next();
|
716
791
|
}
|
717
792
|
|
718
793
|
verifyInvariants();
|
@@ -845,11 +920,11 @@ public:
|
|
845
920
|
{
|
846
921
|
UPDATE_TRACE_POINT();
|
847
922
|
LockGuard l(syncher);
|
848
|
-
SuperGroupMap::
|
923
|
+
SuperGroupMap::ConstIterator sg_it(superGroups);
|
849
924
|
|
850
|
-
|
851
|
-
const SuperGroupPtr &superGroup = sg_it
|
852
|
-
|
925
|
+
while (*sg_it != NULL) {
|
926
|
+
const SuperGroupPtr &superGroup = sg_it.getValue();
|
927
|
+
SuperGroup::GroupList::const_iterator g_it, g_end = superGroup->groups.end();
|
853
928
|
|
854
929
|
for (g_it = superGroup->groups.begin(); g_it != g_end; g_it++) {
|
855
930
|
const GroupPtr &group = *g_it;
|
@@ -857,6 +932,7 @@ public:
|
|
857
932
|
collectPids(group->disablingProcesses, pids);
|
858
933
|
collectPids(group->disabledProcesses, pids);
|
859
934
|
}
|
935
|
+
sg_it.next();
|
860
936
|
}
|
861
937
|
}
|
862
938
|
|
@@ -882,14 +958,14 @@ public:
|
|
882
958
|
UPDATE_TRACE_POINT();
|
883
959
|
vector<UnionStationLogEntry> logEntries;
|
884
960
|
vector<ProcessPtr> processesToDetach;
|
885
|
-
vector<Callback> actions;
|
961
|
+
boost::container::vector<Callback> actions;
|
886
962
|
ScopedLock l(syncher);
|
887
|
-
SuperGroupMap::
|
963
|
+
SuperGroupMap::ConstIterator sg_it(superGroups);
|
888
964
|
|
889
965
|
UPDATE_TRACE_POINT();
|
890
|
-
|
891
|
-
const SuperGroupPtr &superGroup = sg_it
|
892
|
-
|
966
|
+
while (*sg_it != NULL) {
|
967
|
+
const SuperGroupPtr &superGroup = sg_it.getValue();
|
968
|
+
SuperGroup::GroupList::iterator g_it, g_end = superGroup->groups.end();
|
893
969
|
|
894
970
|
for (g_it = superGroup->groups.begin(); g_it != g_end; g_it++) {
|
895
971
|
const GroupPtr &group = *g_it;
|
@@ -900,6 +976,7 @@ public:
|
|
900
976
|
prepareUnionStationProcessStateLogs(logEntries, group);
|
901
977
|
prepareUnionStationSystemMetricsLogs(logEntries, group);
|
902
978
|
}
|
979
|
+
sg_it.next();
|
903
980
|
}
|
904
981
|
|
905
982
|
UPDATE_TRACE_POINT();
|
@@ -945,16 +1022,16 @@ public:
|
|
945
1022
|
}
|
946
1023
|
|
947
1024
|
SuperGroupPtr createSuperGroup(const Options &options) {
|
948
|
-
SuperGroupPtr superGroup = boost::make_shared<SuperGroup>(
|
1025
|
+
SuperGroupPtr superGroup = boost::make_shared<SuperGroup>(this,
|
949
1026
|
options);
|
950
1027
|
superGroup->initialize();
|
951
|
-
superGroups.
|
1028
|
+
superGroups.insert(options.getAppGroupName(), superGroup);
|
952
1029
|
garbageCollectionCond.notify_all();
|
953
1030
|
return superGroup;
|
954
1031
|
}
|
955
1032
|
|
956
1033
|
SuperGroupPtr createSuperGroupAndAsyncGetFromIt(const Options &options,
|
957
|
-
const GetCallback &callback, vector<Callback> &postLockActions)
|
1034
|
+
const GetCallback &callback, boost::container::vector<Callback> &postLockActions)
|
958
1035
|
{
|
959
1036
|
SuperGroupPtr superGroup = createSuperGroup(options);
|
960
1037
|
SessionPtr session = superGroup->get(options, callback,
|
@@ -971,8 +1048,12 @@ public:
|
|
971
1048
|
const SuperGroupPtr getSuperGroup(const char *name);
|
972
1049
|
|
973
1050
|
public:
|
1051
|
+
AbortLongRunningConnectionsCallback abortLongRunningConnectionsCallback;
|
1052
|
+
|
974
1053
|
Pool(const SpawnerFactoryPtr &spawnerFactory,
|
975
1054
|
const VariantMap *agentsOptions = NULL)
|
1055
|
+
: sessionObjectPool(64, 1024),
|
1056
|
+
abortLongRunningConnectionsCallback(NULL)
|
976
1057
|
{
|
977
1058
|
this->spawnerFactory = spawnerFactory;
|
978
1059
|
this->agentsOptions = agentsOptions;
|
@@ -983,9 +1064,11 @@ public:
|
|
983
1064
|
P_WARN("Unable to collect system metrics: " << e.what());
|
984
1065
|
}
|
985
1066
|
|
986
|
-
lifeStatus
|
987
|
-
max
|
988
|
-
maxIdleTime
|
1067
|
+
lifeStatus = ALIVE;
|
1068
|
+
max = 6;
|
1069
|
+
maxIdleTime = 60 * 1000000;
|
1070
|
+
selfchecking = true;
|
1071
|
+
palloc = psg_create_pool(PSG_DEFAULT_POOL_SIZE);
|
989
1072
|
|
990
1073
|
// The following code only serve to instantiate certain inline methods
|
991
1074
|
// so that they can be invoked from gdb.
|
@@ -999,6 +1082,7 @@ public:
|
|
999
1082
|
if (lifeStatus != SHUT_DOWN) {
|
1000
1083
|
P_BUG("You must call Pool::destroy() before actually destroying the Pool object!");
|
1001
1084
|
}
|
1085
|
+
psg_destroy_pool(palloc);
|
1002
1086
|
}
|
1003
1087
|
|
1004
1088
|
/** Must be called right after construction. */
|
@@ -1021,7 +1105,7 @@ public:
|
|
1021
1105
|
debugSupport = boost::make_shared<DebugSupport>();
|
1022
1106
|
}
|
1023
1107
|
|
1024
|
-
/** Should be called right after the
|
1108
|
+
/** Should be called right after the agent has received
|
1025
1109
|
* the message to exit gracefully. This will tell processes to
|
1026
1110
|
* abort any long-running connections, e.g. WebSocket connections,
|
1027
1111
|
* because the RequestHandler has to wait until all connections are
|
@@ -1032,11 +1116,12 @@ public:
|
|
1032
1116
|
ScopedLock lock(syncher);
|
1033
1117
|
assert(lifeStatus == ALIVE);
|
1034
1118
|
lifeStatus = PREPARED_FOR_SHUTDOWN;
|
1035
|
-
|
1036
|
-
|
1037
|
-
|
1119
|
+
if (abortLongRunningConnectionsCallback != NULL) {
|
1120
|
+
vector<ProcessPtr> processes = getProcesses(false);
|
1121
|
+
foreach (ProcessPtr process, processes) {
|
1038
1122
|
// Ensure that the process is not immediately respawned.
|
1039
1123
|
process->getGroup()->options.minProcesses = 0;
|
1124
|
+
abortLongRunningConnectionsCallback(process);
|
1040
1125
|
}
|
1041
1126
|
}
|
1042
1127
|
}
|
@@ -1050,7 +1135,9 @@ public:
|
|
1050
1135
|
lifeStatus = SHUTTING_DOWN;
|
1051
1136
|
|
1052
1137
|
while (!superGroups.empty()) {
|
1053
|
-
|
1138
|
+
SuperGroupPtr *superGroup;
|
1139
|
+
superGroups.lookupRandom(NULL, &superGroup);
|
1140
|
+
string name = superGroup->get()->name;
|
1054
1141
|
lock.unlock();
|
1055
1142
|
detachSuperGroupByName(name);
|
1056
1143
|
lock.lock();
|
@@ -1077,7 +1164,7 @@ public:
|
|
1077
1164
|
assert(lifeStatus == ALIVE || lifeStatus == PREPARED_FOR_SHUTDOWN);
|
1078
1165
|
verifyInvariants();
|
1079
1166
|
P_TRACE(2, "asyncGet(appGroupName=" << options.getAppGroupName() << ")");
|
1080
|
-
vector<Callback> actions;
|
1167
|
+
boost::container::vector<Callback> actions;
|
1081
1168
|
|
1082
1169
|
SuperGroup *existingSuperGroup = findMatchingSuperGroup(options);
|
1083
1170
|
if (OXT_LIKELY(existingSuperGroup != NULL)) {
|
@@ -1095,7 +1182,7 @@ public:
|
|
1095
1182
|
callback(session, ExceptionPtr());
|
1096
1183
|
}
|
1097
1184
|
|
1098
|
-
} else if (!
|
1185
|
+
} else if (!atFullCapacityUnlocked()) {
|
1099
1186
|
/* The app super group isn't in the pool and we have enough free
|
1100
1187
|
* resources to make a new one.
|
1101
1188
|
*/
|
@@ -1130,9 +1217,9 @@ public:
|
|
1130
1217
|
*/
|
1131
1218
|
P_DEBUG("Creating new SuperGroup");
|
1132
1219
|
SuperGroupPtr superGroup;
|
1133
|
-
superGroup = boost::make_shared<SuperGroup>(
|
1220
|
+
superGroup = boost::make_shared<SuperGroup>(this, options);
|
1134
1221
|
superGroup->initialize();
|
1135
|
-
superGroups.
|
1222
|
+
superGroups.insert(options.getAppGroupName(), superGroup);
|
1136
1223
|
garbageCollectionCond.notify_all();
|
1137
1224
|
SessionPtr session = superGroup->get(options, callback,
|
1138
1225
|
actions);
|
@@ -1146,7 +1233,7 @@ public:
|
|
1146
1233
|
superGroup->verifyInvariants();
|
1147
1234
|
}
|
1148
1235
|
|
1149
|
-
assert(
|
1236
|
+
assert(atFullCapacityUnlocked());
|
1150
1237
|
verifyInvariants();
|
1151
1238
|
verifyExpensiveInvariants();
|
1152
1239
|
P_TRACE(2, "asyncGet() finished");
|
@@ -1172,7 +1259,10 @@ public:
|
|
1172
1259
|
ticket->session.reset();
|
1173
1260
|
ticket->exception.reset();
|
1174
1261
|
|
1175
|
-
|
1262
|
+
GetCallback callback;
|
1263
|
+
callback.func = syncGetCallback;
|
1264
|
+
callback.userData = ticket;
|
1265
|
+
asyncGet(options, callback);
|
1176
1266
|
|
1177
1267
|
ScopedLock lock(ticket->syncher);
|
1178
1268
|
while (ticket->session == NULL && ticket->exception == NULL) {
|
@@ -1197,13 +1287,14 @@ public:
|
|
1197
1287
|
Ticket ticket;
|
1198
1288
|
{
|
1199
1289
|
LockGuard l(syncher);
|
1200
|
-
|
1290
|
+
SuperGroupPtr *superGroup;
|
1291
|
+
if (!superGroups.lookup(options.getAppGroupName(), &superGroup)) {
|
1201
1292
|
// Forcefully create SuperGroup, don't care whether resource limits
|
1202
1293
|
// actually allow it.
|
1203
1294
|
createSuperGroup(options);
|
1204
1295
|
}
|
1205
1296
|
}
|
1206
|
-
return get(options2, &ticket)->getGroup();
|
1297
|
+
return get(options2, &ticket)->getGroup()->shared_from_this();
|
1207
1298
|
}
|
1208
1299
|
|
1209
1300
|
void setMax(unsigned int max) {
|
@@ -1222,7 +1313,7 @@ public:
|
|
1222
1313
|
* resources to eventually complete. Favoring waiters
|
1223
1314
|
* on the pool should be fairer.
|
1224
1315
|
*/
|
1225
|
-
vector<Callback> actions;
|
1316
|
+
boost::container::vector<Callback> actions;
|
1226
1317
|
assignSessionsToGetWaiters(actions);
|
1227
1318
|
possiblySpawnMoreProcessesForExistingGroups();
|
1228
1319
|
|
@@ -1240,30 +1331,29 @@ public:
|
|
1240
1331
|
garbageCollectionCond.notify_all();
|
1241
1332
|
}
|
1242
1333
|
|
1243
|
-
|
1244
|
-
|
1245
|
-
|
1246
|
-
int result = 0;
|
1247
|
-
for (it = superGroups.begin(); it != end; it++) {
|
1248
|
-
const SuperGroupPtr &superGroup = it->second;
|
1249
|
-
result += superGroup->capacityUsed();
|
1250
|
-
}
|
1251
|
-
return result;
|
1334
|
+
void enableSelfChecking(bool enabled) {
|
1335
|
+
LockGuard l(syncher);
|
1336
|
+
selfchecking = enabled;
|
1252
1337
|
}
|
1253
1338
|
|
1254
|
-
|
1255
|
-
|
1256
|
-
return
|
1339
|
+
unsigned int capacityUsed() const {
|
1340
|
+
LockGuard l(syncher);
|
1341
|
+
return capacityUsedUnlocked();
|
1342
|
+
}
|
1343
|
+
|
1344
|
+
bool atFullCapacity() const {
|
1345
|
+
LockGuard l(syncher);
|
1346
|
+
return atFullCapacityUnlocked();
|
1257
1347
|
}
|
1258
1348
|
|
1259
1349
|
vector<ProcessPtr> getProcesses(bool lock = true) const {
|
1260
1350
|
DynamicScopedLock l(syncher, lock);
|
1261
1351
|
vector<ProcessPtr> result;
|
1262
|
-
SuperGroupMap::
|
1263
|
-
|
1264
|
-
const SuperGroupPtr &superGroup =
|
1265
|
-
|
1266
|
-
|
1352
|
+
SuperGroupMap::ConstIterator sg_it(superGroups);
|
1353
|
+
while (*sg_it != NULL) {
|
1354
|
+
const SuperGroupPtr &superGroup = sg_it.getValue();
|
1355
|
+
SuperGroup::GroupList &groups = superGroup->groups;
|
1356
|
+
SuperGroup::GroupList::const_iterator g_it, g_end = groups.end();
|
1267
1357
|
for (g_it = groups.begin(); g_it != g_end; g_it++) {
|
1268
1358
|
const GroupPtr &group = *g_it;
|
1269
1359
|
ProcessList::const_iterator p_it;
|
@@ -1278,6 +1368,7 @@ public:
|
|
1278
1368
|
result.push_back(*p_it);
|
1279
1369
|
}
|
1280
1370
|
}
|
1371
|
+
sg_it.next();
|
1281
1372
|
}
|
1282
1373
|
return result;
|
1283
1374
|
}
|
@@ -1290,10 +1381,11 @@ public:
|
|
1290
1381
|
unsigned int getProcessCount(bool lock = true) const {
|
1291
1382
|
DynamicScopedLock l(syncher, lock);
|
1292
1383
|
unsigned int result = 0;
|
1293
|
-
SuperGroupMap::
|
1294
|
-
|
1295
|
-
const SuperGroupPtr &superGroup =
|
1384
|
+
SuperGroupMap::ConstIterator sg_it(superGroups);
|
1385
|
+
while (*sg_it != NULL) {
|
1386
|
+
const SuperGroupPtr &superGroup = sg_it.getValue();
|
1296
1387
|
result += superGroup->getProcessCount();
|
1388
|
+
sg_it.next();
|
1297
1389
|
}
|
1298
1390
|
return result;
|
1299
1391
|
}
|
@@ -1305,22 +1397,23 @@ public:
|
|
1305
1397
|
|
1306
1398
|
SuperGroupPtr findSuperGroupBySecret(const string &secret, bool lock = true) const {
|
1307
1399
|
DynamicScopedLock l(syncher, lock);
|
1308
|
-
SuperGroupMap::
|
1309
|
-
|
1310
|
-
const SuperGroupPtr &superGroup =
|
1400
|
+
SuperGroupMap::ConstIterator sg_it(superGroups);
|
1401
|
+
while (*sg_it != NULL) {
|
1402
|
+
const SuperGroupPtr &superGroup = sg_it.getValue();
|
1311
1403
|
if (superGroup->secret == secret) {
|
1312
1404
|
return superGroup;
|
1313
1405
|
}
|
1406
|
+
sg_it.next();
|
1314
1407
|
}
|
1315
1408
|
return SuperGroupPtr();
|
1316
1409
|
}
|
1317
1410
|
|
1318
|
-
ProcessPtr findProcessByGupid(const
|
1411
|
+
ProcessPtr findProcessByGupid(const StaticString &gupid, bool lock = true) const {
|
1319
1412
|
vector<ProcessPtr> processes = getProcesses(lock);
|
1320
1413
|
vector<ProcessPtr>::const_iterator it, end = processes.end();
|
1321
1414
|
for (it = processes.begin(); it != end; it++) {
|
1322
1415
|
const ProcessPtr &process = *it;
|
1323
|
-
if (process->gupid == gupid) {
|
1416
|
+
if (StaticString(process->gupid, process->gupidSize) == gupid) {
|
1324
1417
|
return process;
|
1325
1418
|
}
|
1326
1419
|
}
|
@@ -1342,54 +1435,51 @@ public:
|
|
1342
1435
|
bool detachSuperGroupByName(const string &name) {
|
1343
1436
|
TRACE_POINT();
|
1344
1437
|
ScopedLock l(syncher);
|
1438
|
+
SuperGroupPtr superGroup = superGroups.lookupCopy(name);
|
1345
1439
|
|
1346
|
-
SuperGroupPtr superGroup = superGroups.get(name);
|
1347
1440
|
if (OXT_LIKELY(superGroup != NULL)) {
|
1348
|
-
|
1349
|
-
|
1350
|
-
|
1351
|
-
|
1352
|
-
|
1353
|
-
vector<Callback> actions;
|
1354
|
-
boost::shared_ptr<DetachSuperGroupWaitTicket> ticket =
|
1355
|
-
boost::make_shared<DetachSuperGroupWaitTicket>();
|
1356
|
-
ExceptionPtr exception = copyException(
|
1357
|
-
GetAbortedException("The containing SuperGroup was detached."));
|
1358
|
-
|
1359
|
-
forceDetachSuperGroup(superGroup, actions,
|
1360
|
-
boost::bind(syncDetachSuperGroupCallback, _1, ticket));
|
1361
|
-
assignExceptionToGetWaiters(superGroup->getWaitlist,
|
1362
|
-
exception, actions);
|
1363
|
-
#if 0
|
1364
|
-
/* If this SuperGroup had get waiters, either
|
1365
|
-
* on itself or in one of its groups, then we must
|
1366
|
-
* reprocess them immediately. Detaching such a
|
1367
|
-
* SuperGroup is essentially the same as restarting it.
|
1368
|
-
*/
|
1369
|
-
migrateSuperGroupGetWaitlistToPool(superGroup);
|
1441
|
+
P_ASSERT_EQ(superGroup->name, name);
|
1442
|
+
UPDATE_TRACE_POINT();
|
1443
|
+
verifyInvariants();
|
1444
|
+
verifyExpensiveInvariants();
|
1370
1445
|
|
1371
|
-
|
1372
|
-
|
1373
|
-
|
1374
|
-
|
1446
|
+
boost::container::vector<Callback> actions;
|
1447
|
+
boost::shared_ptr<DetachSuperGroupWaitTicket> ticket =
|
1448
|
+
boost::make_shared<DetachSuperGroupWaitTicket>();
|
1449
|
+
ExceptionPtr exception = copyException(
|
1450
|
+
GetAbortedException("The containing SuperGroup was detached."));
|
1451
|
+
|
1452
|
+
forceDetachSuperGroup(superGroup, actions,
|
1453
|
+
boost::bind(syncDetachSuperGroupCallback, _1, ticket));
|
1454
|
+
assignExceptionToGetWaiters(superGroup->getWaitlist,
|
1455
|
+
exception, actions);
|
1456
|
+
#if 0
|
1457
|
+
/* If this SuperGroup had get waiters, either
|
1458
|
+
* on itself or in one of its groups, then we must
|
1459
|
+
* reprocess them immediately. Detaching such a
|
1460
|
+
* SuperGroup is essentially the same as restarting it.
|
1461
|
+
*/
|
1462
|
+
migrateSuperGroupGetWaitlistToPool(superGroup);
|
1375
1463
|
|
1376
|
-
|
1377
|
-
|
1464
|
+
UPDATE_TRACE_POINT();
|
1465
|
+
assignSessionsToGetWaiters(actions);
|
1466
|
+
#endif
|
1467
|
+
possiblySpawnMoreProcessesForExistingGroups();
|
1378
1468
|
|
1379
|
-
|
1380
|
-
|
1381
|
-
runAllActions(actions);
|
1382
|
-
actions.clear();
|
1469
|
+
verifyInvariants();
|
1470
|
+
verifyExpensiveInvariants();
|
1383
1471
|
|
1384
|
-
|
1385
|
-
|
1386
|
-
|
1387
|
-
|
1388
|
-
|
1389
|
-
|
1390
|
-
|
1391
|
-
|
1472
|
+
l.unlock();
|
1473
|
+
UPDATE_TRACE_POINT();
|
1474
|
+
runAllActions(actions);
|
1475
|
+
actions.clear();
|
1476
|
+
|
1477
|
+
UPDATE_TRACE_POINT();
|
1478
|
+
ScopedLock l2(ticket->syncher);
|
1479
|
+
while (!ticket->done) {
|
1480
|
+
ticket->cond.wait(l2);
|
1392
1481
|
}
|
1482
|
+
return ticket->result == SuperGroup::SUCCESS;
|
1393
1483
|
} else {
|
1394
1484
|
return false;
|
1395
1485
|
}
|
@@ -1410,7 +1500,7 @@ public:
|
|
1410
1500
|
|
1411
1501
|
bool detachProcess(const ProcessPtr &process) {
|
1412
1502
|
ScopedLock l(syncher);
|
1413
|
-
vector<Callback> actions;
|
1503
|
+
boost::container::vector<Callback> actions;
|
1414
1504
|
bool result = detachProcessUnlocked(process, actions);
|
1415
1505
|
fullVerifyInvariants();
|
1416
1506
|
l.unlock();
|
@@ -1422,7 +1512,7 @@ public:
|
|
1422
1512
|
ScopedLock l(syncher);
|
1423
1513
|
ProcessPtr process = findProcessByPid(pid, false);
|
1424
1514
|
if (process != NULL) {
|
1425
|
-
vector<Callback> actions;
|
1515
|
+
boost::container::vector<Callback> actions;
|
1426
1516
|
bool result = detachProcessUnlocked(process, actions);
|
1427
1517
|
fullVerifyInvariants();
|
1428
1518
|
l.unlock();
|
@@ -1437,7 +1527,7 @@ public:
|
|
1437
1527
|
ScopedLock l(syncher);
|
1438
1528
|
ProcessPtr process = findProcessByGupid(gupid, false);
|
1439
1529
|
if (process != NULL) {
|
1440
|
-
vector<Callback> actions;
|
1530
|
+
boost::container::vector<Callback> actions;
|
1441
1531
|
bool result = detachProcessUnlocked(process, actions);
|
1442
1532
|
fullVerifyInvariants();
|
1443
1533
|
l.unlock();
|
@@ -1448,11 +1538,11 @@ public:
|
|
1448
1538
|
}
|
1449
1539
|
}
|
1450
1540
|
|
1451
|
-
DisableResult disableProcess(const
|
1541
|
+
DisableResult disableProcess(const StaticString &gupid) {
|
1452
1542
|
ScopedLock l(syncher);
|
1453
1543
|
ProcessPtr process = findProcessByGupid(gupid, false);
|
1454
1544
|
if (process != NULL) {
|
1455
|
-
|
1545
|
+
Group *group = process->getGroup();
|
1456
1546
|
// Must be a boost::shared_ptr to be interruption-safe.
|
1457
1547
|
boost::shared_ptr<DisableWaitTicket> ticket = boost::make_shared<DisableWaitTicket>();
|
1458
1548
|
DisableResult result = group->disable(process,
|
@@ -1476,10 +1566,9 @@ public:
|
|
1476
1566
|
|
1477
1567
|
bool restartGroupByName(const StaticString &name, RestartMethod method = RM_DEFAULT) {
|
1478
1568
|
ScopedLock l(syncher);
|
1479
|
-
SuperGroupMap::
|
1480
|
-
|
1481
|
-
|
1482
|
-
const SuperGroupPtr &superGroup = sg_it->second;
|
1569
|
+
SuperGroupMap::ConstIterator sg_it(superGroups);
|
1570
|
+
while (*sg_it != NULL) {
|
1571
|
+
const SuperGroupPtr &superGroup = sg_it.getValue();
|
1483
1572
|
foreach (const GroupPtr &group, superGroup->groups) {
|
1484
1573
|
if (name == group->name) {
|
1485
1574
|
if (!group->restarting()) {
|
@@ -1488,6 +1577,7 @@ public:
|
|
1488
1577
|
return true;
|
1489
1578
|
}
|
1490
1579
|
}
|
1580
|
+
sg_it.next();
|
1491
1581
|
}
|
1492
1582
|
|
1493
1583
|
return false;
|
@@ -1495,15 +1585,16 @@ public:
|
|
1495
1585
|
|
1496
1586
|
unsigned int restartSuperGroupsByAppRoot(const StaticString &appRoot) {
|
1497
1587
|
ScopedLock l(syncher);
|
1498
|
-
SuperGroupMap::
|
1588
|
+
SuperGroupMap::ConstIterator sg_it(superGroups);
|
1499
1589
|
unsigned int result = 0;
|
1500
1590
|
|
1501
|
-
|
1502
|
-
const SuperGroupPtr &superGroup = sg_it
|
1591
|
+
while (*sg_it != NULL) {
|
1592
|
+
const SuperGroupPtr &superGroup = sg_it.getValue();
|
1503
1593
|
if (appRoot == superGroup->options.appRoot) {
|
1504
1594
|
result++;
|
1505
1595
|
superGroup->restart(superGroup->options);
|
1506
1596
|
}
|
1597
|
+
sg_it.next();
|
1507
1598
|
}
|
1508
1599
|
|
1509
1600
|
return result;
|
@@ -1514,13 +1605,15 @@ public:
|
|
1514
1605
|
*/
|
1515
1606
|
bool isSpawning(bool lock = true) const {
|
1516
1607
|
DynamicScopedLock l(syncher, lock);
|
1517
|
-
SuperGroupMap::
|
1518
|
-
|
1519
|
-
|
1608
|
+
SuperGroupMap::ConstIterator sg_it(superGroups);
|
1609
|
+
while (*sg_it != NULL) {
|
1610
|
+
const SuperGroupPtr &superGroup = sg_it.getValue();
|
1611
|
+
foreach (GroupPtr group, superGroup->groups) {
|
1520
1612
|
if (group->spawning()) {
|
1521
1613
|
return true;
|
1522
1614
|
}
|
1523
1615
|
}
|
1616
|
+
sg_it.next();
|
1524
1617
|
}
|
1525
1618
|
return false;
|
1526
1619
|
}
|
@@ -1545,9 +1638,9 @@ public:
|
|
1545
1638
|
result << endl;
|
1546
1639
|
|
1547
1640
|
result << headerColor << "----------- Application groups -----------" << resetColor << endl;
|
1548
|
-
SuperGroupMap::
|
1549
|
-
|
1550
|
-
const SuperGroupPtr &superGroup = sg_it
|
1641
|
+
SuperGroupMap::ConstIterator sg_it(superGroups);
|
1642
|
+
while (*sg_it != NULL) {
|
1643
|
+
const SuperGroupPtr &superGroup = sg_it.getValue();
|
1551
1644
|
const Group *group = superGroup->defaultGroup;
|
1552
1645
|
ProcessList::const_iterator p_it;
|
1553
1646
|
|
@@ -1573,6 +1666,7 @@ public:
|
|
1573
1666
|
inspectProcessList(options, result, group, group->detachedProcesses);
|
1574
1667
|
result << endl;
|
1575
1668
|
}
|
1669
|
+
sg_it.next();
|
1576
1670
|
}
|
1577
1671
|
return result.str();
|
1578
1672
|
}
|
@@ -1580,8 +1674,8 @@ public:
|
|
1580
1674
|
string toXml(bool includeSecrets = true, bool lock = true) const {
|
1581
1675
|
DynamicScopedLock l(syncher, lock);
|
1582
1676
|
stringstream result;
|
1583
|
-
SuperGroupMap::
|
1584
|
-
|
1677
|
+
SuperGroupMap::ConstIterator sg_it(superGroups);
|
1678
|
+
SuperGroup::GroupList::const_iterator g_it;
|
1585
1679
|
ProcessList::const_iterator p_it;
|
1586
1680
|
|
1587
1681
|
result << "<?xml version=\"1.0\" encoding=\"iso8859-1\" ?>\n";
|
@@ -1590,7 +1684,7 @@ public:
|
|
1590
1684
|
result << "<passenger_version>" << PASSENGER_VERSION << "</passenger_version>";
|
1591
1685
|
result << "<process_count>" << getProcessCount(false) << "</process_count>";
|
1592
1686
|
result << "<max>" << max << "</max>";
|
1593
|
-
result << "<capacity_used>" <<
|
1687
|
+
result << "<capacity_used>" << capacityUsedUnlocked() << "</capacity_used>";
|
1594
1688
|
result << "<get_wait_list_size>" << getWaitlist.size() << "</get_wait_list_size>";
|
1595
1689
|
|
1596
1690
|
if (includeSecrets) {
|
@@ -1607,8 +1701,8 @@ public:
|
|
1607
1701
|
}
|
1608
1702
|
|
1609
1703
|
result << "<supergroups>";
|
1610
|
-
|
1611
|
-
const SuperGroupPtr &superGroup = sg_it
|
1704
|
+
while (*sg_it != NULL) {
|
1705
|
+
const SuperGroupPtr &superGroup = sg_it.getValue();
|
1612
1706
|
|
1613
1707
|
result << "<supergroup>";
|
1614
1708
|
result << "<name>" << escapeForXml(superGroup->name) << "</name>";
|
@@ -1631,6 +1725,8 @@ public:
|
|
1631
1725
|
result << "</group>";
|
1632
1726
|
}
|
1633
1727
|
result << "</supergroup>";
|
1728
|
+
|
1729
|
+
sg_it.next();
|
1634
1730
|
}
|
1635
1731
|
result << "</supergroups>";
|
1636
1732
|
|