passenger 4.0.59 → 4.0.60

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 (579) hide show
  1. checksums.yaml +8 -8
  2. checksums.yaml.gz.asc +7 -7
  3. data.tar.gz.asc +7 -7
  4. data/CHANGELOG +15 -0
  5. data/bin/passenger-install-apache2-module +2 -1
  6. data/bin/passenger-install-nginx-module +8 -2
  7. data/ext/apache2/Hooks.cpp +21 -2
  8. data/ext/apache2/MergeDirConfig.cpp +40 -40
  9. data/ext/common/ApplicationPool2/Group.h +14 -10
  10. data/ext/common/ApplicationPool2/Implementation.cpp +13 -7
  11. data/ext/common/ApplicationPool2/SmartSpawner.h +4 -1
  12. data/ext/common/Constants.h +1 -1
  13. data/ext/nginx/ContentHandler.c +17 -1
  14. data/lib/phusion_passenger.rb +4 -5
  15. data/lib/phusion_passenger/platform_info/depcheck_specs/libs.rb +4 -3
  16. data/lib/phusion_passenger/platform_info/openssl.rb +61 -0
  17. data/lib/phusion_passenger/standalone/runtime_installer.rb +27 -22
  18. data/packaging/debian/LICENSE.md +19 -0
  19. data/packaging/debian/README.md +320 -0
  20. data/packaging/debian/Vagrantfile +25 -0
  21. data/packaging/debian/build +210 -0
  22. data/packaging/debian/debian_specs/nginx/changelog +1989 -0
  23. data/packaging/debian/debian_specs/nginx/compat.erb +5 -0
  24. data/packaging/debian/debian_specs/nginx/conf/fastcgi.conf +25 -0
  25. data/packaging/debian/debian_specs/nginx/conf/fastcgi_params +24 -0
  26. data/packaging/debian/debian_specs/nginx/conf/koi-utf +109 -0
  27. data/packaging/debian/debian_specs/nginx/conf/koi-win +103 -0
  28. data/packaging/debian/debian_specs/nginx/conf/mime.types +89 -0
  29. data/packaging/debian/debian_specs/nginx/conf/nginx.conf.erb +97 -0
  30. data/packaging/debian/debian_specs/nginx/conf/proxy_params +4 -0
  31. data/packaging/debian/debian_specs/nginx/conf/scgi_params +16 -0
  32. data/packaging/debian/debian_specs/nginx/conf/sites-available/default.erb +93 -0
  33. data/packaging/debian/debian_specs/nginx/conf/snippets/fastcgi-php.conf +13 -0
  34. data/packaging/debian/debian_specs/nginx/conf/snippets/snakeoil.conf +5 -0
  35. data/packaging/debian/debian_specs/nginx/conf/uwsgi_params +16 -0
  36. data/packaging/debian/debian_specs/nginx/conf/win-utf +125 -0
  37. data/packaging/debian/debian_specs/nginx/control.erb +226 -0
  38. data/packaging/debian/debian_specs/nginx/copyright +196 -0
  39. data/packaging/debian/debian_specs/nginx/debian-full.lintian-overrides +1 -0
  40. data/packaging/debian/debian_specs/nginx/gbp.conf +2 -0
  41. data/packaging/debian/debian_specs/nginx/help/docs/fcgiwrap +14 -0
  42. data/packaging/debian/debian_specs/nginx/help/docs/php +119 -0
  43. data/packaging/debian/debian_specs/nginx/help/docs/support-irc +28 -0
  44. data/packaging/debian/debian_specs/nginx/help/docs/upstream +51 -0
  45. data/packaging/debian/debian_specs/nginx/help/examples/drupal +114 -0
  46. data/packaging/debian/debian_specs/nginx/help/examples/http +59 -0
  47. data/packaging/debian/debian_specs/nginx/help/examples/mail +30 -0
  48. data/packaging/debian/debian_specs/nginx/help/examples/mailman +59 -0
  49. data/packaging/debian/debian_specs/nginx/help/examples/nginx.conf +34 -0
  50. data/packaging/debian/debian_specs/nginx/help/examples/nginx_modsite +162 -0
  51. data/packaging/debian/debian_specs/nginx/help/examples/virtual_hosts +155 -0
  52. data/packaging/debian/debian_specs/nginx/help/examples/wordpress +74 -0
  53. data/packaging/debian/debian_specs/nginx/helpers.rb +41 -0
  54. data/packaging/debian/debian_specs/nginx/index-debian.html.in +32 -0
  55. data/packaging/debian/debian_specs/nginx/index-ubuntu.html.in +32 -0
  56. data/packaging/debian/debian_specs/nginx/index.html.erb +10 -0
  57. data/packaging/debian/debian_specs/nginx/modules/README.Modules-versions +65 -0
  58. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/README.markdown +510 -0
  59. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/config +5 -0
  60. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/doc/HttpHeadersMoreModule.wiki +395 -0
  61. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ddebug.h +119 -0
  62. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_filter_module.c +348 -0
  63. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_filter_module.h +80 -0
  64. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_in.c +826 -0
  65. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_in.h +26 -0
  66. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_out.c +716 -0
  67. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_out.h +26 -0
  68. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_util.c +380 -0
  69. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_util.h +52 -0
  70. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/util/build.sh +32 -0
  71. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/valgrind.suppress +215 -0
  72. data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/ChangeLog +35 -0
  73. data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/LICENSE +25 -0
  74. data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/README.md +93 -0
  75. data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/config +4 -0
  76. data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/ngx_http_auth_pam_module.c +462 -0
  77. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/CHANGES +66 -0
  78. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/LICENSE +26 -0
  79. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/README.md +171 -0
  80. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/TODO.md +7 -0
  81. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/config +21 -0
  82. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/ngx_cache_purge_module.c +1803 -0
  83. data/packaging/debian/debian_specs/nginx/modules/nginx-dav-ext-module/README +29 -0
  84. data/packaging/debian/debian_specs/nginx/modules/nginx-dav-ext-module/config +9 -0
  85. data/packaging/debian/debian_specs/nginx/modules/nginx-dav-ext-module/ngx_http_dav_ext_module.c +824 -0
  86. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/README +139 -0
  87. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/README_AUTO_LIB +395 -0
  88. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/TODO +1 -0
  89. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/actions/array +10 -0
  90. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/actions/palloc +8 -0
  91. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/build +597 -0
  92. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/action_replacements +5 -0
  93. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/action_types +12 -0
  94. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/conf_args +22 -0
  95. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/conf_locs +25 -0
  96. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/conf_macros +35 -0
  97. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/contexts +22 -0
  98. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/header_files +3 -0
  99. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/headers +4 -0
  100. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/module_dependencies +5 -0
  101. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/modules_optional +15 -0
  102. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/prefixes +2 -0
  103. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/array.h +7 -0
  104. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/conf_cmd_basic.h +43 -0
  105. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/conf_merge.h +78 -0
  106. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/palloc.h +6 -0
  107. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/text/autogen +12 -0
  108. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/config +49 -0
  109. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/core/action_macros +63 -0
  110. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/core/conf_cmds +62 -0
  111. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/modules/set_var +124 -0
  112. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/patches/more_logging_info +48 -0
  113. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/upstream/list +45 -0
  114. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/examples/README +12 -0
  115. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/examples/http/set_var/config +4 -0
  116. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/examples/http/set_var/ngx_http_set_var_examples_module.c +136 -0
  117. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/ngx_auto_lib_core +797 -0
  118. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/notes/CHANGES +17 -0
  119. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/notes/LICENSE +24 -0
  120. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_array.h +113 -0
  121. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_conf_cmd_basic.h +2203 -0
  122. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_conf_cmd_extra.h +5423 -0
  123. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_conf_merge.h +227 -0
  124. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_config.c +72 -0
  125. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_config.h +98 -0
  126. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_includes.h +66 -0
  127. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_palloc.h +112 -0
  128. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/patches/auto_config +16 -0
  129. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/patches/expose_rewrite_functions +291 -0
  130. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/patches/rewrite_phase_handler +19 -0
  131. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/hash/md5.h +117 -0
  132. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/hash/murmurhash2.c +77 -0
  133. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/hash/sha.h +200 -0
  134. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk.c +155 -0
  135. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk.h +58 -0
  136. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_buf.c +43 -0
  137. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_buf.h +5 -0
  138. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_path.c +129 -0
  139. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_path.h +30 -0
  140. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_value.c +192 -0
  141. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_value.h +21 -0
  142. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_conf_file.c +396 -0
  143. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_conf_file.h +44 -0
  144. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_debug.c +72 -0
  145. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_debug.h +171 -0
  146. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_encoding.c +57 -0
  147. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_encoding.h +12 -0
  148. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_hash.c +82 -0
  149. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_hash.h +45 -0
  150. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_http.c +138 -0
  151. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_http.h +3 -0
  152. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_http_headers.h +35 -0
  153. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_log.c +3 -0
  154. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_log.h +165 -0
  155. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_parse.h +67 -0
  156. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_path.c +583 -0
  157. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_path.h +22 -0
  158. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_process.c +20 -0
  159. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_process.h +12 -0
  160. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_regex.c +215 -0
  161. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_regex.h +7 -0
  162. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_rewrite.c +103 -0
  163. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_rewrite.h +26 -0
  164. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_set_var.c +602 -0
  165. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_set_var.h +44 -0
  166. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_string.c +434 -0
  167. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_string.h +37 -0
  168. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_string_util.h +14 -0
  169. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_upstream_list.c +205 -0
  170. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_upstream_list.h +27 -0
  171. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_uri.c +45 -0
  172. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_uri.h +6 -0
  173. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/LICENSE +25 -0
  174. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/README.markdown +1850 -0
  175. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/config +5 -0
  176. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/doc/HttpEchoModule.wiki +1558 -0
  177. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ddebug.h +109 -0
  178. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_echo.c +344 -0
  179. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_echo.h +25 -0
  180. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_filter.c +282 -0
  181. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_filter.h +15 -0
  182. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_foreach.c +183 -0
  183. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_foreach.h +16 -0
  184. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_handler.c +429 -0
  185. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_handler.h +18 -0
  186. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_location.c +178 -0
  187. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_location.h +13 -0
  188. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_module.c +667 -0
  189. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_module.h +137 -0
  190. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_request_info.c +452 -0
  191. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_request_info.h +31 -0
  192. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_sleep.c +208 -0
  193. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_sleep.h +16 -0
  194. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_subrequest.c +788 -0
  195. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_subrequest.h +19 -0
  196. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_timer.c +96 -0
  197. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_timer.h +13 -0
  198. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_util.c +298 -0
  199. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_util.h +58 -0
  200. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_var.c +110 -0
  201. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_var.h +9 -0
  202. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/util/build.sh +45 -0
  203. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/util/releng +8 -0
  204. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/util/wiki2pod.pl +131 -0
  205. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/valgrind.suppress +38 -0
  206. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/LICENCE +24 -0
  207. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/README +206 -0
  208. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/changelog.txt +54 -0
  209. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/config +26 -0
  210. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/protocol.txt +191 -0
  211. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_defs.c +59 -0
  212. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_defs.h +73 -0
  213. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_module.c +783 -0
  214. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_module.h +31 -0
  215. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_module_setup.c +361 -0
  216. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_types.h +120 -0
  217. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/memory/store.c +1180 -0
  218. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/memory/store.h +1 -0
  219. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_http_push_module_ipc.c +146 -0
  220. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_http_push_module_ipc.h +5 -0
  221. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_http_push_store.h +51 -0
  222. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_rwlock.c +178 -0
  223. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_rwlock.h +5 -0
  224. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/rbtree_util.c +246 -0
  225. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/rbtree_util.h +9 -0
  226. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/Changes +51 -0
  227. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/README.markdown +6954 -0
  228. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/config +363 -0
  229. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/doc/HttpLuaModule.wiki +5898 -0
  230. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/dtrace/ngx_lua_provider.d +61 -0
  231. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/misc/recv-until-pm/Makefile +3 -0
  232. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/misc/recv-until-pm/lib/RecvUntil.pm +138 -0
  233. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/misc/recv-until-pm/t/sanity.t +140 -0
  234. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/api/ngx_http_lua_api.h +52 -0
  235. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ddebug.h +82 -0
  236. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_accessby.c +377 -0
  237. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_accessby.h +22 -0
  238. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_api.c +77 -0
  239. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_args.c +537 -0
  240. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_args.h +20 -0
  241. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_bodyfilterby.c +632 -0
  242. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_bodyfilterby.h +31 -0
  243. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_cache.c +296 -0
  244. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_cache.h +24 -0
  245. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_capturefilter.c +175 -0
  246. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_capturefilter.h +20 -0
  247. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_clfactory.c +887 -0
  248. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_clfactory.h +22 -0
  249. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_common.h +478 -0
  250. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_config.c +67 -0
  251. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_config.h +19 -0
  252. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_consts.c +148 -0
  253. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_consts.h +20 -0
  254. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_contentby.c +369 -0
  255. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_contentby.h +26 -0
  256. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_control.c +483 -0
  257. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_control.h +20 -0
  258. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_coroutine.c +379 -0
  259. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_coroutine.h +23 -0
  260. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ctx.c +216 -0
  261. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ctx.h +23 -0
  262. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_directive.c +1081 -0
  263. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_directive.h +56 -0
  264. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_exception.c +58 -0
  265. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_exception.h +33 -0
  266. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headerfilterby.c +302 -0
  267. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headerfilterby.h +29 -0
  268. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers.c +1370 -0
  269. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers.h +22 -0
  270. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_in.c +782 -0
  271. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_in.h +22 -0
  272. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_out.c +625 -0
  273. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_out.h +23 -0
  274. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initby.c +42 -0
  275. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initby.h +23 -0
  276. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initworkerby.c +320 -0
  277. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initworkerby.h +25 -0
  278. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_log.c +300 -0
  279. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_log.h +20 -0
  280. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_logby.c +227 -0
  281. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_logby.h +22 -0
  282. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_misc.c +252 -0
  283. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_misc.h +20 -0
  284. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_module.c +924 -0
  285. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ndk.c +184 -0
  286. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ndk.h +21 -0
  287. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_output.c +794 -0
  288. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_output.h +28 -0
  289. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_pcrefix.c +106 -0
  290. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_pcrefix.h +23 -0
  291. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_phase.c +94 -0
  292. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_phase.h +13 -0
  293. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_probe.h +85 -0
  294. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_regex.c +2468 -0
  295. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_regex.h +22 -0
  296. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_body.c +1169 -0
  297. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_body.h +20 -0
  298. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_method.c +252 -0
  299. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_method.h +19 -0
  300. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_rewriteby.c +351 -0
  301. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_rewriteby.h +22 -0
  302. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_script.c +538 -0
  303. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_script.h +86 -0
  304. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_setby.c +216 -0
  305. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_setby.h +15 -0
  306. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_shdict.c +1844 -0
  307. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_shdict.h +52 -0
  308. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_sleep.c +191 -0
  309. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_sleep.h +20 -0
  310. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_tcp.c +5314 -0
  311. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_tcp.h +156 -0
  312. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_udp.c +1624 -0
  313. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_udp.h +56 -0
  314. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_string.c +704 -0
  315. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_string.h +20 -0
  316. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_subrequest.c +1741 -0
  317. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_subrequest.h +46 -0
  318. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_time.c +278 -0
  319. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_time.h +21 -0
  320. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_timer.c +661 -0
  321. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_timer.h +20 -0
  322. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uri.c +110 -0
  323. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uri.h +20 -0
  324. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uthread.c +283 -0
  325. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uthread.h +36 -0
  326. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_util.c +3972 -0
  327. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_util.h +423 -0
  328. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_variable.c +499 -0
  329. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_variable.h +20 -0
  330. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_worker.c +64 -0
  331. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_worker.h +17 -0
  332. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/tapset/ngx_lua.stp +5 -0
  333. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/build.sh +39 -0
  334. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/build2.sh +55 -0
  335. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/fix-comments +27 -0
  336. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/gdbinit +415 -0
  337. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/ngx-links +62 -0
  338. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/reindex +64 -0
  339. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/releng +8 -0
  340. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/retab +8 -0
  341. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/revim +102 -0
  342. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/run_test.sh +10 -0
  343. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/update-readme.sh +4 -0
  344. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/valgrind.suppress +144 -0
  345. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/CHANGES +107 -0
  346. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/LICENSE +25 -0
  347. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/Makefile +8 -0
  348. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/README +329 -0
  349. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/config +3 -0
  350. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/ngx_http_uploadprogress_module.c +1774 -0
  351. data/packaging/debian/debian_specs/nginx/modules/nginx-upstream-fair/README +53 -0
  352. data/packaging/debian/debian_specs/nginx/modules/nginx-upstream-fair/config +3 -0
  353. data/packaging/debian/debian_specs/nginx/modules/nginx-upstream-fair/ngx_http_upstream_fair_module.c +1356 -0
  354. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/CHANGELOG.md +37 -0
  355. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/HACKING.md +24 -0
  356. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/LICENSE +20 -0
  357. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/README.rst +182 -0
  358. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/config +8 -0
  359. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/nginx-0.6-support.patch +23 -0
  360. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/ngx_http_fancyindex_module.c +1305 -0
  361. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/template.awk +52 -0
  362. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/template.h +103 -0
  363. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/template.html +102 -0
  364. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/CHANGES +37 -0
  365. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/README +141 -0
  366. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/config +3 -0
  367. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/doc/README.google_code_home_page.wiki +120 -0
  368. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/doc/README.html +199 -0
  369. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/doc/README.wiki +123 -0
  370. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/ngx_http_subs_filter_module.c +1298 -0
  371. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/README +275 -0
  372. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/AutoInstall.pm +820 -0
  373. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install.pm +470 -0
  374. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/AutoInstall.pm +82 -0
  375. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Base.pm +83 -0
  376. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Can.pm +81 -0
  377. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Fetch.pm +93 -0
  378. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Include.pm +34 -0
  379. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Makefile.pm +415 -0
  380. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Metadata.pm +716 -0
  381. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/TestBase.pm +29 -0
  382. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Win32.pm +64 -0
  383. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/WriteAll.pm +63 -0
  384. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Spiffy.pm +539 -0
  385. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Base.pm +682 -0
  386. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Base/Filter.pm +341 -0
  387. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Builder.pm +1413 -0
  388. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Builder/Module.pm +81 -0
  389. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/More.pm +735 -0
  390. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx.pm +315 -0
  391. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx/LWP.pm +524 -0
  392. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx/Socket.pm +1749 -0
  393. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx/Util.pm +874 -0
  394. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs.t +136 -0
  395. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_capture.t +32 -0
  396. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_fix_string.t +32 -0
  397. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_regex.t +108 -0
  398. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_types.t +59 -0
  399. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/test.sh +5 -0
  400. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/util/update-readme.sh +7 -0
  401. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/util/wiki2google_code_homepage.pl +29 -0
  402. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/util/wiki2pod.pl +129 -0
  403. data/packaging/debian/debian_specs/nginx/nginx-common.NEWS +135 -0
  404. data/packaging/debian/debian_specs/nginx/nginx-common.README.Debian +45 -0
  405. data/packaging/debian/debian_specs/nginx/nginx-common.dirs.erb +32 -0
  406. data/packaging/debian/debian_specs/nginx/nginx-common.install +3 -0
  407. data/packaging/debian/debian_specs/nginx/nginx-common.lintian-overrides +2 -0
  408. data/packaging/debian/debian_specs/nginx/nginx-common.manpages +1 -0
  409. data/packaging/debian/debian_specs/nginx/nginx-common.nginx.default +10 -0
  410. data/packaging/debian/debian_specs/nginx/nginx-common.nginx.init.erb +214 -0
  411. data/packaging/debian/debian_specs/nginx/nginx-common.nginx.logrotate +18 -0
  412. data/packaging/debian/debian_specs/nginx/nginx-common.nginx.service.erb +37 -0
  413. data/packaging/debian/debian_specs/nginx/nginx-common.postinst.erb +66 -0
  414. data/packaging/debian/debian_specs/nginx/nginx-common.postrm.erb +46 -0
  415. data/packaging/debian/debian_specs/nginx/nginx-common.preinst +47 -0
  416. data/packaging/debian/debian_specs/nginx/nginx-common.prerm.erb +28 -0
  417. data/packaging/debian/debian_specs/nginx/nginx-doc.docs +2 -0
  418. data/packaging/debian/debian_specs/nginx/nginx-doc.examples +1 -0
  419. data/packaging/debian/debian_specs/nginx/nginx-extras.install.erb +17 -0
  420. data/packaging/debian/debian_specs/nginx/nginx-extras.lintian-overrides +1 -0
  421. data/packaging/debian/debian_specs/nginx/nginx-extras.postinst.erb +44 -0
  422. data/packaging/debian/debian_specs/nginx/nginx-extras.prerm +22 -0
  423. data/packaging/debian/debian_specs/nginx/nginx.1 +47 -0
  424. data/packaging/debian/debian_specs/nginx/patches/perl-use-dpkg-buildflags.patch +23 -0
  425. data/packaging/debian/debian_specs/nginx/patches/series +1 -0
  426. data/packaging/debian/debian_specs/nginx/rules.erb +185 -0
  427. data/packaging/debian/debian_specs/nginx/source/format +1 -0
  428. data/packaging/debian/debian_specs/nginx/tests/control +4 -0
  429. data/packaging/debian/debian_specs/nginx/ufw/nginx +14 -0
  430. data/packaging/debian/debian_specs/nginx/upstream/signing-key.asc +34 -0
  431. data/packaging/debian/debian_specs/nginx/watch +3 -0
  432. data/packaging/debian/debian_specs/passenger/README.Debian +12 -0
  433. data/packaging/debian/debian_specs/passenger/changelog +316 -0
  434. data/packaging/debian/debian_specs/passenger/compat +1 -0
  435. data/packaging/debian/debian_specs/passenger/control.erb +123 -0
  436. data/packaging/debian/debian_specs/passenger/copyright +385 -0
  437. data/packaging/debian/debian_specs/passenger/helpers.rb +24 -0
  438. data/packaging/debian/debian_specs/passenger/libapache2-mod-passenger.install +3 -0
  439. data/packaging/debian/debian_specs/passenger/libapache2-mod-passenger.postinst +36 -0
  440. data/packaging/debian/debian_specs/passenger/libapache2-mod-passenger.prerm +15 -0
  441. data/packaging/debian/debian_specs/passenger/locations.ini.erb +14 -0
  442. data/packaging/debian/debian_specs/passenger/passenger-dev.install.erb +3 -0
  443. data/packaging/debian/debian_specs/passenger/passenger-doc.install.erb +2 -0
  444. data/packaging/debian/debian_specs/passenger/passenger.conf +6 -0
  445. data/packaging/debian/debian_specs/passenger/passenger.docs +4 -0
  446. data/packaging/debian/debian_specs/passenger/passenger.install.erb +16 -0
  447. data/packaging/debian/debian_specs/passenger/passenger.load +3 -0
  448. data/packaging/debian/debian_specs/passenger/passenger.manpages +3 -0
  449. data/packaging/debian/debian_specs/passenger/passenger_free_ruby.c +29 -0
  450. data/packaging/debian/debian_specs/passenger/passenger_ruby_utils.c +54 -0
  451. data/packaging/debian/debian_specs/passenger/passenger_system_ruby.c.erb +37 -0
  452. data/packaging/debian/debian_specs/passenger/patches/series +0 -0
  453. data/packaging/debian/debian_specs/passenger/rules.erb +84 -0
  454. data/packaging/debian/debian_specs/passenger/source/format +1 -0
  455. data/packaging/debian/debian_specs/passenger_enterprise/README.Debian +12 -0
  456. data/packaging/debian/debian_specs/passenger_enterprise/changelog +316 -0
  457. data/packaging/debian/debian_specs/passenger_enterprise/compat +1 -0
  458. data/packaging/debian/debian_specs/passenger_enterprise/control.erb +123 -0
  459. data/packaging/debian/debian_specs/passenger_enterprise/copyright +385 -0
  460. data/packaging/debian/debian_specs/passenger_enterprise/helpers.rb +2 -0
  461. data/packaging/debian/debian_specs/passenger_enterprise/libapache2-mod-passenger-enterprise.install +3 -0
  462. data/packaging/debian/debian_specs/passenger_enterprise/libapache2-mod-passenger-enterprise.postinst +36 -0
  463. data/packaging/debian/debian_specs/passenger_enterprise/libapache2-mod-passenger-enterprise.prerm +15 -0
  464. data/packaging/debian/debian_specs/passenger_enterprise/locations.ini.erb +14 -0
  465. data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise-dev.install.erb +3 -0
  466. data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise-doc.install.erb +2 -0
  467. data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise.docs +4 -0
  468. data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise.install.erb +14 -0
  469. data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise.manpages +3 -0
  470. data/packaging/debian/debian_specs/passenger_enterprise/passenger.conf +6 -0
  471. data/packaging/debian/debian_specs/passenger_enterprise/passenger.load +3 -0
  472. data/packaging/debian/debian_specs/passenger_enterprise/passenger_free_ruby.c.erb +1 -0
  473. data/packaging/debian/debian_specs/passenger_enterprise/passenger_ruby_utils.c.erb +1 -0
  474. data/packaging/debian/debian_specs/passenger_enterprise/passenger_system_ruby.c.erb +1 -0
  475. data/packaging/debian/debian_specs/passenger_enterprise/patches/series +0 -0
  476. data/packaging/debian/debian_specs/passenger_enterprise/rules.erb +84 -0
  477. data/packaging/debian/debian_specs/passenger_enterprise/source/format +1 -0
  478. data/packaging/debian/docker_images/Makefile +38 -0
  479. data/packaging/debian/docker_images/buildbox/CONTAINER_VERSION.txt +0 -0
  480. data/packaging/debian/docker_images/buildbox/Dockerfile +3 -0
  481. data/packaging/debian/docker_images/buildbox/Gemfile +9 -0
  482. data/packaging/debian/docker_images/buildbox/Gemfile.lock +42 -0
  483. data/packaging/debian/docker_images/buildbox/install.sh +85 -0
  484. data/packaging/debian/docker_images/buildbox/pbuilderrc +4 -0
  485. data/packaging/debian/docker_images/buildbox/sudoers.conf +6 -0
  486. data/packaging/debian/docker_images/setup-buildbox-docker-image +7 -0
  487. data/packaging/debian/docker_images/setup-testbox-docker-image-debian-6 +7 -0
  488. data/packaging/debian/docker_images/setup-testbox-docker-image-debian-7 +7 -0
  489. data/packaging/debian/docker_images/setup-testbox-docker-image-debian-8 +7 -0
  490. data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-12.04 +7 -0
  491. data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-14.04 +7 -0
  492. data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-15.04 +7 -0
  493. data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-15.10 +7 -0
  494. data/packaging/debian/docker_images/testbox-debian-6/Dockerfile +3 -0
  495. data/packaging/debian/docker_images/testbox-debian-6/Gemfile +2 -0
  496. data/packaging/debian/docker_images/testbox-debian-6/Gemfile.lock +23 -0
  497. data/packaging/debian/docker_images/testbox-debian-6/argparse.py +2374 -0
  498. data/packaging/debian/docker_images/testbox-debian-6/install.sh +78 -0
  499. data/packaging/debian/docker_images/testbox-debian-7/Dockerfile +3 -0
  500. data/packaging/debian/docker_images/testbox-debian-7/Gemfile +2 -0
  501. data/packaging/debian/docker_images/testbox-debian-7/Gemfile.lock +23 -0
  502. data/packaging/debian/docker_images/testbox-debian-7/install.sh +71 -0
  503. data/packaging/debian/docker_images/testbox-debian-8/Dockerfile +3 -0
  504. data/packaging/debian/docker_images/testbox-debian-8/Gemfile +2 -0
  505. data/packaging/debian/docker_images/testbox-debian-8/Gemfile.lock +23 -0
  506. data/packaging/debian/docker_images/testbox-debian-8/install.sh +70 -0
  507. data/packaging/debian/docker_images/testbox-ubuntu-12.04/Dockerfile +3 -0
  508. data/packaging/debian/docker_images/testbox-ubuntu-12.04/Gemfile +2 -0
  509. data/packaging/debian/docker_images/testbox-ubuntu-12.04/Gemfile.lock +23 -0
  510. data/packaging/debian/docker_images/testbox-ubuntu-12.04/install.sh +69 -0
  511. data/packaging/debian/docker_images/testbox-ubuntu-14.04/Dockerfile +3 -0
  512. data/packaging/debian/docker_images/testbox-ubuntu-14.04/Gemfile +2 -0
  513. data/packaging/debian/docker_images/testbox-ubuntu-14.04/Gemfile.lock +23 -0
  514. data/packaging/debian/docker_images/testbox-ubuntu-14.04/install.sh +69 -0
  515. data/packaging/debian/docker_images/testbox-ubuntu-15.04/Dockerfile +3 -0
  516. data/packaging/debian/docker_images/testbox-ubuntu-15.04/Gemfile +2 -0
  517. data/packaging/debian/docker_images/testbox-ubuntu-15.04/Gemfile.lock +23 -0
  518. data/packaging/debian/docker_images/testbox-ubuntu-15.04/install.sh +69 -0
  519. data/packaging/debian/docker_images/testbox-ubuntu-15.10/Dockerfile +3 -0
  520. data/packaging/debian/docker_images/testbox-ubuntu-15.10/Gemfile +2 -0
  521. data/packaging/debian/docker_images/testbox-ubuntu-15.10/Gemfile.lock +23 -0
  522. data/packaging/debian/docker_images/testbox-ubuntu-15.10/install.sh +69 -0
  523. data/packaging/debian/internal/build/Rakefile +235 -0
  524. data/packaging/debian/internal/build/build-passenger-orig-tarball.sh +76 -0
  525. data/packaging/debian/internal/build/build-source-package.rb +121 -0
  526. data/packaging/debian/internal/build/download-nginx-orig-tarball.sh +17 -0
  527. data/packaging/debian/internal/build/rakefile_support.rb +96 -0
  528. data/packaging/debian/internal/build/setup-environment-essentials.sh +15 -0
  529. data/packaging/debian/internal/build/setup-environment.sh +29 -0
  530. data/packaging/debian/internal/lib/distro_info.rb +82 -0
  531. data/packaging/debian/internal/lib/distro_info.sh +303 -0
  532. data/packaging/debian/internal/lib/distro_info.sh.erb +65 -0
  533. data/packaging/debian/internal/lib/library.sh +83 -0
  534. data/packaging/debian/internal/lib/preprocessor.rb +173 -0
  535. data/packaging/debian/internal/lib/tracking.rb +95 -0
  536. data/packaging/debian/internal/lib/tracking_category.rb +45 -0
  537. data/packaging/debian/internal/lib/tracking_database.rb +132 -0
  538. data/packaging/debian/internal/lib/tracking_task.rb +148 -0
  539. data/packaging/debian/internal/lib/utils.rb +78 -0
  540. data/packaging/debian/internal/publish/Rakefile +97 -0
  541. data/packaging/debian/internal/publish/oss-binaries.phusionpassenger.com-fingerprint.txt +1 -0
  542. data/packaging/debian/internal/publish/packagecloud_fingerprint.txt +1 -0
  543. data/packaging/debian/internal/publish/passenger_website_fingerprint.txt +1 -0
  544. data/packaging/debian/internal/publish/preinit.sh +7 -0
  545. data/packaging/debian/internal/publish/rakefile_support.rb +183 -0
  546. data/packaging/debian/internal/scripts/gpg_noninteractive/gpg +11 -0
  547. data/packaging/debian/internal/scripts/initccache.sh +35 -0
  548. data/packaging/debian/internal/scripts/inituidgid.sh +19 -0
  549. data/packaging/debian/internal/scripts/my_init +340 -0
  550. data/packaging/debian/internal/scripts/pin_certificates +34 -0
  551. data/packaging/debian/internal/scripts/regen_distro_info_script.sh +3 -0
  552. data/packaging/debian/internal/scripts/setup-vagrant.sh +12 -0
  553. data/packaging/debian/internal/scripts/setuser +31 -0
  554. data/packaging/debian/internal/shell/initpbuilder.sh +3 -0
  555. data/packaging/debian/internal/shell/preinit.sh +28 -0
  556. data/packaging/debian/internal/shell/sudoers.conf +1 -0
  557. data/packaging/debian/internal/test/apache/apache-24.conf +5 -0
  558. data/packaging/debian/internal/test/apache/apache-pre-24.conf +4 -0
  559. data/packaging/debian/internal/test/apache/vhost.conf +17 -0
  560. data/packaging/debian/internal/test/misc/config.json +15 -0
  561. data/packaging/debian/internal/test/misc/hosts.conf +4 -0
  562. data/packaging/debian/internal/test/misc/init.sh +25 -0
  563. data/packaging/debian/internal/test/misc/nodejs_test_app.js +6 -0
  564. data/packaging/debian/internal/test/misc/python_test_app.py +3 -0
  565. data/packaging/debian/internal/test/misc/ruby_test_app.rb +5 -0
  566. data/packaging/debian/internal/test/misc/test_support.rb +61 -0
  567. data/packaging/debian/internal/test/nginx/vhost.conf +23 -0
  568. data/packaging/debian/internal/test/system_web_server_test.rb +126 -0
  569. data/packaging/debian/internal/test/test.sh +141 -0
  570. data/packaging/debian/jenkins/publish/clear_caches.rb +48 -0
  571. data/packaging/debian/jenkins/publish/publish.sh +69 -0
  572. data/packaging/debian/jenkins/test/test.sh +63 -0
  573. data/packaging/debian/passenger_apt_automation.sublime-project +14 -0
  574. data/packaging/debian/publish +172 -0
  575. data/packaging/debian/shell +116 -0
  576. data/packaging/debian/test +142 -0
  577. metadata +563 -3
  578. metadata.gz.asc +7 -7
  579. data/resources/oss-binaries.phusionpassenger.com.crt +0 -208
@@ -0,0 +1,29 @@
1
+ == nginx-dav-ext-module ==
2
+
3
+ NGINX WebDAV missing commands support (PROPFIND & OPTIONS)
4
+
5
+ (c) 2012 Arutyunyan Roman (arut@qip.ru)
6
+
7
+
8
+ For full WebDAV support in NGINX you need to turn on standard NGINX
9
+ WebDAV module (providing partial WebDAV implementation) as well as
10
+ this module for missing methods
11
+
12
+ ./configure --with-http_dav_module --add-module=<path-to-this-module>
13
+
14
+
15
+
16
+ Requirements:
17
+
18
+ libexpat-dev
19
+
20
+
21
+ Example config:
22
+
23
+ location / {
24
+
25
+ dav_methods PUT DELETE MKCOL COPY MOVE;
26
+ dav_ext_methods PROPFIND OPTIONS;
27
+
28
+ root /var/root/;
29
+ }
@@ -0,0 +1,9 @@
1
+ ngx_addon_name="ngx_http_dav_ext_module"
2
+
3
+ HTTP_MODULES="$HTTP_MODULES \
4
+ ngx_http_dav_ext_module"
5
+
6
+ NGX_ADDON_SRCS="$NGX_ADDON_SRCS \
7
+ $ngx_addon_dir/ngx_http_dav_ext_module.c"
8
+
9
+ CORE_LIBS="$CORE_LIBS -lexpat"
@@ -0,0 +1,824 @@
1
+ /******************************************************************************
2
+ Copyright (c) 2012, Roman Arutyunyan (arut@qip.ru)
3
+ All rights reserved.
4
+
5
+ Redistribution and use in source and binary forms, with or without modification,
6
+ are permitted provided that the following conditions are met:
7
+
8
+ 1. Redistributions of source code must retain the above copyright notice,
9
+ this list of conditions and the following disclaimer.
10
+
11
+ 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ this list of conditions and the following disclaimer in the documentation
13
+ and/or other materials provided with the distribution.
14
+
15
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
16
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
17
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
18
+ SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
21
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
23
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
24
+ OF SUCH DAMAGE.
25
+ *******************************************************************************/
26
+
27
+ /*
28
+
29
+ NGINX missing WebDAV commands support
30
+
31
+ *PROPFIND & OPTIONS*
32
+
33
+ */
34
+
35
+ #include <ngx_config.h>
36
+ #include <ngx_core.h>
37
+ #include <ngx_http.h>
38
+
39
+ #include <sys/types.h>
40
+ #include <dirent.h>
41
+ #include <time.h>
42
+
43
+ #include <expat.h>
44
+
45
+ #define NGX_HTTP_DAV_EXT_OFF 2
46
+
47
+ typedef struct {
48
+
49
+ ngx_uint_t methods;
50
+
51
+ } ngx_http_dav_ext_loc_conf_t;
52
+
53
+ static ngx_int_t ngx_http_dav_ext_init(ngx_conf_t *cf);
54
+ static void * ngx_http_dav_ext_create_loc_conf(ngx_conf_t *cf);
55
+ static char * ngx_http_dav_ext_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child);
56
+
57
+ static ngx_conf_bitmask_t ngx_http_dav_ext_methods_mask[] = {
58
+
59
+ { ngx_string("off"), NGX_HTTP_DAV_EXT_OFF },
60
+ { ngx_string("propfind"), NGX_HTTP_PROPFIND },
61
+ { ngx_string("options"), NGX_HTTP_OPTIONS },
62
+ { ngx_null_string, 0 }
63
+
64
+ };
65
+
66
+ static ngx_command_t ngx_http_dav_ext_commands[] = {
67
+
68
+ { ngx_string("dav_ext_methods"),
69
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
70
+ ngx_conf_set_bitmask_slot,
71
+ NGX_HTTP_LOC_CONF_OFFSET,
72
+ offsetof(ngx_http_dav_ext_loc_conf_t, methods),
73
+ &ngx_http_dav_ext_methods_mask },
74
+
75
+ ngx_null_command
76
+ };
77
+
78
+ static ngx_http_module_t ngx_http_dav_ext_module_ctx = {
79
+ NULL, /* preconfiguration */
80
+ ngx_http_dav_ext_init, /* postconfiguration */
81
+
82
+ NULL, /* create main configuration */
83
+ NULL, /* init main configuration */
84
+
85
+ NULL, /* create server configuration */
86
+ NULL, /* merge server configuration */
87
+
88
+ ngx_http_dav_ext_create_loc_conf, /* create location configuration */
89
+ ngx_http_dav_ext_merge_loc_conf, /* merge location configuration */
90
+ };
91
+
92
+
93
+ ngx_module_t ngx_http_dav_ext_module = {
94
+ NGX_MODULE_V1,
95
+ &ngx_http_dav_ext_module_ctx, /* module context */
96
+ ngx_http_dav_ext_commands, /* module directives */
97
+ NGX_HTTP_MODULE, /* module type */
98
+ NULL, /* init master */
99
+ NULL, /* init module */
100
+ NULL, /* init process */
101
+ NULL, /* init thread */
102
+ NULL, /* exit thread */
103
+ NULL, /* exit process */
104
+ NULL, /* exit master */
105
+ NGX_MODULE_V1_PADDING
106
+ };
107
+
108
+ #define NGX_HTTP_DAV_EXT_NODE_propfind 0x001
109
+ #define NGX_HTTP_DAV_EXT_NODE_prop 0x002
110
+ #define NGX_HTTP_DAV_EXT_NODE_propname 0x004
111
+ #define NGX_HTTP_DAV_EXT_NODE_allprop 0x008
112
+
113
+ #define NGX_HTTP_DAV_EXT_PROP_creationdate 0x001
114
+ #define NGX_HTTP_DAV_EXT_PROP_displayname 0x002
115
+ #define NGX_HTTP_DAV_EXT_PROP_getcontentlanguage 0x004
116
+ #define NGX_HTTP_DAV_EXT_PROP_getcontentlength 0x008
117
+ #define NGX_HTTP_DAV_EXT_PROP_getcontenttype 0x010
118
+ #define NGX_HTTP_DAV_EXT_PROP_getetag 0x020
119
+ #define NGX_HTTP_DAV_EXT_PROP_getlastmodified 0x040
120
+ #define NGX_HTTP_DAV_EXT_PROP_lockdiscovery 0x080
121
+ #define NGX_HTTP_DAV_EXT_PROP_resourcetype 0x100
122
+ #define NGX_HTTP_DAV_EXT_PROP_source 0x200
123
+ #define NGX_HTTP_DAV_EXT_PROP_supportedlock 0x400
124
+
125
+ #define NGX_HTTP_DAV_EXT_PROPFIND_SELECTED 1
126
+ #define NGX_HTTP_DAV_EXT_PROPFIND_NAMES 2
127
+ #define NGX_HTTP_DAV_EXT_PROPFIND_ALL 3
128
+
129
+ typedef struct {
130
+
131
+ ngx_uint_t nodes;
132
+
133
+ ngx_uint_t props;
134
+
135
+ ngx_uint_t propfind;
136
+
137
+ } ngx_http_dav_ext_ctx_t;
138
+
139
+ static int ngx_http_dav_ext_xmlcmp(const char *xname, const char *sname) {
140
+
141
+ const char *c;
142
+
143
+ c = strrchr(xname, ':');
144
+
145
+ return strcmp(c ? c + 1 : xname, sname);
146
+ }
147
+
148
+ static void ngx_http_dav_ext_start_xml_elt(void *user_data,
149
+ const XML_Char *name, const XML_Char **atts)
150
+ {
151
+ ngx_http_dav_ext_ctx_t *ctx = user_data;
152
+
153
+ #define NGX_HTTP_DAV_EXT_SET_NODE(nm) \
154
+ if (!ngx_http_dav_ext_xmlcmp(name, #nm)) \
155
+ ctx->nodes ^= NGX_HTTP_DAV_EXT_NODE_##nm
156
+
157
+ NGX_HTTP_DAV_EXT_SET_NODE(propfind);
158
+ NGX_HTTP_DAV_EXT_SET_NODE(prop);
159
+ NGX_HTTP_DAV_EXT_SET_NODE(propname);
160
+ NGX_HTTP_DAV_EXT_SET_NODE(allprop);
161
+
162
+ }
163
+
164
+ static void ngx_http_dav_ext_end_xml_elt(void *user_data, const XML_Char *name)
165
+ {
166
+ ngx_http_dav_ext_ctx_t *ctx = user_data;
167
+
168
+ if (ctx->nodes & NGX_HTTP_DAV_EXT_NODE_propfind) {
169
+
170
+ if (ctx->nodes & NGX_HTTP_DAV_EXT_NODE_prop) {
171
+
172
+ ctx->propfind = NGX_HTTP_DAV_EXT_PROPFIND_SELECTED;
173
+
174
+ #define NGX_HTTP_DAV_EXT_SET_PROP(nm) \
175
+ if (!ngx_http_dav_ext_xmlcmp(name, #nm)) \
176
+ ctx->props |= NGX_HTTP_DAV_EXT_PROP_##nm
177
+
178
+ NGX_HTTP_DAV_EXT_SET_PROP(creationdate);
179
+ NGX_HTTP_DAV_EXT_SET_PROP(displayname);
180
+ NGX_HTTP_DAV_EXT_SET_PROP(getcontentlanguage);
181
+ NGX_HTTP_DAV_EXT_SET_PROP(getcontentlength);
182
+ NGX_HTTP_DAV_EXT_SET_PROP(getcontenttype);
183
+ NGX_HTTP_DAV_EXT_SET_PROP(getetag);
184
+ NGX_HTTP_DAV_EXT_SET_PROP(getlastmodified);
185
+ NGX_HTTP_DAV_EXT_SET_PROP(lockdiscovery);
186
+ NGX_HTTP_DAV_EXT_SET_PROP(resourcetype);
187
+ NGX_HTTP_DAV_EXT_SET_PROP(source);
188
+ NGX_HTTP_DAV_EXT_SET_PROP(supportedlock);
189
+
190
+ }
191
+
192
+ if (ctx->nodes & NGX_HTTP_DAV_EXT_NODE_propname) {
193
+
194
+ ctx->propfind = NGX_HTTP_DAV_EXT_PROPFIND_NAMES;
195
+
196
+ }
197
+
198
+ if (ctx->nodes & NGX_HTTP_DAV_EXT_NODE_allprop) {
199
+
200
+ ctx->propfind = NGX_HTTP_DAV_EXT_PROPFIND_ALL;
201
+
202
+ }
203
+
204
+ }
205
+
206
+ ngx_http_dav_ext_start_xml_elt(user_data, name, NULL);
207
+ }
208
+
209
+ #define NGX_HTTP_DAV_EXT_COPY 0x01
210
+ #define NGX_HTTP_DAV_EXT_ESCAPE 0x02
211
+
212
+ static void
213
+ ngx_http_dav_ext_output(ngx_http_request_t *r, ngx_chain_t **ll,
214
+ ngx_int_t flags, u_char *data, ngx_uint_t len)
215
+ {
216
+ ngx_chain_t *cl;
217
+ ngx_buf_t *b;
218
+
219
+ if (!len) {
220
+ return;
221
+ }
222
+
223
+ if (flags & NGX_HTTP_DAV_EXT_ESCAPE) {
224
+
225
+ b = ngx_create_temp_buf(r->pool, len + ngx_escape_html(NULL, data, len));
226
+ b->last = (u_char*)ngx_escape_html(b->pos, data, len);
227
+
228
+ } else if (flags & NGX_HTTP_DAV_EXT_COPY) {
229
+
230
+ b = ngx_create_temp_buf(r->pool, len);
231
+ b->last = ngx_cpymem(b->pos, data, len);
232
+
233
+ } else {
234
+
235
+ b = ngx_calloc_buf(r->pool);
236
+ b->memory = 1;
237
+ b->pos = data;
238
+ b->start = data;
239
+ b->last = b->pos + len;
240
+ b->end = b->last;
241
+ }
242
+
243
+ cl = ngx_alloc_chain_link(r->pool);
244
+ cl->buf = b;
245
+ cl->next = NULL;
246
+
247
+ if (*ll != NULL) {
248
+ cl->next = (*ll)->next;
249
+ (*ll)->next = cl;
250
+ *ll = cl;
251
+ } else {
252
+ *ll = cl;
253
+ cl->next = cl;
254
+ }
255
+ }
256
+
257
+ static void
258
+ ngx_http_dav_ext_flush(ngx_http_request_t *r, ngx_chain_t **ll)
259
+ {
260
+ ngx_chain_t *cl;
261
+
262
+ cl = (*ll)->next;
263
+ (*ll)->next = NULL;
264
+ ngx_http_output_filter(r, cl);
265
+ *ll = NULL;
266
+ }
267
+
268
+ /* output shortcuts
269
+
270
+ NB: these shortcuts assume 2 variables exist in current context:
271
+ r - request ptr
272
+ ll - chain ptr ptr
273
+
274
+ output chains are buffered in circular list & flushed on demand
275
+ */
276
+
277
+ /* output buffer copy */
278
+ #define NGX_HTTP_DAV_EXT_OUTCB(data, len) \
279
+ ngx_http_dav_ext_output(r, ll, NGX_HTTP_DAV_EXT_COPY, (data), (len))
280
+
281
+ /* output string (no copy) */
282
+ #define NGX_HTTP_DAV_EXT_OUTS(s) \
283
+ ngx_http_dav_ext_output(r, ll, 0, (s)->data, (s)->len)
284
+
285
+ /* output escaped string */
286
+ #define NGX_HTTP_DAV_EXT_OUTES(s) \
287
+ ngx_http_dav_ext_output(r, ll, NGX_HTTP_DAV_EXT_ESCAPE, (s)->data, (s)->len)
288
+
289
+ /* output literal */
290
+ #define NGX_HTTP_DAV_EXT_OUTL(s) \
291
+ ngx_http_dav_ext_output(r, ll, 0, (u_char*)(s), sizeof(s) - 1)
292
+
293
+ static ngx_int_t
294
+ ngx_http_dav_ext_send_propfind_atts(ngx_http_request_t *r,
295
+ char *path, ngx_str_t *uri, ngx_chain_t **ll, ngx_uint_t props)
296
+ {
297
+ struct stat st;
298
+ struct tm stm;
299
+ u_char buf[256];
300
+ ngx_str_t name;
301
+
302
+ if (stat(path, &st)) {
303
+
304
+ ngx_log_error(NGX_LOG_ALERT, r->connection->log, ngx_errno,
305
+ "dav_ext stat failed on '%s'", path);
306
+
307
+ return NGX_HTTP_NOT_FOUND;
308
+ }
309
+
310
+ if (props & NGX_HTTP_DAV_EXT_PROP_creationdate) {
311
+
312
+ /* output file ctime (attr change time) as creation time */
313
+ if (gmtime_r(&st.st_ctime, &stm) == NULL)
314
+ return NGX_ERROR;
315
+
316
+ /* ISO 8601 time format
317
+ 2012-02-20T16:15:00Z */
318
+ NGX_HTTP_DAV_EXT_OUTCB(buf, strftime((char*)buf, sizeof(buf),
319
+ "<D:creationdate>"
320
+ "%Y-%m-%dT%TZ"
321
+ "</D:creationdate>\n",
322
+
323
+ &stm));
324
+ }
325
+
326
+ if (props & NGX_HTTP_DAV_EXT_PROP_displayname) {
327
+ NGX_HTTP_DAV_EXT_OUTL(
328
+ "<D:displayname>"
329
+ );
330
+
331
+ if (uri->len) {
332
+
333
+ for(name.data = uri->data + uri->len;
334
+ name.data >= uri->data + 1 && name.data[-1] != '/';
335
+ --name.data);
336
+
337
+ name.len = uri->data + uri->len - name.data;
338
+
339
+ NGX_HTTP_DAV_EXT_OUTES(&name);
340
+ }
341
+
342
+ NGX_HTTP_DAV_EXT_OUTL(
343
+ "</D:displayname>\n"
344
+ );
345
+ }
346
+
347
+ if (props & NGX_HTTP_DAV_EXT_PROP_getcontentlanguage) {
348
+ NGX_HTTP_DAV_EXT_OUTL(
349
+ "<D:getcontentlanguage/>\n"
350
+ );
351
+ }
352
+
353
+ if (props & NGX_HTTP_DAV_EXT_PROP_getcontentlength) {
354
+ NGX_HTTP_DAV_EXT_OUTCB(buf, ngx_snprintf(buf, sizeof(buf),
355
+ "<D:getcontentlength>"
356
+ "%O"
357
+ "</D:getcontentlength>\n",
358
+
359
+ st.st_size) - buf);
360
+ }
361
+
362
+ if (props & NGX_HTTP_DAV_EXT_PROP_getcontenttype) {
363
+ NGX_HTTP_DAV_EXT_OUTL(
364
+ "<D:getcontenttype/>\n"
365
+ );
366
+ }
367
+
368
+ if (props & NGX_HTTP_DAV_EXT_PROP_getetag) {
369
+ NGX_HTTP_DAV_EXT_OUTL(
370
+ "<D:getetag/>\n"
371
+ );
372
+ }
373
+
374
+ if (props & NGX_HTTP_DAV_EXT_PROP_getlastmodified) {
375
+
376
+ if (gmtime_r(&st.st_mtime, &stm) == NULL)
377
+ return NGX_ERROR;
378
+
379
+ /* RFC 2822 time format */
380
+ NGX_HTTP_DAV_EXT_OUTCB(buf, strftime((char*)buf, sizeof(buf),
381
+ "<D:getlastmodified>"
382
+ "%a, %d %b %Y %T GMT"
383
+ "</D:getlastmodified>\n",
384
+
385
+ &stm));
386
+ }
387
+
388
+ if (props & NGX_HTTP_DAV_EXT_PROP_lockdiscovery) {
389
+ NGX_HTTP_DAV_EXT_OUTL(
390
+ "<D:lockdiscovery/>\n"
391
+ );
392
+ }
393
+
394
+ if (props & NGX_HTTP_DAV_EXT_PROP_resourcetype) {
395
+ if (S_ISDIR(st.st_mode)) {
396
+ NGX_HTTP_DAV_EXT_OUTL(
397
+ "<D:resourcetype>"
398
+ "<D:collection/>"
399
+ "</D:resourcetype>\n"
400
+ );
401
+ } else {
402
+ NGX_HTTP_DAV_EXT_OUTL(
403
+ "<D:resourcetype/>\n"
404
+ );
405
+ }
406
+ }
407
+
408
+ if (props & NGX_HTTP_DAV_EXT_PROP_source) {
409
+ NGX_HTTP_DAV_EXT_OUTL(
410
+ "<D:source/>\n"
411
+ );
412
+ }
413
+
414
+ if (props & NGX_HTTP_DAV_EXT_PROP_supportedlock) {
415
+ NGX_HTTP_DAV_EXT_OUTL(
416
+ "<D:supportedlock/>\n"
417
+ );
418
+ }
419
+
420
+ return NGX_OK;
421
+ }
422
+
423
+ static ngx_int_t
424
+ ngx_http_dav_ext_send_propfind_item(ngx_http_request_t *r,
425
+ char *path, ngx_str_t *uri)
426
+ {
427
+ ngx_http_dav_ext_ctx_t *ctx;
428
+ ngx_chain_t *l = NULL, **ll = &l;
429
+ u_char vbuf[8];
430
+ ngx_str_t status_line = ngx_string("200 OK");
431
+
432
+ ctx = ngx_http_get_module_ctx(r, ngx_http_dav_ext_module);
433
+
434
+ NGX_HTTP_DAV_EXT_OUTL(
435
+ "<D:response>\n"
436
+ "<D:href>"
437
+ );
438
+
439
+ NGX_HTTP_DAV_EXT_OUTES(uri);
440
+
441
+ NGX_HTTP_DAV_EXT_OUTL(
442
+ "</D:href>\n"
443
+ "<D:propstat>\n"
444
+ "<D:prop>\n"
445
+ );
446
+
447
+ if (ctx->propfind == NGX_HTTP_DAV_EXT_PROPFIND_NAMES) {
448
+
449
+ NGX_HTTP_DAV_EXT_OUTL(
450
+ "<D:creationdate/>\n"
451
+ "<D:displayname/>\n"
452
+ "<D:getcontentlanguage/>\n"
453
+ "<D:getcontentlength/>\n"
454
+ "<D:getcontenttype/>\n"
455
+ "<D:getetag/>\n"
456
+ "<D:getlastmodified/>\n"
457
+ "<D:lockdiscovery/>\n"
458
+ "<D:resourcetype/>\n"
459
+ "<D:source/>\n"
460
+ "<D:supportedlock/>\n"
461
+ );
462
+
463
+ } else {
464
+
465
+ switch (ngx_http_dav_ext_send_propfind_atts(r, path, uri, ll,
466
+ ctx->propfind == NGX_HTTP_DAV_EXT_PROPFIND_SELECTED ?
467
+ ctx->props : (ngx_uint_t)-1))
468
+ {
469
+ case NGX_HTTP_NOT_FOUND:
470
+ ngx_str_set(&status_line, "404 Not Found");
471
+ break;
472
+
473
+ case NGX_OK:
474
+ case NGX_HTTP_OK:
475
+ break;
476
+
477
+ default:
478
+ ngx_str_set(&status_line, "500 Internal Server Error");
479
+ }
480
+ }
481
+
482
+ NGX_HTTP_DAV_EXT_OUTL(
483
+ "</D:prop>\n"
484
+ "<D:status>HTTP/"
485
+ );
486
+
487
+ NGX_HTTP_DAV_EXT_OUTCB(vbuf, ngx_snprintf(vbuf, sizeof(vbuf), "%d.%d ",
488
+ r->http_major, r->http_minor) - vbuf);
489
+
490
+ NGX_HTTP_DAV_EXT_OUTS(&status_line);
491
+
492
+ NGX_HTTP_DAV_EXT_OUTL(
493
+ "</D:status>\n"
494
+ "</D:propstat>\n"
495
+ "</D:response>\n"
496
+
497
+ );
498
+
499
+ ngx_http_dav_ext_flush(r, ll);
500
+
501
+ return NGX_OK;
502
+ }
503
+
504
+ /* path returned by this function is terminated
505
+ with a hidden (out-of-len) null */
506
+ static void ngx_http_dav_ext_make_child(ngx_pool_t *pool, ngx_str_t *parent,
507
+ u_char *child, size_t chlen, ngx_str_t *path)
508
+ {
509
+ u_char *s;
510
+
511
+ path->data = ngx_palloc(pool, parent->len + 2 + chlen);
512
+ s = path->data;
513
+ s = ngx_cpymem(s, parent->data, parent->len);
514
+ if (parent->len > 0 && s[-1] != '/')
515
+ *s++ = '/';
516
+ s = ngx_cpymem(s, child, chlen);
517
+ path->len = s - path->data;
518
+ *s = 0;
519
+ }
520
+
521
+ #define DAV_EXT_INFINITY (-1)
522
+
523
+ static ngx_int_t
524
+ ngx_http_dav_ext_send_propfind(ngx_http_request_t *r)
525
+ {
526
+ size_t root;
527
+ ngx_str_t path, spath, ruri, suri;
528
+ ngx_chain_t *l = NULL, **ll = &l;
529
+ DIR *dir;
530
+ int depth;
531
+ struct dirent *de;
532
+ size_t len, uc_len;
533
+ ngx_http_variable_value_t vv;
534
+ ngx_str_t depth_name = ngx_string("depth");
535
+ u_char *p, *uc;
536
+
537
+ if (ngx_http_variable_unknown_header(&vv, &depth_name,
538
+ &r->headers_in.headers.part, 0) == NGX_OK
539
+ && vv.valid)
540
+ {
541
+ if (vv.len == sizeof("infinity") -1
542
+ && !ngx_strncasecmp(vv.data, (u_char*)"infinity", vv.len))
543
+ {
544
+ depth = DAV_EXT_INFINITY;
545
+ } else {
546
+ depth = ngx_atoi(vv.data, vv.len);
547
+ }
548
+
549
+ } else {
550
+ depth = DAV_EXT_INFINITY;
551
+ }
552
+
553
+ p = ngx_http_map_uri_to_path(r, &path, &root, 0);
554
+
555
+ if (p == NULL || !path.len) {
556
+
557
+ ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0,
558
+ "dav_ext error mapping uri to path");
559
+
560
+ return NGX_ERROR;
561
+ }
562
+
563
+ path.len = p - path.data;
564
+ *p = 0;
565
+
566
+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
567
+ "http propfind path: \"%V\"", &path);
568
+
569
+ NGX_HTTP_DAV_EXT_OUTL(
570
+ "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n"
571
+ "<D:multistatus xmlns:D=\"DAV:\">\n"
572
+ );
573
+
574
+ ngx_http_dav_ext_flush(r, ll);
575
+ /*
576
+ ruri.data = ngx_palloc(r->pool, r->uri.len + 2 * ngx_escape_uri(NULL,
577
+ r->uri.data, r->uri.len, NGX_ESCAPE_URI));
578
+ if (ruri.data == NULL) {
579
+ return NGX_ERROR;
580
+ }
581
+
582
+ ruri.len = (u_char *) ngx_escape_uri(ruri.data, r->uri.data, r->uri.len,
583
+ NGX_ESCAPE_URI) - ruri.data;
584
+ */
585
+ ruri = r->unparsed_uri;
586
+
587
+ ngx_http_dav_ext_send_propfind_item(r, (char*)path.data, &ruri);
588
+
589
+ if (depth) {
590
+
591
+ /* treat infinite depth as 1 for performance reasons */
592
+
593
+ if ((dir = opendir((char*)path.data))) {
594
+
595
+ while((de = readdir(dir))) {
596
+
597
+ if (!strcmp(de->d_name, ".")
598
+ || !strcmp(de->d_name, ".."))
599
+ {
600
+ continue;
601
+ }
602
+
603
+ len = strlen(de->d_name);
604
+
605
+ ngx_http_dav_ext_make_child(r->pool, &path,
606
+ (u_char*)de->d_name, len, &spath);
607
+
608
+ /* escape uri component */
609
+
610
+ uc = ngx_palloc(r->pool, len + 2 * ngx_escape_uri(NULL,
611
+ (u_char *) de->d_name, len, NGX_ESCAPE_URI_COMPONENT));
612
+ if (uc == NULL) {
613
+ return NGX_ERROR;
614
+ }
615
+
616
+ uc_len = (u_char*)ngx_escape_uri(uc, (u_char *) de->d_name, len,
617
+ NGX_ESCAPE_URI_COMPONENT) - uc;
618
+
619
+ ngx_http_dav_ext_make_child(r->pool, &ruri, uc, uc_len, &suri);
620
+
621
+ ngx_http_dav_ext_send_propfind_item(r, (char*)spath.data, &suri);
622
+
623
+ }
624
+
625
+ closedir(dir);
626
+ }
627
+
628
+ }
629
+
630
+ NGX_HTTP_DAV_EXT_OUTL(
631
+ "</D:multistatus>\n"
632
+ );
633
+
634
+ if (*ll && (*ll)->buf) {
635
+ (*ll)->buf->last_buf = 1;
636
+ }
637
+
638
+ ngx_http_dav_ext_flush(r, ll);
639
+
640
+ return NGX_OK;
641
+ }
642
+
643
+ static void
644
+ ngx_http_dav_ext_propfind_handler(ngx_http_request_t *r)
645
+ {
646
+ ngx_chain_t *c;
647
+ ngx_buf_t *b;
648
+ XML_Parser parser;
649
+ ngx_uint_t status;
650
+ ngx_http_dav_ext_ctx_t *ctx;
651
+
652
+ ctx = ngx_http_get_module_ctx(r, ngx_http_dav_ext_module);
653
+
654
+ if (ctx == NULL) {
655
+ ctx = ngx_pcalloc(r->pool, sizeof(ngx_http_dav_ext_ctx_t));
656
+ ngx_http_set_ctx(r, ctx, ngx_http_dav_ext_module);
657
+ }
658
+
659
+ c = r->request_body->bufs;
660
+
661
+ status = NGX_OK;
662
+
663
+ parser = XML_ParserCreate(NULL);
664
+
665
+ XML_SetUserData(parser, ctx);
666
+
667
+ XML_SetElementHandler(parser,
668
+ ngx_http_dav_ext_start_xml_elt,
669
+ ngx_http_dav_ext_end_xml_elt);
670
+
671
+ for(; c != NULL && c->buf != NULL && !c->buf->last_buf; c = c->next) {
672
+
673
+ b = c ->buf;
674
+
675
+ if (!XML_Parse(parser, (const char*)b->pos, b->last - b->pos, b->last_buf)) {
676
+
677
+ ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0,
678
+ "dav_ext propfind XML error");
679
+
680
+ status = NGX_ERROR;
681
+
682
+ break;
683
+ }
684
+
685
+ }
686
+
687
+ XML_ParserFree(parser);
688
+
689
+ if (status == NGX_OK) {
690
+
691
+ r->headers_out.status = 207;
692
+
693
+ ngx_str_set(&r->headers_out.status_line, "207 Multi-Status");
694
+
695
+ ngx_http_send_header(r);
696
+
697
+ ngx_http_finalize_request(r, ngx_http_dav_ext_send_propfind(r));
698
+
699
+ } else {
700
+
701
+ r->headers_out.status = NGX_HTTP_INTERNAL_SERVER_ERROR;
702
+
703
+ r->header_only = 1;
704
+
705
+ r->headers_out.content_length_n = 0;
706
+
707
+ ngx_http_finalize_request(r, ngx_http_send_header(r));
708
+
709
+ }
710
+
711
+ }
712
+
713
+ static ngx_int_t
714
+ ngx_http_dav_ext_handler(ngx_http_request_t *r)
715
+ {
716
+ ngx_int_t rc;
717
+ ngx_table_elt_t *h;
718
+ ngx_http_dav_ext_loc_conf_t *delcf;
719
+
720
+ delcf = ngx_http_get_module_loc_conf(r, ngx_http_dav_ext_module);
721
+
722
+ if (!(r->method & delcf->methods)) {
723
+ return NGX_DECLINED;
724
+ }
725
+
726
+ switch (r->method) {
727
+
728
+ case NGX_HTTP_PROPFIND:
729
+
730
+ ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
731
+ "dav_ext propfind");
732
+
733
+ rc = ngx_http_read_client_request_body(r,
734
+ ngx_http_dav_ext_propfind_handler);
735
+
736
+ if (rc >= NGX_HTTP_SPECIAL_RESPONSE) {
737
+ return rc;
738
+ }
739
+
740
+ return NGX_DONE;
741
+
742
+ case NGX_HTTP_OPTIONS:
743
+
744
+ ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
745
+ "dav_ext options");
746
+
747
+ h = ngx_list_push(&r->headers_out.headers);
748
+
749
+ if (h == NULL) {
750
+ return NGX_HTTP_INTERNAL_SERVER_ERROR;
751
+ }
752
+
753
+ ngx_str_set(&h->key, "DAV");
754
+ ngx_str_set(&h->value, "1");
755
+ h->hash = 1;
756
+
757
+ h = ngx_list_push(&r->headers_out.headers);
758
+
759
+ if (h == NULL) {
760
+ return NGX_HTTP_INTERNAL_SERVER_ERROR;
761
+ }
762
+
763
+ /* FIXME: it looks so ugly because I cannot access nginx dav module */
764
+ ngx_str_set(&h->key, "Allow");
765
+ ngx_str_set(&h->value, "GET,HEAD,PUT,DELETE,MKCOL,COPY,MOVE,PROPFIND,OPTIONS");
766
+ h->hash = 1;
767
+
768
+ r->headers_out.status = NGX_HTTP_OK;
769
+ r->header_only = 1;
770
+ r->headers_out.content_length_n = 0;
771
+
772
+ ngx_http_send_header(r);
773
+
774
+ return NGX_OK;
775
+
776
+ }
777
+
778
+ return NGX_DECLINED;
779
+ }
780
+
781
+ static void *
782
+ ngx_http_dav_ext_create_loc_conf(ngx_conf_t *cf)
783
+ {
784
+ ngx_http_dav_ext_loc_conf_t *conf;
785
+
786
+ conf = ngx_pcalloc(cf->pool, sizeof(ngx_http_dav_ext_loc_conf_t));
787
+ if (conf == NULL) {
788
+ return NULL;
789
+ }
790
+
791
+ return conf;
792
+ }
793
+
794
+ static char *
795
+ ngx_http_dav_ext_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
796
+ {
797
+ ngx_http_dav_ext_loc_conf_t *prev = parent;
798
+ ngx_http_dav_ext_loc_conf_t *conf = child;
799
+
800
+ ngx_conf_merge_bitmask_value(conf->methods, prev->methods,
801
+ (NGX_CONF_BITMASK_SET|NGX_HTTP_DAV_EXT_OFF));
802
+
803
+ return NGX_CONF_OK;
804
+ }
805
+
806
+ static ngx_int_t
807
+ ngx_http_dav_ext_init(ngx_conf_t *cf)
808
+ {
809
+ ngx_http_handler_pt *h;
810
+ ngx_http_core_main_conf_t *cmcf;
811
+
812
+ cmcf = ngx_http_conf_get_module_main_conf(cf, ngx_http_core_module);
813
+
814
+ h = ngx_array_push(&cmcf->phases[NGX_HTTP_CONTENT_PHASE].handlers);
815
+
816
+ if (h == NULL) {
817
+ return NGX_ERROR;
818
+ }
819
+
820
+ *h = ngx_http_dav_ext_handler;
821
+
822
+ return NGX_OK;
823
+ }
824
+