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,20 @@
1
+
2
+ /*
3
+ * Copyright (C) Xiaozhe Wang (chaoslawful)
4
+ * Copyright (C) Yichun Zhang (agentzh)
5
+ */
6
+
7
+
8
+ #ifndef _NGX_HTTP_LUA_CAPTUREFILTER_H_INCLUDED_
9
+ #define _NGX_HTTP_LUA_CAPTUREFILTER_H_INCLUDED_
10
+
11
+
12
+ #include "ngx_http_lua_common.h"
13
+
14
+
15
+ ngx_int_t ngx_http_lua_capture_filter_init(ngx_conf_t *cf);
16
+
17
+
18
+ #endif /* NGX_HTTP_LUA_CAPTUREFILTER_H */
19
+
20
+ /* vi:set ft=c ts=4 sw=4 et fdm=marker: */
@@ -0,0 +1,887 @@
1
+
2
+ /*
3
+ * Copyright (C) Xiaozhe Wang (chaoslawful)
4
+ * Copyright (C) Yichun Zhang (agentzh)
5
+ */
6
+
7
+
8
+ #ifndef DDEBUG
9
+ #define DDEBUG 0
10
+ #endif
11
+ #include "ddebug.h"
12
+
13
+
14
+ #include <nginx.h>
15
+ #include "ngx_http_lua_clfactory.h"
16
+
17
+
18
+ #define CLFACTORY_BEGIN_CODE "return function() "
19
+ #define CLFACTORY_BEGIN_SIZE (sizeof(CLFACTORY_BEGIN_CODE) - 1)
20
+
21
+ #define CLFACTORY_END_CODE "\nend"
22
+ #define CLFACTORY_END_SIZE (sizeof(CLFACTORY_END_CODE) - 1)
23
+
24
+
25
+ /*
26
+ * taken from chaoslawful:
27
+ * Lua bytecode header Luajit bytecode header
28
+ * -------------- --------------
29
+ * | \033Lua | 0-3 | \033LJ | 0-2
30
+ * -------------- --------------
31
+ * | LuaC | 4 | bytecode | 3
32
+ * | Version | | version |
33
+ * -------------- --------------
34
+ * | LuaC | 5 | misc flag | 4 [F|S|B]
35
+ * | Format | --------------
36
+ * -------------- | chunkname | ULEB128 var-len
37
+ * | Endian | 6 | len | encoded uint32
38
+ * -------------- --------------
39
+ * | size of | 7 | chunkname |
40
+ * | int | | str no \0 |
41
+ * -------------- --------------
42
+ * | size of | 8
43
+ * | size_t |
44
+ * --------------
45
+ * | size of | 9
46
+ * | instruction|
47
+ * --------------
48
+ * | size of | 10
49
+ * | number |
50
+ * --------------
51
+ * | number | 11
52
+ * | is int? |
53
+ * --------------
54
+ */
55
+
56
+
57
+ /*
58
+ * CLOSURE 0 0 RETURN 0 2 RETURN 0 1
59
+ * length(Instruction) = 4 or 8
60
+ * little endian or big endian
61
+ */
62
+ #define LUA_LITTLE_ENDIAN_4BYTES_CODE \
63
+ "\x24\x00\x00\x00\x1e\x00\x00\x01\x1e\x00\x80\x00"
64
+ #define LUA_LITTLE_ENDIAN_8BYTES_CODE \
65
+ "\x24\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x01" \
66
+ "\x00\x00\x00\x00\x1e\x00\x80\x00\x00\x00\x00\x00"
67
+ #define LUA_BIG_ENDIAN_4BYTES_CODE \
68
+ "\x00\x00\x00\x24\x01\x00\x00\x1e\x00\x08\x00\x1e"
69
+ #define LUA_BIG_ENDIAN_8BYTES_CODE \
70
+ "\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x00" \
71
+ "\x01\x00\x00\x1e\x00\x00\x00\x00\x00\x08\x00\x1e"
72
+ #define LUA_LITTLE_ENDIAN_4BYTES_CODE_LEN (4 + 4 + 4)
73
+ #define LUA_LITTLE_ENDIAN_8BYTES_CODE_LEN (8 + 8 + 8)
74
+ #define LUA_BIG_ENDIAN_4BYTES_CODE_LEN (4 + 4 + 4)
75
+ #define LUA_BIG_ENDIAN_8BYTES_CODE_LEN (8 + 8 + 8)
76
+ #define LUAC_HEADERSIZE 12
77
+ #define LUAC_VERSION 0x51
78
+
79
+
80
+ /*
81
+ * taken from chaoslawful:
82
+ * Lua Proto
83
+ * ---------------------
84
+ * | String | Can be empty string
85
+ * | [source] | (stripped or internal function)
86
+ * ---------------------
87
+ * | Int | At which line this function is defined
88
+ * | [linedefined] |
89
+ * ---------------------
90
+ * | Int | At while line this function definition ended
91
+ * | [lastlinedefined] |
92
+ * ---------------------
93
+ * | Char | Number of upvalues referenced by this function
94
+ * | [nups] |
95
+ * ---------------------
96
+ * | Char | Number of paramters of this function
97
+ * | [numparams] |
98
+ * ---------------------
99
+ * | Char | Does this function has variable number of arguments?
100
+ * | [is_var_arg] | main function always set to VARARG_ISVARARG (2)
101
+ * ---------------------
102
+ * | Char | Maximum stack size this function used
103
+ * | [maxstacksize] | Intially set to 2
104
+ * ---------------------
105
+ * | Vector(instr) | Code instructions of this function
106
+ * | [code] |
107
+ * ---------------------
108
+ * | Int | Number of constants referenced by this function
109
+ * | [sizek] |
110
+ * ---------------------
111
+ * | Char | ------------------------------------
112
+ * | type of [k[i]] | The type and content of constants |
113
+ * --------------------- |-> repeat for i in
114
+ * | Char if boolean | No content part if type is NIL | [1..sizek]
115
+ * | Number if number | ------------------------------------
116
+ * | String if string |
117
+ * ---------------------
118
+ * | Int | Number of internal functions
119
+ * | [sizep] |
120
+ * ---------------------
121
+ * | Function | -> repeat for i in [1..sizep]
122
+ * | at [p[i]] |
123
+ * ---------------------
124
+ * | Vector | Debug lineinfo vector
125
+ * | [lineinfo] | Empty vector here if dubug info is stripped
126
+ * ---------------------
127
+ * | Int | Number of local variable in this function
128
+ * | [sizelocvars] | 0 if debug info is stripped
129
+ * ---------------------
130
+ * | String | ------------------------------------
131
+ * | [locvars[i]] | Name of local var i |
132
+ * | .varname] | |
133
+ * --------------------- |
134
+ * | Int | instruction counter |
135
+ * | [locvars[i]] | where lcoal var i start to be |-> repeat for i in
136
+ * | .startpc] | referenced | [0..sizelocvars]
137
+ * --------------------- |
138
+ * | Int | instruction counter, where local |
139
+ * | [locvars[i]] | var i ceased to be referenced |
140
+ * | .endpc] | ------------------------------------
141
+ * ---------------------
142
+ * | Int | Number of upvalues referenced by this function,
143
+ * | [sizeupvalues] | 0 if stripped
144
+ * ---------------------
145
+ * | String | -> repeat for i in[0..sizeupvalues]
146
+ * | [upvalues[i]] |
147
+ * ---------------------
148
+ */
149
+
150
+ #define POS_SOURCE_STR_LEN LUAC_HEADERSIZE
151
+ #define POS_START_LINE (POS_SOURCE_STR_LEN + sizeof(size_t))
152
+ #define POS_LAST_LINE (POS_START_LINE + sizeof(int))
153
+ #define POS_NUM_OF_UPVS (POS_LAST_LINE + sizeof(int))
154
+ #define POS_NUM_OF_PARA (POS_NUM_OF_UPVS + sizeof(char))
155
+ #define POS_IS_VAR_ARG (POS_NUM_OF_PARA + sizeof(char))
156
+ #define POS_MAX_STACK_SIZE (POS_IS_VAR_ARG + sizeof(char))
157
+ #define POS_NUM_OF_INST (POS_MAX_STACK_SIZE +sizeof(char))
158
+ #define POS_BYTECODE (POS_NUM_OF_INST + sizeof(int))
159
+ #define MAX_BEGIN_CODE_SIZE \
160
+ (POS_BYTECODE + LUA_LITTLE_ENDIAN_8BYTES_CODE_LEN \
161
+ + sizeof(int) + sizeof(int))
162
+ #define MAX_END_CODE_SIZE (sizeof(int) + sizeof(int) + sizeof(int))
163
+
164
+ /*
165
+ * taken from chaoslawful:
166
+ * Luajit bytecode format
167
+ * ---------------------
168
+ * | HEAD | Luajit bytecode head
169
+ * ---------------------
170
+ * | Internal | All internal functions
171
+ * | functions |
172
+ * ---------------------
173
+ * | ULEB128 | Rest data total length of this function
174
+ * | [Date len of | (not include itself)
175
+ * | this function] |
176
+ * ---------------------
177
+ * | Char | F(ffi) | V(vararg)| C(has internal funcs)
178
+ * | [func flag] |
179
+ * ---------------------
180
+ * | Char | Number of paramters of this function
181
+ * | [numparams] |
182
+ * ---------------------
183
+ * | Char |
184
+ * | [framesize] |
185
+ * ---------------------
186
+ * | Char | Number of upvalues referenced by this function
187
+ * | [sizeupvalues] |
188
+ * ---------------------
189
+ * | ULEB128 | Number of collectable constants referenced
190
+ * | [sizekgc] | by this function
191
+ * ---------------------
192
+ * | ULEB128 | Number of lua number constants referenced
193
+ * | [sizekn] | by this function
194
+ * ---------------------
195
+ * | ULEB128 | Number of bytecode instructions of this function
196
+ * | [sizebc]m1 | minus 1 to omit the BC_FUNCV/BC_FUNCF header bytecode
197
+ * ---------------------
198
+ * | ULEB128 |
199
+ * | [size of dbg | Size of debug lineinfo map, available when not stripped
200
+ * | lineinfo] |
201
+ * ---------------------
202
+ * | ULEB128 | Available when not stripped
203
+ * | [firstline] | The first line of this function's definition
204
+ * ---------------------
205
+ * | ULEB128 | Available when not stripped
206
+ * | [numline] | The number of lines of this function's definition
207
+ * ---------------------
208
+ * | [bytecode] | Bytecode instructions of this function
209
+ * ---------------------
210
+ * |[upvalue ref slots]| [sizeupvalues] * 2
211
+ * ---------------------
212
+ * | [collectable | [sizekgc] elems, variable length
213
+ * | constants] |
214
+ * ---------------------
215
+ * | [lua number | [sizekn] elems, variable length
216
+ * | constants] |
217
+ * ---------------------
218
+ * | [debug lineinfo | Length is the calculated size of debug lineinfo above
219
+ * | | Only available if not stripped
220
+ * ---------------------
221
+ * | Char |
222
+ * | [\x00] | Footer
223
+ * ---------------------
224
+ */
225
+
226
+ /* bytecode for luajit 2.0 */
227
+
228
+ #define LJ20_LITTLE_ENDIAN_CODE_STRIPPED \
229
+ "\x14\x03\x00\x01\x00\x01\x00\x03" \
230
+ "\x31\x00\x00\x00\x30\x00\x00\x80\x48\x00\x02\x00" \
231
+ "\x00\x00"
232
+
233
+ #define LJ20_BIG_ENDIAN_CODE_STRIPPED \
234
+ "\x14\x03\x00\x01\x00\x01\x00\x03" \
235
+ "\x00\x00\x00\x31\x80\x00\x00\x30\x00\x02\x00\x48" \
236
+ "\x00\x00"
237
+
238
+ #define LJ20_LITTLE_ENDIAN_CODE \
239
+ "\x15\x03\x00\x01\x00\x01\x00\x03\x00" \
240
+ "\x31\x00\x00\x00\x30\x00\x00\x80\x48\x00\x02\x00" \
241
+ "\x00\x00"
242
+
243
+ #define LJ20_BIG_ENDIAN_CODE \
244
+ "\x15\x03\x00\x01\x00\x01\x00\x03\x00" \
245
+ "\x00\x00\x00\x31\x80\x00\x00\x30\x00\x02\x00\x48" \
246
+ "\x00\x00"
247
+
248
+ /* bytecode for luajit 2.1 */
249
+
250
+ #define LJ21_LITTLE_ENDIAN_CODE_STRIPPED \
251
+ "\x14\x03\x00\x01\x00\x01\x00\x03" \
252
+ "\x33\x00\x00\x00\x32\x00\x00\x80\x4c\x00\x02\x00" \
253
+ "\x00\x00"
254
+
255
+ #define LJ21_BIG_ENDIAN_CODE_STRIPPED \
256
+ "\x14\x03\x00\x01\x00\x01\x00\x03" \
257
+ "\x00\x00\x00\x33\x80\x00\x00\x32\x00\x02\x00\x4c" \
258
+ "\x00\x00"
259
+
260
+ #define LJ21_LITTLE_ENDIAN_CODE \
261
+ "\x15\x03\x00\x01\x00\x01\x00\x03\x00" \
262
+ "\x33\x00\x00\x00\x32\x00\x00\x80\x4c\x00\x02\x00" \
263
+ "\x00\x00"
264
+
265
+ #define LJ21_BIG_ENDIAN_CODE \
266
+ "\x15\x03\x00\x01\x00\x01\x00\x03\x00" \
267
+ "\x00\x00\x00\x33\x80\x00\x00\x32\x00\x02\x00\x4c" \
268
+ "\x00\x00"
269
+
270
+ #define LJ_CODE_LEN 23
271
+ #define LJ_CODE_LEN_STRIPPED 22
272
+ #define LJ_HEADERSIZE 5
273
+ #define LJ_BCDUMP_F_BE 0x01
274
+ #define LJ_BCDUMP_F_STRIP 0x02
275
+ #define LJ21_BCDUMP_VERSION 2
276
+ #define LJ20_BCDUMP_VERSION 1
277
+ #define LJ_SIGNATURE "\x1b\x4c\x4a"
278
+
279
+
280
+ typedef enum {
281
+ NGX_LUA_TEXT_FILE,
282
+ NGX_LUA_BT_LUA,
283
+ NGX_LUA_BT_LJ
284
+ } ngx_http_lua_clfactory_file_type_e;
285
+
286
+
287
+ enum {
288
+ NGX_LUA_READER_BUFSIZE = 4096
289
+ };
290
+
291
+
292
+ typedef struct {
293
+ ngx_http_lua_clfactory_file_type_e file_type;
294
+
295
+ int sent_begin;
296
+ int sent_end;
297
+ int extraline;
298
+ FILE *f;
299
+ size_t begin_code_len;
300
+ size_t end_code_len;
301
+ size_t rest_len;
302
+ union {
303
+ char *ptr;
304
+ char str[MAX_BEGIN_CODE_SIZE];
305
+ } begin_code;
306
+ union {
307
+ char *ptr;
308
+ char str[MAX_END_CODE_SIZE];
309
+ } end_code;
310
+ char buff[NGX_LUA_READER_BUFSIZE];
311
+ } ngx_http_lua_clfactory_file_ctx_t;
312
+
313
+
314
+ typedef struct {
315
+ int sent_begin;
316
+ int sent_end;
317
+ const char *s;
318
+ size_t size;
319
+ } ngx_http_lua_clfactory_buffer_ctx_t;
320
+
321
+
322
+ static const char *ngx_http_lua_clfactory_getF(lua_State *L, void *ud,
323
+ size_t *size);
324
+ static int ngx_http_lua_clfactory_errfile(lua_State *L, const char *what,
325
+ int fname_index);
326
+ static const char *ngx_http_lua_clfactory_getS(lua_State *L, void *ud,
327
+ size_t *size);
328
+ static long ngx_http_lua_clfactory_file_size(FILE *f);
329
+
330
+
331
+ int
332
+ ngx_http_lua_clfactory_bytecode_prepare(lua_State *L,
333
+ ngx_http_lua_clfactory_file_ctx_t *lf, int fname_index)
334
+ {
335
+ int x = 1, size_of_int, size_of_size_t, little_endian,
336
+ size_of_inst, version, stripped;
337
+ static int num_of_inst = 3, num_of_inter_func = 1;
338
+ const char *emsg, *serr, *bytecode;
339
+ size_t size, bytecode_len;
340
+ long fsize;
341
+
342
+ serr = NULL;
343
+
344
+ *lf->begin_code.str = LUA_SIGNATURE[0];
345
+
346
+ if (lf->file_type == NGX_LUA_BT_LJ) {
347
+ size = fread(lf->begin_code.str + 1, 1, LJ_HEADERSIZE - 1, lf->f);
348
+
349
+ if (size != LJ_HEADERSIZE - 1) {
350
+ serr = strerror(errno);
351
+ emsg = "cannot read header";
352
+ goto error;
353
+ }
354
+
355
+ version = *(lf->begin_code.str + 3);
356
+
357
+ dd("version: %d", (int) version);
358
+
359
+ if (ngx_memcmp(lf->begin_code.str, LJ_SIGNATURE,
360
+ sizeof(LJ_SIGNATURE) - 1))
361
+ {
362
+ emsg = "bad byte-code header";
363
+ goto error;
364
+ }
365
+
366
+ #if defined(DDEBUG) && (DDEBUG)
367
+ {
368
+ dd("==LJ_BT_HEADER==");
369
+ size_t i;
370
+ for (i = 0; i < LJ_HEADERSIZE; i++) {
371
+ dd("%ld: 0x%02X", i, (unsigned)(u_char)lf->begin_code.str[i]);
372
+ }
373
+ dd("==LJ_BT_HEADER_END==");
374
+ }
375
+ #endif
376
+
377
+ lf->begin_code_len = LJ_HEADERSIZE;
378
+ little_endian = !((*(lf->begin_code.str + 4)) & LJ_BCDUMP_F_BE);
379
+ stripped = (*(lf->begin_code.str + 4)) & LJ_BCDUMP_F_STRIP;
380
+
381
+ dd("stripped: %d", (int) stripped);
382
+
383
+ if (version == LJ21_BCDUMP_VERSION) {
384
+ if (stripped) {
385
+ if (little_endian) {
386
+ lf->end_code.ptr = LJ21_LITTLE_ENDIAN_CODE_STRIPPED;
387
+
388
+ } else {
389
+ lf->end_code.ptr = LJ21_BIG_ENDIAN_CODE_STRIPPED;
390
+ }
391
+
392
+ lf->end_code_len = LJ_CODE_LEN_STRIPPED;
393
+
394
+ } else {
395
+ if (little_endian) {
396
+ lf->end_code.ptr = LJ21_LITTLE_ENDIAN_CODE;
397
+
398
+ } else {
399
+ lf->end_code.ptr = LJ21_BIG_ENDIAN_CODE;
400
+ }
401
+
402
+ lf->end_code_len = LJ_CODE_LEN;
403
+ }
404
+
405
+ } else if (version == LJ20_BCDUMP_VERSION) {
406
+ if (stripped) {
407
+ if (little_endian) {
408
+ lf->end_code.ptr = LJ20_LITTLE_ENDIAN_CODE_STRIPPED;
409
+
410
+ } else {
411
+ lf->end_code.ptr = LJ20_BIG_ENDIAN_CODE_STRIPPED;
412
+ }
413
+
414
+ lf->end_code_len = LJ_CODE_LEN_STRIPPED;
415
+
416
+ } else {
417
+ if (little_endian) {
418
+ lf->end_code.ptr = LJ20_LITTLE_ENDIAN_CODE;
419
+
420
+ } else {
421
+ lf->end_code.ptr = LJ20_BIG_ENDIAN_CODE;
422
+ }
423
+
424
+ lf->end_code_len = LJ_CODE_LEN;
425
+ }
426
+
427
+ } else {
428
+ emsg = "bytecode format version unsupported";
429
+ goto error;
430
+ }
431
+
432
+ fsize = ngx_http_lua_clfactory_file_size(lf->f);
433
+ if (fsize < 0) {
434
+ serr = strerror(errno);
435
+ emsg = "cannot fseek/ftell";
436
+ goto error;
437
+ }
438
+
439
+ lf->rest_len = fsize - LJ_HEADERSIZE;
440
+
441
+ #if defined(DDEBUG) && (DDEBUG)
442
+ {
443
+ size_t i = 0;
444
+ dd("==LJ_END_CODE: %ld rest_len: %ld==", lf->end_code_len,
445
+ lf->rest_len);
446
+
447
+ for (i = 0; i < lf->end_code_len; i++) {
448
+ dd("%ld: 0x%02X", i, (unsigned) ((u_char) lf->end_code.ptr[i]));
449
+ }
450
+ dd("==LJ_END_CODE_END==");
451
+ }
452
+ #endif
453
+
454
+ } else {
455
+ size = fread(lf->begin_code.str + 1, 1, LUAC_HEADERSIZE - 1, lf->f);
456
+
457
+ if (size != LUAC_HEADERSIZE - 1) {
458
+ serr = strerror(errno);
459
+ emsg = "cannot read header";
460
+ goto error;
461
+ }
462
+
463
+ version = *(lf->begin_code.str + 4);
464
+ little_endian = *(lf->begin_code.str + 6);
465
+ size_of_int = *(lf->begin_code.str + 7);
466
+ size_of_size_t = *(lf->begin_code.str + 8);
467
+ size_of_inst = *(lf->begin_code.str + 9);
468
+
469
+ #if defined(DDEBUG) && (DDEBUG)
470
+ {
471
+ dd("==LUA_BT_HEADER==");
472
+ size_t i;
473
+ for (i = 0; i < LUAC_HEADERSIZE; i++) {
474
+ dd("%ld, 0x%02X", i, (unsigned)(u_char)lf->begin_code.str[i]);
475
+ }
476
+ dd("==LUA_BT_HEADER_END==");
477
+ }
478
+ #endif
479
+
480
+ if (ngx_memcmp(lf->begin_code.str, LUA_SIGNATURE,
481
+ sizeof(LUA_SIGNATURE) -1)
482
+ || version != LUAC_VERSION
483
+ || little_endian != (int) (*(char *) &x)
484
+ || size_of_int != sizeof(int)
485
+ || size_of_size_t != sizeof(size_t)
486
+ || (size_of_inst != 4 && size_of_inst != 8))
487
+ {
488
+ emsg = "bad byte-code header";
489
+ goto error;
490
+ }
491
+
492
+ /* clear the following fields to zero:
493
+ * - source string length
494
+ * - start line
495
+ * - last line
496
+ */
497
+ ngx_memzero(lf->begin_code.str + POS_SOURCE_STR_LEN,
498
+ sizeof(size_t) + sizeof(int) * 2);
499
+ /* number of upvalues */
500
+ *(lf->begin_code.str + POS_NUM_OF_UPVS) = 0;
501
+ /* number of paramters */
502
+ *(lf->begin_code.str + POS_NUM_OF_PARA) = 0;
503
+ /* is var-argument function? */
504
+ *(lf->begin_code.str + POS_IS_VAR_ARG) = 2;
505
+ /* max stack size */
506
+ *(lf->begin_code.str + POS_MAX_STACK_SIZE) = 2;
507
+ /* number of bytecode instructions */
508
+ ngx_memcpy(lf->begin_code.str + POS_NUM_OF_INST, &num_of_inst,
509
+ sizeof(int));
510
+
511
+ lf->begin_code_len = POS_BYTECODE;
512
+
513
+ if (little_endian) {
514
+ if (size_of_inst == 4) {
515
+ bytecode = LUA_LITTLE_ENDIAN_4BYTES_CODE;
516
+ bytecode_len = LUA_LITTLE_ENDIAN_4BYTES_CODE_LEN;
517
+
518
+ } else {
519
+ bytecode = LUA_LITTLE_ENDIAN_8BYTES_CODE;
520
+ bytecode_len = LUA_LITTLE_ENDIAN_8BYTES_CODE_LEN;
521
+ }
522
+
523
+ } else {
524
+ if (size_of_inst == 4) {
525
+ bytecode = LUA_BIG_ENDIAN_4BYTES_CODE;
526
+ bytecode_len = LUA_BIG_ENDIAN_4BYTES_CODE_LEN;
527
+
528
+ } else {
529
+ bytecode = LUA_BIG_ENDIAN_8BYTES_CODE;
530
+ bytecode_len = LUA_BIG_ENDIAN_8BYTES_CODE_LEN;
531
+ }
532
+ }
533
+
534
+ /* bytecode */
535
+ ngx_memcpy(lf->begin_code.str + POS_BYTECODE, bytecode, bytecode_len);
536
+
537
+ /* number of consts */
538
+ ngx_memzero(lf->begin_code.str + POS_BYTECODE + bytecode_len,
539
+ sizeof(int));
540
+ /* number of internal functions */
541
+ ngx_memcpy(lf->begin_code.str + POS_BYTECODE + bytecode_len
542
+ + sizeof(int), &num_of_inter_func, sizeof(int));
543
+
544
+ lf->begin_code_len += bytecode_len + sizeof(int) + sizeof(int);
545
+
546
+ #if defined(DDEBUG) && (DDEBUG)
547
+ {
548
+ size_t i = 0;
549
+ dd("==LUA_BEGIN_CODE: %ld==", lf->begin_code_len);
550
+ for (i = 0; i < lf->begin_code_len; i++) {
551
+ dd("%ld: 0x%02X", i, (unsigned) ((u_char) lf->begin_code.str[i]));
552
+ }
553
+ dd("==LUA_BEGIN_CODE_END==");
554
+ }
555
+ #endif
556
+
557
+ /* clear the following fields to zero:
558
+ * - lineinfo vector size
559
+ * - number of local vars
560
+ * - number of upvalues
561
+ */
562
+ ngx_memzero(lf->end_code.str, sizeof(int) * 3);
563
+
564
+ lf->end_code_len = sizeof(int) + sizeof(int) + sizeof(int);
565
+
566
+ #if defined(DDEBUG) && (DDEBUG)
567
+ {
568
+ size_t i = 0;
569
+ dd("==LUA_END_CODE: %ld==", lf->end_code_len);
570
+ for (i = 0; i < lf->end_code_len; i++) {
571
+ dd("%ld: 0x%02X", i, (unsigned) ((u_char) lf->end_code.str[i]));
572
+ }
573
+ dd("==LUA_END_CODE_END==");
574
+ }
575
+ #endif
576
+
577
+ }
578
+
579
+ return 0;
580
+
581
+ error:
582
+
583
+ fclose(lf->f); /* close file (even in case of errors) */
584
+
585
+ if (serr) {
586
+ lua_pushfstring(L, "%s: %s", emsg, serr);
587
+
588
+ } else {
589
+ lua_pushstring(L, emsg);
590
+ }
591
+
592
+ lua_remove(L, fname_index);
593
+
594
+ return LUA_ERRFILE;
595
+ }
596
+
597
+
598
+ ngx_int_t
599
+ ngx_http_lua_clfactory_loadfile(lua_State *L, const char *filename)
600
+ {
601
+ int c, status, readstatus;
602
+ ngx_flag_t sharp;
603
+
604
+ ngx_http_lua_clfactory_file_ctx_t lf;
605
+
606
+ /* index of filename on the stack */
607
+ int fname_index;
608
+
609
+ sharp = 0;
610
+ fname_index = lua_gettop(L) + 1;
611
+
612
+ lf.extraline = 0;
613
+ lf.file_type = NGX_LUA_TEXT_FILE;
614
+
615
+ lf.begin_code.ptr = CLFACTORY_BEGIN_CODE;
616
+ lf.begin_code_len = CLFACTORY_BEGIN_SIZE;
617
+ lf.end_code.ptr = CLFACTORY_END_CODE;
618
+ lf.end_code_len = CLFACTORY_END_SIZE;
619
+
620
+ lua_pushfstring(L, "@%s", filename);
621
+
622
+ lf.f = fopen(filename, "r");
623
+ if (lf.f == NULL) {
624
+ return ngx_http_lua_clfactory_errfile(L, "open", fname_index);
625
+ }
626
+
627
+ c = getc(lf.f);
628
+
629
+ if (c == '#') { /* Unix exec. file? */
630
+ lf.extraline = 1;
631
+
632
+ while ((c = getc(lf.f)) != EOF && c != '\n') {
633
+ /* skip first line */
634
+ }
635
+
636
+ if (c == '\n') {
637
+ c = getc(lf.f);
638
+ }
639
+
640
+ sharp = 1;
641
+ }
642
+
643
+ if (c == LUA_SIGNATURE[0] && filename) { /* binary file? */
644
+ lf.f = freopen(filename, "rb", lf.f); /* reopen in binary mode */
645
+
646
+ if (lf.f == NULL) {
647
+ return ngx_http_lua_clfactory_errfile(L, "reopen", fname_index);
648
+ }
649
+
650
+ /* check whether lib jit exists */
651
+ luaL_findtable(L, LUA_REGISTRYINDEX, "_LOADED", 1);
652
+ lua_getfield(L, -1, "jit"); /* get _LOADED["jit"] */
653
+
654
+ if (lua_istable(L, -1)) {
655
+ lf.file_type = NGX_LUA_BT_LJ;
656
+
657
+ } else {
658
+ lf.file_type = NGX_LUA_BT_LUA;
659
+ }
660
+
661
+ lua_pop(L, 2);
662
+
663
+ /*
664
+ * Loading bytecode with an extra header is disabled for security
665
+ * reasons. This may circumvent the usual check for bytecode vs.
666
+ * Lua code by looking at the first char. Since this is a potential
667
+ * security violation no attempt is made to echo the chunkname either.
668
+ */
669
+ if (lf.file_type == NGX_LUA_BT_LJ && sharp) {
670
+
671
+ if (filename) {
672
+ fclose(lf.f); /* close file (even in case of errors) */
673
+ }
674
+
675
+ filename = lua_tostring(L, fname_index) + 1;
676
+ lua_pushfstring(L, "bad byte-code header in %s", filename);
677
+ lua_remove(L, fname_index);
678
+
679
+ return LUA_ERRFILE;
680
+ }
681
+
682
+ while ((c = getc(lf.f)) != EOF && c != LUA_SIGNATURE[0]) {
683
+ /* skip eventual `#!...' */
684
+ }
685
+
686
+ status = ngx_http_lua_clfactory_bytecode_prepare(L, &lf, fname_index);
687
+
688
+ if (status != 0) {
689
+ return status;
690
+ }
691
+
692
+ lf.extraline = 0;
693
+ }
694
+
695
+ if (lf.file_type == NGX_LUA_TEXT_FILE) {
696
+ ungetc(c, lf.f);
697
+ }
698
+
699
+ lf.sent_begin = lf.sent_end = 0;
700
+ status = lua_load(L, ngx_http_lua_clfactory_getF, &lf,
701
+ lua_tostring(L, -1));
702
+
703
+ readstatus = ferror(lf.f);
704
+
705
+ if (filename) {
706
+ fclose(lf.f); /* close file (even in case of errors) */
707
+ }
708
+
709
+ if (readstatus) {
710
+ lua_settop(L, fname_index); /* ignore results from `lua_load' */
711
+ return ngx_http_lua_clfactory_errfile(L, "read", fname_index);
712
+ }
713
+
714
+ lua_remove(L, fname_index);
715
+
716
+ return status;
717
+ }
718
+
719
+
720
+ ngx_int_t
721
+ ngx_http_lua_clfactory_loadbuffer(lua_State *L, const char *buff,
722
+ size_t size, const char *name)
723
+ {
724
+ ngx_http_lua_clfactory_buffer_ctx_t ls;
725
+
726
+ ls.s = buff;
727
+ ls.size = size;
728
+ ls.sent_begin = 0;
729
+ ls.sent_end = 0;
730
+
731
+ return lua_load(L, ngx_http_lua_clfactory_getS, &ls, name);
732
+ }
733
+
734
+
735
+ static const char *
736
+ ngx_http_lua_clfactory_getF(lua_State *L, void *ud, size_t *size)
737
+ {
738
+ char *buf;
739
+ size_t num;
740
+
741
+ ngx_http_lua_clfactory_file_ctx_t *lf;
742
+
743
+ lf = (ngx_http_lua_clfactory_file_ctx_t *) ud;
744
+
745
+ if (lf->extraline) {
746
+ lf->extraline = 0;
747
+ *size = 1;
748
+ return "\n";
749
+ }
750
+
751
+ if (lf->sent_begin == 0) {
752
+ lf->sent_begin = 1;
753
+ *size = lf->begin_code_len;
754
+
755
+ if (lf->file_type == NGX_LUA_TEXT_FILE) {
756
+ buf = lf->begin_code.ptr;
757
+
758
+ } else {
759
+ buf = lf->begin_code.str;
760
+ }
761
+
762
+ return buf;
763
+ }
764
+
765
+ num = fread(lf->buff, 1, sizeof(lf->buff), lf->f);
766
+
767
+ dd("fread returned %d", (int) num);
768
+
769
+ if (num == 0) {
770
+ if (lf->sent_end == 0) {
771
+ lf->sent_end = 1;
772
+ *size = lf->end_code_len;
773
+
774
+ if (lf->file_type == NGX_LUA_BT_LUA) {
775
+ buf = lf->end_code.str;
776
+
777
+ } else {
778
+ buf = lf->end_code.ptr;
779
+ }
780
+
781
+ return buf;
782
+ }
783
+
784
+ *size = 0;
785
+ return NULL;
786
+ }
787
+
788
+ if (lf->file_type == NGX_LUA_BT_LJ) {
789
+ /* skip the footer(\x00) in luajit */
790
+
791
+ lf->rest_len -= num;
792
+
793
+ if (lf->rest_len == 0) {
794
+ if (--num == 0 && lf->sent_end == 0) {
795
+ lf->sent_end = 1;
796
+ buf = lf->end_code.ptr;
797
+ *size = lf->end_code_len;
798
+
799
+ return buf;
800
+ }
801
+ }
802
+ }
803
+
804
+ *size = num;
805
+ return lf->buff;
806
+ }
807
+
808
+
809
+ static int
810
+ ngx_http_lua_clfactory_errfile(lua_State *L, const char *what, int fname_index)
811
+ {
812
+ const char *serr;
813
+ const char *filename;
814
+
815
+ filename = lua_tostring(L, fname_index) + 1;
816
+
817
+ if (errno) {
818
+ serr = strerror(errno);
819
+ lua_pushfstring(L, "cannot %s %s: %s", what, filename, serr);
820
+
821
+ } else {
822
+ lua_pushfstring(L, "cannot %s %s", what, filename);
823
+ }
824
+
825
+ lua_remove(L, fname_index);
826
+
827
+ return LUA_ERRFILE;
828
+ }
829
+
830
+
831
+ static const char *
832
+ ngx_http_lua_clfactory_getS(lua_State *L, void *ud, size_t *size)
833
+ {
834
+ ngx_http_lua_clfactory_buffer_ctx_t *ls = ud;
835
+
836
+ if (ls->sent_begin == 0) {
837
+ ls->sent_begin = 1;
838
+ *size = CLFACTORY_BEGIN_SIZE;
839
+
840
+ return CLFACTORY_BEGIN_CODE;
841
+ }
842
+
843
+ if (ls->size == 0) {
844
+ if (ls->sent_end == 0) {
845
+ ls->sent_end = 1;
846
+ *size = CLFACTORY_END_SIZE;
847
+ return CLFACTORY_END_CODE;
848
+ }
849
+
850
+ return NULL;
851
+ }
852
+
853
+ *size = ls->size;
854
+ ls->size = 0;
855
+
856
+ return ls->s;
857
+ }
858
+
859
+
860
+ static long
861
+ ngx_http_lua_clfactory_file_size(FILE *f)
862
+ {
863
+ long cur_pos, len;
864
+
865
+ cur_pos = ftell(f);
866
+ if (cur_pos == -1) {
867
+ return -1;
868
+ }
869
+
870
+ if (fseek(f, 0, SEEK_END) != 0) {
871
+ return -1;
872
+ }
873
+
874
+ len = ftell(f);
875
+ if (len == -1) {
876
+ return -1;
877
+ }
878
+
879
+ if (fseek(f, cur_pos, SEEK_SET) != 0) {
880
+ return -1;
881
+ }
882
+
883
+ return len;
884
+ }
885
+
886
+
887
+ /* vi:set ft=c ts=4 sw=4 et fdm=marker: */