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.

Files changed (1301) hide show
  1. checksums.yaml +8 -8
  2. checksums.yaml.gz.asc +7 -7
  3. data.tar.gz.asc +7 -7
  4. data/.editorconfig +5 -0
  5. data/.travis.yml +3 -2
  6. data/CHANGELOG +31 -53
  7. data/CONTRIBUTING.md +4 -4
  8. data/CONTRIBUTORS +0 -1
  9. data/Gemfile +18 -0
  10. data/Gemfile.lock +41 -0
  11. data/Rakefile +16 -0
  12. data/bin/passenger +2 -2
  13. data/bin/passenger-install-apache2-module +12 -12
  14. data/bin/passenger-install-nginx-module +9 -14
  15. data/bin/passenger-status +125 -87
  16. data/build/agents.rb +112 -140
  17. data/build/apache2.rb +4 -9
  18. data/build/basics.rb +5 -3
  19. data/build/common_library.rb +1 -0
  20. data/build/cxx_tests.rb +69 -47
  21. data/build/debian.rb +4 -2
  22. data/build/documentation.rb +1 -0
  23. data/build/integration_tests.rb +28 -43
  24. data/build/misc.rb +0 -18
  25. data/build/nginx.rb +2 -6
  26. data/build/packaging.rb +33 -22
  27. data/build/preprocessor.rb +2 -4
  28. data/build/ruby_tests.rb +7 -26
  29. data/build/test_basics.rb +24 -25
  30. data/debian.template/control.template +2 -2
  31. data/debian.template/locations.ini.template +2 -3
  32. data/debian.template/passenger.install.template +2 -2
  33. data/debian.template/rules.template +1 -1
  34. data/dev/ci/run_jenkins.sh +0 -1
  35. data/dev/ci/run_rpm_tests.sh +3 -0
  36. data/dev/ci/run_travis.sh +63 -17
  37. data/dev/copy_boost_headers +22 -6
  38. data/dev/ruby_server.rb +244 -0
  39. data/dev/vagrant/provision.sh +3 -1
  40. data/doc/DebuggingAndStressTesting.md +3 -3
  41. data/doc/Design and Architecture.txt +5 -6
  42. data/doc/Packaging.txt.md +35 -6
  43. data/doc/ServerOptimizationGuide.txt.md +339 -0
  44. data/doc/Users guide Apache.idmap.txt +177 -187
  45. data/doc/Users guide Apache.txt +143 -219
  46. data/doc/Users guide Nginx.idmap.txt +166 -166
  47. data/doc/Users guide Nginx.txt +265 -223
  48. data/doc/Users guide Standalone.txt +3 -3
  49. data/doc/templates/markdown.html.erb +37 -6
  50. data/doc/users_guide_snippets/environment_variables.txt +1 -1
  51. data/doc/users_guide_snippets/support_information.txt +1 -1
  52. data/doc/users_guide_snippets/tips.txt +2 -2
  53. data/ext/apache2/Configuration.cpp +23 -81
  54. data/ext/apache2/Configuration.hpp +18 -92
  55. data/ext/apache2/ConfigurationCommands.cpp +64 -15
  56. data/ext/apache2/ConfigurationCommands.cpp.erb +8 -4
  57. data/ext/apache2/ConfigurationFields.hpp +12 -0
  58. data/ext/apache2/ConfigurationSetters.cpp +73 -1
  59. data/ext/apache2/ConfigurationSetters.cpp.erb +3 -2
  60. data/ext/apache2/CreateDirConfig.cpp +6 -0
  61. data/ext/apache2/DirectoryMapper.h +11 -6
  62. data/ext/apache2/Hooks.cpp +291 -408
  63. data/ext/apache2/MergeDirConfig.cpp +42 -0
  64. data/ext/apache2/SetHeaders.cpp +61 -16
  65. data/ext/apache2/SetHeaders.cpp.erb +9 -7
  66. data/ext/boost/container/allocator_traits.hpp +400 -0
  67. data/ext/boost/container/deque.hpp +2012 -0
  68. data/ext/boost/container/detail/adaptive_node_pool_impl.hpp +874 -0
  69. data/ext/boost/container/detail/advanced_insert_int.hpp +369 -0
  70. data/ext/boost/container/detail/algorithms.hpp +84 -0
  71. data/ext/boost/container/detail/allocation_type.hpp +54 -0
  72. data/ext/boost/container/detail/allocator_version_traits.hpp +163 -0
  73. data/ext/boost/container/detail/config_begin.hpp +49 -0
  74. data/ext/boost/container/detail/config_end.hpp +17 -0
  75. data/ext/boost/container/detail/destroyers.hpp +365 -0
  76. data/ext/boost/container/detail/flat_tree.hpp +1055 -0
  77. data/ext/boost/container/detail/function_detector.hpp +88 -0
  78. data/ext/boost/container/detail/iterators.hpp +611 -0
  79. data/ext/boost/container/detail/math_functions.hpp +113 -0
  80. data/ext/boost/container/detail/memory_util.hpp +83 -0
  81. data/ext/boost/container/detail/mpl.hpp +160 -0
  82. data/ext/boost/container/detail/multiallocation_chain.hpp +286 -0
  83. data/ext/boost/container/detail/node_alloc_holder.hpp +386 -0
  84. data/ext/boost/container/detail/node_pool_impl.hpp +365 -0
  85. data/ext/boost/container/detail/pair.hpp +354 -0
  86. data/ext/boost/container/detail/pool_common.hpp +52 -0
  87. data/ext/boost/container/detail/preprocessor.hpp +232 -0
  88. data/ext/boost/container/detail/transform_iterator.hpp +176 -0
  89. data/ext/boost/container/detail/tree.hpp +1134 -0
  90. data/ext/boost/container/detail/type_traits.hpp +210 -0
  91. data/ext/boost/container/detail/utilities.hpp +1141 -0
  92. data/ext/boost/container/detail/value_init.hpp +45 -0
  93. data/ext/boost/container/detail/variadic_templates_tools.hpp +153 -0
  94. data/ext/boost/container/detail/version_type.hpp +92 -0
  95. data/ext/boost/container/detail/workaround.hpp +44 -0
  96. data/ext/boost/container/flat_map.hpp +1674 -0
  97. data/ext/boost/container/flat_set.hpp +1408 -0
  98. data/ext/boost/container/list.hpp +1475 -0
  99. data/ext/boost/container/map.hpp +1508 -0
  100. data/ext/boost/container/scoped_allocator.hpp +1503 -0
  101. data/ext/boost/container/scoped_allocator_fwd.hpp +83 -0
  102. data/ext/boost/container/set.hpp +1280 -0
  103. data/ext/boost/container/slist.hpp +1706 -0
  104. data/ext/boost/container/stable_vector.hpp +1869 -0
  105. data/ext/boost/container/static_vector.hpp +1053 -0
  106. data/ext/boost/container/string.hpp +2856 -0
  107. data/ext/boost/container/throw_exception.hpp +110 -0
  108. data/ext/boost/container/vector.hpp +2671 -0
  109. data/ext/boost/detail/is_xxx.hpp +61 -0
  110. data/ext/boost/intrusive/any_hook.hpp +344 -0
  111. data/ext/boost/intrusive/avl_set.hpp +2528 -0
  112. data/ext/boost/intrusive/avl_set_hook.hpp +297 -0
  113. data/ext/boost/intrusive/avltree.hpp +1786 -0
  114. data/ext/boost/intrusive/avltree_algorithms.hpp +968 -0
  115. data/ext/boost/intrusive/bs_set_hook.hpp +296 -0
  116. data/ext/boost/intrusive/circular_list_algorithms.hpp +413 -0
  117. data/ext/boost/intrusive/circular_slist_algorithms.hpp +404 -0
  118. data/ext/boost/intrusive/derivation_value_traits.hpp +70 -0
  119. data/ext/boost/intrusive/detail/any_node_and_algorithms.hpp +297 -0
  120. data/ext/boost/intrusive/detail/assert.hpp +41 -0
  121. data/ext/boost/intrusive/detail/avltree_node.hpp +197 -0
  122. data/ext/boost/intrusive/detail/clear_on_destructor_base.hpp +36 -0
  123. data/ext/boost/intrusive/detail/common_slist_algorithms.hpp +102 -0
  124. data/ext/boost/intrusive/detail/config_begin.hpp +52 -0
  125. data/ext/boost/intrusive/detail/config_end.hpp +15 -0
  126. data/ext/boost/intrusive/detail/ebo_functor_holder.hpp +95 -0
  127. data/ext/boost/intrusive/detail/function_detector.hpp +88 -0
  128. data/ext/boost/intrusive/detail/generic_hook.hpp +209 -0
  129. data/ext/boost/intrusive/detail/has_member_function_callable_with.hpp +357 -0
  130. data/ext/boost/intrusive/detail/hashtable_node.hpp +249 -0
  131. data/ext/boost/intrusive/detail/is_stateful_value_traits.hpp +77 -0
  132. data/ext/boost/intrusive/detail/list_node.hpp +196 -0
  133. data/ext/boost/intrusive/detail/memory_util.hpp +288 -0
  134. data/ext/boost/intrusive/detail/mpl.hpp +383 -0
  135. data/ext/boost/intrusive/detail/parent_from_member.hpp +97 -0
  136. data/ext/boost/intrusive/detail/preprocessor.hpp +52 -0
  137. data/ext/boost/intrusive/detail/rbtree_node.hpp +201 -0
  138. data/ext/boost/intrusive/detail/slist_node.hpp +166 -0
  139. data/ext/boost/intrusive/detail/transform_iterator.hpp +173 -0
  140. data/ext/boost/intrusive/detail/tree_algorithms.hpp +1742 -0
  141. data/ext/boost/intrusive/detail/tree_node.hpp +199 -0
  142. data/ext/boost/intrusive/detail/utilities.hpp +858 -0
  143. data/ext/boost/intrusive/detail/workaround.hpp +22 -0
  144. data/ext/boost/intrusive/hashtable.hpp +3110 -0
  145. data/ext/boost/intrusive/intrusive_fwd.hpp +542 -0
  146. data/ext/boost/intrusive/linear_slist_algorithms.hpp +327 -0
  147. data/ext/boost/intrusive/link_mode.hpp +46 -0
  148. data/ext/boost/intrusive/list.hpp +1525 -0
  149. data/ext/boost/intrusive/list_hook.hpp +290 -0
  150. data/ext/boost/intrusive/member_value_traits.hpp +70 -0
  151. data/ext/boost/intrusive/options.hpp +810 -0
  152. data/ext/boost/intrusive/parent_from_member.hpp +42 -0
  153. data/ext/boost/intrusive/pointer_plus_bits.hpp +86 -0
  154. data/ext/boost/intrusive/pointer_traits.hpp +265 -0
  155. data/ext/boost/intrusive/priority_compare.hpp +39 -0
  156. data/ext/boost/intrusive/rbtree.hpp +1785 -0
  157. data/ext/boost/intrusive/rbtree_algorithms.hpp +934 -0
  158. data/ext/boost/intrusive/set.hpp +2554 -0
  159. data/ext/boost/intrusive/set_hook.hpp +300 -0
  160. data/ext/boost/intrusive/sg_set.hpp +2601 -0
  161. data/ext/boost/intrusive/sgtree.hpp +2009 -0
  162. data/ext/boost/intrusive/sgtree_algorithms.hpp +807 -0
  163. data/ext/boost/intrusive/slist.hpp +2219 -0
  164. data/ext/boost/intrusive/slist_hook.hpp +294 -0
  165. data/ext/boost/intrusive/splay_set.hpp +2575 -0
  166. data/ext/boost/intrusive/splay_set_hook.hpp +292 -0
  167. data/ext/boost/intrusive/splaytree.hpp +1784 -0
  168. data/ext/boost/intrusive/splaytree_algorithms.hpp +1008 -0
  169. data/ext/boost/intrusive/treap.hpp +1882 -0
  170. data/ext/boost/intrusive/treap_algorithms.hpp +919 -0
  171. data/ext/boost/intrusive/treap_set.hpp +2751 -0
  172. data/ext/boost/intrusive/trivial_value_traits.hpp +46 -0
  173. data/ext/boost/intrusive/unordered_set.hpp +2115 -0
  174. data/ext/boost/intrusive/unordered_set_hook.hpp +434 -0
  175. data/ext/boost/intrusive_ptr.hpp +18 -0
  176. data/ext/boost/math/common_factor_ct.hpp +180 -0
  177. data/ext/boost/math_fwd.hpp +108 -0
  178. data/ext/boost/move/detail/move_helpers.hpp +175 -0
  179. data/ext/boost/parameter.hpp +21 -0
  180. data/ext/boost/parameter/aux_/arg_list.hpp +459 -0
  181. data/ext/boost/parameter/aux_/cast.hpp +143 -0
  182. data/ext/boost/parameter/aux_/default.hpp +69 -0
  183. data/ext/boost/parameter/aux_/is_maybe.hpp +26 -0
  184. data/ext/boost/parameter/aux_/maybe.hpp +120 -0
  185. data/ext/boost/parameter/aux_/overloads.hpp +88 -0
  186. data/ext/boost/parameter/aux_/parameter_requirements.hpp +25 -0
  187. data/ext/boost/parameter/aux_/parenthesized_type.hpp +119 -0
  188. data/ext/boost/parameter/aux_/preprocessor/flatten.hpp +115 -0
  189. data/ext/boost/parameter/aux_/preprocessor/for_each.hpp +103 -0
  190. data/ext/boost/parameter/aux_/python/invoker.hpp +132 -0
  191. data/ext/boost/parameter/aux_/python/invoker_iterate.hpp +93 -0
  192. data/ext/boost/parameter/aux_/result_of0.hpp +36 -0
  193. data/ext/boost/parameter/aux_/set.hpp +67 -0
  194. data/ext/boost/parameter/aux_/tag.hpp +38 -0
  195. data/ext/boost/parameter/aux_/tagged_argument.hpp +188 -0
  196. data/ext/boost/parameter/aux_/template_keyword.hpp +47 -0
  197. data/ext/boost/parameter/aux_/unwrap_cv_reference.hpp +97 -0
  198. data/ext/boost/parameter/aux_/void.hpp +29 -0
  199. data/ext/boost/parameter/aux_/yesno.hpp +26 -0
  200. data/ext/boost/parameter/binding.hpp +106 -0
  201. data/ext/boost/parameter/config.hpp +14 -0
  202. data/ext/boost/parameter/keyword.hpp +152 -0
  203. data/ext/boost/parameter/macros.hpp +99 -0
  204. data/ext/boost/parameter/match.hpp +55 -0
  205. data/ext/boost/parameter/name.hpp +156 -0
  206. data/ext/boost/parameter/parameters.hpp +931 -0
  207. data/ext/boost/parameter/preprocessor.hpp +1178 -0
  208. data/ext/boost/parameter/python.hpp +735 -0
  209. data/ext/boost/parameter/value_type.hpp +108 -0
  210. data/ext/boost/pool/detail/for.m4 +107 -0
  211. data/ext/boost/pool/detail/guard.hpp +69 -0
  212. data/ext/boost/pool/detail/mutex.hpp +42 -0
  213. data/ext/boost/pool/detail/pool_construct.bat +24 -0
  214. data/ext/boost/pool/detail/pool_construct.ipp +852 -0
  215. data/ext/boost/pool/detail/pool_construct.m4 +84 -0
  216. data/ext/boost/pool/detail/pool_construct.sh +12 -0
  217. data/ext/boost/pool/detail/pool_construct_simple.bat +25 -0
  218. data/ext/boost/pool/detail/pool_construct_simple.ipp +43 -0
  219. data/ext/boost/pool/detail/pool_construct_simple.m4 +72 -0
  220. data/ext/boost/pool/detail/pool_construct_simple.sh +12 -0
  221. data/ext/boost/pool/object_pool.hpp +287 -0
  222. data/ext/boost/pool/pool.hpp +1024 -0
  223. data/ext/boost/pool/pool_alloc.hpp +488 -0
  224. data/ext/boost/pool/poolfwd.hpp +82 -0
  225. data/ext/boost/pool/simple_segregated_storage.hpp +377 -0
  226. data/ext/boost/pool/singleton_pool.hpp +251 -0
  227. data/ext/boost/preprocessor/arithmetic.hpp +25 -0
  228. data/ext/boost/preprocessor/arithmetic/detail/div_base.hpp +61 -0
  229. data/ext/boost/preprocessor/arithmetic/div.hpp +39 -0
  230. data/ext/boost/preprocessor/arithmetic/mod.hpp +39 -0
  231. data/ext/boost/preprocessor/arithmetic/mul.hpp +53 -0
  232. data/ext/boost/preprocessor/array.hpp +32 -0
  233. data/ext/boost/preprocessor/array/enum.hpp +33 -0
  234. data/ext/boost/preprocessor/array/insert.hpp +55 -0
  235. data/ext/boost/preprocessor/array/pop_back.hpp +37 -0
  236. data/ext/boost/preprocessor/array/pop_front.hpp +38 -0
  237. data/ext/boost/preprocessor/array/push_back.hpp +33 -0
  238. data/ext/boost/preprocessor/array/push_front.hpp +33 -0
  239. data/ext/boost/preprocessor/array/remove.hpp +54 -0
  240. data/ext/boost/preprocessor/array/replace.hpp +49 -0
  241. data/ext/boost/preprocessor/array/reverse.hpp +29 -0
  242. data/ext/boost/preprocessor/array/to_list.hpp +33 -0
  243. data/ext/boost/preprocessor/array/to_seq.hpp +33 -0
  244. data/ext/boost/preprocessor/array/to_tuple.hpp +22 -0
  245. data/ext/boost/preprocessor/assert_msg.hpp +17 -0
  246. data/ext/boost/preprocessor/comma.hpp +17 -0
  247. data/ext/boost/preprocessor/comparison.hpp +24 -0
  248. data/ext/boost/preprocessor/comparison/equal.hpp +34 -0
  249. data/ext/boost/preprocessor/comparison/greater.hpp +38 -0
  250. data/ext/boost/preprocessor/comparison/greater_equal.hpp +38 -0
  251. data/ext/boost/preprocessor/comparison/less.hpp +46 -0
  252. data/ext/boost/preprocessor/comparison/less_equal.hpp +39 -0
  253. data/ext/boost/preprocessor/comparison/not_equal.hpp +814 -0
  254. data/ext/boost/preprocessor/config/limits.hpp +30 -0
  255. data/ext/boost/preprocessor/control.hpp +22 -0
  256. data/ext/boost/preprocessor/control/deduce_d.hpp +22 -0
  257. data/ext/boost/preprocessor/control/detail/dmc/while.hpp +536 -0
  258. data/ext/boost/preprocessor/control/detail/edg/while.hpp +534 -0
  259. data/ext/boost/preprocessor/control/detail/msvc/while.hpp +277 -0
  260. data/ext/boost/preprocessor/control/expr_if.hpp +30 -0
  261. data/ext/boost/preprocessor/debug.hpp +18 -0
  262. data/ext/boost/preprocessor/debug/assert.hpp +44 -0
  263. data/ext/boost/preprocessor/debug/line.hpp +35 -0
  264. data/ext/boost/preprocessor/detail/dmc/auto_rec.hpp +286 -0
  265. data/ext/boost/preprocessor/detail/is_nullary.hpp +30 -0
  266. data/ext/boost/preprocessor/detail/is_unary.hpp +30 -0
  267. data/ext/boost/preprocessor/detail/null.hpp +17 -0
  268. data/ext/boost/preprocessor/detail/split.hpp +35 -0
  269. data/ext/boost/preprocessor/enum_params_with_defaults.hpp +17 -0
  270. data/ext/boost/preprocessor/enum_shifted.hpp +17 -0
  271. data/ext/boost/preprocessor/expand.hpp +17 -0
  272. data/ext/boost/preprocessor/expr_if.hpp +17 -0
  273. data/ext/boost/preprocessor/facilities.hpp +23 -0
  274. data/ext/boost/preprocessor/facilities/apply.hpp +34 -0
  275. data/ext/boost/preprocessor/facilities/expand.hpp +28 -0
  276. data/ext/boost/preprocessor/facilities/is_1.hpp +23 -0
  277. data/ext/boost/preprocessor/facilities/is_empty.hpp +43 -0
  278. data/ext/boost/preprocessor/facilities/is_empty_or_1.hpp +30 -0
  279. data/ext/boost/preprocessor/for.hpp +17 -0
  280. data/ext/boost/preprocessor/if.hpp +17 -0
  281. data/ext/boost/preprocessor/iteration.hpp +19 -0
  282. data/ext/boost/preprocessor/iteration/detail/bounds/lower3.hpp +99 -0
  283. data/ext/boost/preprocessor/iteration/detail/bounds/lower4.hpp +99 -0
  284. data/ext/boost/preprocessor/iteration/detail/bounds/lower5.hpp +99 -0
  285. data/ext/boost/preprocessor/iteration/detail/bounds/upper3.hpp +99 -0
  286. data/ext/boost/preprocessor/iteration/detail/bounds/upper4.hpp +99 -0
  287. data/ext/boost/preprocessor/iteration/detail/bounds/upper5.hpp +99 -0
  288. data/ext/boost/preprocessor/iteration/detail/finish.hpp +99 -0
  289. data/ext/boost/preprocessor/iteration/detail/iter/forward3.hpp +1338 -0
  290. data/ext/boost/preprocessor/iteration/detail/iter/forward4.hpp +1338 -0
  291. data/ext/boost/preprocessor/iteration/detail/iter/forward5.hpp +1338 -0
  292. data/ext/boost/preprocessor/iteration/detail/iter/reverse2.hpp +1296 -0
  293. data/ext/boost/preprocessor/iteration/detail/iter/reverse3.hpp +1296 -0
  294. data/ext/boost/preprocessor/iteration/detail/iter/reverse4.hpp +1296 -0
  295. data/ext/boost/preprocessor/iteration/detail/iter/reverse5.hpp +1296 -0
  296. data/ext/boost/preprocessor/iteration/detail/local.hpp +812 -0
  297. data/ext/boost/preprocessor/iteration/detail/rlocal.hpp +782 -0
  298. data/ext/boost/preprocessor/iteration/detail/self.hpp +21 -0
  299. data/ext/boost/preprocessor/iteration/detail/start.hpp +99 -0
  300. data/ext/boost/preprocessor/iteration/local.hpp +26 -0
  301. data/ext/boost/preprocessor/iteration/self.hpp +19 -0
  302. data/ext/boost/preprocessor/library.hpp +36 -0
  303. data/ext/boost/preprocessor/limits.hpp +17 -0
  304. data/ext/boost/preprocessor/list.hpp +37 -0
  305. data/ext/boost/preprocessor/list/at.hpp +39 -0
  306. data/ext/boost/preprocessor/list/cat.hpp +42 -0
  307. data/ext/boost/preprocessor/list/detail/dmc/fold_left.hpp +279 -0
  308. data/ext/boost/preprocessor/list/detail/edg/fold_left.hpp +536 -0
  309. data/ext/boost/preprocessor/list/detail/edg/fold_right.hpp +794 -0
  310. data/ext/boost/preprocessor/list/enum.hpp +41 -0
  311. data/ext/boost/preprocessor/list/filter.hpp +54 -0
  312. data/ext/boost/preprocessor/list/first_n.hpp +58 -0
  313. data/ext/boost/preprocessor/list/for_each.hpp +49 -0
  314. data/ext/boost/preprocessor/list/for_each_product.hpp +141 -0
  315. data/ext/boost/preprocessor/list/rest_n.hpp +55 -0
  316. data/ext/boost/preprocessor/list/size.hpp +58 -0
  317. data/ext/boost/preprocessor/list/to_array.hpp +123 -0
  318. data/ext/boost/preprocessor/list/to_seq.hpp +32 -0
  319. data/ext/boost/preprocessor/list/to_tuple.hpp +38 -0
  320. data/ext/boost/preprocessor/logical.hpp +29 -0
  321. data/ext/boost/preprocessor/logical/bitnor.hpp +38 -0
  322. data/ext/boost/preprocessor/logical/bitor.hpp +38 -0
  323. data/ext/boost/preprocessor/logical/bitxor.hpp +38 -0
  324. data/ext/boost/preprocessor/logical/nor.hpp +30 -0
  325. data/ext/boost/preprocessor/logical/not.hpp +30 -0
  326. data/ext/boost/preprocessor/logical/or.hpp +30 -0
  327. data/ext/boost/preprocessor/logical/xor.hpp +30 -0
  328. data/ext/boost/preprocessor/max.hpp +17 -0
  329. data/ext/boost/preprocessor/min.hpp +17 -0
  330. data/ext/boost/preprocessor/punctuation.hpp +20 -0
  331. data/ext/boost/preprocessor/punctuation/paren_if.hpp +38 -0
  332. data/ext/boost/preprocessor/repeat_3rd.hpp +17 -0
  333. data/ext/boost/preprocessor/repeat_from_to.hpp +17 -0
  334. data/ext/boost/preprocessor/repeat_from_to_2nd.hpp +17 -0
  335. data/ext/boost/preprocessor/repeat_from_to_3rd.hpp +17 -0
  336. data/ext/boost/preprocessor/repetition.hpp +32 -0
  337. data/ext/boost/preprocessor/repetition/deduce_r.hpp +22 -0
  338. data/ext/boost/preprocessor/repetition/deduce_z.hpp +22 -0
  339. data/ext/boost/preprocessor/repetition/detail/dmc/for.hpp +536 -0
  340. data/ext/boost/preprocessor/repetition/detail/edg/for.hpp +534 -0
  341. data/ext/boost/preprocessor/repetition/detail/msvc/for.hpp +277 -0
  342. data/ext/boost/preprocessor/repetition/enum_params_with_defaults.hpp +24 -0
  343. data/ext/boost/preprocessor/repetition/enum_shifted.hpp +68 -0
  344. data/ext/boost/preprocessor/repetition/enum_shifted_binary_params.hpp +51 -0
  345. data/ext/boost/preprocessor/repetition/enum_trailing.hpp +63 -0
  346. data/ext/boost/preprocessor/repetition/enum_trailing_binary_params.hpp +53 -0
  347. data/ext/boost/preprocessor/selection.hpp +18 -0
  348. data/ext/boost/preprocessor/selection/max.hpp +39 -0
  349. data/ext/boost/preprocessor/selection/min.hpp +39 -0
  350. data/ext/boost/preprocessor/seq.hpp +43 -0
  351. data/ext/boost/preprocessor/seq/cat.hpp +49 -0
  352. data/ext/boost/preprocessor/seq/detail/binary_transform.hpp +40 -0
  353. data/ext/boost/preprocessor/seq/detail/split.hpp +284 -0
  354. data/ext/boost/preprocessor/seq/filter.hpp +54 -0
  355. data/ext/boost/preprocessor/seq/first_n.hpp +30 -0
  356. data/ext/boost/preprocessor/seq/fold_left.hpp +1070 -0
  357. data/ext/boost/preprocessor/seq/fold_right.hpp +288 -0
  358. data/ext/boost/preprocessor/seq/for_each.hpp +60 -0
  359. data/ext/boost/preprocessor/seq/for_each_product.hpp +126 -0
  360. data/ext/boost/preprocessor/seq/insert.hpp +28 -0
  361. data/ext/boost/preprocessor/seq/pop_back.hpp +29 -0
  362. data/ext/boost/preprocessor/seq/pop_front.hpp +27 -0
  363. data/ext/boost/preprocessor/seq/push_back.hpp +19 -0
  364. data/ext/boost/preprocessor/seq/push_front.hpp +19 -0
  365. data/ext/boost/preprocessor/seq/remove.hpp +29 -0
  366. data/ext/boost/preprocessor/seq/replace.hpp +29 -0
  367. data/ext/boost/preprocessor/seq/rest_n.hpp +30 -0
  368. data/ext/boost/preprocessor/seq/reverse.hpp +39 -0
  369. data/ext/boost/preprocessor/seq/subseq.hpp +28 -0
  370. data/ext/boost/preprocessor/seq/to_array.hpp +28 -0
  371. data/ext/boost/preprocessor/seq/to_list.hpp +29 -0
  372. data/ext/boost/preprocessor/seq/to_tuple.hpp +27 -0
  373. data/ext/boost/preprocessor/seq/transform.hpp +48 -0
  374. data/ext/boost/preprocessor/slot.hpp +17 -0
  375. data/ext/boost/preprocessor/slot/counter.hpp +25 -0
  376. data/ext/boost/preprocessor/slot/detail/counter.hpp +269 -0
  377. data/ext/boost/preprocessor/slot/detail/slot1.hpp +267 -0
  378. data/ext/boost/preprocessor/slot/detail/slot2.hpp +267 -0
  379. data/ext/boost/preprocessor/slot/detail/slot3.hpp +267 -0
  380. data/ext/boost/preprocessor/slot/detail/slot4.hpp +267 -0
  381. data/ext/boost/preprocessor/slot/detail/slot5.hpp +267 -0
  382. data/ext/boost/preprocessor/tuple.hpp +28 -0
  383. data/ext/boost/preprocessor/tuple/enum.hpp +22 -0
  384. data/ext/boost/preprocessor/tuple/reverse.hpp +114 -0
  385. data/ext/boost/preprocessor/tuple/size.hpp +28 -0
  386. data/ext/boost/preprocessor/tuple/to_array.hpp +37 -0
  387. data/ext/boost/preprocessor/tuple/to_seq.hpp +114 -0
  388. data/ext/boost/preprocessor/variadic.hpp +23 -0
  389. data/ext/boost/preprocessor/variadic/to_array.hpp +32 -0
  390. data/ext/boost/preprocessor/variadic/to_list.hpp +25 -0
  391. data/ext/boost/preprocessor/variadic/to_seq.hpp +25 -0
  392. data/ext/boost/preprocessor/variadic/to_tuple.hpp +24 -0
  393. data/ext/boost/preprocessor/while.hpp +17 -0
  394. data/ext/boost/preprocessor/wstringize.hpp +29 -0
  395. data/ext/boost/smart_ptr/intrusive_ptr.hpp +324 -0
  396. data/ext/common/AccountsDatabase.h +3 -4
  397. data/ext/common/AgentsStarter.cpp +12 -15
  398. data/ext/common/AgentsStarter.h +54 -120
  399. data/ext/common/ApplicationPool2/AppTypes.cpp +12 -5
  400. data/ext/common/ApplicationPool2/AppTypes.h +21 -14
  401. data/ext/common/ApplicationPool2/Common.h +36 -19
  402. data/ext/common/ApplicationPool2/DirectSpawner.h +15 -16
  403. data/ext/common/ApplicationPool2/DummySpawner.h +9 -8
  404. data/ext/common/ApplicationPool2/ErrorRenderer.h +1 -1
  405. data/ext/common/ApplicationPool2/Group.h +304 -171
  406. data/ext/common/ApplicationPool2/Implementation.cpp +234 -125
  407. data/ext/common/ApplicationPool2/Options.h +50 -62
  408. data/ext/common/ApplicationPool2/Pool.h +285 -189
  409. data/ext/common/ApplicationPool2/Process.h +126 -115
  410. data/ext/common/ApplicationPool2/Session.h +70 -30
  411. data/ext/common/ApplicationPool2/SmartSpawner.h +19 -18
  412. data/ext/common/ApplicationPool2/Socket.h +57 -43
  413. data/ext/common/ApplicationPool2/SpawnObject.h +83 -0
  414. data/ext/common/ApplicationPool2/Spawner.h +59 -38
  415. data/ext/common/ApplicationPool2/SpawnerFactory.h +8 -14
  416. data/ext/common/ApplicationPool2/SuperGroup.h +69 -40
  417. data/ext/common/BackgroundEventLoop.cpp +48 -1
  418. data/ext/common/BackgroundEventLoop.h +3 -1
  419. data/ext/common/Constants.h +30 -8
  420. data/ext/common/DataStructures/HashedStaticString.h +103 -0
  421. data/ext/common/DataStructures/LString.h +396 -0
  422. data/ext/common/DataStructures/StringKeyTable.h +588 -0
  423. data/ext/common/EventedMessageServer.h +1 -0
  424. data/ext/common/FileDescriptor.h +5 -0
  425. data/ext/common/InstanceDirectory.h +240 -0
  426. data/ext/common/Logging.cpp +38 -13
  427. data/ext/common/Logging.h +53 -22
  428. data/ext/common/MemoryKit/mbuf.cpp +413 -0
  429. data/ext/common/MemoryKit/mbuf.h +266 -0
  430. data/ext/common/MemoryKit/palloc.cpp +337 -0
  431. data/ext/common/MemoryKit/palloc.h +121 -0
  432. data/ext/common/ResourceLocator.h +62 -6
  433. data/ext/common/SafeLibev.h +4 -4
  434. data/ext/common/ServerKit/AcceptLoadBalancer.h +275 -0
  435. data/ext/common/ServerKit/Channel.h +747 -0
  436. data/ext/common/ServerKit/Client.h +166 -0
  437. data/ext/common/ServerKit/ClientRef.h +130 -0
  438. data/ext/common/ServerKit/Context.h +129 -0
  439. data/ext/common/ServerKit/Errors.h +103 -0
  440. data/ext/common/ServerKit/FdSinkChannel.h +206 -0
  441. data/ext/common/ServerKit/FdSourceChannel.h +230 -0
  442. data/ext/common/ServerKit/FileBufferedChannel.h +1399 -0
  443. data/ext/common/ServerKit/FileBufferedFdSinkChannel.h +228 -0
  444. data/ext/common/ServerKit/HeaderTable.h +472 -0
  445. data/ext/common/ServerKit/Hooks.h +79 -0
  446. data/ext/common/ServerKit/HttpChunkedBodyParser.h +289 -0
  447. data/ext/common/ServerKit/HttpChunkedBodyParserState.h +70 -0
  448. data/ext/common/ServerKit/HttpClient.h +94 -0
  449. data/ext/common/ServerKit/HttpHeaderParser.h +477 -0
  450. data/ext/common/ServerKit/HttpHeaderParserState.h +60 -0
  451. data/ext/common/ServerKit/HttpRequest.h +276 -0
  452. data/ext/common/ServerKit/HttpRequestRef.h +130 -0
  453. data/ext/common/ServerKit/HttpServer.h +1152 -0
  454. data/ext/common/ServerKit/Implementation.cpp +47 -0
  455. data/ext/common/ServerKit/Server.h +1040 -0
  456. data/ext/common/ServerKit/http_parser.cpp +2259 -0
  457. data/ext/common/ServerKit/http_parser.h +330 -0
  458. data/ext/common/StaticString.h +8 -0
  459. data/ext/common/Utils.cpp +14 -12
  460. data/ext/common/Utils.h +9 -103
  461. data/ext/common/Utils/BufferedIO.h +1 -0
  462. data/ext/common/Utils/CachedFileStat.hpp +1 -7
  463. data/ext/common/Utils/DateParsing.h +379 -0
  464. data/ext/common/Utils/FileChangeChecker.h +3 -9
  465. data/ext/common/Utils/Hasher.cpp +52 -0
  466. data/ext/common/Utils/Hasher.h +58 -0
  467. data/ext/common/Utils/IOUtils.cpp +62 -62
  468. data/ext/common/Utils/JsonUtils.h +21 -0
  469. data/ext/common/Utils/OptionParsing.h +75 -0
  470. data/ext/common/Utils/StrIntUtils.cpp +112 -19
  471. data/ext/common/Utils/StrIntUtils.h +52 -12
  472. data/ext/common/Utils/StrIntUtilsNoStrictAliasing.cpp +174 -0
  473. data/ext/common/Utils/VariantMap.h +18 -7
  474. data/ext/common/Utils/modp_b64.cpp +290 -0
  475. data/ext/common/Utils/modp_b64.h +241 -0
  476. data/ext/common/Utils/modp_b64_data.h +479 -0
  477. data/ext/common/Utils/sysqueue.h +811 -0
  478. data/ext/common/agents/Base.cpp +71 -98
  479. data/ext/common/agents/Base.h +11 -3
  480. data/ext/common/agents/HelperAgent/AdminServer.h +690 -0
  481. data/ext/common/agents/HelperAgent/Main.cpp +899 -487
  482. data/ext/common/agents/HelperAgent/OptionParser.h +311 -0
  483. data/ext/common/agents/HelperAgent/RequestHandler.h +315 -2548
  484. data/ext/common/agents/HelperAgent/RequestHandler/AppResponse.h +225 -0
  485. data/ext/common/agents/HelperAgent/RequestHandler/BufferBody.cpp +93 -0
  486. data/ext/common/agents/HelperAgent/RequestHandler/CheckoutSession.cpp +346 -0
  487. data/ext/common/agents/HelperAgent/RequestHandler/Client.h +54 -0
  488. data/ext/common/agents/HelperAgent/RequestHandler/ForwardResponse.cpp +846 -0
  489. data/ext/common/agents/HelperAgent/RequestHandler/Hooks.cpp +231 -0
  490. data/ext/common/agents/HelperAgent/RequestHandler/InitRequest.cpp +434 -0
  491. data/ext/common/agents/HelperAgent/RequestHandler/Request.h +149 -0
  492. data/ext/common/agents/HelperAgent/RequestHandler/SendRequest.cpp +887 -0
  493. data/ext/common/agents/HelperAgent/RequestHandler/TurboCaching.h +293 -0
  494. data/ext/common/agents/HelperAgent/RequestHandler/Utils.cpp +301 -0
  495. data/ext/common/agents/HelperAgent/ResponseCache.h +624 -0
  496. data/ext/common/agents/HelperAgent/SystemMetricsTool.cpp +21 -23
  497. data/ext/common/agents/LoggingAgent/AdminServer.h +369 -0
  498. data/ext/common/agents/LoggingAgent/LoggingServer.h +1 -0
  499. data/ext/common/agents/LoggingAgent/Main.cpp +422 -215
  500. data/ext/common/agents/LoggingAgent/OptionParser.h +167 -0
  501. data/ext/common/agents/LoggingAgent/RemoteSender.h +3 -3
  502. data/ext/common/agents/Main.cpp +107 -0
  503. data/ext/common/agents/SpawnPreparer/Main.cpp +207 -0
  504. data/ext/common/agents/TempDirToucher/Main.cpp +429 -0
  505. data/ext/common/agents/Watchdog/AdminServer.h +390 -0
  506. data/ext/common/agents/Watchdog/AgentWatcher.cpp +7 -5
  507. data/ext/common/agents/Watchdog/HelperAgentWatcher.cpp +18 -39
  508. data/ext/common/agents/Watchdog/InstanceDirToucher.cpp +116 -0
  509. data/ext/common/agents/Watchdog/LoggingAgentWatcher.cpp +13 -17
  510. data/ext/common/agents/Watchdog/Main.cpp +743 -202
  511. data/ext/libeio/eio.c +17 -0
  512. data/ext/libeio/eio.h +2 -0
  513. data/ext/nginx/CacheLocationConfig.c +177 -198
  514. data/ext/nginx/CacheLocationConfig.c.erb +35 -22
  515. data/ext/nginx/Configuration.c +402 -236
  516. data/ext/nginx/Configuration.h +12 -5
  517. data/ext/nginx/ConfigurationCommands.c +35 -15
  518. data/ext/nginx/ConfigurationCommands.c.erb +4 -4
  519. data/ext/nginx/ConfigurationFields.h +9 -5
  520. data/ext/nginx/ConfigurationFields.h.erb +3 -1
  521. data/ext/nginx/ContentHandler.c +393 -362
  522. data/ext/nginx/CreateLocationConfig.c +8 -4
  523. data/ext/nginx/CreateLocationConfig.c.erb +8 -3
  524. data/ext/nginx/MergeLocationConfig.c +36 -6
  525. data/ext/nginx/MergeLocationConfig.c.erb +42 -1
  526. data/ext/nginx/ngx_http_passenger_module.c +28 -15
  527. data/ext/oxt/detail/backtrace_disabled.hpp +2 -1
  528. data/ext/oxt/detail/backtrace_enabled.hpp +15 -2
  529. data/ext/oxt/implementation.cpp +92 -20
  530. data/ext/oxt/thread.hpp +5 -0
  531. data/ext/ruby/extconf.rb +3 -6
  532. data/ext/ruby/passenger_native_support.c +13 -40
  533. data/helper-scripts/download_binaries/extconf.rb +4 -4
  534. data/helper-scripts/meteor-loader.rb +12 -112
  535. data/helper-scripts/node-loader.js +3 -91
  536. data/helper-scripts/rack-loader.rb +13 -14
  537. data/helper-scripts/rack-preloader.rb +16 -17
  538. data/helper-scripts/wsgi-loader.py +11 -7
  539. data/lib/phusion_passenger.rb +100 -79
  540. data/lib/phusion_passenger/abstract_installer.rb +28 -3
  541. data/lib/phusion_passenger/admin_tools.rb +3 -3
  542. data/lib/phusion_passenger/admin_tools/instance.rb +207 -0
  543. data/lib/phusion_passenger/admin_tools/instance_registry.rb +98 -0
  544. data/lib/phusion_passenger/apache2/config_options.rb +72 -22
  545. data/lib/phusion_passenger/common_library.rb +79 -14
  546. data/lib/phusion_passenger/config/about_command.rb +17 -23
  547. data/lib/phusion_passenger/config/admin_command_command.rb +175 -0
  548. data/lib/phusion_passenger/config/agent_compiler.rb +170 -0
  549. data/lib/phusion_passenger/config/command.rb +1 -4
  550. data/lib/phusion_passenger/config/compile_agent_command.rb +102 -0
  551. data/lib/phusion_passenger/config/compile_nginx_engine_command.rb +112 -0
  552. data/lib/phusion_passenger/config/detach_process_command.rb +32 -10
  553. data/lib/phusion_passenger/config/download_agent_command.rb +285 -0
  554. data/lib/phusion_passenger/config/download_nginx_engine_command.rb +281 -0
  555. data/lib/phusion_passenger/config/install_agent_command.rb +174 -0
  556. data/lib/phusion_passenger/config/install_standalone_runtime_command.rb +231 -0
  557. data/lib/phusion_passenger/config/installation_utils.rb +241 -0
  558. data/lib/phusion_passenger/config/list_instances_command.rb +13 -25
  559. data/lib/phusion_passenger/config/main.rb +43 -14
  560. data/lib/phusion_passenger/config/nginx_engine_compiler.rb +337 -0
  561. data/lib/phusion_passenger/config/reopen_logs_command.rb +110 -0
  562. data/lib/phusion_passenger/config/restart_app_command.rb +61 -14
  563. data/lib/phusion_passenger/config/system_metrics_command.rb +2 -1
  564. data/lib/phusion_passenger/config/utils.rb +64 -39
  565. data/lib/phusion_passenger/config/validate_install_command.rb +2 -2
  566. data/lib/phusion_passenger/constants.rb +27 -6
  567. data/lib/phusion_passenger/debug_logging.rb +32 -15
  568. data/lib/phusion_passenger/loader_shared_helpers.rb +2 -5
  569. data/lib/phusion_passenger/message_client.rb +21 -22
  570. data/lib/phusion_passenger/native_support.rb +26 -31
  571. data/lib/phusion_passenger/nginx/config_options.rb +32 -19
  572. data/lib/phusion_passenger/packaging.rb +7 -3
  573. data/lib/phusion_passenger/platform_info/cxx_portability.rb +1 -2
  574. data/lib/phusion_passenger/platform_info/depcheck_specs/libs.rb +3 -4
  575. data/lib/phusion_passenger/platform_info/operating_system.rb +6 -6
  576. data/lib/phusion_passenger/preloader_shared_helpers.rb +2 -2
  577. data/lib/phusion_passenger/rack/out_of_band_gc.rb +2 -2
  578. data/lib/phusion_passenger/rack/thread_handler_extension.rb +168 -65
  579. data/lib/phusion_passenger/request_handler.rb +47 -82
  580. data/lib/phusion_passenger/request_handler/thread_handler.rb +46 -10
  581. data/lib/phusion_passenger/ruby_core_enhancements.rb +25 -77
  582. data/lib/phusion_passenger/ruby_core_io_enhancements.rb +108 -0
  583. data/lib/phusion_passenger/standalone/app_finder.rb +39 -59
  584. data/lib/phusion_passenger/standalone/command.rb +27 -275
  585. data/lib/phusion_passenger/standalone/command2.rb +292 -0
  586. data/lib/phusion_passenger/standalone/config_utils.rb +87 -0
  587. data/lib/phusion_passenger/standalone/control_utils.rb +88 -0
  588. data/lib/phusion_passenger/standalone/main.rb +69 -71
  589. data/lib/phusion_passenger/standalone/start2_command.rb +799 -0
  590. data/lib/phusion_passenger/standalone/start_command.rb +406 -467
  591. data/lib/phusion_passenger/standalone/start_command/builtin_engine.rb +167 -0
  592. data/lib/phusion_passenger/standalone/start_command/nginx_engine.rb +165 -0
  593. data/lib/phusion_passenger/standalone/status_command.rb +64 -23
  594. data/lib/phusion_passenger/standalone/stop_command.rb +69 -32
  595. data/lib/phusion_passenger/standalone/version_command.rb +1 -5
  596. data/lib/phusion_passenger/utils.rb +0 -4
  597. data/lib/phusion_passenger/utils/json.rb +70 -4
  598. data/lib/phusion_passenger/utils/progress_bar.rb +56 -0
  599. data/lib/phusion_passenger/utils/tee_input.rb +3 -3
  600. data/lib/phusion_passenger/utils/unseekable_socket.rb +30 -0
  601. data/packaging/rpm/nginx_spec/nginx.spec.template +4 -3
  602. data/packaging/rpm/passenger_spec/passenger.spec.template +6 -10
  603. data/packaging/rpm/setup-system +2 -1
  604. data/resources/oss-binaries.phusionpassenger.com.crt +208 -0
  605. data/resources/templates/config/agent_compiler/confirm_enable_optimizations.txt.erb +5 -0
  606. data/resources/templates/config/installation_utils/cannot_create_user_support_binaries_dir.txt.erb +15 -0
  607. data/resources/templates/config/installation_utils/download_tool_missing.txt.erb +7 -0
  608. data/resources/templates/config/installation_utils/passenger_not_installed_as_root.txt.erb +12 -0
  609. data/resources/templates/config/installation_utils/support_binaries_dir_not_writable_despite_running_as_root.txt.erb +13 -0
  610. data/resources/templates/config/installation_utils/unexpected_filesystem_problem.txt.erb +16 -0
  611. data/{packaging/debian/debian_specs/passenger/patches/series → resources/templates/config/installation_utils/user_support_binaries_dir_not_writable.txt.erb} +0 -0
  612. data/resources/templates/nginx/nginx_module_sources_not_available.txt.erb +2 -2
  613. data/resources/templates/standalone/config.erb +14 -16
  614. data/resources/templates/standalone/possible_solutions_for_download_and_extraction_problems.txt.erb +1 -1
  615. data/test/.rspec +1 -0
  616. data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +20 -17
  617. data/test/cxx/ApplicationPool2/OptionsTest.cpp +0 -14
  618. data/test/cxx/ApplicationPool2/PoolTest.cpp +113 -90
  619. data/test/cxx/ApplicationPool2/ProcessTest.cpp +18 -27
  620. data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +51 -53
  621. data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +55 -57
  622. data/test/cxx/BufferedIOTest.cpp +40 -40
  623. data/test/cxx/CxxTestMain.cpp +4 -22
  624. data/test/cxx/DataStructures/LStringTest.cpp +275 -0
  625. data/test/cxx/DataStructures/StringKeyTableTest.cpp +199 -0
  626. data/test/cxx/MemoryKit/MbufTest.cpp +213 -0
  627. data/test/cxx/MessageServerTest.cpp +62 -55
  628. data/test/cxx/RequestHandlerTest.cpp +26 -27
  629. data/test/cxx/ServerKit/ChannelTest.cpp +1467 -0
  630. data/test/cxx/ServerKit/FileBufferedChannelTest.cpp +817 -0
  631. data/test/cxx/ServerKit/HeaderTableTest.cpp +171 -0
  632. data/test/cxx/ServerKit/HttpServerTest.cpp +1503 -0
  633. data/test/cxx/ServerKit/ServerTest.cpp +408 -0
  634. data/test/cxx/TestSupport.cpp +51 -15
  635. data/test/cxx/TestSupport.h +31 -21
  636. data/test/cxx/UnionStationTest.cpp +121 -122
  637. data/test/cxx/UtilsTest.cpp +9 -33
  638. data/test/integration_tests/apache2_tests.rb +65 -27
  639. data/test/integration_tests/downloaded_binaries_tests.rb +30 -6
  640. data/test/integration_tests/native_packaging_spec.rb +32 -17
  641. data/test/integration_tests/nginx_tests.rb +28 -10
  642. data/test/integration_tests/shared/example_webapp_tests.rb +40 -27
  643. data/test/integration_tests/standalone_tests.rb +232 -169
  644. data/test/ruby/debug_logging_spec.rb +44 -40
  645. data/test/ruby/rails3.0/preloader_spec.rb +1 -1
  646. data/test/ruby/rails3.1/preloader_spec.rb +1 -1
  647. data/test/ruby/rails3.2/preloader_spec.rb +1 -1
  648. data/test/ruby/rails4.0/preloader_spec.rb +1 -1
  649. data/test/ruby/rails4.1/preloader_spec.rb +1 -1
  650. data/test/ruby/request_handler_spec.rb +62 -24
  651. data/test/ruby/shared/loader_sharedspec.rb +10 -9
  652. data/test/ruby/shared/rails/union_station_extensions_sharedspec.rb +23 -22
  653. data/test/ruby/spec_helper.rb +2 -11
  654. data/test/ruby/standalone/runtime_installer_spec.rb +15 -13
  655. data/test/ruby/union_station_spec.rb +45 -40
  656. data/test/ruby/utils/tee_input_spec.rb +5 -5
  657. data/test/ruby/utils_spec.rb +3 -39
  658. data/test/stub/apache2/httpd.conf.erb +5 -2
  659. data/test/stub/nginx/nginx.conf.erb +3 -1
  660. data/test/support/apache2_controller.rb +25 -25
  661. data/test/support/nginx_controller.rb +14 -14
  662. data/test/support/test_helper.rb +74 -75
  663. metadata +439 -643
  664. metadata.gz.asc +7 -7
  665. data/ext/common/MultiLibeio.cpp +0 -204
  666. data/ext/common/MultiLibeio.h +0 -67
  667. data/ext/common/ServerInstanceDir.h +0 -402
  668. data/ext/common/Utils/Base64.cpp +0 -143
  669. data/ext/common/Utils/Base64.h +0 -83
  670. data/ext/common/Utils/HttpHeaderBufferer.h +0 -184
  671. data/ext/common/Utils/PriorityQueue.h +0 -54
  672. data/ext/common/Utils/StreamBoyerMooreHorspool.h +0 -512
  673. data/ext/common/Utils/fib.c +0 -699
  674. data/ext/common/Utils/fib.h +0 -101
  675. data/ext/common/Utils/fibpriv.h +0 -67
  676. data/ext/common/agents/EnvPrinter.c +0 -16
  677. data/ext/common/agents/HelperAgent/AgentOptions.h +0 -109
  678. data/ext/common/agents/HelperAgent/FileBackedPipe.h +0 -732
  679. data/ext/common/agents/HelperAgent/RequestHandler.cpp +0 -294
  680. data/ext/common/agents/HelperAgent/ScgiRequestParser.h +0 -457
  681. data/ext/common/agents/LoggingAgent/AdminController.h +0 -96
  682. data/ext/common/agents/SpawnPreparer.cpp +0 -206
  683. data/ext/common/agents/TempDirToucher.c +0 -383
  684. data/ext/common/agents/Watchdog/ServerInstanceDirToucher.cpp +0 -116
  685. data/helper-scripts/classic-rails-loader.rb +0 -166
  686. data/helper-scripts/classic-rails-preloader.rb +0 -193
  687. data/lib/phusion_passenger/admin_tools/server_instance.rb +0 -339
  688. data/lib/phusion_passenger/classic_rails/cgi_fixed.rb +0 -68
  689. data/lib/phusion_passenger/classic_rails/thread_handler_extension.rb +0 -40
  690. data/lib/phusion_passenger/platform_info/openssl.rb +0 -61
  691. data/lib/phusion_passenger/standalone/config_file.rb +0 -119
  692. data/lib/phusion_passenger/standalone/help_command.rb +0 -57
  693. data/lib/phusion_passenger/standalone/runtime_installer.rb +0 -712
  694. data/lib/phusion_passenger/standalone/runtime_locator.rb +0 -170
  695. data/lib/phusion_passenger/standalone/utils.rb +0 -58
  696. data/lib/phusion_passenger/utils/tmpdir.rb +0 -69
  697. data/packaging/debian/LICENSE.md +0 -19
  698. data/packaging/debian/README.md +0 -320
  699. data/packaging/debian/Vagrantfile +0 -25
  700. data/packaging/debian/build +0 -210
  701. data/packaging/debian/debian_specs/nginx/changelog +0 -1989
  702. data/packaging/debian/debian_specs/nginx/compat.erb +0 -5
  703. data/packaging/debian/debian_specs/nginx/conf/fastcgi.conf +0 -25
  704. data/packaging/debian/debian_specs/nginx/conf/fastcgi_params +0 -24
  705. data/packaging/debian/debian_specs/nginx/conf/koi-utf +0 -109
  706. data/packaging/debian/debian_specs/nginx/conf/koi-win +0 -103
  707. data/packaging/debian/debian_specs/nginx/conf/mime.types +0 -89
  708. data/packaging/debian/debian_specs/nginx/conf/nginx.conf.erb +0 -97
  709. data/packaging/debian/debian_specs/nginx/conf/proxy_params +0 -4
  710. data/packaging/debian/debian_specs/nginx/conf/scgi_params +0 -16
  711. data/packaging/debian/debian_specs/nginx/conf/sites-available/default.erb +0 -93
  712. data/packaging/debian/debian_specs/nginx/conf/snippets/fastcgi-php.conf +0 -13
  713. data/packaging/debian/debian_specs/nginx/conf/snippets/snakeoil.conf +0 -5
  714. data/packaging/debian/debian_specs/nginx/conf/uwsgi_params +0 -16
  715. data/packaging/debian/debian_specs/nginx/conf/win-utf +0 -125
  716. data/packaging/debian/debian_specs/nginx/control.erb +0 -226
  717. data/packaging/debian/debian_specs/nginx/copyright +0 -196
  718. data/packaging/debian/debian_specs/nginx/debian-full.lintian-overrides +0 -1
  719. data/packaging/debian/debian_specs/nginx/gbp.conf +0 -2
  720. data/packaging/debian/debian_specs/nginx/help/docs/fcgiwrap +0 -14
  721. data/packaging/debian/debian_specs/nginx/help/docs/php +0 -119
  722. data/packaging/debian/debian_specs/nginx/help/docs/support-irc +0 -28
  723. data/packaging/debian/debian_specs/nginx/help/docs/upstream +0 -51
  724. data/packaging/debian/debian_specs/nginx/help/examples/drupal +0 -114
  725. data/packaging/debian/debian_specs/nginx/help/examples/http +0 -59
  726. data/packaging/debian/debian_specs/nginx/help/examples/mail +0 -30
  727. data/packaging/debian/debian_specs/nginx/help/examples/mailman +0 -59
  728. data/packaging/debian/debian_specs/nginx/help/examples/nginx.conf +0 -34
  729. data/packaging/debian/debian_specs/nginx/help/examples/nginx_modsite +0 -162
  730. data/packaging/debian/debian_specs/nginx/help/examples/virtual_hosts +0 -155
  731. data/packaging/debian/debian_specs/nginx/help/examples/wordpress +0 -74
  732. data/packaging/debian/debian_specs/nginx/helpers.rb +0 -41
  733. data/packaging/debian/debian_specs/nginx/index-debian.html.in +0 -32
  734. data/packaging/debian/debian_specs/nginx/index-ubuntu.html.in +0 -32
  735. data/packaging/debian/debian_specs/nginx/index.html.erb +0 -10
  736. data/packaging/debian/debian_specs/nginx/modules/README.Modules-versions +0 -65
  737. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/README.markdown +0 -510
  738. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/config +0 -5
  739. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/doc/HttpHeadersMoreModule.wiki +0 -395
  740. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ddebug.h +0 -119
  741. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_filter_module.c +0 -348
  742. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_filter_module.h +0 -80
  743. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_in.c +0 -826
  744. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_in.h +0 -26
  745. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_out.c +0 -716
  746. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_out.h +0 -26
  747. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_util.c +0 -380
  748. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_util.h +0 -52
  749. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/util/build.sh +0 -32
  750. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/valgrind.suppress +0 -215
  751. data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/ChangeLog +0 -35
  752. data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/LICENSE +0 -25
  753. data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/README.md +0 -93
  754. data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/config +0 -4
  755. data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/ngx_http_auth_pam_module.c +0 -462
  756. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/CHANGES +0 -66
  757. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/LICENSE +0 -26
  758. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/README.md +0 -171
  759. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/TODO.md +0 -7
  760. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/config +0 -21
  761. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/ngx_cache_purge_module.c +0 -1803
  762. data/packaging/debian/debian_specs/nginx/modules/nginx-dav-ext-module/README +0 -29
  763. data/packaging/debian/debian_specs/nginx/modules/nginx-dav-ext-module/config +0 -9
  764. data/packaging/debian/debian_specs/nginx/modules/nginx-dav-ext-module/ngx_http_dav_ext_module.c +0 -824
  765. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/README +0 -139
  766. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/README_AUTO_LIB +0 -395
  767. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/TODO +0 -1
  768. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/actions/array +0 -10
  769. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/actions/palloc +0 -8
  770. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/build +0 -597
  771. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/action_replacements +0 -5
  772. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/action_types +0 -12
  773. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/conf_args +0 -22
  774. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/conf_locs +0 -25
  775. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/conf_macros +0 -35
  776. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/contexts +0 -22
  777. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/header_files +0 -3
  778. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/headers +0 -4
  779. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/module_dependencies +0 -5
  780. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/modules_optional +0 -15
  781. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/prefixes +0 -2
  782. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/array.h +0 -7
  783. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/conf_cmd_basic.h +0 -43
  784. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/conf_merge.h +0 -78
  785. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/palloc.h +0 -6
  786. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/text/autogen +0 -12
  787. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/config +0 -49
  788. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/core/action_macros +0 -63
  789. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/core/conf_cmds +0 -62
  790. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/modules/set_var +0 -124
  791. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/patches/more_logging_info +0 -48
  792. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/upstream/list +0 -45
  793. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/examples/README +0 -12
  794. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/examples/http/set_var/config +0 -4
  795. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/examples/http/set_var/ngx_http_set_var_examples_module.c +0 -136
  796. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/ngx_auto_lib_core +0 -797
  797. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/notes/CHANGES +0 -17
  798. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/notes/LICENSE +0 -24
  799. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_array.h +0 -113
  800. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_conf_cmd_basic.h +0 -2203
  801. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_conf_cmd_extra.h +0 -5423
  802. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_conf_merge.h +0 -227
  803. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_config.c +0 -72
  804. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_config.h +0 -98
  805. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_includes.h +0 -66
  806. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_palloc.h +0 -112
  807. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/patches/auto_config +0 -16
  808. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/patches/expose_rewrite_functions +0 -291
  809. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/patches/rewrite_phase_handler +0 -19
  810. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/hash/md5.h +0 -117
  811. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/hash/murmurhash2.c +0 -77
  812. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/hash/sha.h +0 -200
  813. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk.c +0 -155
  814. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk.h +0 -58
  815. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_buf.c +0 -43
  816. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_buf.h +0 -5
  817. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_path.c +0 -129
  818. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_path.h +0 -30
  819. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_value.c +0 -192
  820. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_value.h +0 -21
  821. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_conf_file.c +0 -396
  822. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_conf_file.h +0 -44
  823. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_debug.c +0 -72
  824. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_debug.h +0 -171
  825. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_encoding.c +0 -57
  826. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_encoding.h +0 -12
  827. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_hash.c +0 -82
  828. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_hash.h +0 -45
  829. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_http.c +0 -138
  830. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_http.h +0 -3
  831. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_http_headers.h +0 -35
  832. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_log.c +0 -3
  833. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_log.h +0 -165
  834. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_parse.h +0 -67
  835. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_path.c +0 -583
  836. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_path.h +0 -22
  837. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_process.c +0 -20
  838. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_process.h +0 -12
  839. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_regex.c +0 -215
  840. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_regex.h +0 -7
  841. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_rewrite.c +0 -103
  842. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_rewrite.h +0 -26
  843. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_set_var.c +0 -602
  844. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_set_var.h +0 -44
  845. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_string.c +0 -434
  846. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_string.h +0 -37
  847. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_string_util.h +0 -14
  848. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_upstream_list.c +0 -205
  849. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_upstream_list.h +0 -27
  850. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_uri.c +0 -45
  851. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_uri.h +0 -6
  852. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/LICENSE +0 -25
  853. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/README.markdown +0 -1850
  854. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/config +0 -5
  855. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/doc/HttpEchoModule.wiki +0 -1558
  856. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ddebug.h +0 -109
  857. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_echo.c +0 -344
  858. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_echo.h +0 -25
  859. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_filter.c +0 -282
  860. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_filter.h +0 -15
  861. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_foreach.c +0 -183
  862. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_foreach.h +0 -16
  863. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_handler.c +0 -429
  864. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_handler.h +0 -18
  865. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_location.c +0 -178
  866. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_location.h +0 -13
  867. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_module.c +0 -667
  868. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_module.h +0 -137
  869. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_request_info.c +0 -452
  870. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_request_info.h +0 -31
  871. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_sleep.c +0 -208
  872. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_sleep.h +0 -16
  873. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_subrequest.c +0 -788
  874. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_subrequest.h +0 -19
  875. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_timer.c +0 -96
  876. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_timer.h +0 -13
  877. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_util.c +0 -298
  878. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_util.h +0 -58
  879. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_var.c +0 -110
  880. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_var.h +0 -9
  881. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/util/build.sh +0 -45
  882. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/util/releng +0 -8
  883. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/util/wiki2pod.pl +0 -131
  884. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/valgrind.suppress +0 -38
  885. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/LICENCE +0 -24
  886. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/README +0 -206
  887. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/changelog.txt +0 -54
  888. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/config +0 -26
  889. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/protocol.txt +0 -191
  890. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_defs.c +0 -59
  891. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_defs.h +0 -73
  892. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_module.c +0 -783
  893. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_module.h +0 -31
  894. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_module_setup.c +0 -361
  895. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_types.h +0 -120
  896. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/memory/store.c +0 -1180
  897. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/memory/store.h +0 -1
  898. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_http_push_module_ipc.c +0 -146
  899. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_http_push_module_ipc.h +0 -5
  900. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_http_push_store.h +0 -51
  901. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_rwlock.c +0 -178
  902. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_rwlock.h +0 -5
  903. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/rbtree_util.c +0 -246
  904. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/rbtree_util.h +0 -9
  905. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/Changes +0 -51
  906. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/README.markdown +0 -6954
  907. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/config +0 -363
  908. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/doc/HttpLuaModule.wiki +0 -5898
  909. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/dtrace/ngx_lua_provider.d +0 -61
  910. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/misc/recv-until-pm/Makefile +0 -3
  911. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/misc/recv-until-pm/lib/RecvUntil.pm +0 -138
  912. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/misc/recv-until-pm/t/sanity.t +0 -140
  913. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/api/ngx_http_lua_api.h +0 -52
  914. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ddebug.h +0 -82
  915. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_accessby.c +0 -377
  916. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_accessby.h +0 -22
  917. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_api.c +0 -77
  918. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_args.c +0 -537
  919. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_args.h +0 -20
  920. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_bodyfilterby.c +0 -632
  921. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_bodyfilterby.h +0 -31
  922. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_cache.c +0 -296
  923. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_cache.h +0 -24
  924. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_capturefilter.c +0 -175
  925. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_capturefilter.h +0 -20
  926. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_clfactory.c +0 -887
  927. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_clfactory.h +0 -22
  928. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_common.h +0 -478
  929. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_config.c +0 -67
  930. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_config.h +0 -19
  931. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_consts.c +0 -148
  932. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_consts.h +0 -20
  933. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_contentby.c +0 -369
  934. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_contentby.h +0 -26
  935. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_control.c +0 -483
  936. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_control.h +0 -20
  937. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_coroutine.c +0 -379
  938. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_coroutine.h +0 -23
  939. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ctx.c +0 -216
  940. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ctx.h +0 -23
  941. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_directive.c +0 -1081
  942. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_directive.h +0 -56
  943. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_exception.c +0 -58
  944. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_exception.h +0 -33
  945. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headerfilterby.c +0 -302
  946. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headerfilterby.h +0 -29
  947. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers.c +0 -1370
  948. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers.h +0 -22
  949. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_in.c +0 -782
  950. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_in.h +0 -22
  951. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_out.c +0 -625
  952. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_out.h +0 -23
  953. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initby.c +0 -42
  954. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initby.h +0 -23
  955. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initworkerby.c +0 -320
  956. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initworkerby.h +0 -25
  957. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_log.c +0 -300
  958. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_log.h +0 -20
  959. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_logby.c +0 -227
  960. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_logby.h +0 -22
  961. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_misc.c +0 -252
  962. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_misc.h +0 -20
  963. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_module.c +0 -924
  964. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ndk.c +0 -184
  965. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ndk.h +0 -21
  966. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_output.c +0 -794
  967. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_output.h +0 -28
  968. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_pcrefix.c +0 -106
  969. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_pcrefix.h +0 -23
  970. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_phase.c +0 -94
  971. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_phase.h +0 -13
  972. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_probe.h +0 -85
  973. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_regex.c +0 -2468
  974. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_regex.h +0 -22
  975. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_body.c +0 -1169
  976. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_body.h +0 -20
  977. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_method.c +0 -252
  978. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_method.h +0 -19
  979. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_rewriteby.c +0 -351
  980. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_rewriteby.h +0 -22
  981. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_script.c +0 -538
  982. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_script.h +0 -86
  983. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_setby.c +0 -216
  984. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_setby.h +0 -15
  985. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_shdict.c +0 -1844
  986. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_shdict.h +0 -52
  987. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_sleep.c +0 -191
  988. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_sleep.h +0 -20
  989. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_tcp.c +0 -5314
  990. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_tcp.h +0 -156
  991. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_udp.c +0 -1624
  992. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_udp.h +0 -56
  993. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_string.c +0 -704
  994. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_string.h +0 -20
  995. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_subrequest.c +0 -1741
  996. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_subrequest.h +0 -46
  997. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_time.c +0 -278
  998. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_time.h +0 -21
  999. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_timer.c +0 -661
  1000. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_timer.h +0 -20
  1001. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uri.c +0 -110
  1002. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uri.h +0 -20
  1003. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uthread.c +0 -283
  1004. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uthread.h +0 -36
  1005. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_util.c +0 -3972
  1006. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_util.h +0 -423
  1007. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_variable.c +0 -499
  1008. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_variable.h +0 -20
  1009. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_worker.c +0 -64
  1010. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_worker.h +0 -17
  1011. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/tapset/ngx_lua.stp +0 -5
  1012. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/build.sh +0 -39
  1013. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/build2.sh +0 -55
  1014. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/fix-comments +0 -27
  1015. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/gdbinit +0 -415
  1016. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/ngx-links +0 -62
  1017. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/reindex +0 -64
  1018. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/releng +0 -8
  1019. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/retab +0 -8
  1020. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/revim +0 -102
  1021. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/run_test.sh +0 -10
  1022. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/update-readme.sh +0 -4
  1023. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/valgrind.suppress +0 -144
  1024. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/CHANGES +0 -107
  1025. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/LICENSE +0 -25
  1026. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/Makefile +0 -8
  1027. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/README +0 -329
  1028. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/config +0 -3
  1029. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/ngx_http_uploadprogress_module.c +0 -1774
  1030. data/packaging/debian/debian_specs/nginx/modules/nginx-upstream-fair/README +0 -53
  1031. data/packaging/debian/debian_specs/nginx/modules/nginx-upstream-fair/config +0 -3
  1032. data/packaging/debian/debian_specs/nginx/modules/nginx-upstream-fair/ngx_http_upstream_fair_module.c +0 -1356
  1033. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/CHANGELOG.md +0 -37
  1034. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/HACKING.md +0 -24
  1035. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/LICENSE +0 -20
  1036. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/README.rst +0 -182
  1037. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/config +0 -8
  1038. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/nginx-0.6-support.patch +0 -23
  1039. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/ngx_http_fancyindex_module.c +0 -1305
  1040. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/template.awk +0 -52
  1041. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/template.h +0 -103
  1042. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/template.html +0 -102
  1043. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/CHANGES +0 -37
  1044. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/README +0 -141
  1045. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/config +0 -3
  1046. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/doc/README.google_code_home_page.wiki +0 -120
  1047. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/doc/README.html +0 -199
  1048. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/doc/README.wiki +0 -123
  1049. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/ngx_http_subs_filter_module.c +0 -1298
  1050. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/README +0 -275
  1051. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/AutoInstall.pm +0 -820
  1052. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install.pm +0 -470
  1053. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/AutoInstall.pm +0 -82
  1054. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Base.pm +0 -83
  1055. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Can.pm +0 -81
  1056. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Fetch.pm +0 -93
  1057. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Include.pm +0 -34
  1058. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Makefile.pm +0 -415
  1059. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Metadata.pm +0 -716
  1060. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/TestBase.pm +0 -29
  1061. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Win32.pm +0 -64
  1062. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/WriteAll.pm +0 -63
  1063. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Spiffy.pm +0 -539
  1064. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Base.pm +0 -682
  1065. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Base/Filter.pm +0 -341
  1066. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Builder.pm +0 -1413
  1067. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Builder/Module.pm +0 -81
  1068. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/More.pm +0 -735
  1069. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx.pm +0 -315
  1070. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx/LWP.pm +0 -524
  1071. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx/Socket.pm +0 -1749
  1072. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx/Util.pm +0 -874
  1073. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs.t +0 -136
  1074. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_capture.t +0 -32
  1075. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_fix_string.t +0 -32
  1076. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_regex.t +0 -108
  1077. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_types.t +0 -59
  1078. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/test.sh +0 -5
  1079. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/util/update-readme.sh +0 -7
  1080. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/util/wiki2google_code_homepage.pl +0 -29
  1081. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/util/wiki2pod.pl +0 -129
  1082. data/packaging/debian/debian_specs/nginx/nginx-common.NEWS +0 -135
  1083. data/packaging/debian/debian_specs/nginx/nginx-common.README.Debian +0 -45
  1084. data/packaging/debian/debian_specs/nginx/nginx-common.dirs.erb +0 -32
  1085. data/packaging/debian/debian_specs/nginx/nginx-common.install +0 -3
  1086. data/packaging/debian/debian_specs/nginx/nginx-common.lintian-overrides +0 -2
  1087. data/packaging/debian/debian_specs/nginx/nginx-common.manpages +0 -1
  1088. data/packaging/debian/debian_specs/nginx/nginx-common.nginx.default +0 -10
  1089. data/packaging/debian/debian_specs/nginx/nginx-common.nginx.init.erb +0 -214
  1090. data/packaging/debian/debian_specs/nginx/nginx-common.nginx.logrotate +0 -18
  1091. data/packaging/debian/debian_specs/nginx/nginx-common.nginx.service.erb +0 -37
  1092. data/packaging/debian/debian_specs/nginx/nginx-common.postinst.erb +0 -66
  1093. data/packaging/debian/debian_specs/nginx/nginx-common.postrm.erb +0 -46
  1094. data/packaging/debian/debian_specs/nginx/nginx-common.preinst +0 -47
  1095. data/packaging/debian/debian_specs/nginx/nginx-common.prerm.erb +0 -28
  1096. data/packaging/debian/debian_specs/nginx/nginx-doc.docs +0 -2
  1097. data/packaging/debian/debian_specs/nginx/nginx-doc.examples +0 -1
  1098. data/packaging/debian/debian_specs/nginx/nginx-extras.install.erb +0 -17
  1099. data/packaging/debian/debian_specs/nginx/nginx-extras.lintian-overrides +0 -1
  1100. data/packaging/debian/debian_specs/nginx/nginx-extras.postinst.erb +0 -44
  1101. data/packaging/debian/debian_specs/nginx/nginx-extras.prerm +0 -22
  1102. data/packaging/debian/debian_specs/nginx/nginx.1 +0 -47
  1103. data/packaging/debian/debian_specs/nginx/patches/perl-use-dpkg-buildflags.patch +0 -23
  1104. data/packaging/debian/debian_specs/nginx/patches/series +0 -1
  1105. data/packaging/debian/debian_specs/nginx/rules.erb +0 -185
  1106. data/packaging/debian/debian_specs/nginx/source/format +0 -1
  1107. data/packaging/debian/debian_specs/nginx/tests/control +0 -4
  1108. data/packaging/debian/debian_specs/nginx/ufw/nginx +0 -14
  1109. data/packaging/debian/debian_specs/nginx/upstream/signing-key.asc +0 -34
  1110. data/packaging/debian/debian_specs/nginx/watch +0 -3
  1111. data/packaging/debian/debian_specs/passenger/README.Debian +0 -12
  1112. data/packaging/debian/debian_specs/passenger/changelog +0 -316
  1113. data/packaging/debian/debian_specs/passenger/compat +0 -1
  1114. data/packaging/debian/debian_specs/passenger/control.erb +0 -123
  1115. data/packaging/debian/debian_specs/passenger/copyright +0 -385
  1116. data/packaging/debian/debian_specs/passenger/helpers.rb +0 -24
  1117. data/packaging/debian/debian_specs/passenger/libapache2-mod-passenger.install +0 -3
  1118. data/packaging/debian/debian_specs/passenger/libapache2-mod-passenger.postinst +0 -36
  1119. data/packaging/debian/debian_specs/passenger/libapache2-mod-passenger.prerm +0 -15
  1120. data/packaging/debian/debian_specs/passenger/locations.ini.erb +0 -14
  1121. data/packaging/debian/debian_specs/passenger/passenger-dev.install.erb +0 -3
  1122. data/packaging/debian/debian_specs/passenger/passenger-doc.install.erb +0 -2
  1123. data/packaging/debian/debian_specs/passenger/passenger.conf +0 -6
  1124. data/packaging/debian/debian_specs/passenger/passenger.docs +0 -4
  1125. data/packaging/debian/debian_specs/passenger/passenger.install.erb +0 -16
  1126. data/packaging/debian/debian_specs/passenger/passenger.load +0 -3
  1127. data/packaging/debian/debian_specs/passenger/passenger.manpages +0 -3
  1128. data/packaging/debian/debian_specs/passenger/passenger_free_ruby.c +0 -29
  1129. data/packaging/debian/debian_specs/passenger/passenger_ruby_utils.c +0 -54
  1130. data/packaging/debian/debian_specs/passenger/passenger_system_ruby.c.erb +0 -37
  1131. data/packaging/debian/debian_specs/passenger/rules.erb +0 -84
  1132. data/packaging/debian/debian_specs/passenger/source/format +0 -1
  1133. data/packaging/debian/debian_specs/passenger_enterprise/README.Debian +0 -12
  1134. data/packaging/debian/debian_specs/passenger_enterprise/changelog +0 -316
  1135. data/packaging/debian/debian_specs/passenger_enterprise/compat +0 -1
  1136. data/packaging/debian/debian_specs/passenger_enterprise/control.erb +0 -123
  1137. data/packaging/debian/debian_specs/passenger_enterprise/copyright +0 -385
  1138. data/packaging/debian/debian_specs/passenger_enterprise/helpers.rb +0 -2
  1139. data/packaging/debian/debian_specs/passenger_enterprise/libapache2-mod-passenger-enterprise.install +0 -3
  1140. data/packaging/debian/debian_specs/passenger_enterprise/libapache2-mod-passenger-enterprise.postinst +0 -36
  1141. data/packaging/debian/debian_specs/passenger_enterprise/libapache2-mod-passenger-enterprise.prerm +0 -15
  1142. data/packaging/debian/debian_specs/passenger_enterprise/locations.ini.erb +0 -14
  1143. data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise-dev.install.erb +0 -3
  1144. data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise-doc.install.erb +0 -2
  1145. data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise.docs +0 -4
  1146. data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise.install.erb +0 -14
  1147. data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise.manpages +0 -3
  1148. data/packaging/debian/debian_specs/passenger_enterprise/passenger.conf +0 -6
  1149. data/packaging/debian/debian_specs/passenger_enterprise/passenger.load +0 -3
  1150. data/packaging/debian/debian_specs/passenger_enterprise/passenger_free_ruby.c.erb +0 -1
  1151. data/packaging/debian/debian_specs/passenger_enterprise/passenger_ruby_utils.c.erb +0 -1
  1152. data/packaging/debian/debian_specs/passenger_enterprise/passenger_system_ruby.c.erb +0 -1
  1153. data/packaging/debian/debian_specs/passenger_enterprise/patches/series +0 -0
  1154. data/packaging/debian/debian_specs/passenger_enterprise/rules.erb +0 -84
  1155. data/packaging/debian/debian_specs/passenger_enterprise/source/format +0 -1
  1156. data/packaging/debian/docker_images/Makefile +0 -38
  1157. data/packaging/debian/docker_images/buildbox/CONTAINER_VERSION.txt +0 -0
  1158. data/packaging/debian/docker_images/buildbox/Dockerfile +0 -3
  1159. data/packaging/debian/docker_images/buildbox/Gemfile +0 -9
  1160. data/packaging/debian/docker_images/buildbox/Gemfile.lock +0 -42
  1161. data/packaging/debian/docker_images/buildbox/install.sh +0 -85
  1162. data/packaging/debian/docker_images/buildbox/pbuilderrc +0 -4
  1163. data/packaging/debian/docker_images/buildbox/sudoers.conf +0 -6
  1164. data/packaging/debian/docker_images/setup-buildbox-docker-image +0 -7
  1165. data/packaging/debian/docker_images/setup-testbox-docker-image-debian-6 +0 -7
  1166. data/packaging/debian/docker_images/setup-testbox-docker-image-debian-7 +0 -7
  1167. data/packaging/debian/docker_images/setup-testbox-docker-image-debian-8 +0 -7
  1168. data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-12.04 +0 -7
  1169. data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-14.04 +0 -7
  1170. data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-15.04 +0 -7
  1171. data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-15.10 +0 -7
  1172. data/packaging/debian/docker_images/testbox-debian-6/Dockerfile +0 -3
  1173. data/packaging/debian/docker_images/testbox-debian-6/Gemfile +0 -2
  1174. data/packaging/debian/docker_images/testbox-debian-6/Gemfile.lock +0 -23
  1175. data/packaging/debian/docker_images/testbox-debian-6/argparse.py +0 -2374
  1176. data/packaging/debian/docker_images/testbox-debian-6/install.sh +0 -78
  1177. data/packaging/debian/docker_images/testbox-debian-7/Dockerfile +0 -3
  1178. data/packaging/debian/docker_images/testbox-debian-7/Gemfile +0 -2
  1179. data/packaging/debian/docker_images/testbox-debian-7/Gemfile.lock +0 -23
  1180. data/packaging/debian/docker_images/testbox-debian-7/install.sh +0 -71
  1181. data/packaging/debian/docker_images/testbox-debian-8/Dockerfile +0 -3
  1182. data/packaging/debian/docker_images/testbox-debian-8/Gemfile +0 -2
  1183. data/packaging/debian/docker_images/testbox-debian-8/Gemfile.lock +0 -23
  1184. data/packaging/debian/docker_images/testbox-debian-8/install.sh +0 -70
  1185. data/packaging/debian/docker_images/testbox-ubuntu-12.04/Dockerfile +0 -3
  1186. data/packaging/debian/docker_images/testbox-ubuntu-12.04/Gemfile +0 -2
  1187. data/packaging/debian/docker_images/testbox-ubuntu-12.04/Gemfile.lock +0 -23
  1188. data/packaging/debian/docker_images/testbox-ubuntu-12.04/install.sh +0 -69
  1189. data/packaging/debian/docker_images/testbox-ubuntu-14.04/Dockerfile +0 -3
  1190. data/packaging/debian/docker_images/testbox-ubuntu-14.04/Gemfile +0 -2
  1191. data/packaging/debian/docker_images/testbox-ubuntu-14.04/Gemfile.lock +0 -23
  1192. data/packaging/debian/docker_images/testbox-ubuntu-14.04/install.sh +0 -69
  1193. data/packaging/debian/docker_images/testbox-ubuntu-15.04/Dockerfile +0 -3
  1194. data/packaging/debian/docker_images/testbox-ubuntu-15.04/Gemfile +0 -2
  1195. data/packaging/debian/docker_images/testbox-ubuntu-15.04/Gemfile.lock +0 -23
  1196. data/packaging/debian/docker_images/testbox-ubuntu-15.04/install.sh +0 -69
  1197. data/packaging/debian/docker_images/testbox-ubuntu-15.10/Dockerfile +0 -3
  1198. data/packaging/debian/docker_images/testbox-ubuntu-15.10/Gemfile +0 -2
  1199. data/packaging/debian/docker_images/testbox-ubuntu-15.10/Gemfile.lock +0 -23
  1200. data/packaging/debian/docker_images/testbox-ubuntu-15.10/install.sh +0 -69
  1201. data/packaging/debian/internal/build/Rakefile +0 -235
  1202. data/packaging/debian/internal/build/build-passenger-orig-tarball.sh +0 -76
  1203. data/packaging/debian/internal/build/build-source-package.rb +0 -121
  1204. data/packaging/debian/internal/build/download-nginx-orig-tarball.sh +0 -17
  1205. data/packaging/debian/internal/build/rakefile_support.rb +0 -96
  1206. data/packaging/debian/internal/build/setup-environment-essentials.sh +0 -15
  1207. data/packaging/debian/internal/build/setup-environment.sh +0 -29
  1208. data/packaging/debian/internal/lib/distro_info.rb +0 -82
  1209. data/packaging/debian/internal/lib/distro_info.sh +0 -303
  1210. data/packaging/debian/internal/lib/distro_info.sh.erb +0 -65
  1211. data/packaging/debian/internal/lib/library.sh +0 -83
  1212. data/packaging/debian/internal/lib/preprocessor.rb +0 -173
  1213. data/packaging/debian/internal/lib/tracking.rb +0 -95
  1214. data/packaging/debian/internal/lib/tracking_category.rb +0 -45
  1215. data/packaging/debian/internal/lib/tracking_database.rb +0 -132
  1216. data/packaging/debian/internal/lib/tracking_task.rb +0 -148
  1217. data/packaging/debian/internal/lib/utils.rb +0 -78
  1218. data/packaging/debian/internal/publish/Rakefile +0 -97
  1219. data/packaging/debian/internal/publish/oss-binaries.phusionpassenger.com-fingerprint.txt +0 -1
  1220. data/packaging/debian/internal/publish/packagecloud_fingerprint.txt +0 -1
  1221. data/packaging/debian/internal/publish/passenger_website_fingerprint.txt +0 -1
  1222. data/packaging/debian/internal/publish/preinit.sh +0 -7
  1223. data/packaging/debian/internal/publish/rakefile_support.rb +0 -183
  1224. data/packaging/debian/internal/scripts/gpg_noninteractive/gpg +0 -11
  1225. data/packaging/debian/internal/scripts/initccache.sh +0 -35
  1226. data/packaging/debian/internal/scripts/inituidgid.sh +0 -19
  1227. data/packaging/debian/internal/scripts/my_init +0 -340
  1228. data/packaging/debian/internal/scripts/pin_certificates +0 -34
  1229. data/packaging/debian/internal/scripts/regen_distro_info_script.sh +0 -3
  1230. data/packaging/debian/internal/scripts/setup-vagrant.sh +0 -12
  1231. data/packaging/debian/internal/scripts/setuser +0 -31
  1232. data/packaging/debian/internal/shell/initpbuilder.sh +0 -3
  1233. data/packaging/debian/internal/shell/preinit.sh +0 -28
  1234. data/packaging/debian/internal/shell/sudoers.conf +0 -1
  1235. data/packaging/debian/internal/test/apache/apache-24.conf +0 -5
  1236. data/packaging/debian/internal/test/apache/apache-pre-24.conf +0 -4
  1237. data/packaging/debian/internal/test/apache/vhost.conf +0 -17
  1238. data/packaging/debian/internal/test/misc/config.json +0 -15
  1239. data/packaging/debian/internal/test/misc/hosts.conf +0 -4
  1240. data/packaging/debian/internal/test/misc/init.sh +0 -25
  1241. data/packaging/debian/internal/test/misc/nodejs_test_app.js +0 -6
  1242. data/packaging/debian/internal/test/misc/python_test_app.py +0 -3
  1243. data/packaging/debian/internal/test/misc/ruby_test_app.rb +0 -5
  1244. data/packaging/debian/internal/test/misc/test_support.rb +0 -61
  1245. data/packaging/debian/internal/test/nginx/vhost.conf +0 -23
  1246. data/packaging/debian/internal/test/system_web_server_test.rb +0 -126
  1247. data/packaging/debian/internal/test/test.sh +0 -141
  1248. data/packaging/debian/jenkins/publish/clear_caches.rb +0 -48
  1249. data/packaging/debian/jenkins/publish/publish.sh +0 -69
  1250. data/packaging/debian/jenkins/test/test.sh +0 -63
  1251. data/packaging/debian/passenger_apt_automation.sublime-project +0 -14
  1252. data/packaging/debian/publish +0 -172
  1253. data/packaging/debian/shell +0 -116
  1254. data/packaging/debian/test +0 -142
  1255. data/packaging/rpm/passenger_spec/rubygem-passenger-4.0.18-gcc47-include-sys_types.patch +0 -45
  1256. data/test/cxx/Base64Test.cpp +0 -50
  1257. data/test/cxx/FileBackedPipeTest.cpp +0 -626
  1258. data/test/cxx/HttpHeaderBuffererTest.cpp +0 -257
  1259. data/test/cxx/ScgiRequestParserTest.cpp +0 -423
  1260. data/test/cxx/ServerInstanceDirTest.cpp +0 -175
  1261. data/test/ruby/admin_tools_spec.rb +0 -360
  1262. data/test/ruby/classic_rails/loader_spec.rb +0 -46
  1263. data/test/ruby/classic_rails/preloader_spec.rb +0 -52
  1264. data/test/ruby/standalone/runtime_locator_spec.rb +0 -214
  1265. data/test/stub/rails2.3/Rakefile +0 -10
  1266. data/test/stub/rails2.3/app/controllers/application_controller.rb +0 -10
  1267. data/test/stub/rails2.3/app/controllers/bar_controller_1.rb +0 -5
  1268. data/test/stub/rails2.3/app/controllers/bar_controller_2.rb +0 -5
  1269. data/test/stub/rails2.3/app/controllers/foo_controller.rb +0 -21
  1270. data/test/stub/rails2.3/app/helpers/application_helper.rb +0 -3
  1271. data/test/stub/rails2.3/app/helpers/bar_helper.rb +0 -2
  1272. data/test/stub/rails2.3/app/helpers/foo_helper.rb +0 -2
  1273. data/test/stub/rails2.3/config/boot.rb +0 -110
  1274. data/test/stub/rails2.3/config/database.yml +0 -19
  1275. data/test/stub/rails2.3/config/environment.rb +0 -62
  1276. data/test/stub/rails2.3/config/environments/development.rb +0 -17
  1277. data/test/stub/rails2.3/config/environments/production.rb +0 -18
  1278. data/test/stub/rails2.3/config/environments/staging.rb +0 -18
  1279. data/test/stub/rails2.3/config/initializers/inflections.rb +0 -10
  1280. data/test/stub/rails2.3/config/initializers/mime_types.rb +0 -5
  1281. data/test/stub/rails2.3/config/routes.rb +0 -35
  1282. data/test/stub/rails2.3/log/.gitignore +0 -1
  1283. data/test/stub/rails2.3/public/.gitignore +0 -1
  1284. data/test/stub/rails2.3/script/about +0 -3
  1285. data/test/stub/rails2.3/script/console +0 -3
  1286. data/test/stub/rails2.3/script/dbconsole +0 -3
  1287. data/test/stub/rails2.3/script/destroy +0 -3
  1288. data/test/stub/rails2.3/script/generate +0 -3
  1289. data/test/stub/rails2.3/script/performance/benchmarker +0 -3
  1290. data/test/stub/rails2.3/script/performance/profiler +0 -3
  1291. data/test/stub/rails2.3/script/performance/request +0 -3
  1292. data/test/stub/rails2.3/script/plugin +0 -3
  1293. data/test/stub/rails2.3/script/process/inspector +0 -3
  1294. data/test/stub/rails2.3/script/process/reaper +0 -3
  1295. data/test/stub/rails2.3/script/process/spawner +0 -3
  1296. data/test/stub/rails2.3/script/runner +0 -3
  1297. data/test/stub/rails2.3/script/server +0 -3
  1298. data/test/stub/rails2.3/tmp/cache/.gitignore +0 -1
  1299. data/test/stub/rails2.3/tmp/pids/.gitignore +0 -1
  1300. data/test/stub/rails2.3/tmp/sessions/.gitignore +0 -1
  1301. data/test/stub/rails2.3/tmp/sockets/.gitignore +0 -1
@@ -1,66 +0,0 @@
1
- 2014-12-23 VERSION 2.3
2
- * Fix compatibility with nginx-1.7.9+.
3
-
4
- 2014-12-02 VERSION 2.2
5
- * Fix compatibility with nginx-1.7.8+.
6
-
7
- 2014-05-19
8
- * Fix build on Solaris with SunCC (Solaris Studio).
9
- Reported by Jussi Sallinen.
10
-
11
- 2013-03-19 VERSION 2.1
12
- * When enabled, cache purge will now catch all requests with
13
- PURGE (or specified) method, even if cache isn't configured.
14
- Previously, it would pass such requests to the upstream.
15
-
16
- 2012-12-07 VERSION 2.0
17
- * Add alternative "same location" syntax.
18
- From CloudFlare.
19
-
20
- 2012-07-02 VERSION 1.6
21
- * Fix compatibility with nginx-1.3.2+.
22
- Reported by MagicBear, patch from Ruslan Ermilov.
23
-
24
- 2011-12-20 VERSION 1.5
25
- * Fix on-disk cache size calculation.
26
- Since the initial release, recorded on-disk cache size was
27
- decreased twice for purged content (once during cache purge
28
- and once during subsequent cache update).
29
- This resulted in recorded on-disk cache size being much
30
- smaller than in reality, which could lead to on-disk cache
31
- outgrowing defined "max_size" parameter.
32
- Patch from Pyry Hakulinen.
33
-
34
- 2011-10-05 VERSION 1.4
35
- * Add AIO support.
36
- Requested by Emin Hasanov.
37
-
38
- 2011-05-03 VERSION 1.3
39
- * Fix compatibility with nginx-1.0.1.
40
- Reported by Sergey A. Osokin and Markus Linnala.
41
-
42
- 2010-08-29
43
- * Fix compatibility with nginx-0.8.0 and versions older than
44
- nginx-0.7.60.
45
-
46
- 2010-08-11 VERSION 1.2
47
- * Fix various build scenarios with disabled upstream modules.
48
- Reported by Johan Bergstroem.
49
-
50
- * Add ability to purge content from SCGI's cache.
51
- Requested by Johan Bergstroem.
52
-
53
- 2010-06-08 VERSION 1.1
54
- * Fix compatibility with nginx-0.8.40+.
55
-
56
- * Add ability to purge content from uWSGI's cache.
57
-
58
- 2010-01-10 VERSION 1.0
59
- * Initial module release.
60
-
61
- 2009-11-17
62
- * Fix patch compatibility with nginx-0.8.11+.
63
- Reported by Bing Ran.
64
-
65
- 2009-08-11
66
- * Initial patch release.
@@ -1,26 +0,0 @@
1
- Copyright (c) 2009-2014, FRiCKLE <info@frickle.com>
2
- Copyright (c) 2009-2014, Piotr Sikora <piotr.sikora@frickle.com>
3
- All rights reserved.
4
-
5
- This project was fully funded by yo.se.
6
-
7
- Redistribution and use in source and binary forms, with or without
8
- modification, are permitted provided that the following conditions
9
- are met:
10
- 1. Redistributions of source code must retain the above copyright
11
- notice, this list of conditions and the following disclaimer.
12
- 2. Redistributions in binary form must reproduce the above copyright
13
- notice, this list of conditions and the following disclaimer in the
14
- documentation and/or other materials provided with the distribution.
15
-
16
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
- HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -1,171 +0,0 @@
1
- About
2
- =====
3
- `ngx_cache_purge` is `nginx` module which adds ability to purge content from
4
- `FastCGI`, `proxy`, `SCGI` and `uWSGI` caches.
5
-
6
-
7
- Sponsors
8
- ========
9
- Work on the original patch was fully funded by [yo.se](http://yo.se).
10
-
11
-
12
- Status
13
- ======
14
- This module is production-ready.
15
-
16
-
17
- Configuration directives (same location syntax)
18
- ===============================================
19
- fastcgi_cache_purge
20
- -------------------
21
- * **syntax**: `fastcgi_cache_purge on|off|<method> [from all|<ip> [.. <ip>]]`
22
- * **default**: `none`
23
- * **context**: `http`, `server`, `location`
24
-
25
- Allow purging of selected pages from `FastCGI`'s cache.
26
-
27
-
28
- proxy_cache_purge
29
- -----------------
30
- * **syntax**: `proxy_cache_purge on|off|<method> [from all|<ip> [.. <ip>]]`
31
- * **default**: `none`
32
- * **context**: `http`, `server`, `location`
33
-
34
- Allow purging of selected pages from `proxy`'s cache.
35
-
36
-
37
- scgi_cache_purge
38
- ----------------
39
- * **syntax**: `scgi_cache_purge on|off|<method> [from all|<ip> [.. <ip>]]`
40
- * **default**: `none`
41
- * **context**: `http`, `server`, `location`
42
-
43
- Allow purging of selected pages from `SCGI`'s cache.
44
-
45
-
46
- uwsgi_cache_purge
47
- -----------------
48
- * **syntax**: `uwsgi_cache_purge on|off|<method> [from all|<ip> [.. <ip>]]`
49
- * **default**: `none`
50
- * **context**: `http`, `server`, `location`
51
-
52
- Allow purging of selected pages from `uWSGI`'s cache.
53
-
54
-
55
- Configuration directives (separate location syntax)
56
- ===================================================
57
- fastcgi_cache_purge
58
- -------------------
59
- * **syntax**: `fastcgi_cache_purge zone_name key`
60
- * **default**: `none`
61
- * **context**: `location`
62
-
63
- Sets area and key used for purging selected pages from `FastCGI`'s cache.
64
-
65
-
66
- proxy_cache_purge
67
- -----------------
68
- * **syntax**: `proxy_cache_purge zone_name key`
69
- * **default**: `none`
70
- * **context**: `location`
71
-
72
- Sets area and key used for purging selected pages from `proxy`'s cache.
73
-
74
-
75
- scgi_cache_purge
76
- ----------------
77
- * **syntax**: `scgi_cache_purge zone_name key`
78
- * **default**: `none`
79
- * **context**: `location`
80
-
81
- Sets area and key used for purging selected pages from `SCGI`'s cache.
82
-
83
-
84
- uwsgi_cache_purge
85
- -----------------
86
- * **syntax**: `uwsgi_cache_purge zone_name key`
87
- * **default**: `none`
88
- * **context**: `location`
89
-
90
- Sets area and key used for purging selected pages from `uWSGI`'s cache.
91
-
92
-
93
- Sample configuration (same location syntax)
94
- ===========================================
95
- http {
96
- proxy_cache_path /tmp/cache keys_zone=tmpcache:10m;
97
-
98
- server {
99
- location / {
100
- proxy_pass http://127.0.0.1:8000;
101
- proxy_cache tmpcache;
102
- proxy_cache_key $uri$is_args$args;
103
- proxy_cache_purge PURGE from 127.0.0.1;
104
- }
105
- }
106
- }
107
-
108
-
109
- Sample configuration (separate location syntax)
110
- ===============================================
111
- http {
112
- proxy_cache_path /tmp/cache keys_zone=tmpcache:10m;
113
-
114
- server {
115
- location / {
116
- proxy_pass http://127.0.0.1:8000;
117
- proxy_cache tmpcache;
118
- proxy_cache_key $uri$is_args$args;
119
- }
120
-
121
- location ~ /purge(/.*) {
122
- allow 127.0.0.1;
123
- deny all;
124
- proxy_cache_purge tmpcache $1$is_args$args;
125
- }
126
- }
127
- }
128
-
129
-
130
- Testing
131
- =======
132
- `ngx_cache_purge` comes with complete test suite based on [Test::Nginx](http://github.com/agentzh/test-nginx).
133
-
134
- You can test it by running:
135
-
136
- `$ prove`
137
-
138
-
139
- License
140
- =======
141
- Copyright (c) 2009-2014, FRiCKLE <info@frickle.com>
142
- Copyright (c) 2009-2014, Piotr Sikora <piotr.sikora@frickle.com>
143
- All rights reserved.
144
-
145
- This project was fully funded by yo.se.
146
-
147
- Redistribution and use in source and binary forms, with or without
148
- modification, are permitted provided that the following conditions
149
- are met:
150
- 1. Redistributions of source code must retain the above copyright
151
- notice, this list of conditions and the following disclaimer.
152
- 2. Redistributions in binary form must reproduce the above copyright
153
- notice, this list of conditions and the following disclaimer in the
154
- documentation and/or other materials provided with the distribution.
155
-
156
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
157
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
158
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
159
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
160
- HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
161
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
162
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
163
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
164
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
165
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
166
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
167
-
168
-
169
- See also
170
- ========
171
- - [ngx_slowfs_cache](http://github.com/FRiCKLE/ngx_slowfs_cache).
@@ -1,7 +0,0 @@
1
- Features that __will not__ be added to `ngx_cache_purge`:
2
-
3
- * Support for prefixed purges (`/purge/images/*`).
4
- Reason: Impossible with current cache implementation.
5
-
6
- * Support for wildcard/regex purges (`/purge/*.jpg`).
7
- Reason: Impossible with current cache implementation.
@@ -1,21 +0,0 @@
1
- if [ "$HTTP_PROXY" = "YES" ]; then
2
- have=NGX_HTTP_PROXY . auto/have
3
- fi
4
-
5
- if [ "$HTTP_FASTCGI" = "YES" ]; then
6
- have=NGX_HTTP_FASTCGI . auto/have
7
- fi
8
-
9
- if [ "$HTTP_SCGI" = "YES" ]; then
10
- have=NGX_HTTP_SCGI . auto/have
11
- fi
12
-
13
- if [ "$HTTP_UWSGI" = "YES" ]; then
14
- have=NGX_HTTP_UWSGI . auto/have
15
- fi
16
-
17
- ngx_addon_name=ngx_http_cache_purge_module
18
- HTTP_MODULES="$HTTP_MODULES ngx_http_cache_purge_module"
19
- NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_cache_purge_module.c"
20
-
21
- have=NGX_CACHE_PURGE_MODULE . auto/have
@@ -1,1803 +0,0 @@
1
- /*
2
- * Copyright (c) 2009-2014, FRiCKLE <info@frickle.com>
3
- * Copyright (c) 2009-2014, Piotr Sikora <piotr.sikora@frickle.com>
4
- * All rights reserved.
5
- *
6
- * This project was fully funded by yo.se.
7
- *
8
- * Redistribution and use in source and binary forms, with or without
9
- * modification, are permitted provided that the following conditions
10
- * are met:
11
- * 1. Redistributions of source code must retain the above copyright
12
- * notice, this list of conditions and the following disclaimer.
13
- * 2. Redistributions in binary form must reproduce the above copyright
14
- * notice, this list of conditions and the following disclaimer in the
15
- * documentation and/or other materials provided with the distribution.
16
- *
17
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21
- * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
- */
29
-
30
- #include <nginx.h>
31
- #include <ngx_config.h>
32
- #include <ngx_core.h>
33
- #include <ngx_http.h>
34
-
35
-
36
- #ifndef nginx_version
37
- #error This module cannot be build against an unknown nginx version.
38
- #endif
39
-
40
-
41
- #if (NGX_HTTP_CACHE)
42
-
43
- typedef struct {
44
- ngx_flag_t enable;
45
- ngx_str_t method;
46
- ngx_array_t *access; /* array of ngx_in_cidr_t */
47
- ngx_array_t *access6; /* array of ngx_in6_cidr_t */
48
- } ngx_http_cache_purge_conf_t;
49
-
50
- typedef struct {
51
- # if (NGX_HTTP_FASTCGI)
52
- ngx_http_cache_purge_conf_t fastcgi;
53
- # endif /* NGX_HTTP_FASTCGI */
54
- # if (NGX_HTTP_PROXY)
55
- ngx_http_cache_purge_conf_t proxy;
56
- # endif /* NGX_HTTP_PROXY */
57
- # if (NGX_HTTP_SCGI)
58
- ngx_http_cache_purge_conf_t scgi;
59
- # endif /* NGX_HTTP_SCGI */
60
- # if (NGX_HTTP_UWSGI)
61
- ngx_http_cache_purge_conf_t uwsgi;
62
- # endif /* NGX_HTTP_UWSGI */
63
-
64
- ngx_http_cache_purge_conf_t *conf;
65
- ngx_http_handler_pt handler;
66
- ngx_http_handler_pt original_handler;
67
- } ngx_http_cache_purge_loc_conf_t;
68
-
69
- # if (NGX_HTTP_FASTCGI)
70
- char *ngx_http_fastcgi_cache_purge_conf(ngx_conf_t *cf,
71
- ngx_command_t *cmd, void *conf);
72
- ngx_int_t ngx_http_fastcgi_cache_purge_handler(ngx_http_request_t *r);
73
- # endif /* NGX_HTTP_FASTCGI */
74
-
75
- # if (NGX_HTTP_PROXY)
76
- char *ngx_http_proxy_cache_purge_conf(ngx_conf_t *cf,
77
- ngx_command_t *cmd, void *conf);
78
- ngx_int_t ngx_http_proxy_cache_purge_handler(ngx_http_request_t *r);
79
- # endif /* NGX_HTTP_PROXY */
80
-
81
- # if (NGX_HTTP_SCGI)
82
- char *ngx_http_scgi_cache_purge_conf(ngx_conf_t *cf,
83
- ngx_command_t *cmd, void *conf);
84
- ngx_int_t ngx_http_scgi_cache_purge_handler(ngx_http_request_t *r);
85
- # endif /* NGX_HTTP_SCGI */
86
-
87
- # if (NGX_HTTP_UWSGI)
88
- char *ngx_http_uwsgi_cache_purge_conf(ngx_conf_t *cf,
89
- ngx_command_t *cmd, void *conf);
90
- ngx_int_t ngx_http_uwsgi_cache_purge_handler(ngx_http_request_t *r);
91
- # endif /* NGX_HTTP_UWSGI */
92
-
93
- ngx_int_t ngx_http_cache_purge_access_handler(ngx_http_request_t *r);
94
- ngx_int_t ngx_http_cache_purge_access(ngx_array_t *a, ngx_array_t *a6,
95
- struct sockaddr *s);
96
-
97
- ngx_int_t ngx_http_cache_purge_send_response(ngx_http_request_t *r);
98
- # if (nginx_version >= 1007009)
99
- ngx_int_t ngx_http_cache_purge_cache_get(ngx_http_request_t *r,
100
- ngx_http_upstream_t *u, ngx_http_file_cache_t **cache);
101
- # endif /* nginx_version >= 1007009 */
102
- ngx_int_t ngx_http_cache_purge_init(ngx_http_request_t *r,
103
- ngx_http_file_cache_t *cache, ngx_http_complex_value_t *cache_key);
104
- void ngx_http_cache_purge_handler(ngx_http_request_t *r);
105
-
106
- ngx_int_t ngx_http_file_cache_purge(ngx_http_request_t *r);
107
-
108
- char *ngx_http_cache_purge_conf(ngx_conf_t *cf,
109
- ngx_http_cache_purge_conf_t *cpcf);
110
-
111
- void *ngx_http_cache_purge_create_loc_conf(ngx_conf_t *cf);
112
- char *ngx_http_cache_purge_merge_loc_conf(ngx_conf_t *cf,
113
- void *parent, void *child);
114
-
115
- static ngx_command_t ngx_http_cache_purge_module_commands[] = {
116
-
117
- # if (NGX_HTTP_FASTCGI)
118
- { ngx_string("fastcgi_cache_purge"),
119
- NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
120
- ngx_http_fastcgi_cache_purge_conf,
121
- NGX_HTTP_LOC_CONF_OFFSET,
122
- 0,
123
- NULL },
124
- # endif /* NGX_HTTP_FASTCGI */
125
-
126
- # if (NGX_HTTP_PROXY)
127
- { ngx_string("proxy_cache_purge"),
128
- NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
129
- ngx_http_proxy_cache_purge_conf,
130
- NGX_HTTP_LOC_CONF_OFFSET,
131
- 0,
132
- NULL },
133
- # endif /* NGX_HTTP_PROXY */
134
-
135
- # if (NGX_HTTP_SCGI)
136
- { ngx_string("scgi_cache_purge"),
137
- NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
138
- ngx_http_scgi_cache_purge_conf,
139
- NGX_HTTP_LOC_CONF_OFFSET,
140
- 0,
141
- NULL },
142
- # endif /* NGX_HTTP_SCGI */
143
-
144
- # if (NGX_HTTP_UWSGI)
145
- { ngx_string("uwsgi_cache_purge"),
146
- NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
147
- ngx_http_uwsgi_cache_purge_conf,
148
- NGX_HTTP_LOC_CONF_OFFSET,
149
- 0,
150
- NULL },
151
- # endif /* NGX_HTTP_UWSGI */
152
-
153
- ngx_null_command
154
- };
155
-
156
- static ngx_http_module_t ngx_http_cache_purge_module_ctx = {
157
- NULL, /* preconfiguration */
158
- NULL, /* postconfiguration */
159
-
160
- NULL, /* create main configuration */
161
- NULL, /* init main configuration */
162
-
163
- NULL, /* create server configuration */
164
- NULL, /* merge server configuration */
165
-
166
- ngx_http_cache_purge_create_loc_conf, /* create location configuration */
167
- ngx_http_cache_purge_merge_loc_conf /* merge location configuration */
168
- };
169
-
170
- ngx_module_t ngx_http_cache_purge_module = {
171
- NGX_MODULE_V1,
172
- &ngx_http_cache_purge_module_ctx, /* module context */
173
- ngx_http_cache_purge_module_commands, /* module directives */
174
- NGX_HTTP_MODULE, /* module type */
175
- NULL, /* init master */
176
- NULL, /* init module */
177
- NULL, /* init process */
178
- NULL, /* init thread */
179
- NULL, /* exit thread */
180
- NULL, /* exit process */
181
- NULL, /* exit master */
182
- NGX_MODULE_V1_PADDING
183
- };
184
-
185
- static char ngx_http_cache_purge_success_page_top[] =
186
- "<html>" CRLF
187
- "<head><title>Successful purge</title></head>" CRLF
188
- "<body bgcolor=\"white\">" CRLF
189
- "<center><h1>Successful purge</h1>" CRLF
190
- ;
191
-
192
- static char ngx_http_cache_purge_success_page_tail[] =
193
- CRLF "</center>" CRLF
194
- "<hr><center>" NGINX_VER "</center>" CRLF
195
- "</body>" CRLF
196
- "</html>" CRLF
197
- ;
198
-
199
- # if (NGX_HTTP_FASTCGI)
200
- extern ngx_module_t ngx_http_fastcgi_module;
201
-
202
- # if (nginx_version >= 1007009)
203
-
204
- typedef struct {
205
- ngx_array_t caches; /* ngx_http_file_cache_t * */
206
- } ngx_http_fastcgi_main_conf_t;
207
-
208
- # endif /* nginx_version >= 1007009 */
209
-
210
- # if (nginx_version >= 1007008)
211
-
212
- typedef struct {
213
- ngx_array_t *flushes;
214
- ngx_array_t *lengths;
215
- ngx_array_t *values;
216
- ngx_uint_t number;
217
- ngx_hash_t hash;
218
- } ngx_http_fastcgi_params_t;
219
-
220
- # endif /* nginx_version >= 1007008 */
221
-
222
- typedef struct {
223
- ngx_http_upstream_conf_t upstream;
224
-
225
- ngx_str_t index;
226
-
227
- # if (nginx_version >= 1007008)
228
- ngx_http_fastcgi_params_t params;
229
- ngx_http_fastcgi_params_t params_cache;
230
- # else
231
- ngx_array_t *flushes;
232
- ngx_array_t *params_len;
233
- ngx_array_t *params;
234
- # endif /* nginx_version >= 1007008 */
235
-
236
- ngx_array_t *params_source;
237
- ngx_array_t *catch_stderr;
238
-
239
- ngx_array_t *fastcgi_lengths;
240
- ngx_array_t *fastcgi_values;
241
-
242
- # if (nginx_version >= 8040) && (nginx_version < 1007008)
243
- ngx_hash_t headers_hash;
244
- ngx_uint_t header_params;
245
- # endif /* nginx_version >= 8040 && nginx_version < 1007008 */
246
-
247
- # if (nginx_version >= 1001004)
248
- ngx_flag_t keep_conn;
249
- # endif /* nginx_version >= 1001004 */
250
-
251
- ngx_http_complex_value_t cache_key;
252
-
253
- # if (NGX_PCRE)
254
- ngx_regex_t *split_regex;
255
- ngx_str_t split_name;
256
- # endif /* NGX_PCRE */
257
- } ngx_http_fastcgi_loc_conf_t;
258
-
259
- char *
260
- ngx_http_fastcgi_cache_purge_conf(ngx_conf_t *cf, ngx_command_t *cmd,
261
- void *conf)
262
- {
263
- ngx_http_compile_complex_value_t ccv;
264
- ngx_http_cache_purge_loc_conf_t *cplcf;
265
- ngx_http_core_loc_conf_t *clcf;
266
- ngx_http_fastcgi_loc_conf_t *flcf;
267
- ngx_str_t *value;
268
- # if (nginx_version >= 1007009)
269
- ngx_http_complex_value_t cv;
270
- # endif /* nginx_version >= 1007009 */
271
-
272
- cplcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_cache_purge_module);
273
-
274
- /* check for duplicates / collisions */
275
- if (cplcf->fastcgi.enable != NGX_CONF_UNSET) {
276
- return "is duplicate";
277
- }
278
-
279
- if (cf->args->nelts != 3) {
280
- return ngx_http_cache_purge_conf(cf, &cplcf->fastcgi);
281
- }
282
-
283
- if (cf->cmd_type & (NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF)) {
284
- return "(separate location syntax) is not allowed here";
285
- }
286
-
287
- flcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_fastcgi_module);
288
-
289
- # if (nginx_version >= 1007009)
290
- if (flcf->upstream.cache > 0)
291
- # else
292
- if (flcf->upstream.cache != NGX_CONF_UNSET_PTR
293
- && flcf->upstream.cache != NULL)
294
- # endif /* nginx_version >= 1007009 */
295
- {
296
- return "is incompatible with \"fastcgi_cache\"";
297
- }
298
-
299
- if (flcf->upstream.upstream || flcf->fastcgi_lengths) {
300
- return "is incompatible with \"fastcgi_pass\"";
301
- }
302
-
303
- if (flcf->upstream.store > 0
304
- # if (nginx_version < 1007009)
305
- || flcf->upstream.store_lengths
306
- # endif /* nginx_version >= 1007009 */
307
- )
308
- {
309
- return "is incompatible with \"fastcgi_store\"";
310
- }
311
-
312
- value = cf->args->elts;
313
-
314
- /* set fastcgi_cache part */
315
- # if (nginx_version >= 1007009)
316
-
317
- flcf->upstream.cache = 1;
318
-
319
- ngx_memzero(&ccv, sizeof(ngx_http_compile_complex_value_t));
320
-
321
- ccv.cf = cf;
322
- ccv.value = &value[1];
323
- ccv.complex_value = &cv;
324
-
325
- if (ngx_http_compile_complex_value(&ccv) != NGX_OK) {
326
- return NGX_CONF_ERROR;
327
- }
328
-
329
- if (cv.lengths != NULL) {
330
-
331
- flcf->upstream.cache_value = ngx_palloc(cf->pool,
332
- sizeof(ngx_http_complex_value_t));
333
- if (flcf->upstream.cache_value == NULL) {
334
- return NGX_CONF_ERROR;
335
- }
336
-
337
- *flcf->upstream.cache_value = cv;
338
-
339
- } else {
340
-
341
- flcf->upstream.cache_zone = ngx_shared_memory_add(cf, &value[1], 0,
342
- &ngx_http_fastcgi_module);
343
- if (flcf->upstream.cache_zone == NULL) {
344
- return NGX_CONF_ERROR;
345
- }
346
- }
347
-
348
- # else
349
-
350
- flcf->upstream.cache = ngx_shared_memory_add(cf, &value[1], 0,
351
- &ngx_http_fastcgi_module);
352
- if (flcf->upstream.cache == NULL) {
353
- return NGX_CONF_ERROR;
354
- }
355
-
356
- # endif /* nginx_version >= 1007009 */
357
-
358
- /* set fastcgi_cache_key part */
359
- ngx_memzero(&ccv, sizeof(ngx_http_compile_complex_value_t));
360
-
361
- ccv.cf = cf;
362
- ccv.value = &value[2];
363
- ccv.complex_value = &flcf->cache_key;
364
-
365
- if (ngx_http_compile_complex_value(&ccv) != NGX_OK) {
366
- return NGX_CONF_ERROR;
367
- }
368
-
369
- /* set handler */
370
- clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module);
371
-
372
- cplcf->fastcgi.enable = 0;
373
- clcf->handler = ngx_http_fastcgi_cache_purge_handler;
374
-
375
- return NGX_CONF_OK;
376
- }
377
-
378
- ngx_int_t
379
- ngx_http_fastcgi_cache_purge_handler(ngx_http_request_t *r)
380
- {
381
- ngx_http_file_cache_t *cache;
382
- ngx_http_fastcgi_loc_conf_t *flcf;
383
- # if (nginx_version >= 1007009)
384
- ngx_http_fastcgi_main_conf_t *fmcf;
385
- ngx_int_t rc;
386
- # endif /* nginx_version >= 1007009 */
387
-
388
- if (ngx_http_upstream_create(r) != NGX_OK) {
389
- return NGX_HTTP_INTERNAL_SERVER_ERROR;
390
- }
391
-
392
- flcf = ngx_http_get_module_loc_conf(r, ngx_http_fastcgi_module);
393
-
394
- r->upstream->conf = &flcf->upstream;
395
-
396
- # if (nginx_version >= 1007009)
397
-
398
- fmcf = ngx_http_get_module_main_conf(r, ngx_http_fastcgi_module);
399
-
400
- r->upstream->caches = &fmcf->caches;
401
-
402
- rc = ngx_http_cache_purge_cache_get(r, r->upstream, &cache);
403
- if (rc != NGX_OK) {
404
- return rc;
405
- }
406
-
407
- # else
408
-
409
- cache = flcf->upstream.cache->data;
410
-
411
- # endif /* nginx_version >= 1007009 */
412
-
413
- if (ngx_http_cache_purge_init(r, cache, &flcf->cache_key) != NGX_OK) {
414
- return NGX_HTTP_INTERNAL_SERVER_ERROR;
415
- }
416
-
417
- # if (nginx_version >= 8011)
418
- r->main->count++;
419
- # endif
420
-
421
- ngx_http_cache_purge_handler(r);
422
-
423
- return NGX_DONE;
424
- }
425
- # endif /* NGX_HTTP_FASTCGI */
426
-
427
- # if (NGX_HTTP_PROXY)
428
- extern ngx_module_t ngx_http_proxy_module;
429
-
430
- typedef struct {
431
- ngx_str_t key_start;
432
- ngx_str_t schema;
433
- ngx_str_t host_header;
434
- ngx_str_t port;
435
- ngx_str_t uri;
436
- } ngx_http_proxy_vars_t;
437
-
438
- # if (nginx_version >= 1007009)
439
-
440
- typedef struct {
441
- ngx_array_t caches; /* ngx_http_file_cache_t * */
442
- } ngx_http_proxy_main_conf_t;
443
-
444
- # endif /* nginx_version >= 1007009 */
445
-
446
- # if (nginx_version >= 1007008)
447
-
448
- typedef struct {
449
- ngx_array_t *flushes;
450
- ngx_array_t *lengths;
451
- ngx_array_t *values;
452
- ngx_hash_t hash;
453
- } ngx_http_proxy_headers_t;
454
-
455
- # endif /* nginx_version >= 1007008 */
456
-
457
- typedef struct {
458
- ngx_http_upstream_conf_t upstream;
459
-
460
- # if (nginx_version >= 1007008)
461
- ngx_array_t *body_flushes;
462
- ngx_array_t *body_lengths;
463
- ngx_array_t *body_values;
464
- ngx_str_t body_source;
465
-
466
- ngx_http_proxy_headers_t headers;
467
- ngx_http_proxy_headers_t headers_cache;
468
- # else
469
- ngx_array_t *flushes;
470
- ngx_array_t *body_set_len;
471
- ngx_array_t *body_set;
472
- ngx_array_t *headers_set_len;
473
- ngx_array_t *headers_set;
474
- ngx_hash_t headers_set_hash;
475
- # endif /* nginx_version >= 1007008 */
476
-
477
- ngx_array_t *headers_source;
478
- # if (nginx_version < 8040)
479
- ngx_array_t *headers_names;
480
- # endif /* nginx_version < 8040 */
481
-
482
- ngx_array_t *proxy_lengths;
483
- ngx_array_t *proxy_values;
484
-
485
- ngx_array_t *redirects;
486
- # if (nginx_version >= 1001015)
487
- ngx_array_t *cookie_domains;
488
- ngx_array_t *cookie_paths;
489
- # endif /* nginx_version >= 1001015 */
490
-
491
- # if (nginx_version < 1007008)
492
- ngx_str_t body_source;
493
- # endif /* nginx_version < 1007008 */
494
-
495
- ngx_str_t method;
496
- ngx_str_t location;
497
- ngx_str_t url;
498
-
499
- ngx_http_complex_value_t cache_key;
500
-
501
- ngx_http_proxy_vars_t vars;
502
-
503
- ngx_flag_t redirect;
504
-
505
- # if (nginx_version >= 1001004)
506
- ngx_uint_t http_version;
507
- # endif /* nginx_version >= 1001004 */
508
-
509
- ngx_uint_t headers_hash_max_size;
510
- ngx_uint_t headers_hash_bucket_size;
511
-
512
- # if (NGX_HTTP_SSL)
513
- # if (nginx_version >= 1005006)
514
- ngx_uint_t ssl;
515
- ngx_uint_t ssl_protocols;
516
- ngx_str_t ssl_ciphers;
517
- # endif /* nginx_version >= 1005006 */
518
- # if (nginx_version >= 1007000)
519
- ngx_uint_t ssl_verify_depth;
520
- ngx_str_t ssl_trusted_certificate;
521
- ngx_str_t ssl_crl;
522
- # endif /* nginx_version >= 1007000 */
523
- # if (nginx_version >= 1007008)
524
- ngx_str_t ssl_certificate;
525
- ngx_str_t ssl_certificate_key;
526
- ngx_array_t *ssl_passwords;
527
- # endif /* nginx_version >= 1007008 */
528
- # endif
529
- } ngx_http_proxy_loc_conf_t;
530
-
531
- char *
532
- ngx_http_proxy_cache_purge_conf(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
533
- {
534
- ngx_http_compile_complex_value_t ccv;
535
- ngx_http_cache_purge_loc_conf_t *cplcf;
536
- ngx_http_core_loc_conf_t *clcf;
537
- ngx_http_proxy_loc_conf_t *plcf;
538
- ngx_str_t *value;
539
- # if (nginx_version >= 1007009)
540
- ngx_http_complex_value_t cv;
541
- # endif /* nginx_version >= 1007009 */
542
-
543
- cplcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_cache_purge_module);
544
-
545
- /* check for duplicates / collisions */
546
- if (cplcf->proxy.enable != NGX_CONF_UNSET) {
547
- return "is duplicate";
548
- }
549
-
550
- if (cf->args->nelts != 3) {
551
- return ngx_http_cache_purge_conf(cf, &cplcf->proxy);
552
- }
553
-
554
- if (cf->cmd_type & (NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF)) {
555
- return "(separate location syntax) is not allowed here";
556
- }
557
-
558
- plcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_proxy_module);
559
-
560
- # if (nginx_version >= 1007009)
561
- if (plcf->upstream.cache > 0)
562
- # else
563
- if (plcf->upstream.cache != NGX_CONF_UNSET_PTR
564
- && plcf->upstream.cache != NULL)
565
- # endif /* nginx_version >= 1007009 */
566
- {
567
- return "is incompatible with \"proxy_cache\"";
568
- }
569
-
570
- if (plcf->upstream.upstream || plcf->proxy_lengths) {
571
- return "is incompatible with \"proxy_pass\"";
572
- }
573
-
574
- if (plcf->upstream.store > 0
575
- # if (nginx_version < 1007009)
576
- || plcf->upstream.store_lengths
577
- # endif /* nginx_version >= 1007009 */
578
- )
579
- {
580
- return "is incompatible with \"proxy_store\"";
581
- }
582
-
583
- value = cf->args->elts;
584
-
585
- /* set proxy_cache part */
586
- # if (nginx_version >= 1007009)
587
-
588
- plcf->upstream.cache = 1;
589
-
590
- ngx_memzero(&ccv, sizeof(ngx_http_compile_complex_value_t));
591
-
592
- ccv.cf = cf;
593
- ccv.value = &value[1];
594
- ccv.complex_value = &cv;
595
-
596
- if (ngx_http_compile_complex_value(&ccv) != NGX_OK) {
597
- return NGX_CONF_ERROR;
598
- }
599
-
600
- if (cv.lengths != NULL) {
601
-
602
- plcf->upstream.cache_value = ngx_palloc(cf->pool,
603
- sizeof(ngx_http_complex_value_t));
604
- if (plcf->upstream.cache_value == NULL) {
605
- return NGX_CONF_ERROR;
606
- }
607
-
608
- *plcf->upstream.cache_value = cv;
609
-
610
- } else {
611
-
612
- plcf->upstream.cache_zone = ngx_shared_memory_add(cf, &value[1], 0,
613
- &ngx_http_proxy_module);
614
- if (plcf->upstream.cache_zone == NULL) {
615
- return NGX_CONF_ERROR;
616
- }
617
- }
618
-
619
- # else
620
-
621
- plcf->upstream.cache = ngx_shared_memory_add(cf, &value[1], 0,
622
- &ngx_http_proxy_module);
623
- if (plcf->upstream.cache == NULL) {
624
- return NGX_CONF_ERROR;
625
- }
626
-
627
- # endif /* nginx_version >= 1007009 */
628
-
629
- /* set proxy_cache_key part */
630
- ngx_memzero(&ccv, sizeof(ngx_http_compile_complex_value_t));
631
-
632
- ccv.cf = cf;
633
- ccv.value = &value[2];
634
- ccv.complex_value = &plcf->cache_key;
635
-
636
- if (ngx_http_compile_complex_value(&ccv) != NGX_OK) {
637
- return NGX_CONF_ERROR;
638
- }
639
-
640
- /* set handler */
641
- clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module);
642
-
643
- cplcf->proxy.enable = 0;
644
- clcf->handler = ngx_http_proxy_cache_purge_handler;
645
-
646
- return NGX_CONF_OK;
647
- }
648
-
649
- ngx_int_t
650
- ngx_http_proxy_cache_purge_handler(ngx_http_request_t *r)
651
- {
652
- ngx_http_file_cache_t *cache;
653
- ngx_http_proxy_loc_conf_t *plcf;
654
- # if (nginx_version >= 1007009)
655
- ngx_http_proxy_main_conf_t *pmcf;
656
- ngx_int_t rc;
657
- # endif /* nginx_version >= 1007009 */
658
-
659
- if (ngx_http_upstream_create(r) != NGX_OK) {
660
- return NGX_HTTP_INTERNAL_SERVER_ERROR;
661
- }
662
-
663
- plcf = ngx_http_get_module_loc_conf(r, ngx_http_proxy_module);
664
-
665
- r->upstream->conf = &plcf->upstream;
666
-
667
- # if (nginx_version >= 1007009)
668
-
669
- pmcf = ngx_http_get_module_main_conf(r, ngx_http_proxy_module);
670
-
671
- r->upstream->caches = &pmcf->caches;
672
-
673
- rc = ngx_http_cache_purge_cache_get(r, r->upstream, &cache);
674
- if (rc != NGX_OK) {
675
- return rc;
676
- }
677
-
678
- # else
679
-
680
- cache = plcf->upstream.cache->data;
681
-
682
- # endif /* nginx_version >= 1007009 */
683
-
684
- if (ngx_http_cache_purge_init(r, cache, &plcf->cache_key) != NGX_OK) {
685
- return NGX_HTTP_INTERNAL_SERVER_ERROR;
686
- }
687
-
688
- # if (nginx_version >= 8011)
689
- r->main->count++;
690
- # endif
691
-
692
- ngx_http_cache_purge_handler(r);
693
-
694
- return NGX_DONE;
695
- }
696
- # endif /* NGX_HTTP_PROXY */
697
-
698
- # if (NGX_HTTP_SCGI)
699
- extern ngx_module_t ngx_http_scgi_module;
700
-
701
- # if (nginx_version >= 1007009)
702
-
703
- typedef struct {
704
- ngx_array_t caches; /* ngx_http_file_cache_t * */
705
- } ngx_http_scgi_main_conf_t;
706
-
707
- # endif /* nginx_version >= 1007009 */
708
-
709
- # if (nginx_version >= 1007008)
710
-
711
- typedef struct {
712
- ngx_array_t *flushes;
713
- ngx_array_t *lengths;
714
- ngx_array_t *values;
715
- ngx_uint_t number;
716
- ngx_hash_t hash;
717
- } ngx_http_scgi_params_t;
718
-
719
- # endif /* nginx_version >= 1007008 */
720
-
721
- typedef struct {
722
- ngx_http_upstream_conf_t upstream;
723
-
724
- # if (nginx_version >= 1007008)
725
- ngx_http_scgi_params_t params;
726
- ngx_http_scgi_params_t params_cache;
727
- ngx_array_t *params_source;
728
- # else
729
- ngx_array_t *flushes;
730
- ngx_array_t *params_len;
731
- ngx_array_t *params;
732
- ngx_array_t *params_source;
733
-
734
- ngx_hash_t headers_hash;
735
- ngx_uint_t header_params;
736
- # endif /* nginx_version >= 1007008 */
737
-
738
- ngx_array_t *scgi_lengths;
739
- ngx_array_t *scgi_values;
740
-
741
- ngx_http_complex_value_t cache_key;
742
- } ngx_http_scgi_loc_conf_t;
743
-
744
- char *
745
- ngx_http_scgi_cache_purge_conf(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
746
- {
747
- ngx_http_compile_complex_value_t ccv;
748
- ngx_http_cache_purge_loc_conf_t *cplcf;
749
- ngx_http_core_loc_conf_t *clcf;
750
- ngx_http_scgi_loc_conf_t *slcf;
751
- ngx_str_t *value;
752
- # if (nginx_version >= 1007009)
753
- ngx_http_complex_value_t cv;
754
- # endif /* nginx_version >= 1007009 */
755
-
756
- cplcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_cache_purge_module);
757
-
758
- /* check for duplicates / collisions */
759
- if (cplcf->scgi.enable != NGX_CONF_UNSET) {
760
- return "is duplicate";
761
- }
762
-
763
- if (cf->args->nelts != 3) {
764
- return ngx_http_cache_purge_conf(cf, &cplcf->scgi);
765
- }
766
-
767
- if (cf->cmd_type & (NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF)) {
768
- return "(separate location syntax) is not allowed here";
769
- }
770
-
771
- slcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_scgi_module);
772
-
773
- # if (nginx_version >= 1007009)
774
- if (slcf->upstream.cache > 0)
775
- # else
776
- if (slcf->upstream.cache != NGX_CONF_UNSET_PTR
777
- && slcf->upstream.cache != NULL)
778
- # endif /* nginx_version >= 1007009 */
779
- {
780
- return "is incompatible with \"scgi_cache\"";
781
- }
782
-
783
- if (slcf->upstream.upstream || slcf->scgi_lengths) {
784
- return "is incompatible with \"scgi_pass\"";
785
- }
786
-
787
- if (slcf->upstream.store > 0
788
- # if (nginx_version < 1007009)
789
- || slcf->upstream.store_lengths
790
- # endif /* nginx_version >= 1007009 */
791
- )
792
- {
793
- return "is incompatible with \"scgi_store\"";
794
- }
795
-
796
- value = cf->args->elts;
797
-
798
- /* set scgi_cache part */
799
- # if (nginx_version >= 1007009)
800
-
801
- slcf->upstream.cache = 1;
802
-
803
- ngx_memzero(&ccv, sizeof(ngx_http_compile_complex_value_t));
804
-
805
- ccv.cf = cf;
806
- ccv.value = &value[1];
807
- ccv.complex_value = &cv;
808
-
809
- if (ngx_http_compile_complex_value(&ccv) != NGX_OK) {
810
- return NGX_CONF_ERROR;
811
- }
812
-
813
- if (cv.lengths != NULL) {
814
-
815
- slcf->upstream.cache_value = ngx_palloc(cf->pool,
816
- sizeof(ngx_http_complex_value_t));
817
- if (slcf->upstream.cache_value == NULL) {
818
- return NGX_CONF_ERROR;
819
- }
820
-
821
- *slcf->upstream.cache_value = cv;
822
-
823
- } else {
824
-
825
- slcf->upstream.cache_zone = ngx_shared_memory_add(cf, &value[1], 0,
826
- &ngx_http_scgi_module);
827
- if (slcf->upstream.cache_zone == NULL) {
828
- return NGX_CONF_ERROR;
829
- }
830
- }
831
-
832
- # else
833
-
834
- slcf->upstream.cache = ngx_shared_memory_add(cf, &value[1], 0,
835
- &ngx_http_scgi_module);
836
- if (slcf->upstream.cache == NULL) {
837
- return NGX_CONF_ERROR;
838
- }
839
-
840
- # endif /* nginx_version >= 1007009 */
841
-
842
- /* set scgi_cache_key part */
843
- ngx_memzero(&ccv, sizeof(ngx_http_compile_complex_value_t));
844
-
845
- ccv.cf = cf;
846
- ccv.value = &value[2];
847
- ccv.complex_value = &slcf->cache_key;
848
-
849
- if (ngx_http_compile_complex_value(&ccv) != NGX_OK) {
850
- return NGX_CONF_ERROR;
851
- }
852
-
853
- /* set handler */
854
- clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module);
855
-
856
- cplcf->scgi.enable = 0;
857
- clcf->handler = ngx_http_scgi_cache_purge_handler;
858
-
859
- return NGX_CONF_OK;
860
- }
861
-
862
- ngx_int_t
863
- ngx_http_scgi_cache_purge_handler(ngx_http_request_t *r)
864
- {
865
- ngx_http_file_cache_t *cache;
866
- ngx_http_scgi_loc_conf_t *slcf;
867
- # if (nginx_version >= 1007009)
868
- ngx_http_scgi_main_conf_t *smcf;
869
- ngx_int_t rc;
870
- # endif /* nginx_version >= 1007009 */
871
-
872
- if (ngx_http_upstream_create(r) != NGX_OK) {
873
- return NGX_HTTP_INTERNAL_SERVER_ERROR;
874
- }
875
-
876
- slcf = ngx_http_get_module_loc_conf(r, ngx_http_scgi_module);
877
-
878
- r->upstream->conf = &slcf->upstream;
879
-
880
- # if (nginx_version >= 1007009)
881
-
882
- smcf = ngx_http_get_module_main_conf(r, ngx_http_scgi_module);
883
-
884
- r->upstream->caches = &smcf->caches;
885
-
886
- rc = ngx_http_cache_purge_cache_get(r, r->upstream, &cache);
887
- if (rc != NGX_OK) {
888
- return rc;
889
- }
890
-
891
- # else
892
-
893
- cache = slcf->upstream.cache->data;
894
-
895
- # endif /* nginx_version >= 1007009 */
896
-
897
- if (ngx_http_cache_purge_init(r, cache, &slcf->cache_key) != NGX_OK) {
898
- return NGX_HTTP_INTERNAL_SERVER_ERROR;
899
- }
900
-
901
- # if (nginx_version >= 8011)
902
- r->main->count++;
903
- # endif
904
-
905
- ngx_http_cache_purge_handler(r);
906
-
907
- return NGX_DONE;
908
- }
909
- # endif /* NGX_HTTP_SCGI */
910
-
911
- # if (NGX_HTTP_UWSGI)
912
- extern ngx_module_t ngx_http_uwsgi_module;
913
-
914
- # if (nginx_version >= 1007009)
915
-
916
- typedef struct {
917
- ngx_array_t caches; /* ngx_http_file_cache_t * */
918
- } ngx_http_uwsgi_main_conf_t;
919
-
920
- # endif /* nginx_version >= 1007009 */
921
-
922
- # if (nginx_version >= 1007008)
923
-
924
- typedef struct {
925
- ngx_array_t *flushes;
926
- ngx_array_t *lengths;
927
- ngx_array_t *values;
928
- ngx_uint_t number;
929
- ngx_hash_t hash;
930
- } ngx_http_uwsgi_params_t;
931
-
932
- # endif /* nginx_version >= 1007008 */
933
-
934
- typedef struct {
935
- ngx_http_upstream_conf_t upstream;
936
-
937
- # if (nginx_version >= 1007008)
938
- ngx_http_uwsgi_params_t params;
939
- ngx_http_uwsgi_params_t params_cache;
940
- ngx_array_t *params_source;
941
- # else
942
- ngx_array_t *flushes;
943
- ngx_array_t *params_len;
944
- ngx_array_t *params;
945
- ngx_array_t *params_source;
946
-
947
- ngx_hash_t headers_hash;
948
- ngx_uint_t header_params;
949
- # endif /* nginx_version >= 1007008 */
950
-
951
- ngx_array_t *uwsgi_lengths;
952
- ngx_array_t *uwsgi_values;
953
-
954
- ngx_http_complex_value_t cache_key;
955
-
956
- ngx_str_t uwsgi_string;
957
-
958
- ngx_uint_t modifier1;
959
- ngx_uint_t modifier2;
960
-
961
- # if (NGX_HTTP_SSL)
962
- # if (nginx_version >= 1005008)
963
- ngx_uint_t ssl;
964
- ngx_uint_t ssl_protocols;
965
- ngx_str_t ssl_ciphers;
966
- # endif /* nginx_version >= 1005008 */
967
- # if (nginx_version >= 1007000)
968
- ngx_uint_t ssl_verify_depth;
969
- ngx_str_t ssl_trusted_certificate;
970
- ngx_str_t ssl_crl;
971
- # endif /* nginx_version >= 1007000 */
972
- # if (nginx_version >= 1007008)
973
- ngx_str_t ssl_certificate;
974
- ngx_str_t ssl_certificate_key;
975
- ngx_array_t *ssl_passwords;
976
- # endif /* nginx_version >= 1007008 */
977
- # endif
978
- } ngx_http_uwsgi_loc_conf_t;
979
-
980
- char *
981
- ngx_http_uwsgi_cache_purge_conf(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
982
- {
983
- ngx_http_compile_complex_value_t ccv;
984
- ngx_http_cache_purge_loc_conf_t *cplcf;
985
- ngx_http_core_loc_conf_t *clcf;
986
- ngx_http_uwsgi_loc_conf_t *ulcf;
987
- ngx_str_t *value;
988
- # if (nginx_version >= 1007009)
989
- ngx_http_complex_value_t cv;
990
- # endif /* nginx_version >= 1007009 */
991
-
992
- cplcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_cache_purge_module);
993
-
994
- /* check for duplicates / collisions */
995
- if (cplcf->uwsgi.enable != NGX_CONF_UNSET) {
996
- return "is duplicate";
997
- }
998
-
999
- if (cf->args->nelts != 3) {
1000
- return ngx_http_cache_purge_conf(cf, &cplcf->uwsgi);
1001
- }
1002
-
1003
- if (cf->cmd_type & (NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF)) {
1004
- return "(separate location syntax) is not allowed here";
1005
- }
1006
-
1007
- ulcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_uwsgi_module);
1008
-
1009
- # if (nginx_version >= 1007009)
1010
- if (ulcf->upstream.cache > 0)
1011
- # else
1012
- if (ulcf->upstream.cache != NGX_CONF_UNSET_PTR
1013
- && ulcf->upstream.cache != NULL)
1014
- # endif /* nginx_version >= 1007009 */
1015
- {
1016
- return "is incompatible with \"uwsgi_cache\"";
1017
- }
1018
-
1019
- if (ulcf->upstream.upstream || ulcf->uwsgi_lengths) {
1020
- return "is incompatible with \"uwsgi_pass\"";
1021
- }
1022
-
1023
- if (ulcf->upstream.store > 0
1024
- # if (nginx_version < 1007009)
1025
- || ulcf->upstream.store_lengths
1026
- # endif /* nginx_version >= 1007009 */
1027
- )
1028
- {
1029
- return "is incompatible with \"uwsgi_store\"";
1030
- }
1031
-
1032
- value = cf->args->elts;
1033
-
1034
- /* set uwsgi_cache part */
1035
- # if (nginx_version >= 1007009)
1036
-
1037
- ulcf->upstream.cache = 1;
1038
-
1039
- ngx_memzero(&ccv, sizeof(ngx_http_compile_complex_value_t));
1040
-
1041
- ccv.cf = cf;
1042
- ccv.value = &value[1];
1043
- ccv.complex_value = &cv;
1044
-
1045
- if (ngx_http_compile_complex_value(&ccv) != NGX_OK) {
1046
- return NGX_CONF_ERROR;
1047
- }
1048
-
1049
- if (cv.lengths != NULL) {
1050
-
1051
- ulcf->upstream.cache_value = ngx_palloc(cf->pool,
1052
- sizeof(ngx_http_complex_value_t));
1053
- if (ulcf->upstream.cache_value == NULL) {
1054
- return NGX_CONF_ERROR;
1055
- }
1056
-
1057
- *ulcf->upstream.cache_value = cv;
1058
-
1059
- } else {
1060
-
1061
- ulcf->upstream.cache_zone = ngx_shared_memory_add(cf, &value[1], 0,
1062
- &ngx_http_uwsgi_module);
1063
- if (ulcf->upstream.cache_zone == NULL) {
1064
- return NGX_CONF_ERROR;
1065
- }
1066
- }
1067
-
1068
- # else
1069
-
1070
- ulcf->upstream.cache = ngx_shared_memory_add(cf, &value[1], 0,
1071
- &ngx_http_uwsgi_module);
1072
- if (ulcf->upstream.cache == NULL) {
1073
- return NGX_CONF_ERROR;
1074
- }
1075
-
1076
- # endif /* nginx_version >= 1007009 */
1077
-
1078
- /* set uwsgi_cache_key part */
1079
- ngx_memzero(&ccv, sizeof(ngx_http_compile_complex_value_t));
1080
-
1081
- ccv.cf = cf;
1082
- ccv.value = &value[2];
1083
- ccv.complex_value = &ulcf->cache_key;
1084
-
1085
- if (ngx_http_compile_complex_value(&ccv) != NGX_OK) {
1086
- return NGX_CONF_ERROR;
1087
- }
1088
-
1089
- /* set handler */
1090
- clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module);
1091
-
1092
- cplcf->uwsgi.enable = 0;
1093
- clcf->handler = ngx_http_uwsgi_cache_purge_handler;
1094
-
1095
- return NGX_CONF_OK;
1096
- }
1097
-
1098
- ngx_int_t
1099
- ngx_http_uwsgi_cache_purge_handler(ngx_http_request_t *r)
1100
- {
1101
- ngx_http_file_cache_t *cache;
1102
- ngx_http_uwsgi_loc_conf_t *ulcf;
1103
- # if (nginx_version >= 1007009)
1104
- ngx_http_uwsgi_main_conf_t *umcf;
1105
- ngx_int_t rc;
1106
- # endif /* nginx_version >= 1007009 */
1107
-
1108
- if (ngx_http_upstream_create(r) != NGX_OK) {
1109
- return NGX_HTTP_INTERNAL_SERVER_ERROR;
1110
- }
1111
-
1112
- ulcf = ngx_http_get_module_loc_conf(r, ngx_http_uwsgi_module);
1113
-
1114
- r->upstream->conf = &ulcf->upstream;
1115
-
1116
- # if (nginx_version >= 1007009)
1117
-
1118
- umcf = ngx_http_get_module_main_conf(r, ngx_http_uwsgi_module);
1119
-
1120
- r->upstream->caches = &umcf->caches;
1121
-
1122
- rc = ngx_http_cache_purge_cache_get(r, r->upstream, &cache);
1123
- if (rc != NGX_OK) {
1124
- return rc;
1125
- }
1126
-
1127
- # else
1128
-
1129
- cache = ulcf->upstream.cache->data;
1130
-
1131
- # endif /* nginx_version >= 1007009 */
1132
-
1133
- if (ngx_http_cache_purge_init(r, cache, &ulcf->cache_key) != NGX_OK) {
1134
- return NGX_HTTP_INTERNAL_SERVER_ERROR;
1135
- }
1136
-
1137
- # if (nginx_version >= 8011)
1138
- r->main->count++;
1139
- # endif
1140
-
1141
- ngx_http_cache_purge_handler(r);
1142
-
1143
- return NGX_DONE;
1144
- }
1145
- # endif /* NGX_HTTP_UWSGI */
1146
-
1147
- ngx_int_t
1148
- ngx_http_cache_purge_access_handler(ngx_http_request_t *r)
1149
- {
1150
- ngx_http_cache_purge_loc_conf_t *cplcf;
1151
-
1152
- cplcf = ngx_http_get_module_loc_conf(r, ngx_http_cache_purge_module);
1153
-
1154
- if (r->method_name.len != cplcf->conf->method.len
1155
- || (ngx_strncmp(r->method_name.data, cplcf->conf->method.data,
1156
- r->method_name.len)))
1157
- {
1158
- return cplcf->original_handler(r);
1159
- }
1160
-
1161
- if ((cplcf->conf->access || cplcf->conf->access6)
1162
- && ngx_http_cache_purge_access(cplcf->conf->access,
1163
- cplcf->conf->access6,
1164
- r->connection->sockaddr) != NGX_OK)
1165
- {
1166
- return NGX_HTTP_FORBIDDEN;
1167
- }
1168
-
1169
- if (cplcf->handler == NULL) {
1170
- return NGX_HTTP_NOT_FOUND;
1171
- }
1172
-
1173
- return cplcf->handler(r);
1174
- }
1175
-
1176
- ngx_int_t
1177
- ngx_http_cache_purge_access(ngx_array_t *access, ngx_array_t *access6,
1178
- struct sockaddr *s)
1179
- {
1180
- in_addr_t inaddr;
1181
- ngx_in_cidr_t *a;
1182
- ngx_uint_t i;
1183
- # if (NGX_HAVE_INET6)
1184
- struct in6_addr *inaddr6;
1185
- ngx_in6_cidr_t *a6;
1186
- u_char *p;
1187
- ngx_uint_t n;
1188
- # endif /* NGX_HAVE_INET6 */
1189
-
1190
- switch (s->sa_family) {
1191
- case AF_INET:
1192
- if (access == NULL) {
1193
- return NGX_DECLINED;
1194
- }
1195
-
1196
- inaddr = ((struct sockaddr_in *) s)->sin_addr.s_addr;
1197
-
1198
- # if (NGX_HAVE_INET6)
1199
- ipv4:
1200
- # endif /* NGX_HAVE_INET6 */
1201
-
1202
- a = access->elts;
1203
- for (i = 0; i < access->nelts; i++) {
1204
- if ((inaddr & a[i].mask) == a[i].addr) {
1205
- return NGX_OK;
1206
- }
1207
- }
1208
-
1209
- return NGX_DECLINED;
1210
-
1211
- # if (NGX_HAVE_INET6)
1212
- case AF_INET6:
1213
- inaddr6 = &((struct sockaddr_in6 *) s)->sin6_addr;
1214
- p = inaddr6->s6_addr;
1215
-
1216
- if (access && IN6_IS_ADDR_V4MAPPED(inaddr6)) {
1217
- inaddr = p[12] << 24;
1218
- inaddr += p[13] << 16;
1219
- inaddr += p[14] << 8;
1220
- inaddr += p[15];
1221
- inaddr = htonl(inaddr);
1222
-
1223
- goto ipv4;
1224
- }
1225
-
1226
- if (access6 == NULL) {
1227
- return NGX_DECLINED;
1228
- }
1229
-
1230
- a6 = access6->elts;
1231
- for (i = 0; i < access6->nelts; i++) {
1232
- for (n = 0; n < 16; n++) {
1233
- if ((p[n] & a6[i].mask.s6_addr[n]) != a6[i].addr.s6_addr[n]) {
1234
- goto next;
1235
- }
1236
- }
1237
-
1238
- return NGX_OK;
1239
-
1240
- next:
1241
- continue;
1242
- }
1243
-
1244
- return NGX_DECLINED;
1245
- # endif /* NGX_HAVE_INET6 */
1246
- }
1247
-
1248
- return NGX_DECLINED;
1249
- }
1250
-
1251
- ngx_int_t
1252
- ngx_http_cache_purge_send_response(ngx_http_request_t *r)
1253
- {
1254
- ngx_chain_t out;
1255
- ngx_buf_t *b;
1256
- ngx_str_t *key;
1257
- ngx_int_t rc;
1258
- size_t len;
1259
-
1260
- key = r->cache->keys.elts;
1261
-
1262
- len = sizeof(ngx_http_cache_purge_success_page_top) - 1
1263
- + sizeof(ngx_http_cache_purge_success_page_tail) - 1
1264
- + sizeof("<br>Key : ") - 1 + sizeof(CRLF "<br>Path: ") - 1
1265
- + key[0].len + r->cache->file.name.len;
1266
-
1267
- r->headers_out.content_type.len = sizeof("text/html") - 1;
1268
- r->headers_out.content_type.data = (u_char *) "text/html";
1269
- r->headers_out.status = NGX_HTTP_OK;
1270
- r->headers_out.content_length_n = len;
1271
-
1272
- if (r->method == NGX_HTTP_HEAD) {
1273
- rc = ngx_http_send_header(r);
1274
- if (rc == NGX_ERROR || rc > NGX_OK || r->header_only) {
1275
- return rc;
1276
- }
1277
- }
1278
-
1279
- b = ngx_create_temp_buf(r->pool, len);
1280
- if (b == NULL) {
1281
- return NGX_HTTP_INTERNAL_SERVER_ERROR;
1282
- }
1283
-
1284
- out.buf = b;
1285
- out.next = NULL;
1286
-
1287
- b->last = ngx_cpymem(b->last, ngx_http_cache_purge_success_page_top,
1288
- sizeof(ngx_http_cache_purge_success_page_top) - 1);
1289
- b->last = ngx_cpymem(b->last, "<br>Key : ", sizeof("<br>Key : ") - 1);
1290
- b->last = ngx_cpymem(b->last, key[0].data, key[0].len);
1291
- b->last = ngx_cpymem(b->last, CRLF "<br>Path: ",
1292
- sizeof(CRLF "<br>Path: ") - 1);
1293
- b->last = ngx_cpymem(b->last, r->cache->file.name.data,
1294
- r->cache->file.name.len);
1295
- b->last = ngx_cpymem(b->last, ngx_http_cache_purge_success_page_tail,
1296
- sizeof(ngx_http_cache_purge_success_page_tail) - 1);
1297
- b->last_buf = 1;
1298
-
1299
- rc = ngx_http_send_header(r);
1300
- if (rc == NGX_ERROR || rc > NGX_OK || r->header_only) {
1301
- return rc;
1302
- }
1303
-
1304
- return ngx_http_output_filter(r, &out);
1305
- }
1306
-
1307
- # if (nginx_version >= 1007009)
1308
-
1309
- /*
1310
- * Based on: ngx_http_upstream.c/ngx_http_upstream_cache_get
1311
- * Copyright (C) Igor Sysoev
1312
- * Copyright (C) Nginx, Inc.
1313
- */
1314
- ngx_int_t
1315
- ngx_http_cache_purge_cache_get(ngx_http_request_t *r, ngx_http_upstream_t *u,
1316
- ngx_http_file_cache_t **cache)
1317
- {
1318
- ngx_str_t *name, val;
1319
- ngx_uint_t i;
1320
- ngx_http_file_cache_t **caches;
1321
-
1322
- if (u->conf->cache_zone) {
1323
- *cache = u->conf->cache_zone->data;
1324
- return NGX_OK;
1325
- }
1326
-
1327
- if (ngx_http_complex_value(r, u->conf->cache_value, &val) != NGX_OK) {
1328
- return NGX_ERROR;
1329
- }
1330
-
1331
- if (val.len == 0
1332
- || (val.len == 3 && ngx_strncmp(val.data, "off", 3) == 0))
1333
- {
1334
- return NGX_DECLINED;
1335
- }
1336
-
1337
- caches = u->caches->elts;
1338
-
1339
- for (i = 0; i < u->caches->nelts; i++) {
1340
- name = &caches[i]->shm_zone->shm.name;
1341
-
1342
- if (name->len == val.len
1343
- && ngx_strncmp(name->data, val.data, val.len) == 0)
1344
- {
1345
- *cache = caches[i];
1346
- return NGX_OK;
1347
- }
1348
- }
1349
-
1350
- ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
1351
- "cache \"%V\" not found", &val);
1352
-
1353
- return NGX_ERROR;
1354
- }
1355
-
1356
- # endif /* nginx_version >= 1007009 */
1357
-
1358
- ngx_int_t
1359
- ngx_http_cache_purge_init(ngx_http_request_t *r, ngx_http_file_cache_t *cache,
1360
- ngx_http_complex_value_t *cache_key)
1361
- {
1362
- ngx_http_cache_t *c;
1363
- ngx_str_t *key;
1364
- ngx_int_t rc;
1365
-
1366
- rc = ngx_http_discard_request_body(r);
1367
- if (rc != NGX_OK) {
1368
- return NGX_ERROR;
1369
- }
1370
-
1371
- c = ngx_pcalloc(r->pool, sizeof(ngx_http_cache_t));
1372
- if (c == NULL) {
1373
- return NGX_ERROR;
1374
- }
1375
-
1376
- rc = ngx_array_init(&c->keys, r->pool, 1, sizeof(ngx_str_t));
1377
- if (rc != NGX_OK) {
1378
- return NGX_ERROR;
1379
- }
1380
-
1381
- key = ngx_array_push(&c->keys);
1382
- if (key == NULL) {
1383
- return NGX_ERROR;
1384
- }
1385
-
1386
- rc = ngx_http_complex_value(r, cache_key, key);
1387
- if (rc != NGX_OK) {
1388
- return NGX_ERROR;
1389
- }
1390
-
1391
- r->cache = c;
1392
- c->body_start = ngx_pagesize;
1393
- c->file_cache = cache;
1394
- c->file.log = r->connection->log;
1395
-
1396
- ngx_http_file_cache_create_key(r);
1397
-
1398
- return NGX_OK;
1399
- }
1400
-
1401
- void
1402
- ngx_http_cache_purge_handler(ngx_http_request_t *r)
1403
- {
1404
- ngx_int_t rc;
1405
-
1406
- # if (NGX_HAVE_FILE_AIO)
1407
- if (r->aio) {
1408
- return;
1409
- }
1410
- # endif
1411
-
1412
- rc = ngx_http_file_cache_purge(r);
1413
-
1414
- ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
1415
- "http file cache purge: %i, \"%s\"",
1416
- rc, r->cache->file.name.data);
1417
-
1418
- switch (rc) {
1419
- case NGX_OK:
1420
- r->write_event_handler = ngx_http_request_empty_handler;
1421
- ngx_http_finalize_request(r, ngx_http_cache_purge_send_response(r));
1422
- return;
1423
- case NGX_DECLINED:
1424
- ngx_http_finalize_request(r, NGX_HTTP_NOT_FOUND);
1425
- return;
1426
- # if (NGX_HAVE_FILE_AIO)
1427
- case NGX_AGAIN:
1428
- r->write_event_handler = ngx_http_cache_purge_handler;
1429
- return;
1430
- # endif
1431
- default:
1432
- ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
1433
- }
1434
- }
1435
-
1436
- ngx_int_t
1437
- ngx_http_file_cache_purge(ngx_http_request_t *r)
1438
- {
1439
- ngx_http_file_cache_t *cache;
1440
- ngx_http_cache_t *c;
1441
-
1442
- switch (ngx_http_file_cache_open(r)) {
1443
- case NGX_OK:
1444
- case NGX_HTTP_CACHE_STALE:
1445
- # if (nginx_version >= 8001) \
1446
- || ((nginx_version < 8000) && (nginx_version >= 7060))
1447
- case NGX_HTTP_CACHE_UPDATING:
1448
- # endif
1449
- break;
1450
- case NGX_DECLINED:
1451
- return NGX_DECLINED;
1452
- # if (NGX_HAVE_FILE_AIO)
1453
- case NGX_AGAIN:
1454
- return NGX_AGAIN;
1455
- # endif
1456
- default:
1457
- return NGX_ERROR;
1458
- }
1459
-
1460
- c = r->cache;
1461
- cache = c->file_cache;
1462
-
1463
- /*
1464
- * delete file from disk but *keep* in-memory node,
1465
- * because other requests might still point to it.
1466
- */
1467
-
1468
- ngx_shmtx_lock(&cache->shpool->mutex);
1469
-
1470
- if (!c->node->exists) {
1471
- /* race between concurrent purges, backoff */
1472
- ngx_shmtx_unlock(&cache->shpool->mutex);
1473
- return NGX_DECLINED;
1474
- }
1475
-
1476
- # if (nginx_version >= 1000001)
1477
- cache->sh->size -= c->node->fs_size;
1478
- c->node->fs_size = 0;
1479
- # else
1480
- cache->sh->size -= (c->node->length + cache->bsize - 1) / cache->bsize;
1481
- c->node->length = 0;
1482
- # endif
1483
-
1484
- c->node->exists = 0;
1485
- # if (nginx_version >= 8001) \
1486
- || ((nginx_version < 8000) && (nginx_version >= 7060))
1487
- c->node->updating = 0;
1488
- # endif
1489
-
1490
- ngx_shmtx_unlock(&cache->shpool->mutex);
1491
-
1492
- if (ngx_delete_file(c->file.name.data) == NGX_FILE_ERROR) {
1493
- /* entry in error log is enough, don't notice client */
1494
- ngx_log_error(NGX_LOG_CRIT, r->connection->log, ngx_errno,
1495
- ngx_delete_file_n " \"%s\" failed", c->file.name.data);
1496
- }
1497
-
1498
- /* file deleted from cache */
1499
- return NGX_OK;
1500
- }
1501
-
1502
- char *
1503
- ngx_http_cache_purge_conf(ngx_conf_t *cf, ngx_http_cache_purge_conf_t *cpcf)
1504
- {
1505
- ngx_cidr_t cidr;
1506
- ngx_in_cidr_t *access;
1507
- # if (NGX_HAVE_INET6)
1508
- ngx_in6_cidr_t *access6;
1509
- # endif /* NGX_HAVE_INET6 */
1510
- ngx_str_t *value;
1511
- ngx_int_t rc;
1512
- ngx_uint_t i;
1513
-
1514
- value = cf->args->elts;
1515
-
1516
- if (ngx_strcmp(value[1].data, "off") == 0) {
1517
- cpcf->enable = 0;
1518
- return NGX_CONF_OK;
1519
-
1520
- } else if (ngx_strcmp(value[1].data, "on") == 0) {
1521
- ngx_str_set(&cpcf->method, "PURGE");
1522
-
1523
- } else {
1524
- cpcf->method = value[1];
1525
- }
1526
-
1527
- if (cf->args->nelts < 4) {
1528
- cpcf->enable = 1;
1529
- return NGX_CONF_OK;
1530
- }
1531
-
1532
- /* sanity check */
1533
- if (ngx_strcmp(value[2].data, "from") != 0) {
1534
- ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
1535
- "invalid parameter \"%V\", expected"
1536
- " \"from\" keyword", &value[2]);
1537
- return NGX_CONF_ERROR;
1538
- }
1539
-
1540
- if (ngx_strcmp(value[3].data, "all") == 0) {
1541
- cpcf->enable = 1;
1542
- return NGX_CONF_OK;
1543
- }
1544
-
1545
- for (i = 3; i < cf->args->nelts; i++) {
1546
- rc = ngx_ptocidr(&value[i], &cidr);
1547
-
1548
- if (rc == NGX_ERROR) {
1549
- ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
1550
- "invalid parameter \"%V\"", &value[i]);
1551
- return NGX_CONF_ERROR;
1552
- }
1553
-
1554
- if (rc == NGX_DONE) {
1555
- ngx_conf_log_error(NGX_LOG_WARN, cf, 0,
1556
- "low address bits of %V are meaningless",
1557
- &value[i]);
1558
- }
1559
-
1560
- switch (cidr.family) {
1561
- case AF_INET:
1562
- if (cpcf->access == NULL) {
1563
- cpcf->access = ngx_array_create(cf->pool, cf->args->nelts - 3,
1564
- sizeof(ngx_in_cidr_t));
1565
- if (cpcf->access == NULL) {
1566
- return NGX_CONF_ERROR;
1567
- }
1568
- }
1569
-
1570
- access = ngx_array_push(cpcf->access);
1571
- if (access == NULL) {
1572
- return NGX_CONF_ERROR;
1573
- }
1574
-
1575
- access->mask = cidr.u.in.mask;
1576
- access->addr = cidr.u.in.addr;
1577
-
1578
- break;
1579
-
1580
- # if (NGX_HAVE_INET6)
1581
- case AF_INET6:
1582
- if (cpcf->access6 == NULL) {
1583
- cpcf->access6 = ngx_array_create(cf->pool, cf->args->nelts - 3,
1584
- sizeof(ngx_in6_cidr_t));
1585
- if (cpcf->access6 == NULL) {
1586
- return NGX_CONF_ERROR;
1587
- }
1588
- }
1589
-
1590
- access6 = ngx_array_push(cpcf->access6);
1591
- if (access6 == NULL) {
1592
- return NGX_CONF_ERROR;
1593
- }
1594
-
1595
- access6->mask = cidr.u.in6.mask;
1596
- access6->addr = cidr.u.in6.addr;
1597
-
1598
- break;
1599
- # endif /* NGX_HAVE_INET6 */
1600
- }
1601
- }
1602
-
1603
- cpcf->enable = 1;
1604
-
1605
- return NGX_CONF_OK;
1606
- }
1607
-
1608
- void
1609
- ngx_http_cache_purge_merge_conf(ngx_http_cache_purge_conf_t *conf,
1610
- ngx_http_cache_purge_conf_t *prev)
1611
- {
1612
- if (conf->enable == NGX_CONF_UNSET) {
1613
- if (prev->enable == 1) {
1614
- conf->enable = prev->enable;
1615
- conf->method = prev->method;
1616
- conf->access = prev->access;
1617
- conf->access6 = prev->access6;
1618
-
1619
- } else {
1620
- conf->enable = 0;
1621
- }
1622
- }
1623
- }
1624
-
1625
- void *
1626
- ngx_http_cache_purge_create_loc_conf(ngx_conf_t *cf)
1627
- {
1628
- ngx_http_cache_purge_loc_conf_t *conf;
1629
-
1630
- conf = ngx_pcalloc(cf->pool, sizeof(ngx_http_cache_purge_loc_conf_t));
1631
- if (conf == NULL) {
1632
- return NULL;
1633
- }
1634
-
1635
- /*
1636
- * set by ngx_pcalloc():
1637
- *
1638
- * conf->*.method = { 0, NULL }
1639
- * conf->*.access = NULL
1640
- * conf->*.access6 = NULL
1641
- * conf->handler = NULL
1642
- * conf->original_handler = NULL
1643
- */
1644
-
1645
- # if (NGX_HTTP_FASTCGI)
1646
- conf->fastcgi.enable = NGX_CONF_UNSET;
1647
- # endif /* NGX_HTTP_FASTCGI */
1648
- # if (NGX_HTTP_PROXY)
1649
- conf->proxy.enable = NGX_CONF_UNSET;
1650
- # endif /* NGX_HTTP_PROXY */
1651
- # if (NGX_HTTP_SCGI)
1652
- conf->scgi.enable = NGX_CONF_UNSET;
1653
- # endif /* NGX_HTTP_SCGI */
1654
- # if (NGX_HTTP_UWSGI)
1655
- conf->uwsgi.enable = NGX_CONF_UNSET;
1656
- # endif /* NGX_HTTP_UWSGI */
1657
-
1658
- conf->conf = NGX_CONF_UNSET_PTR;
1659
-
1660
- return conf;
1661
- }
1662
-
1663
- char *
1664
- ngx_http_cache_purge_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
1665
- {
1666
- ngx_http_cache_purge_loc_conf_t *prev = parent;
1667
- ngx_http_cache_purge_loc_conf_t *conf = child;
1668
- ngx_http_core_loc_conf_t *clcf;
1669
- # if (NGX_HTTP_FASTCGI)
1670
- ngx_http_fastcgi_loc_conf_t *flcf;
1671
- # endif /* NGX_HTTP_FASTCGI */
1672
- # if (NGX_HTTP_PROXY)
1673
- ngx_http_proxy_loc_conf_t *plcf;
1674
- # endif /* NGX_HTTP_PROXY */
1675
- # if (NGX_HTTP_SCGI)
1676
- ngx_http_scgi_loc_conf_t *slcf;
1677
- # endif /* NGX_HTTP_SCGI */
1678
- # if (NGX_HTTP_UWSGI)
1679
- ngx_http_uwsgi_loc_conf_t *ulcf;
1680
- # endif /* NGX_HTTP_UWSGI */
1681
-
1682
- clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module);
1683
-
1684
- # if (NGX_HTTP_FASTCGI)
1685
- ngx_http_cache_purge_merge_conf(&conf->fastcgi, &prev->fastcgi);
1686
-
1687
- if (conf->fastcgi.enable && clcf->handler != NULL) {
1688
- flcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_fastcgi_module);
1689
-
1690
- if (flcf->upstream.upstream || flcf->fastcgi_lengths) {
1691
- conf->conf = &conf->fastcgi;
1692
- conf->handler = flcf->upstream.cache
1693
- ? ngx_http_fastcgi_cache_purge_handler : NULL;
1694
- conf->original_handler = clcf->handler;
1695
-
1696
- clcf->handler = ngx_http_cache_purge_access_handler;
1697
-
1698
- return NGX_CONF_OK;
1699
- }
1700
- }
1701
- # endif /* NGX_HTTP_FASTCGI */
1702
-
1703
- # if (NGX_HTTP_PROXY)
1704
- ngx_http_cache_purge_merge_conf(&conf->proxy, &prev->proxy);
1705
-
1706
- if (conf->proxy.enable && clcf->handler != NULL) {
1707
- plcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_proxy_module);
1708
-
1709
- if (plcf->upstream.upstream || plcf->proxy_lengths) {
1710
- conf->conf = &conf->proxy;
1711
- conf->handler = plcf->upstream.cache
1712
- ? ngx_http_proxy_cache_purge_handler : NULL;
1713
- conf->original_handler = clcf->handler;
1714
-
1715
- clcf->handler = ngx_http_cache_purge_access_handler;
1716
-
1717
- return NGX_CONF_OK;
1718
- }
1719
- }
1720
- # endif /* NGX_HTTP_PROXY */
1721
-
1722
- # if (NGX_HTTP_SCGI)
1723
- ngx_http_cache_purge_merge_conf(&conf->scgi, &prev->scgi);
1724
-
1725
- if (conf->scgi.enable && clcf->handler != NULL) {
1726
- slcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_scgi_module);
1727
-
1728
- if (slcf->upstream.upstream || slcf->scgi_lengths) {
1729
- conf->conf = &conf->scgi;
1730
- conf->handler = slcf->upstream.cache
1731
- ? ngx_http_scgi_cache_purge_handler : NULL;
1732
- conf->original_handler = clcf->handler;
1733
- clcf->handler = ngx_http_cache_purge_access_handler;
1734
-
1735
- return NGX_CONF_OK;
1736
- }
1737
- }
1738
- # endif /* NGX_HTTP_SCGI */
1739
-
1740
- # if (NGX_HTTP_UWSGI)
1741
- ngx_http_cache_purge_merge_conf(&conf->uwsgi, &prev->uwsgi);
1742
-
1743
- if (conf->uwsgi.enable && clcf->handler != NULL) {
1744
- ulcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_uwsgi_module);
1745
-
1746
- if (ulcf->upstream.upstream || ulcf->uwsgi_lengths) {
1747
- conf->conf = &conf->uwsgi;
1748
- conf->handler = ulcf->upstream.cache
1749
- ? ngx_http_uwsgi_cache_purge_handler : NULL;
1750
- conf->original_handler = clcf->handler;
1751
-
1752
- clcf->handler = ngx_http_cache_purge_access_handler;
1753
-
1754
- return NGX_CONF_OK;
1755
- }
1756
- }
1757
- # endif /* NGX_HTTP_UWSGI */
1758
-
1759
- ngx_conf_merge_ptr_value(conf->conf, prev->conf, NULL);
1760
-
1761
- if (conf->handler == NULL) {
1762
- conf->handler = prev->handler;
1763
- }
1764
-
1765
- if (conf->original_handler == NULL) {
1766
- conf->original_handler = prev->original_handler;
1767
- }
1768
-
1769
- return NGX_CONF_OK;
1770
- }
1771
-
1772
- #else /* !NGX_HTTP_CACHE */
1773
-
1774
- static ngx_http_module_t ngx_http_cache_purge_module_ctx = {
1775
- NULL, /* preconfiguration */
1776
- NULL, /* postconfiguration */
1777
-
1778
- NULL, /* create main configuration */
1779
- NULL, /* init main configuration */
1780
-
1781
- NULL, /* create server configuration */
1782
- NULL, /* merge server configuration */
1783
-
1784
- NULL, /* create location configuration */
1785
- NULL, /* merge location configuration */
1786
- };
1787
-
1788
- ngx_module_t ngx_http_cache_purge_module = {
1789
- NGX_MODULE_V1,
1790
- &ngx_http_cache_purge_module_ctx, /* module context */
1791
- NULL, /* module directives */
1792
- NGX_HTTP_MODULE, /* module type */
1793
- NULL, /* init master */
1794
- NULL, /* init module */
1795
- NULL, /* init process */
1796
- NULL, /* init thread */
1797
- NULL, /* exit thread */
1798
- NULL, /* exit process */
1799
- NULL, /* exit master */
1800
- NGX_MODULE_V1_PADDING
1801
- };
1802
-
1803
- #endif /* NGX_HTTP_CACHE */