passenger_dudemeister 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1565) hide show
  1. data/DEVELOPERS.TXT +113 -0
  2. data/INSTALL +6 -0
  3. data/LICENSE +19 -0
  4. data/NEWS +429 -0
  5. data/PACKAGING.TXT +25 -0
  6. data/README +45 -0
  7. data/Rakefile +56 -0
  8. data/bin/passenger +32 -0
  9. data/bin/passenger-config +46 -0
  10. data/bin/passenger-install-apache2-module +237 -0
  11. data/bin/passenger-install-nginx-module +476 -0
  12. data/bin/passenger-make-enterprisey +82 -0
  13. data/bin/passenger-memory-stats +171 -0
  14. data/bin/passenger-status +211 -0
  15. data/build/agents.rb +80 -0
  16. data/build/apache2.rb +168 -0
  17. data/build/basics.rb +105 -0
  18. data/build/common_library.rb +268 -0
  19. data/build/config.rb +42 -0
  20. data/build/cplusplus_support.rb +61 -0
  21. data/build/cxx_tests.rb +219 -0
  22. data/build/documentation.rb +84 -0
  23. data/build/gempackagetask.rb +99 -0
  24. data/build/integration_tests.rb +64 -0
  25. data/build/misc.rb +153 -0
  26. data/build/nginx.rb +72 -0
  27. data/build/oxt_tests.rb +59 -0
  28. data/build/packagetask.rb +186 -0
  29. data/build/packaging.rb +194 -0
  30. data/build/rake_extensions.rb +182 -0
  31. data/build/rdoctask.rb +209 -0
  32. data/build/rpm.rb +98 -0
  33. data/build/ruby_extension.rb +52 -0
  34. data/build/ruby_tests.rb +49 -0
  35. data/build/test_basics.rb +43 -0
  36. data/debian/README.Debian +15 -0
  37. data/debian/changelog +185 -0
  38. data/debian/compat +1 -0
  39. data/debian/control +49 -0
  40. data/debian/copyright +20 -0
  41. data/debian/libapache2-mod-passenger.install +1 -0
  42. data/debian/libapache2-mod-passenger.postinst +36 -0
  43. data/debian/libapache2-mod-passenger.prerm +15 -0
  44. data/debian/passenger-common.install +4 -0
  45. data/debian/passenger.conf +4 -0
  46. data/debian/passenger.load +1 -0
  47. data/debian/prerm +2 -0
  48. data/debian/rules +37 -0
  49. data/debian/watch +3 -0
  50. data/dev/copy_boost_headers.rb +155 -0
  51. data/dev/find_owner_pipe_leaks.rb +128 -0
  52. data/dev/render_error_pages.rb +116 -0
  53. data/doc/ApplicationPool algorithm.txt +615 -0
  54. data/doc/Architectural overview.html +1 -0
  55. data/doc/Architectural overview.txt +334 -0
  56. data/doc/Doxyfile +241 -0
  57. data/doc/Security of user switching support.html +1 -0
  58. data/doc/Security of user switching support.txt +197 -0
  59. data/doc/Users guide Apache.html +1 -0
  60. data/doc/Users guide Apache.txt +2208 -0
  61. data/doc/Users guide Nginx.html +1 -0
  62. data/doc/Users guide Nginx.txt +1394 -0
  63. data/doc/Users guide Standalone.html +1 -0
  64. data/doc/Users guide Standalone.txt +40 -0
  65. data/doc/definitions.h +5 -0
  66. data/doc/images/by_sa.png +0 -0
  67. data/doc/images/conservative_spawning.png +0 -0
  68. data/doc/images/conservative_spawning.svg +248 -0
  69. data/doc/images/icons/README +5 -0
  70. data/doc/images/icons/callouts/1.png +0 -0
  71. data/doc/images/icons/callouts/10.png +0 -0
  72. data/doc/images/icons/callouts/11.png +0 -0
  73. data/doc/images/icons/callouts/12.png +0 -0
  74. data/doc/images/icons/callouts/13.png +0 -0
  75. data/doc/images/icons/callouts/14.png +0 -0
  76. data/doc/images/icons/callouts/15.png +0 -0
  77. data/doc/images/icons/callouts/2.png +0 -0
  78. data/doc/images/icons/callouts/3.png +0 -0
  79. data/doc/images/icons/callouts/4.png +0 -0
  80. data/doc/images/icons/callouts/5.png +0 -0
  81. data/doc/images/icons/callouts/6.png +0 -0
  82. data/doc/images/icons/callouts/7.png +0 -0
  83. data/doc/images/icons/callouts/8.png +0 -0
  84. data/doc/images/icons/callouts/9.png +0 -0
  85. data/doc/images/icons/caution.png +0 -0
  86. data/doc/images/icons/example.png +0 -0
  87. data/doc/images/icons/home.png +0 -0
  88. data/doc/images/icons/important.png +0 -0
  89. data/doc/images/icons/next.png +0 -0
  90. data/doc/images/icons/note.png +0 -0
  91. data/doc/images/icons/prev.png +0 -0
  92. data/doc/images/icons/tip.png +0 -0
  93. data/doc/images/icons/up.png +0 -0
  94. data/doc/images/icons/warning.png +0 -0
  95. data/doc/images/passenger_architecture.png +0 -0
  96. data/doc/images/passenger_architecture.svg +401 -0
  97. data/doc/images/phusion_banner.png +0 -0
  98. data/doc/images/smart-lv2.png +0 -0
  99. data/doc/images/smart-lv2.svg +320 -0
  100. data/doc/images/spawn_server_architecture.png +0 -0
  101. data/doc/images/spawn_server_architecture.svg +655 -0
  102. data/doc/images/typical_isolated_web_application.png +0 -0
  103. data/doc/images/typical_isolated_web_application.svg +213 -0
  104. data/doc/rdoc/classes/ConditionVariable.html +215 -0
  105. data/doc/rdoc/classes/Exception.html +120 -0
  106. data/doc/rdoc/classes/GC.html +113 -0
  107. data/doc/rdoc/classes/IO.html +221 -0
  108. data/doc/rdoc/classes/PhusionPassenger.html +397 -0
  109. data/doc/rdoc/classes/PhusionPassenger/AbstractInstaller.html +180 -0
  110. data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +647 -0
  111. data/doc/rdoc/classes/PhusionPassenger/AbstractServer.html +654 -0
  112. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/InvalidPassword.html +92 -0
  113. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerAlreadyStarted.html +97 -0
  114. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerError.html +96 -0
  115. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerNotStarted.html +97 -0
  116. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/UnknownMessage.html +96 -0
  117. data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +619 -0
  118. data/doc/rdoc/classes/PhusionPassenger/AdminTools.html +142 -0
  119. data/doc/rdoc/classes/PhusionPassenger/AdminTools/MemoryStats.html +368 -0
  120. data/doc/rdoc/classes/PhusionPassenger/AdminTools/MemoryStats/Process.html +231 -0
  121. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance.html +588 -0
  122. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/CorruptedDirectoryError.html +92 -0
  123. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/GenerationsAbsentError.html +92 -0
  124. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/Group.html +147 -0
  125. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/Process.html +279 -0
  126. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/RoleDeniedError.html +92 -0
  127. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/StaleDirectoryError.html +92 -0
  128. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/Stats.html +123 -0
  129. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/UnsupportedGenerationStructureVersionError.html +92 -0
  130. data/doc/rdoc/classes/PhusionPassenger/AnalyticsLogger.html +341 -0
  131. data/doc/rdoc/classes/PhusionPassenger/AnalyticsLogger/Log.html +294 -0
  132. data/doc/rdoc/classes/PhusionPassenger/AnalyticsLogger/SharedData.html +199 -0
  133. data/doc/rdoc/classes/PhusionPassenger/AppInitError.html +155 -0
  134. data/doc/rdoc/classes/PhusionPassenger/AppProcess.html +367 -0
  135. data/doc/rdoc/classes/PhusionPassenger/ClassicRails.html +95 -0
  136. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/ApplicationSpawner.html +351 -0
  137. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/ApplicationSpawner/Error.html +98 -0
  138. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/CGIFixed.html +200 -0
  139. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/FrameworkSpawner.html +410 -0
  140. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/FrameworkSpawner/Error.html +98 -0
  141. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/RequestHandler.html +156 -0
  142. data/doc/rdoc/classes/PhusionPassenger/ClassicRailsExtensions.html +115 -0
  143. data/doc/rdoc/classes/PhusionPassenger/ClassicRailsExtensions/AnalyticsLogging.html +202 -0
  144. data/doc/rdoc/classes/PhusionPassenger/ConsoleTextTemplate.html +172 -0
  145. data/doc/rdoc/classes/PhusionPassenger/DebugLogging.html +273 -0
  146. data/doc/rdoc/classes/PhusionPassenger/FrameworkInitError.html +145 -0
  147. data/doc/rdoc/classes/PhusionPassenger/HTMLTemplate.html +162 -0
  148. data/doc/rdoc/classes/PhusionPassenger/InitializationError.html +141 -0
  149. data/doc/rdoc/classes/PhusionPassenger/InvalidPath.html +92 -0
  150. data/doc/rdoc/classes/PhusionPassenger/MessageChannel.html +673 -0
  151. data/doc/rdoc/classes/PhusionPassenger/MessageChannel/InvalidHashError.html +92 -0
  152. data/doc/rdoc/classes/PhusionPassenger/MessageClient.html +415 -0
  153. data/doc/rdoc/classes/PhusionPassenger/NativeSupportLoader.html +134 -0
  154. data/doc/rdoc/classes/PhusionPassenger/Packaging.html +129 -0
  155. data/doc/rdoc/classes/PhusionPassenger/PlatformInfo.html +1972 -0
  156. data/doc/rdoc/classes/PhusionPassenger/Plugin.html +237 -0
  157. data/doc/rdoc/classes/PhusionPassenger/Rack.html +91 -0
  158. data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner.html +312 -0
  159. data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner/Error.html +98 -0
  160. data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +218 -0
  161. data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions.html +114 -0
  162. data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging.html +259 -0
  163. data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging/ACExtension.html +139 -0
  164. data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging/ASBenchmarkableExtension.html +118 -0
  165. data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging/ExceptionLogger.html +135 -0
  166. data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +378 -0
  167. data/doc/rdoc/classes/PhusionPassenger/Standalone.html +111 -0
  168. data/doc/rdoc/classes/PhusionPassenger/Standalone/AppFinder.html +252 -0
  169. data/doc/rdoc/classes/PhusionPassenger/Standalone/Command.html +161 -0
  170. data/doc/rdoc/classes/PhusionPassenger/Standalone/ConfigFile.html +368 -0
  171. data/doc/rdoc/classes/PhusionPassenger/Standalone/ConfigFile/DisallowedContextError.html +132 -0
  172. data/doc/rdoc/classes/PhusionPassenger/Standalone/HelpCommand.html +151 -0
  173. data/doc/rdoc/classes/PhusionPassenger/Standalone/Main.html +189 -0
  174. data/doc/rdoc/classes/PhusionPassenger/Standalone/PackageRuntimeCommand.html +177 -0
  175. data/doc/rdoc/classes/PhusionPassenger/Standalone/RuntimeInstaller.html +341 -0
  176. data/doc/rdoc/classes/PhusionPassenger/Standalone/StartCommand.html +203 -0
  177. data/doc/rdoc/classes/PhusionPassenger/Standalone/StatusCommand.html +156 -0
  178. data/doc/rdoc/classes/PhusionPassenger/Standalone/StopCommand.html +168 -0
  179. data/doc/rdoc/classes/PhusionPassenger/Standalone/Utils.html +86 -0
  180. data/doc/rdoc/classes/PhusionPassenger/Standalone/VersionCommand.html +135 -0
  181. data/doc/rdoc/classes/PhusionPassenger/UnknownError.html +125 -0
  182. data/doc/rdoc/classes/PhusionPassenger/Utils.html +1543 -0
  183. data/doc/rdoc/classes/PhusionPassenger/Utils/FileSystemWatcher.html +204 -0
  184. data/doc/rdoc/classes/PhusionPassenger/Utils/FileSystemWatcher/DirInfo.html +171 -0
  185. data/doc/rdoc/classes/PhusionPassenger/Utils/FileSystemWatcher/FileInfo.html +140 -0
  186. data/doc/rdoc/classes/PhusionPassenger/Utils/HostsFileParser.html +260 -0
  187. data/doc/rdoc/classes/PhusionPassenger/Utils/PseudoIO.html +169 -0
  188. data/doc/rdoc/classes/PhusionPassenger/Utils/RewindableInput.html +265 -0
  189. data/doc/rdoc/classes/PhusionPassenger/Utils/RewindableInput/Tempfile.html +120 -0
  190. data/doc/rdoc/classes/PhusionPassenger/Utils/UnseekableSocket.html +561 -0
  191. data/doc/rdoc/classes/PhusionPassenger/VersionNotFound.html +140 -0
  192. data/doc/rdoc/classes/PhusionPassenger/WSGI.html +89 -0
  193. data/doc/rdoc/classes/PhusionPassenger/WSGI/ApplicationSpawner.html +182 -0
  194. data/doc/rdoc/classes/Process.html +115 -0
  195. data/doc/rdoc/classes/Signal.html +139 -0
  196. data/doc/rdoc/created.rid +1 -0
  197. data/doc/rdoc/files/DEVELOPERS_TXT.html +280 -0
  198. data/doc/rdoc/files/README.html +157 -0
  199. data/doc/rdoc/files/lib/phusion_passenger/abstract_installer_rb.html +130 -0
  200. data/doc/rdoc/files/lib/phusion_passenger/abstract_request_handler_rb.html +135 -0
  201. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html +126 -0
  202. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_rb.html +128 -0
  203. data/doc/rdoc/files/lib/phusion_passenger/admin_tools/memory_stats_rb.html +126 -0
  204. data/doc/rdoc/files/lib/phusion_passenger/admin_tools/server_instance_rb.html +132 -0
  205. data/doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html +122 -0
  206. data/doc/rdoc/files/lib/phusion_passenger/analytics_logger_rb.html +129 -0
  207. data/doc/rdoc/files/lib/phusion_passenger/app_process_rb.html +127 -0
  208. data/doc/rdoc/files/lib/phusion_passenger/classic_rails/application_spawner_rb.html +141 -0
  209. data/doc/rdoc/files/lib/phusion_passenger/classic_rails/cgi_fixed_rb.html +126 -0
  210. data/doc/rdoc/files/lib/phusion_passenger/classic_rails/framework_spawner_rb.html +146 -0
  211. data/doc/rdoc/files/lib/phusion_passenger/classic_rails/request_handler_rb.html +125 -0
  212. data/doc/rdoc/files/lib/phusion_passenger/classic_rails_extensions/init_rb.html +132 -0
  213. data/doc/rdoc/files/lib/phusion_passenger/console_text_template_rb.html +126 -0
  214. data/doc/rdoc/files/lib/phusion_passenger/constants_rb.html +122 -0
  215. data/doc/rdoc/files/lib/phusion_passenger/debug_logging_rb.html +122 -0
  216. data/doc/rdoc/files/lib/phusion_passenger/dependencies_rb.html +147 -0
  217. data/doc/rdoc/files/lib/phusion_passenger/exceptions_rb.html +122 -0
  218. data/doc/rdoc/files/lib/phusion_passenger/html_template_rb.html +127 -0
  219. data/doc/rdoc/files/lib/phusion_passenger/message_channel_rb.html +120 -0
  220. data/doc/rdoc/files/lib/phusion_passenger/message_client_rb.html +127 -0
  221. data/doc/rdoc/files/lib/phusion_passenger/native_support_rb.html +132 -0
  222. data/doc/rdoc/files/lib/phusion_passenger/packaging_rb.html +122 -0
  223. data/doc/rdoc/files/lib/phusion_passenger/platform_info/apache_rb.html +127 -0
  224. data/doc/rdoc/files/lib/phusion_passenger/platform_info/binary_compatibility_rb.html +129 -0
  225. data/doc/rdoc/files/lib/phusion_passenger/platform_info/compiler_rb.html +127 -0
  226. data/doc/rdoc/files/lib/phusion_passenger/platform_info/curl_rb.html +126 -0
  227. data/doc/rdoc/files/lib/phusion_passenger/platform_info/documentation_tools_rb.html +126 -0
  228. data/doc/rdoc/files/lib/phusion_passenger/platform_info/linux_rb.html +126 -0
  229. data/doc/rdoc/files/lib/phusion_passenger/platform_info/operating_system_rb.html +127 -0
  230. data/doc/rdoc/files/lib/phusion_passenger/platform_info/ruby_rb.html +128 -0
  231. data/doc/rdoc/files/lib/phusion_passenger/platform_info/zlib_rb.html +126 -0
  232. data/doc/rdoc/files/lib/phusion_passenger/platform_info_rb.html +122 -0
  233. data/doc/rdoc/files/lib/phusion_passenger/plugin_rb.html +127 -0
  234. data/doc/rdoc/files/lib/phusion_passenger/public_api_rb.html +127 -0
  235. data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +137 -0
  236. data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +125 -0
  237. data/doc/rdoc/files/lib/phusion_passenger/rails3_extensions/init_rb.html +127 -0
  238. data/doc/rdoc/files/lib/phusion_passenger/simple_benchmarking_rb.html +122 -0
  239. data/doc/rdoc/files/lib/phusion_passenger/spawn_manager_rb.html +160 -0
  240. data/doc/rdoc/files/lib/phusion_passenger/standalone/app_finder_rb.html +127 -0
  241. data/doc/rdoc/files/lib/phusion_passenger/standalone/command_rb.html +136 -0
  242. data/doc/rdoc/files/lib/phusion_passenger/standalone/config_file_rb.html +126 -0
  243. data/doc/rdoc/files/lib/phusion_passenger/standalone/help_command_rb.html +126 -0
  244. data/doc/rdoc/files/lib/phusion_passenger/standalone/main_rb.html +126 -0
  245. data/doc/rdoc/files/lib/phusion_passenger/standalone/package_runtime_command_rb.html +127 -0
  246. data/doc/rdoc/files/lib/phusion_passenger/standalone/runtime_installer_rb.html +133 -0
  247. data/doc/rdoc/files/lib/phusion_passenger/standalone/start_command_rb.html +136 -0
  248. data/doc/rdoc/files/lib/phusion_passenger/standalone/status_command_rb.html +126 -0
  249. data/doc/rdoc/files/lib/phusion_passenger/standalone/stop_command_rb.html +126 -0
  250. data/doc/rdoc/files/lib/phusion_passenger/standalone/utils_rb.html +126 -0
  251. data/doc/rdoc/files/lib/phusion_passenger/standalone/version_command_rb.html +127 -0
  252. data/doc/rdoc/files/lib/phusion_passenger/utils/file_system_watcher_rb.html +126 -0
  253. data/doc/rdoc/files/lib/phusion_passenger/utils/hosts_file_parser_rb.html +120 -0
  254. data/doc/rdoc/files/lib/phusion_passenger/utils/rewindable_input_rb.html +100 -0
  255. data/doc/rdoc/files/lib/phusion_passenger/utils/tmpdir_rb.html +122 -0
  256. data/doc/rdoc/files/lib/phusion_passenger/utils/unseekable_socket_rb.html +126 -0
  257. data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +179 -0
  258. data/doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html +132 -0
  259. data/doc/rdoc/fr_class_index.html +138 -0
  260. data/doc/rdoc/fr_file_index.html +108 -0
  261. data/doc/rdoc/fr_method_index.html +433 -0
  262. data/doc/rdoc/index.html +26 -0
  263. data/doc/rdoc/rdoc-style.css +187 -0
  264. data/doc/template/horo.rb +613 -0
  265. data/doc/users_guide_snippets/analysis_and_system_maintenance.txt +201 -0
  266. data/doc/users_guide_snippets/appendix_a_about.txt +13 -0
  267. data/doc/users_guide_snippets/appendix_b_terminology.txt +63 -0
  268. data/doc/users_guide_snippets/appendix_c_spawning_methods.txt +303 -0
  269. data/doc/users_guide_snippets/global_queueing_explained.txt +74 -0
  270. data/doc/users_guide_snippets/passenger_spawn_method.txt +49 -0
  271. data/doc/users_guide_snippets/rackup_specifications.txt +71 -0
  272. data/doc/users_guide_snippets/tips.txt +207 -0
  273. data/doc/users_guide_snippets/under_the_hood/page_caching_support.txt +22 -0
  274. data/ext/apache2/Bucket.cpp +190 -0
  275. data/ext/apache2/Bucket.h +87 -0
  276. data/ext/apache2/Configuration.cpp +717 -0
  277. data/ext/apache2/Configuration.h +51 -0
  278. data/ext/apache2/Configuration.hpp +462 -0
  279. data/ext/apache2/DirectoryMapper.h +280 -0
  280. data/ext/apache2/HelperAgent.cpp +365 -0
  281. data/ext/apache2/Hooks.cpp +1757 -0
  282. data/ext/apache2/Hooks.h +45 -0
  283. data/ext/apache2/mod_passenger.c +44 -0
  284. data/ext/boost/algorithm/string/case_conv.hpp +176 -0
  285. data/ext/boost/algorithm/string/compare.hpp +199 -0
  286. data/ext/boost/algorithm/string/concept.hpp +83 -0
  287. data/ext/boost/algorithm/string/config.hpp +28 -0
  288. data/ext/boost/algorithm/string/constants.hpp +36 -0
  289. data/ext/boost/algorithm/string/detail/case_conv.hpp +121 -0
  290. data/ext/boost/algorithm/string/detail/find_format.hpp +204 -0
  291. data/ext/boost/algorithm/string/detail/find_format_all.hpp +273 -0
  292. data/ext/boost/algorithm/string/detail/find_format_store.hpp +89 -0
  293. data/ext/boost/algorithm/string/detail/finder.hpp +646 -0
  294. data/ext/boost/algorithm/string/detail/formatter.hpp +94 -0
  295. data/ext/boost/algorithm/string/detail/replace_storage.hpp +159 -0
  296. data/ext/boost/algorithm/string/detail/sequence.hpp +200 -0
  297. data/ext/boost/algorithm/string/detail/util.hpp +106 -0
  298. data/ext/boost/algorithm/string/erase.hpp +844 -0
  299. data/ext/boost/algorithm/string/find_format.hpp +287 -0
  300. data/ext/boost/algorithm/string/finder.hpp +270 -0
  301. data/ext/boost/algorithm/string/formatter.hpp +103 -0
  302. data/ext/boost/algorithm/string/replace.hpp +928 -0
  303. data/ext/boost/algorithm/string/sequence_traits.hpp +193 -0
  304. data/ext/boost/algorithm/string/yes_no_type.hpp +33 -0
  305. data/ext/boost/assert.hpp +50 -0
  306. data/ext/boost/bind.hpp +24 -0
  307. data/ext/boost/bind/arg.hpp +62 -0
  308. data/ext/boost/bind/bind.hpp +1751 -0
  309. data/ext/boost/bind/bind_cc.hpp +117 -0
  310. data/ext/boost/bind/bind_mf2_cc.hpp +228 -0
  311. data/ext/boost/bind/bind_mf_cc.hpp +227 -0
  312. data/ext/boost/bind/bind_template.hpp +345 -0
  313. data/ext/boost/bind/mem_fn.hpp +389 -0
  314. data/ext/boost/bind/mem_fn_cc.hpp +103 -0
  315. data/ext/boost/bind/mem_fn_template.hpp +1047 -0
  316. data/ext/boost/bind/placeholders.hpp +69 -0
  317. data/ext/boost/bind/storage.hpp +475 -0
  318. data/ext/boost/call_traits.hpp +24 -0
  319. data/ext/boost/checked_delete.hpp +69 -0
  320. data/ext/boost/concept/assert.hpp +46 -0
  321. data/ext/boost/concept/detail/backward_compatibility.hpp +16 -0
  322. data/ext/boost/concept/detail/concept_def.hpp +51 -0
  323. data/ext/boost/concept/detail/concept_undef.hpp +5 -0
  324. data/ext/boost/concept/detail/general.hpp +75 -0
  325. data/ext/boost/concept/detail/has_constraints.hpp +50 -0
  326. data/ext/boost/concept/usage.hpp +44 -0
  327. data/ext/boost/concept_check.hpp +1007 -0
  328. data/ext/boost/config.hpp +70 -0
  329. data/ext/boost/config/abi/borland_prefix.hpp +27 -0
  330. data/ext/boost/config/abi/borland_suffix.hpp +12 -0
  331. data/ext/boost/config/abi/msvc_prefix.hpp +22 -0
  332. data/ext/boost/config/abi/msvc_suffix.hpp +8 -0
  333. data/ext/boost/config/abi_prefix.hpp +25 -0
  334. data/ext/boost/config/abi_suffix.hpp +27 -0
  335. data/ext/boost/config/auto_link.hpp +420 -0
  336. data/ext/boost/config/compiler/borland.hpp +275 -0
  337. data/ext/boost/config/compiler/clang.hpp +62 -0
  338. data/ext/boost/config/compiler/codegear.hpp +177 -0
  339. data/ext/boost/config/compiler/comeau.hpp +59 -0
  340. data/ext/boost/config/compiler/common_edg.hpp +99 -0
  341. data/ext/boost/config/compiler/compaq_cxx.hpp +19 -0
  342. data/ext/boost/config/compiler/digitalmars.hpp +93 -0
  343. data/ext/boost/config/compiler/gcc.hpp +243 -0
  344. data/ext/boost/config/compiler/gcc_xml.hpp +55 -0
  345. data/ext/boost/config/compiler/greenhills.hpp +28 -0
  346. data/ext/boost/config/compiler/hp_acc.hpp +127 -0
  347. data/ext/boost/config/compiler/intel.hpp +196 -0
  348. data/ext/boost/config/compiler/kai.hpp +33 -0
  349. data/ext/boost/config/compiler/metrowerks.hpp +139 -0
  350. data/ext/boost/config/compiler/mpw.hpp +81 -0
  351. data/ext/boost/config/compiler/nvcc.hpp +86 -0
  352. data/ext/boost/config/compiler/pgi.hpp +77 -0
  353. data/ext/boost/config/compiler/sgi_mipspro.hpp +29 -0
  354. data/ext/boost/config/compiler/sunpro_cc.hpp +144 -0
  355. data/ext/boost/config/compiler/vacpp.hpp +96 -0
  356. data/ext/boost/config/compiler/visualc.hpp +274 -0
  357. data/ext/boost/config/no_tr1/cmath.hpp +28 -0
  358. data/ext/boost/config/no_tr1/complex.hpp +28 -0
  359. data/ext/boost/config/no_tr1/functional.hpp +28 -0
  360. data/ext/boost/config/no_tr1/memory.hpp +28 -0
  361. data/ext/boost/config/no_tr1/utility.hpp +28 -0
  362. data/ext/boost/config/platform/aix.hpp +33 -0
  363. data/ext/boost/config/platform/amigaos.hpp +15 -0
  364. data/ext/boost/config/platform/beos.hpp +26 -0
  365. data/ext/boost/config/platform/bsd.hpp +86 -0
  366. data/ext/boost/config/platform/cygwin.hpp +48 -0
  367. data/ext/boost/config/platform/hpux.hpp +87 -0
  368. data/ext/boost/config/platform/irix.hpp +31 -0
  369. data/ext/boost/config/platform/linux.hpp +98 -0
  370. data/ext/boost/config/platform/macos.hpp +86 -0
  371. data/ext/boost/config/platform/qnxnto.hpp +31 -0
  372. data/ext/boost/config/platform/solaris.hpp +28 -0
  373. data/ext/boost/config/platform/symbian.hpp +94 -0
  374. data/ext/boost/config/platform/vxworks.hpp +31 -0
  375. data/ext/boost/config/platform/win32.hpp +65 -0
  376. data/ext/boost/config/posix_features.hpp +95 -0
  377. data/ext/boost/config/requires_threads.hpp +92 -0
  378. data/ext/boost/config/select_compiler_config.hpp +129 -0
  379. data/ext/boost/config/select_platform_config.hpp +98 -0
  380. data/ext/boost/config/select_stdlib_config.hpp +77 -0
  381. data/ext/boost/config/stdlib/dinkumware.hpp +148 -0
  382. data/ext/boost/config/stdlib/libcomo.hpp +72 -0
  383. data/ext/boost/config/stdlib/libstdcpp3.hpp +128 -0
  384. data/ext/boost/config/stdlib/modena.hpp +56 -0
  385. data/ext/boost/config/stdlib/msl.hpp +84 -0
  386. data/ext/boost/config/stdlib/roguewave.hpp +180 -0
  387. data/ext/boost/config/stdlib/sgi.hpp +137 -0
  388. data/ext/boost/config/stdlib/stlport.hpp +237 -0
  389. data/ext/boost/config/stdlib/vacpp.hpp +44 -0
  390. data/ext/boost/config/suffix.hpp +639 -0
  391. data/ext/boost/config/user.hpp +124 -0
  392. data/ext/boost/config/warning_disable.hpp +47 -0
  393. data/ext/boost/cstdint.hpp +504 -0
  394. data/ext/boost/current_function.hpp +67 -0
  395. data/ext/boost/date_time/adjust_functors.hpp +178 -0
  396. data/ext/boost/date_time/c_time.hpp +107 -0
  397. data/ext/boost/date_time/compiler_config.hpp +171 -0
  398. data/ext/boost/date_time/constrained_value.hpp +121 -0
  399. data/ext/boost/date_time/date.hpp +208 -0
  400. data/ext/boost/date_time/date_clock_device.hpp +77 -0
  401. data/ext/boost/date_time/date_defs.hpp +26 -0
  402. data/ext/boost/date_time/date_duration.hpp +146 -0
  403. data/ext/boost/date_time/date_duration_types.hpp +269 -0
  404. data/ext/boost/date_time/date_facet.hpp +764 -0
  405. data/ext/boost/date_time/date_format_simple.hpp +159 -0
  406. data/ext/boost/date_time/date_formatting.hpp +127 -0
  407. data/ext/boost/date_time/date_formatting_limited.hpp +121 -0
  408. data/ext/boost/date_time/date_formatting_locales.hpp +233 -0
  409. data/ext/boost/date_time/date_generator_formatter.hpp +265 -0
  410. data/ext/boost/date_time/date_generator_parser.hpp +330 -0
  411. data/ext/boost/date_time/date_generators.hpp +509 -0
  412. data/ext/boost/date_time/date_iterator.hpp +101 -0
  413. data/ext/boost/date_time/date_names_put.hpp +320 -0
  414. data/ext/boost/date_time/date_parsing.hpp +316 -0
  415. data/ext/boost/date_time/dst_rules.hpp +391 -0
  416. data/ext/boost/date_time/filetime_functions.hpp +170 -0
  417. data/ext/boost/date_time/format_date_parser.hpp +743 -0
  418. data/ext/boost/date_time/gregorian/conversion.hpp +68 -0
  419. data/ext/boost/date_time/gregorian/formatters.hpp +162 -0
  420. data/ext/boost/date_time/gregorian/formatters_limited.hpp +81 -0
  421. data/ext/boost/date_time/gregorian/greg_calendar.hpp +48 -0
  422. data/ext/boost/date_time/gregorian/greg_date.hpp +136 -0
  423. data/ext/boost/date_time/gregorian/greg_day.hpp +57 -0
  424. data/ext/boost/date_time/gregorian/greg_day_of_year.hpp +38 -0
  425. data/ext/boost/date_time/gregorian/greg_duration.hpp +134 -0
  426. data/ext/boost/date_time/gregorian/greg_duration_types.hpp +43 -0
  427. data/ext/boost/date_time/gregorian/greg_month.hpp +105 -0
  428. data/ext/boost/date_time/gregorian/greg_weekday.hpp +66 -0
  429. data/ext/boost/date_time/gregorian/greg_year.hpp +53 -0
  430. data/ext/boost/date_time/gregorian/greg_ymd.hpp +33 -0
  431. data/ext/boost/date_time/gregorian/gregorian.hpp +38 -0
  432. data/ext/boost/date_time/gregorian/gregorian_io.hpp +784 -0
  433. data/ext/boost/date_time/gregorian/gregorian_types.hpp +109 -0
  434. data/ext/boost/date_time/gregorian/parsers.hpp +91 -0
  435. data/ext/boost/date_time/gregorian_calendar.hpp +70 -0
  436. data/ext/boost/date_time/gregorian_calendar.ipp +219 -0
  437. data/ext/boost/date_time/int_adapter.hpp +509 -0
  438. data/ext/boost/date_time/iso_format.hpp +303 -0
  439. data/ext/boost/date_time/locale_config.hpp +31 -0
  440. data/ext/boost/date_time/microsec_time_clock.hpp +127 -0
  441. data/ext/boost/date_time/parse_format_base.hpp +29 -0
  442. data/ext/boost/date_time/period.hpp +377 -0
  443. data/ext/boost/date_time/period_formatter.hpp +196 -0
  444. data/ext/boost/date_time/period_parser.hpp +198 -0
  445. data/ext/boost/date_time/posix_time/conversion.hpp +94 -0
  446. data/ext/boost/date_time/posix_time/date_duration_operators.hpp +114 -0
  447. data/ext/boost/date_time/posix_time/posix_time.hpp +39 -0
  448. data/ext/boost/date_time/posix_time/posix_time_config.hpp +178 -0
  449. data/ext/boost/date_time/posix_time/posix_time_duration.hpp +82 -0
  450. data/ext/boost/date_time/posix_time/posix_time_io.hpp +239 -0
  451. data/ext/boost/date_time/posix_time/posix_time_system.hpp +68 -0
  452. data/ext/boost/date_time/posix_time/posix_time_types.hpp +55 -0
  453. data/ext/boost/date_time/posix_time/ptime.hpp +65 -0
  454. data/ext/boost/date_time/posix_time/time_formatters.hpp +289 -0
  455. data/ext/boost/date_time/posix_time/time_parsers.hpp +44 -0
  456. data/ext/boost/date_time/posix_time/time_period.hpp +29 -0
  457. data/ext/boost/date_time/special_defs.hpp +25 -0
  458. data/ext/boost/date_time/special_values_formatter.hpp +96 -0
  459. data/ext/boost/date_time/special_values_parser.hpp +159 -0
  460. data/ext/boost/date_time/string_convert.hpp +33 -0
  461. data/ext/boost/date_time/string_parse_tree.hpp +278 -0
  462. data/ext/boost/date_time/strings_from_facet.hpp +125 -0
  463. data/ext/boost/date_time/time.hpp +191 -0
  464. data/ext/boost/date_time/time_clock.hpp +83 -0
  465. data/ext/boost/date_time/time_defs.hpp +43 -0
  466. data/ext/boost/date_time/time_duration.hpp +282 -0
  467. data/ext/boost/date_time/time_facet.hpp +1367 -0
  468. data/ext/boost/date_time/time_formatting_streams.hpp +122 -0
  469. data/ext/boost/date_time/time_iterator.hpp +52 -0
  470. data/ext/boost/date_time/time_parsing.hpp +321 -0
  471. data/ext/boost/date_time/time_resolution_traits.hpp +144 -0
  472. data/ext/boost/date_time/time_system_counted.hpp +254 -0
  473. data/ext/boost/date_time/time_system_split.hpp +207 -0
  474. data/ext/boost/date_time/wrapping_int.hpp +169 -0
  475. data/ext/boost/date_time/year_month_day.hpp +45 -0
  476. data/ext/boost/detail/call_traits.hpp +164 -0
  477. data/ext/boost/detail/endian.hpp +76 -0
  478. data/ext/boost/detail/indirect_traits.hpp +487 -0
  479. data/ext/boost/detail/iterator.hpp +494 -0
  480. data/ext/boost/detail/lcast_precision.hpp +184 -0
  481. data/ext/boost/detail/limits.hpp +449 -0
  482. data/ext/boost/detail/no_exceptions_support.hpp +87 -0
  483. data/ext/boost/detail/reference_content.hpp +141 -0
  484. data/ext/boost/detail/sp_typeinfo.hpp +129 -0
  485. data/ext/boost/detail/workaround.hpp +267 -0
  486. data/ext/boost/enable_shared_from_this.hpp +18 -0
  487. data/ext/boost/exception/current_exception_cast.hpp +43 -0
  488. data/ext/boost/exception/detail/attribute_noreturn.hpp +17 -0
  489. data/ext/boost/exception/detail/error_info_impl.hpp +75 -0
  490. data/ext/boost/exception/detail/exception_ptr.hpp +431 -0
  491. data/ext/boost/exception/detail/is_output_streamable.hpp +60 -0
  492. data/ext/boost/exception/detail/object_hex_dump.hpp +50 -0
  493. data/ext/boost/exception/detail/type_info.hpp +83 -0
  494. data/ext/boost/exception/diagnostic_information.hpp +184 -0
  495. data/ext/boost/exception/exception.hpp +436 -0
  496. data/ext/boost/exception/get_error_info.hpp +130 -0
  497. data/ext/boost/exception/info.hpp +200 -0
  498. data/ext/boost/exception/to_string.hpp +83 -0
  499. data/ext/boost/exception/to_string_stub.hpp +109 -0
  500. data/ext/boost/exception_ptr.hpp +11 -0
  501. data/ext/boost/function.hpp +66 -0
  502. data/ext/boost/function/detail/function_iterate.hpp +16 -0
  503. data/ext/boost/function/detail/maybe_include.hpp +267 -0
  504. data/ext/boost/function/detail/prologue.hpp +26 -0
  505. data/ext/boost/function/function_base.hpp +904 -0
  506. data/ext/boost/function/function_fwd.hpp +70 -0
  507. data/ext/boost/function/function_template.hpp +1158 -0
  508. data/ext/boost/function_equal.hpp +28 -0
  509. data/ext/boost/get_pointer.hpp +33 -0
  510. data/ext/boost/implicit_cast.hpp +29 -0
  511. data/ext/boost/integer.hpp +257 -0
  512. data/ext/boost/integer_fwd.hpp +180 -0
  513. data/ext/boost/integer_traits.hpp +261 -0
  514. data/ext/boost/io/ios_state.hpp +439 -0
  515. data/ext/boost/io_fwd.hpp +67 -0
  516. data/ext/boost/is_placeholder.hpp +31 -0
  517. data/ext/boost/iterator.hpp +59 -0
  518. data/ext/boost/iterator/detail/config_def.hpp +137 -0
  519. data/ext/boost/iterator/detail/config_undef.hpp +25 -0
  520. data/ext/boost/iterator/detail/enable_if.hpp +86 -0
  521. data/ext/boost/iterator/detail/facade_iterator_category.hpp +200 -0
  522. data/ext/boost/iterator/detail/minimum_category.hpp +116 -0
  523. data/ext/boost/iterator/interoperable.hpp +50 -0
  524. data/ext/boost/iterator/iterator_adaptor.hpp +371 -0
  525. data/ext/boost/iterator/iterator_categories.hpp +188 -0
  526. data/ext/boost/iterator/iterator_concepts.hpp +284 -0
  527. data/ext/boost/iterator/iterator_facade.hpp +878 -0
  528. data/ext/boost/iterator/iterator_traits.hpp +92 -0
  529. data/ext/boost/iterator/reverse_iterator.hpp +69 -0
  530. data/ext/boost/iterator/transform_iterator.hpp +187 -0
  531. data/ext/boost/lexical_cast.hpp +1213 -0
  532. data/ext/boost/limits.hpp +146 -0
  533. data/ext/boost/make_shared.hpp +17 -0
  534. data/ext/boost/mem_fn.hpp +24 -0
  535. data/ext/boost/memory_order.hpp +53 -0
  536. data/ext/boost/mpl/always.hpp +39 -0
  537. data/ext/boost/mpl/and.hpp +60 -0
  538. data/ext/boost/mpl/apply.hpp +229 -0
  539. data/ext/boost/mpl/apply_fwd.hpp +107 -0
  540. data/ext/boost/mpl/apply_wrap.hpp +234 -0
  541. data/ext/boost/mpl/arg.hpp +131 -0
  542. data/ext/boost/mpl/arg_fwd.hpp +28 -0
  543. data/ext/boost/mpl/assert.hpp +370 -0
  544. data/ext/boost/mpl/aux_/adl_barrier.hpp +48 -0
  545. data/ext/boost/mpl/aux_/arg_typedef.hpp +31 -0
  546. data/ext/boost/mpl/aux_/arity.hpp +39 -0
  547. data/ext/boost/mpl/aux_/arity_spec.hpp +67 -0
  548. data/ext/boost/mpl/aux_/common_name_wknd.hpp +34 -0
  549. data/ext/boost/mpl/aux_/config/adl.hpp +40 -0
  550. data/ext/boost/mpl/aux_/config/arrays.hpp +30 -0
  551. data/ext/boost/mpl/aux_/config/bcc.hpp +28 -0
  552. data/ext/boost/mpl/aux_/config/bind.hpp +33 -0
  553. data/ext/boost/mpl/aux_/config/compiler.hpp +66 -0
  554. data/ext/boost/mpl/aux_/config/ctps.hpp +30 -0
  555. data/ext/boost/mpl/aux_/config/dtp.hpp +46 -0
  556. data/ext/boost/mpl/aux_/config/eti.hpp +47 -0
  557. data/ext/boost/mpl/aux_/config/gcc.hpp +23 -0
  558. data/ext/boost/mpl/aux_/config/has_apply.hpp +32 -0
  559. data/ext/boost/mpl/aux_/config/has_xxx.hpp +34 -0
  560. data/ext/boost/mpl/aux_/config/integral.hpp +38 -0
  561. data/ext/boost/mpl/aux_/config/intel.hpp +21 -0
  562. data/ext/boost/mpl/aux_/config/lambda.hpp +32 -0
  563. data/ext/boost/mpl/aux_/config/msvc.hpp +21 -0
  564. data/ext/boost/mpl/aux_/config/msvc_typename.hpp +26 -0
  565. data/ext/boost/mpl/aux_/config/nttp.hpp +41 -0
  566. data/ext/boost/mpl/aux_/config/overload_resolution.hpp +29 -0
  567. data/ext/boost/mpl/aux_/config/pp_counter.hpp +26 -0
  568. data/ext/boost/mpl/aux_/config/preprocessor.hpp +39 -0
  569. data/ext/boost/mpl/aux_/config/static_constant.hpp +25 -0
  570. data/ext/boost/mpl/aux_/config/ttp.hpp +41 -0
  571. data/ext/boost/mpl/aux_/config/use_preprocessed.hpp +19 -0
  572. data/ext/boost/mpl/aux_/config/workaround.hpp +19 -0
  573. data/ext/boost/mpl/aux_/full_lambda.hpp +354 -0
  574. data/ext/boost/mpl/aux_/has_apply.hpp +32 -0
  575. data/ext/boost/mpl/aux_/has_type.hpp +23 -0
  576. data/ext/boost/mpl/aux_/include_preprocessed.hpp +42 -0
  577. data/ext/boost/mpl/aux_/integral_wrapper.hpp +93 -0
  578. data/ext/boost/mpl/aux_/lambda_arity_param.hpp +25 -0
  579. data/ext/boost/mpl/aux_/lambda_support.hpp +169 -0
  580. data/ext/boost/mpl/aux_/msvc_never_true.hpp +34 -0
  581. data/ext/boost/mpl/aux_/na.hpp +95 -0
  582. data/ext/boost/mpl/aux_/na_assert.hpp +34 -0
  583. data/ext/boost/mpl/aux_/na_fwd.hpp +31 -0
  584. data/ext/boost/mpl/aux_/na_spec.hpp +175 -0
  585. data/ext/boost/mpl/aux_/nested_type_wknd.hpp +48 -0
  586. data/ext/boost/mpl/aux_/nttp_decl.hpp +35 -0
  587. data/ext/boost/mpl/aux_/preprocessed/gcc/and.hpp +69 -0
  588. data/ext/boost/mpl/aux_/preprocessed/gcc/apply.hpp +169 -0
  589. data/ext/boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp +52 -0
  590. data/ext/boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp +84 -0
  591. data/ext/boost/mpl/aux_/preprocessed/gcc/arg.hpp +123 -0
  592. data/ext/boost/mpl/aux_/preprocessed/gcc/bind.hpp +561 -0
  593. data/ext/boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp +52 -0
  594. data/ext/boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp +558 -0
  595. data/ext/boost/mpl/aux_/preprocessed/gcc/or.hpp +69 -0
  596. data/ext/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp +105 -0
  597. data/ext/boost/mpl/aux_/preprocessed/gcc/quote.hpp +123 -0
  598. data/ext/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp +97 -0
  599. data/ext/boost/mpl/aux_/preprocessor/def_params_tail.hpp +105 -0
  600. data/ext/boost/mpl/aux_/preprocessor/enum.hpp +62 -0
  601. data/ext/boost/mpl/aux_/preprocessor/filter_params.hpp +28 -0
  602. data/ext/boost/mpl/aux_/preprocessor/params.hpp +65 -0
  603. data/ext/boost/mpl/aux_/preprocessor/sub.hpp +65 -0
  604. data/ext/boost/mpl/aux_/static_cast.hpp +27 -0
  605. data/ext/boost/mpl/aux_/template_arity.hpp +189 -0
  606. data/ext/boost/mpl/aux_/template_arity_fwd.hpp +23 -0
  607. data/ext/boost/mpl/aux_/type_wrapper.hpp +47 -0
  608. data/ext/boost/mpl/aux_/value_wknd.hpp +89 -0
  609. data/ext/boost/mpl/aux_/yes_no.hpp +58 -0
  610. data/ext/boost/mpl/bind.hpp +551 -0
  611. data/ext/boost/mpl/bind_fwd.hpp +99 -0
  612. data/ext/boost/mpl/bool.hpp +39 -0
  613. data/ext/boost/mpl/bool_fwd.hpp +33 -0
  614. data/ext/boost/mpl/eval_if.hpp +71 -0
  615. data/ext/boost/mpl/has_xxx.hpp +640 -0
  616. data/ext/boost/mpl/identity.hpp +45 -0
  617. data/ext/boost/mpl/if.hpp +135 -0
  618. data/ext/boost/mpl/int.hpp +22 -0
  619. data/ext/boost/mpl/int_fwd.hpp +27 -0
  620. data/ext/boost/mpl/integral_c.hpp +51 -0
  621. data/ext/boost/mpl/integral_c_fwd.hpp +32 -0
  622. data/ext/boost/mpl/integral_c_tag.hpp +26 -0
  623. data/ext/boost/mpl/lambda.hpp +29 -0
  624. data/ext/boost/mpl/lambda_fwd.hpp +57 -0
  625. data/ext/boost/mpl/limits/arity.hpp +21 -0
  626. data/ext/boost/mpl/logical.hpp +21 -0
  627. data/ext/boost/mpl/next.hpp +19 -0
  628. data/ext/boost/mpl/next_prior.hpp +49 -0
  629. data/ext/boost/mpl/not.hpp +51 -0
  630. data/ext/boost/mpl/or.hpp +61 -0
  631. data/ext/boost/mpl/placeholders.hpp +100 -0
  632. data/ext/boost/mpl/protect.hpp +55 -0
  633. data/ext/boost/mpl/quote.hpp +151 -0
  634. data/ext/boost/mpl/size_t.hpp +25 -0
  635. data/ext/boost/mpl/size_t_fwd.hpp +28 -0
  636. data/ext/boost/mpl/void.hpp +76 -0
  637. data/ext/boost/mpl/void_fwd.hpp +26 -0
  638. data/ext/boost/next_prior.hpp +51 -0
  639. data/ext/boost/non_type.hpp +27 -0
  640. data/ext/boost/noncopyable.hpp +36 -0
  641. data/ext/boost/none.hpp +28 -0
  642. data/ext/boost/none_t.hpp +24 -0
  643. data/ext/boost/operators.hpp +976 -0
  644. data/ext/boost/optional.hpp +18 -0
  645. data/ext/boost/optional/optional.hpp +924 -0
  646. data/ext/boost/optional/optional_fwd.hpp +22 -0
  647. data/ext/boost/preprocessor/arithmetic/add.hpp +51 -0
  648. data/ext/boost/preprocessor/arithmetic/dec.hpp +288 -0
  649. data/ext/boost/preprocessor/arithmetic/detail/div_base.hpp +61 -0
  650. data/ext/boost/preprocessor/arithmetic/inc.hpp +288 -0
  651. data/ext/boost/preprocessor/arithmetic/mod.hpp +39 -0
  652. data/ext/boost/preprocessor/arithmetic/sub.hpp +50 -0
  653. data/ext/boost/preprocessor/array/data.hpp +28 -0
  654. data/ext/boost/preprocessor/array/elem.hpp +29 -0
  655. data/ext/boost/preprocessor/array/size.hpp +28 -0
  656. data/ext/boost/preprocessor/cat.hpp +35 -0
  657. data/ext/boost/preprocessor/comma_if.hpp +17 -0
  658. data/ext/boost/preprocessor/comparison/less_equal.hpp +39 -0
  659. data/ext/boost/preprocessor/config/config.hpp +70 -0
  660. data/ext/boost/preprocessor/control/deduce_d.hpp +22 -0
  661. data/ext/boost/preprocessor/control/detail/while.hpp +536 -0
  662. data/ext/boost/preprocessor/control/expr_iif.hpp +31 -0
  663. data/ext/boost/preprocessor/control/if.hpp +30 -0
  664. data/ext/boost/preprocessor/control/iif.hpp +34 -0
  665. data/ext/boost/preprocessor/control/while.hpp +312 -0
  666. data/ext/boost/preprocessor/debug/error.hpp +33 -0
  667. data/ext/boost/preprocessor/detail/auto_rec.hpp +293 -0
  668. data/ext/boost/preprocessor/detail/check.hpp +48 -0
  669. data/ext/boost/preprocessor/detail/is_binary.hpp +30 -0
  670. data/ext/boost/preprocessor/empty.hpp +17 -0
  671. data/ext/boost/preprocessor/enum.hpp +17 -0
  672. data/ext/boost/preprocessor/enum_params.hpp +17 -0
  673. data/ext/boost/preprocessor/facilities/empty.hpp +21 -0
  674. data/ext/boost/preprocessor/facilities/identity.hpp +23 -0
  675. data/ext/boost/preprocessor/identity.hpp +17 -0
  676. data/ext/boost/preprocessor/inc.hpp +17 -0
  677. data/ext/boost/preprocessor/iterate.hpp +17 -0
  678. data/ext/boost/preprocessor/iteration/detail/bounds/lower1.hpp +99 -0
  679. data/ext/boost/preprocessor/iteration/detail/bounds/upper1.hpp +99 -0
  680. data/ext/boost/preprocessor/iteration/detail/iter/forward1.hpp +1342 -0
  681. data/ext/boost/preprocessor/iteration/iterate.hpp +82 -0
  682. data/ext/boost/preprocessor/list/adt.hpp +73 -0
  683. data/ext/boost/preprocessor/list/append.hpp +40 -0
  684. data/ext/boost/preprocessor/list/detail/fold_left.hpp +279 -0
  685. data/ext/boost/preprocessor/list/detail/fold_right.hpp +277 -0
  686. data/ext/boost/preprocessor/list/fold_left.hpp +303 -0
  687. data/ext/boost/preprocessor/list/fold_right.hpp +40 -0
  688. data/ext/boost/preprocessor/list/for_each_i.hpp +65 -0
  689. data/ext/boost/preprocessor/list/reverse.hpp +40 -0
  690. data/ext/boost/preprocessor/list/transform.hpp +49 -0
  691. data/ext/boost/preprocessor/logical/and.hpp +30 -0
  692. data/ext/boost/preprocessor/logical/bitand.hpp +38 -0
  693. data/ext/boost/preprocessor/logical/bool.hpp +288 -0
  694. data/ext/boost/preprocessor/logical/compl.hpp +36 -0
  695. data/ext/boost/preprocessor/logical/not.hpp +30 -0
  696. data/ext/boost/preprocessor/punctuation/comma.hpp +21 -0
  697. data/ext/boost/preprocessor/punctuation/comma_if.hpp +31 -0
  698. data/ext/boost/preprocessor/repeat.hpp +17 -0
  699. data/ext/boost/preprocessor/repetition/detail/for.hpp +536 -0
  700. data/ext/boost/preprocessor/repetition/enum.hpp +66 -0
  701. data/ext/boost/preprocessor/repetition/enum_binary_params.hpp +54 -0
  702. data/ext/boost/preprocessor/repetition/enum_params.hpp +41 -0
  703. data/ext/boost/preprocessor/repetition/enum_trailing_params.hpp +38 -0
  704. data/ext/boost/preprocessor/repetition/for.hpp +306 -0
  705. data/ext/boost/preprocessor/repetition/repeat.hpp +825 -0
  706. data/ext/boost/preprocessor/repetition/repeat_from_to.hpp +87 -0
  707. data/ext/boost/preprocessor/seq/cat.hpp +48 -0
  708. data/ext/boost/preprocessor/seq/elem.hpp +304 -0
  709. data/ext/boost/preprocessor/seq/enum.hpp +288 -0
  710. data/ext/boost/preprocessor/seq/fold_left.hpp +1070 -0
  711. data/ext/boost/preprocessor/seq/for_each_i.hpp +61 -0
  712. data/ext/boost/preprocessor/seq/seq.hpp +44 -0
  713. data/ext/boost/preprocessor/seq/size.hpp +548 -0
  714. data/ext/boost/preprocessor/seq/transform.hpp +48 -0
  715. data/ext/boost/preprocessor/slot/detail/def.hpp +49 -0
  716. data/ext/boost/preprocessor/slot/detail/shared.hpp +247 -0
  717. data/ext/boost/preprocessor/slot/slot.hpp +32 -0
  718. data/ext/boost/preprocessor/stringize.hpp +33 -0
  719. data/ext/boost/preprocessor/tuple/eat.hpp +57 -0
  720. data/ext/boost/preprocessor/tuple/elem.hpp +385 -0
  721. data/ext/boost/preprocessor/tuple/rem.hpp +72 -0
  722. data/ext/boost/preprocessor/tuple/to_list.hpp +62 -0
  723. data/ext/boost/range/algorithm/equal.hpp +188 -0
  724. data/ext/boost/range/as_literal.hpp +127 -0
  725. data/ext/boost/range/begin.hpp +132 -0
  726. data/ext/boost/range/concepts.hpp +331 -0
  727. data/ext/boost/range/config.hpp +54 -0
  728. data/ext/boost/range/const_iterator.hpp +67 -0
  729. data/ext/boost/range/detail/common.hpp +117 -0
  730. data/ext/boost/range/detail/extract_optional_type.hpp +52 -0
  731. data/ext/boost/range/detail/implementation_help.hpp +103 -0
  732. data/ext/boost/range/detail/misc_concept.hpp +33 -0
  733. data/ext/boost/range/detail/sfinae.hpp +77 -0
  734. data/ext/boost/range/detail/str_types.hpp +38 -0
  735. data/ext/boost/range/difference_type.hpp +29 -0
  736. data/ext/boost/range/distance.hpp +34 -0
  737. data/ext/boost/range/empty.hpp +34 -0
  738. data/ext/boost/range/end.hpp +131 -0
  739. data/ext/boost/range/functions.hpp +27 -0
  740. data/ext/boost/range/iterator.hpp +72 -0
  741. data/ext/boost/range/iterator_range.hpp +16 -0
  742. data/ext/boost/range/iterator_range_core.hpp +542 -0
  743. data/ext/boost/range/iterator_range_io.hpp +93 -0
  744. data/ext/boost/range/mutable_iterator.hpp +67 -0
  745. data/ext/boost/range/rbegin.hpp +65 -0
  746. data/ext/boost/range/rend.hpp +65 -0
  747. data/ext/boost/range/reverse_iterator.hpp +40 -0
  748. data/ext/boost/range/size.hpp +36 -0
  749. data/ext/boost/range/size_type.hpp +79 -0
  750. data/ext/boost/range/value_type.hpp +34 -0
  751. data/ext/boost/ref.hpp +189 -0
  752. data/ext/boost/scoped_array.hpp +16 -0
  753. data/ext/boost/scoped_ptr.hpp +16 -0
  754. data/ext/boost/shared_array.hpp +19 -0
  755. data/ext/boost/shared_ptr.hpp +19 -0
  756. data/ext/boost/smart_ptr/bad_weak_ptr.hpp +59 -0
  757. data/ext/boost/smart_ptr/detail/atomic_count.hpp +119 -0
  758. data/ext/boost/smart_ptr/detail/atomic_count_gcc.hpp +72 -0
  759. data/ext/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp +77 -0
  760. data/ext/boost/smart_ptr/detail/atomic_count_pthreads.hpp +96 -0
  761. data/ext/boost/smart_ptr/detail/atomic_count_solaris.hpp +59 -0
  762. data/ext/boost/smart_ptr/detail/atomic_count_sync.hpp +61 -0
  763. data/ext/boost/smart_ptr/detail/atomic_count_win32.hpp +63 -0
  764. data/ext/boost/smart_ptr/detail/operator_bool.hpp +56 -0
  765. data/ext/boost/smart_ptr/detail/shared_count.hpp +444 -0
  766. data/ext/boost/smart_ptr/detail/sp_convertible.hpp +76 -0
  767. data/ext/boost/smart_ptr/detail/sp_counted_base.hpp +70 -0
  768. data/ext/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +150 -0
  769. data/ext/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +170 -0
  770. data/ext/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +158 -0
  771. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +157 -0
  772. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +172 -0
  773. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +181 -0
  774. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +166 -0
  775. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +173 -0
  776. data/ext/boost/smart_ptr/detail/sp_counted_base_nt.hpp +107 -0
  777. data/ext/boost/smart_ptr/detail/sp_counted_base_pt.hpp +135 -0
  778. data/ext/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +113 -0
  779. data/ext/boost/smart_ptr/detail/sp_counted_base_spin.hpp +131 -0
  780. data/ext/boost/smart_ptr/detail/sp_counted_base_sync.hpp +155 -0
  781. data/ext/boost/smart_ptr/detail/sp_counted_base_w32.hpp +130 -0
  782. data/ext/boost/smart_ptr/detail/sp_counted_impl.hpp +231 -0
  783. data/ext/boost/smart_ptr/detail/sp_has_sync.hpp +49 -0
  784. data/ext/boost/smart_ptr/detail/spinlock.hpp +53 -0
  785. data/ext/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +85 -0
  786. data/ext/boost/smart_ptr/detail/spinlock_nt.hpp +89 -0
  787. data/ext/boost/smart_ptr/detail/spinlock_pool.hpp +87 -0
  788. data/ext/boost/smart_ptr/detail/spinlock_pt.hpp +79 -0
  789. data/ext/boost/smart_ptr/detail/spinlock_sync.hpp +87 -0
  790. data/ext/boost/smart_ptr/detail/yield_k.hpp +149 -0
  791. data/ext/boost/smart_ptr/enable_shared_from_this.hpp +79 -0
  792. data/ext/boost/smart_ptr/make_shared.hpp +508 -0
  793. data/ext/boost/smart_ptr/scoped_array.hpp +107 -0
  794. data/ext/boost/smart_ptr/scoped_ptr.hpp +131 -0
  795. data/ext/boost/smart_ptr/shared_array.hpp +147 -0
  796. data/ext/boost/smart_ptr/shared_ptr.hpp +701 -0
  797. data/ext/boost/smart_ptr/weak_ptr.hpp +230 -0
  798. data/ext/boost/src/pthread/once.cpp +51 -0
  799. data/ext/boost/src/pthread/thread.cpp +616 -0
  800. data/ext/boost/src/pthread/timeconv.inl +133 -0
  801. data/ext/boost/src/tss_null.cpp +34 -0
  802. data/ext/boost/static_assert.hpp +132 -0
  803. data/ext/boost/thread.hpp +26 -0
  804. data/ext/boost/thread/barrier.hpp +64 -0
  805. data/ext/boost/thread/condition.hpp +16 -0
  806. data/ext/boost/thread/condition_variable.hpp +21 -0
  807. data/ext/boost/thread/detail/config.hpp +100 -0
  808. data/ext/boost/thread/detail/force_cast.hpp +39 -0
  809. data/ext/boost/thread/detail/move.hpp +60 -0
  810. data/ext/boost/thread/detail/platform.hpp +71 -0
  811. data/ext/boost/thread/detail/singleton.hpp +59 -0
  812. data/ext/boost/thread/detail/thread.hpp +540 -0
  813. data/ext/boost/thread/detail/thread_group.hpp +108 -0
  814. data/ext/boost/thread/detail/thread_heap_alloc.hpp +23 -0
  815. data/ext/boost/thread/detail/thread_interruption.hpp +35 -0
  816. data/ext/boost/thread/detail/tss_hooks.hpp +65 -0
  817. data/ext/boost/thread/exceptions.hpp +223 -0
  818. data/ext/boost/thread/future.hpp +1375 -0
  819. data/ext/boost/thread/locks.hpp +1585 -0
  820. data/ext/boost/thread/mutex.hpp +21 -0
  821. data/ext/boost/thread/once.hpp +33 -0
  822. data/ext/boost/thread/pthread/condition_variable.hpp +179 -0
  823. data/ext/boost/thread/pthread/condition_variable_fwd.hpp +102 -0
  824. data/ext/boost/thread/pthread/mutex.hpp +236 -0
  825. data/ext/boost/thread/pthread/once.hpp +95 -0
  826. data/ext/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +54 -0
  827. data/ext/boost/thread/pthread/recursive_mutex.hpp +345 -0
  828. data/ext/boost/thread/pthread/shared_mutex.hpp +303 -0
  829. data/ext/boost/thread/pthread/thread_data.hpp +129 -0
  830. data/ext/boost/thread/pthread/thread_heap_alloc.hpp +242 -0
  831. data/ext/boost/thread/pthread/timespec.hpp +36 -0
  832. data/ext/boost/thread/recursive_mutex.hpp +21 -0
  833. data/ext/boost/thread/shared_mutex.hpp +21 -0
  834. data/ext/boost/thread/thread.hpp +27 -0
  835. data/ext/boost/thread/thread_time.hpp +50 -0
  836. data/ext/boost/thread/tss.hpp +113 -0
  837. data/ext/boost/thread/xtime.hpp +92 -0
  838. data/ext/boost/throw_exception.hpp +91 -0
  839. data/ext/boost/token_functions.hpp +641 -0
  840. data/ext/boost/token_iterator.hpp +128 -0
  841. data/ext/boost/tokenizer.hpp +98 -0
  842. data/ext/boost/type.hpp +18 -0
  843. data/ext/boost/type_traits/add_const.hpp +47 -0
  844. data/ext/boost/type_traits/add_pointer.hpp +72 -0
  845. data/ext/boost/type_traits/add_reference.hpp +107 -0
  846. data/ext/boost/type_traits/add_volatile.hpp +47 -0
  847. data/ext/boost/type_traits/alignment_of.hpp +128 -0
  848. data/ext/boost/type_traits/broken_compiler_spec.hpp +117 -0
  849. data/ext/boost/type_traits/composite_traits.hpp +29 -0
  850. data/ext/boost/type_traits/config.hpp +76 -0
  851. data/ext/boost/type_traits/conversion_traits.hpp +17 -0
  852. data/ext/boost/type_traits/detail/bool_trait_def.hpp +173 -0
  853. data/ext/boost/type_traits/detail/bool_trait_undef.hpp +27 -0
  854. data/ext/boost/type_traits/detail/cv_traits_impl.hpp +97 -0
  855. data/ext/boost/type_traits/detail/false_result.hpp +28 -0
  856. data/ext/boost/type_traits/detail/ice_and.hpp +35 -0
  857. data/ext/boost/type_traits/detail/ice_eq.hpp +36 -0
  858. data/ext/boost/type_traits/detail/ice_not.hpp +31 -0
  859. data/ext/boost/type_traits/detail/ice_or.hpp +34 -0
  860. data/ext/boost/type_traits/detail/is_function_ptr_helper.hpp +220 -0
  861. data/ext/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +817 -0
  862. data/ext/boost/type_traits/detail/size_t_trait_def.hpp +58 -0
  863. data/ext/boost/type_traits/detail/size_t_trait_undef.hpp +16 -0
  864. data/ext/boost/type_traits/detail/template_arity_spec.hpp +31 -0
  865. data/ext/boost/type_traits/detail/type_trait_def.hpp +61 -0
  866. data/ext/boost/type_traits/detail/type_trait_undef.hpp +19 -0
  867. data/ext/boost/type_traits/detail/yes_no_type.hpp +26 -0
  868. data/ext/boost/type_traits/function_traits.hpp +236 -0
  869. data/ext/boost/type_traits/has_nothrow_copy.hpp +39 -0
  870. data/ext/boost/type_traits/has_trivial_copy.hpp +49 -0
  871. data/ext/boost/type_traits/has_trivial_destructor.hpp +42 -0
  872. data/ext/boost/type_traits/ice.hpp +20 -0
  873. data/ext/boost/type_traits/integral_constant.hpp +53 -0
  874. data/ext/boost/type_traits/intrinsics.hpp +240 -0
  875. data/ext/boost/type_traits/is_abstract.hpp +153 -0
  876. data/ext/boost/type_traits/is_arithmetic.hpp +51 -0
  877. data/ext/boost/type_traits/is_array.hpp +91 -0
  878. data/ext/boost/type_traits/is_base_and_derived.hpp +254 -0
  879. data/ext/boost/type_traits/is_base_of.hpp +51 -0
  880. data/ext/boost/type_traits/is_class.hpp +140 -0
  881. data/ext/boost/type_traits/is_const.hpp +165 -0
  882. data/ext/boost/type_traits/is_convertible.hpp +430 -0
  883. data/ext/boost/type_traits/is_enum.hpp +189 -0
  884. data/ext/boost/type_traits/is_float.hpp +27 -0
  885. data/ext/boost/type_traits/is_function.hpp +106 -0
  886. data/ext/boost/type_traits/is_fundamental.hpp +45 -0
  887. data/ext/boost/type_traits/is_integral.hpp +78 -0
  888. data/ext/boost/type_traits/is_lvalue_reference.hpp +118 -0
  889. data/ext/boost/type_traits/is_member_function_pointer.hpp +136 -0
  890. data/ext/boost/type_traits/is_member_pointer.hpp +116 -0
  891. data/ext/boost/type_traits/is_pod.hpp +135 -0
  892. data/ext/boost/type_traits/is_pointer.hpp +162 -0
  893. data/ext/boost/type_traits/is_reference.hpp +45 -0
  894. data/ext/boost/type_traits/is_rvalue_reference.hpp +29 -0
  895. data/ext/boost/type_traits/is_same.hpp +103 -0
  896. data/ext/boost/type_traits/is_scalar.hpp +55 -0
  897. data/ext/boost/type_traits/is_signed.hpp +135 -0
  898. data/ext/boost/type_traits/is_union.hpp +49 -0
  899. data/ext/boost/type_traits/is_unsigned.hpp +130 -0
  900. data/ext/boost/type_traits/is_void.hpp +38 -0
  901. data/ext/boost/type_traits/is_volatile.hpp +152 -0
  902. data/ext/boost/type_traits/make_unsigned.hpp +137 -0
  903. data/ext/boost/type_traits/remove_const.hpp +90 -0
  904. data/ext/boost/type_traits/remove_cv.hpp +83 -0
  905. data/ext/boost/type_traits/remove_pointer.hpp +43 -0
  906. data/ext/boost/type_traits/remove_reference.hpp +70 -0
  907. data/ext/boost/type_traits/type_with_alignment.hpp +393 -0
  908. data/ext/boost/units/detail/utility.hpp +104 -0
  909. data/ext/boost/utility.hpp +20 -0
  910. data/ext/boost/utility/addressof.hpp +102 -0
  911. data/ext/boost/utility/base_from_member.hpp +87 -0
  912. data/ext/boost/utility/binary.hpp +708 -0
  913. data/ext/boost/utility/compare_pointees.hpp +68 -0
  914. data/ext/boost/utility/enable_if.hpp +119 -0
  915. data/ext/boost/visit_each.hpp +29 -0
  916. data/ext/boost/weak_ptr.hpp +18 -0
  917. data/ext/common/AbstractSpawnManager.h +110 -0
  918. data/ext/common/Account.h +175 -0
  919. data/ext/common/AccountsDatabase.cpp +81 -0
  920. data/ext/common/AccountsDatabase.h +130 -0
  921. data/ext/common/AgentBase.cpp +323 -0
  922. data/ext/common/AgentBase.h +39 -0
  923. data/ext/common/AgentsStarter.cpp +154 -0
  924. data/ext/common/AgentsStarter.h +81 -0
  925. data/ext/common/AgentsStarter.hpp +646 -0
  926. data/ext/common/ApplicationPool/Client.h +796 -0
  927. data/ext/common/ApplicationPool/Interface.h +295 -0
  928. data/ext/common/ApplicationPool/Pool.h +1327 -0
  929. data/ext/common/ApplicationPool/Server.h +475 -0
  930. data/ext/common/BCrypt.cpp +343 -0
  931. data/ext/common/BCrypt.h +73 -0
  932. data/ext/common/Blowfish.c +685 -0
  933. data/ext/common/Blowfish.h +103 -0
  934. data/ext/common/Constants.h +48 -0
  935. data/ext/common/EventedClient.h +702 -0
  936. data/ext/common/EventedMessageServer.h +327 -0
  937. data/ext/common/EventedServer.h +295 -0
  938. data/ext/common/Exceptions.h +348 -0
  939. data/ext/common/FileDescriptor.h +293 -0
  940. data/ext/common/HelperAgent/BacktracesServer.h +59 -0
  941. data/ext/common/IniFile.h +488 -0
  942. data/ext/common/Logging.cpp +64 -0
  943. data/ext/common/Logging.h +695 -0
  944. data/ext/common/LoggingAgent/ChangeNotifier.h +63 -0
  945. data/ext/common/LoggingAgent/DataStoreId.h +177 -0
  946. data/ext/common/LoggingAgent/LoggingServer.h +1343 -0
  947. data/ext/common/LoggingAgent/Main.cpp +278 -0
  948. data/ext/common/LoggingAgent/RemoteSender.h +468 -0
  949. data/ext/common/MessageChannel.h +737 -0
  950. data/ext/common/MessageClient.h +297 -0
  951. data/ext/common/MessageReadersWriters.h +508 -0
  952. data/ext/common/MessageServer.h +581 -0
  953. data/ext/common/PoolOptions.h +518 -0
  954. data/ext/common/Process.h +255 -0
  955. data/ext/common/RandomGenerator.h +160 -0
  956. data/ext/common/ResourceLocator.h +134 -0
  957. data/ext/common/SafeLibev.h +149 -0
  958. data/ext/common/ServerInstanceDir.h +347 -0
  959. data/ext/common/Session.h +470 -0
  960. data/ext/common/SpawnManager.h +616 -0
  961. data/ext/common/StaticString.h +298 -0
  962. data/ext/common/StringListCreator.h +83 -0
  963. data/ext/common/Utils.cpp +972 -0
  964. data/ext/common/Utils.h +428 -0
  965. data/ext/common/Utils/Base64.cpp +143 -0
  966. data/ext/common/Utils/Base64.h +83 -0
  967. data/ext/common/Utils/BlockingQueue.h +136 -0
  968. data/ext/common/Utils/BufferedIO.h +196 -0
  969. data/ext/common/Utils/CachedFileStat.cpp +62 -0
  970. data/ext/common/Utils/CachedFileStat.h +51 -0
  971. data/ext/common/Utils/CachedFileStat.hpp +243 -0
  972. data/ext/common/Utils/FileChangeChecker.h +209 -0
  973. data/ext/common/Utils/IOUtils.cpp +913 -0
  974. data/ext/common/Utils/IOUtils.h +370 -0
  975. data/ext/common/Utils/MD5.cpp +406 -0
  976. data/ext/common/Utils/MD5.h +98 -0
  977. data/ext/common/Utils/MemZeroGuard.h +103 -0
  978. data/ext/common/Utils/ProcessMetricsCollector.h +590 -0
  979. data/ext/common/Utils/ScopeGuard.h +72 -0
  980. data/ext/common/Utils/StrIntUtils.cpp +363 -0
  981. data/ext/common/Utils/StrIntUtils.h +231 -0
  982. data/ext/common/Utils/SystemTime.cpp +37 -0
  983. data/ext/common/Utils/SystemTime.h +201 -0
  984. data/ext/common/Utils/Timer.h +152 -0
  985. data/ext/common/Utils/VariantMap.h +363 -0
  986. data/ext/common/Utils/utf8.h +35 -0
  987. data/ext/common/Utils/utf8/checked.h +324 -0
  988. data/ext/common/Utils/utf8/core.h +359 -0
  989. data/ext/common/Utils/utf8/unchecked.h +229 -0
  990. data/ext/common/Watchdog.cpp +1001 -0
  991. data/ext/google/COPYING +28 -0
  992. data/ext/google/ChangeLog +167 -0
  993. data/ext/google/dense_hash_map +310 -0
  994. data/ext/google/dense_hash_set +287 -0
  995. data/ext/google/sparse_hash_map +294 -0
  996. data/ext/google/sparse_hash_set +275 -0
  997. data/ext/google/sparsehash/densehashtable.h +1062 -0
  998. data/ext/google/sparsehash/sparseconfig.h +55 -0
  999. data/ext/google/sparsehash/sparsehashtable.h +1015 -0
  1000. data/ext/google/sparsetable +1468 -0
  1001. data/ext/google/type_traits.h +250 -0
  1002. data/ext/libev/Changes +302 -0
  1003. data/ext/libev/LICENSE +36 -0
  1004. data/ext/libev/Makefile.am +18 -0
  1005. data/ext/libev/Makefile.in +685 -0
  1006. data/ext/libev/README +58 -0
  1007. data/ext/libev/aclocal.m4 +7549 -0
  1008. data/ext/libev/autogen.sh +6 -0
  1009. data/ext/libev/config.guess +1526 -0
  1010. data/ext/libev/config.h.in +121 -0
  1011. data/ext/libev/config.sub +1658 -0
  1012. data/ext/libev/configure +22156 -0
  1013. data/ext/libev/configure.ac +18 -0
  1014. data/ext/libev/ev++.h +800 -0
  1015. data/ext/libev/ev.c +3694 -0
  1016. data/ext/libev/ev.h +705 -0
  1017. data/ext/libev/ev_epoll.c +228 -0
  1018. data/ext/libev/ev_kqueue.c +196 -0
  1019. data/ext/libev/ev_poll.c +144 -0
  1020. data/ext/libev/ev_port.c +165 -0
  1021. data/ext/libev/ev_select.c +308 -0
  1022. data/ext/libev/ev_vars.h +187 -0
  1023. data/ext/libev/ev_win32.c +153 -0
  1024. data/ext/libev/ev_wrap.h +178 -0
  1025. data/ext/libev/event.c +401 -0
  1026. data/ext/libev/event.h +158 -0
  1027. data/ext/libev/install-sh +294 -0
  1028. data/ext/libev/libev.m4 +38 -0
  1029. data/ext/libev/ltmain.sh +6871 -0
  1030. data/ext/libev/missing +336 -0
  1031. data/ext/libev/mkinstalldirs +111 -0
  1032. data/ext/nginx/Configuration.c +1454 -0
  1033. data/ext/nginx/Configuration.h +94 -0
  1034. data/ext/nginx/ContentHandler.c +1360 -0
  1035. data/ext/nginx/ContentHandler.h +64 -0
  1036. data/ext/nginx/HelperAgent.cpp +988 -0
  1037. data/ext/nginx/HttpStatusExtractor.h +351 -0
  1038. data/ext/nginx/ScgiRequestParser.h +375 -0
  1039. data/ext/nginx/StaticContentHandler.c +256 -0
  1040. data/ext/nginx/StaticContentHandler.h +37 -0
  1041. data/ext/nginx/config +56 -0
  1042. data/ext/nginx/ngx_http_passenger_module.c +499 -0
  1043. data/ext/nginx/ngx_http_passenger_module.h +63 -0
  1044. data/ext/oxt/backtrace.cpp +185 -0
  1045. data/ext/oxt/backtrace.hpp +135 -0
  1046. data/ext/oxt/detail/backtrace_disabled.hpp +39 -0
  1047. data/ext/oxt/detail/backtrace_enabled.hpp +156 -0
  1048. data/ext/oxt/detail/spin_lock_darwin.hpp +69 -0
  1049. data/ext/oxt/detail/spin_lock_gcc_x86.hpp +81 -0
  1050. data/ext/oxt/detail/spin_lock_portable.hpp +38 -0
  1051. data/ext/oxt/detail/spin_lock_pthreads.hpp +97 -0
  1052. data/ext/oxt/detail/tracable_exception_disabled.hpp +46 -0
  1053. data/ext/oxt/detail/tracable_exception_enabled.hpp +48 -0
  1054. data/ext/oxt/dynamic_thread_group.hpp +195 -0
  1055. data/ext/oxt/macros.hpp +58 -0
  1056. data/ext/oxt/spin_lock.hpp +57 -0
  1057. data/ext/oxt/system_calls.cpp +477 -0
  1058. data/ext/oxt/system_calls.hpp +260 -0
  1059. data/ext/oxt/thread.cpp +32 -0
  1060. data/ext/oxt/thread.hpp +370 -0
  1061. data/ext/oxt/tracable_exception.cpp +87 -0
  1062. data/ext/oxt/tracable_exception.hpp +35 -0
  1063. data/ext/ruby/extconf.rb +41 -0
  1064. data/ext/ruby/passenger_native_support.c +1037 -0
  1065. data/helper-scripts/passenger-spawn-server +106 -0
  1066. data/helper-scripts/prespawn +63 -0
  1067. data/lib/phusion_passenger.rb +107 -0
  1068. data/lib/phusion_passenger/abstract_installer.rb +234 -0
  1069. data/lib/phusion_passenger/abstract_request_handler.rb +738 -0
  1070. data/lib/phusion_passenger/abstract_server.rb +372 -0
  1071. data/lib/phusion_passenger/abstract_server_collection.rb +335 -0
  1072. data/lib/phusion_passenger/admin_tools.rb +48 -0
  1073. data/lib/phusion_passenger/admin_tools/memory_stats.rb +299 -0
  1074. data/lib/phusion_passenger/admin_tools/server_instance.rb +334 -0
  1075. data/lib/phusion_passenger/analytics_logger.rb +342 -0
  1076. data/lib/phusion_passenger/app_process.rb +162 -0
  1077. data/lib/phusion_passenger/classic_rails/application_spawner.rb +344 -0
  1078. data/lib/phusion_passenger/classic_rails/cgi_fixed.rb +68 -0
  1079. data/lib/phusion_passenger/classic_rails/framework_spawner.rb +311 -0
  1080. data/lib/phusion_passenger/classic_rails/request_handler.rb +75 -0
  1081. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_base_extension.rb +65 -0
  1082. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_benchmarking_extension.rb +48 -0
  1083. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_rescue_extension.rb +59 -0
  1084. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ar_abstract_adapter_extension.rb +54 -0
  1085. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/as_cache_extension.rb +130 -0
  1086. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/av_benchmark_helper_extension.rb +47 -0
  1087. data/lib/phusion_passenger/classic_rails_extensions/init.rb +123 -0
  1088. data/lib/phusion_passenger/console_text_template.rb +66 -0
  1089. data/lib/phusion_passenger/constants.rb +35 -0
  1090. data/lib/phusion_passenger/debug_logging.rb +104 -0
  1091. data/lib/phusion_passenger/dependencies.rb +633 -0
  1092. data/lib/phusion_passenger/exceptions.rb +103 -0
  1093. data/lib/phusion_passenger/html_template.rb +107 -0
  1094. data/lib/phusion_passenger/message_channel.rb +387 -0
  1095. data/lib/phusion_passenger/message_client.rb +173 -0
  1096. data/lib/phusion_passenger/native_support.rb +166 -0
  1097. data/lib/phusion_passenger/packaging.rb +108 -0
  1098. data/lib/phusion_passenger/platform_info.rb +248 -0
  1099. data/lib/phusion_passenger/platform_info/apache.rb +332 -0
  1100. data/lib/phusion_passenger/platform_info/binary_compatibility.rb +175 -0
  1101. data/lib/phusion_passenger/platform_info/compiler.rb +183 -0
  1102. data/lib/phusion_passenger/platform_info/curl.rb +61 -0
  1103. data/lib/phusion_passenger/platform_info/documentation_tools.rb +35 -0
  1104. data/lib/phusion_passenger/platform_info/linux.rb +77 -0
  1105. data/lib/phusion_passenger/platform_info/operating_system.rb +158 -0
  1106. data/lib/phusion_passenger/platform_info/ruby.rb +338 -0
  1107. data/lib/phusion_passenger/platform_info/zlib.rb +38 -0
  1108. data/lib/phusion_passenger/plugin.rb +96 -0
  1109. data/lib/phusion_passenger/public_api.rb +112 -0
  1110. data/lib/phusion_passenger/rack/application_spawner.rb +227 -0
  1111. data/lib/phusion_passenger/rack/request_handler.rb +145 -0
  1112. data/lib/phusion_passenger/rails3_extensions/init.rb +207 -0
  1113. data/lib/phusion_passenger/simple_benchmarking.rb +52 -0
  1114. data/lib/phusion_passenger/spawn_manager.rb +359 -0
  1115. data/lib/phusion_passenger/standalone/app_finder.rb +153 -0
  1116. data/lib/phusion_passenger/standalone/command.rb +241 -0
  1117. data/lib/phusion_passenger/standalone/config_file.rb +119 -0
  1118. data/lib/phusion_passenger/standalone/help_command.rb +57 -0
  1119. data/lib/phusion_passenger/standalone/main.rb +101 -0
  1120. data/lib/phusion_passenger/standalone/package_runtime_command.rb +92 -0
  1121. data/lib/phusion_passenger/standalone/runtime_installer.rb +479 -0
  1122. data/lib/phusion_passenger/standalone/start_command.rb +514 -0
  1123. data/lib/phusion_passenger/standalone/status_command.rb +62 -0
  1124. data/lib/phusion_passenger/standalone/stop_command.rb +74 -0
  1125. data/lib/phusion_passenger/standalone/utils.rb +46 -0
  1126. data/lib/phusion_passenger/standalone/version_command.rb +42 -0
  1127. data/lib/phusion_passenger/templates/apache2/apache_must_be_compiled_with_compatible_mpm.txt.erb +9 -0
  1128. data/lib/phusion_passenger/templates/apache2/config_snippets.txt.erb +13 -0
  1129. data/lib/phusion_passenger/templates/apache2/deployment_example.txt.erb +23 -0
  1130. data/lib/phusion_passenger/templates/apache2/no_write_permission_to_passenger_root.txt.erb +9 -0
  1131. data/lib/phusion_passenger/templates/apache2/possible_solutions_for_compilation_and_installation_problems.txt.erb +11 -0
  1132. data/lib/phusion_passenger/templates/apache2/run_installer_as_root.txt.erb +8 -0
  1133. data/lib/phusion_passenger/templates/apache2/welcome.txt.erb +15 -0
  1134. data/lib/phusion_passenger/templates/app_exited_during_initialization.html.erb +38 -0
  1135. data/lib/phusion_passenger/templates/app_init_error.html.erb +64 -0
  1136. data/lib/phusion_passenger/templates/database_error.html.erb +66 -0
  1137. data/lib/phusion_passenger/templates/error_layout.css +97 -0
  1138. data/lib/phusion_passenger/templates/error_layout.html.erb +39 -0
  1139. data/lib/phusion_passenger/templates/framework_init_error.html.erb +39 -0
  1140. data/lib/phusion_passenger/templates/general_error.html.erb +22 -0
  1141. data/lib/phusion_passenger/templates/load_error.html.erb +46 -0
  1142. data/lib/phusion_passenger/templates/nginx/ask_for_extra_configure_flags.txt.erb +8 -0
  1143. data/lib/phusion_passenger/templates/nginx/cannot_write_to_dir.txt.erb +11 -0
  1144. data/lib/phusion_passenger/templates/nginx/config_snippets.txt.erb +17 -0
  1145. data/lib/phusion_passenger/templates/nginx/config_snippets_inserted.txt.erb +20 -0
  1146. data/lib/phusion_passenger/templates/nginx/confirm_extra_configure_flags.txt.erb +5 -0
  1147. data/lib/phusion_passenger/templates/nginx/deployment_example.txt.erb +22 -0
  1148. data/lib/phusion_passenger/templates/nginx/pcre_could_not_be_downloaded.txt.erb +11 -0
  1149. data/lib/phusion_passenger/templates/nginx/pcre_could_not_be_extracted.txt.erb +11 -0
  1150. data/lib/phusion_passenger/templates/nginx/possible_solutions_for_compilation_and_installation_problems.txt.erb +11 -0
  1151. data/lib/phusion_passenger/templates/nginx/possible_solutions_for_download_and_extraction_problems.txt.erb +20 -0
  1152. data/lib/phusion_passenger/templates/nginx/query_download_and_install.txt.erb +21 -0
  1153. data/lib/phusion_passenger/templates/nginx/run_installer_as_root.txt.erb +8 -0
  1154. data/lib/phusion_passenger/templates/nginx/welcome.txt.erb +15 -0
  1155. data/lib/phusion_passenger/templates/standalone/cannot_write_to_dir.txt.erb +11 -0
  1156. data/lib/phusion_passenger/templates/standalone/config.erb +94 -0
  1157. data/lib/phusion_passenger/templates/standalone/possible_solutions_for_download_and_extraction_problems.txt.erb +17 -0
  1158. data/lib/phusion_passenger/templates/standalone/run_installer_as_root.txt.erb +8 -0
  1159. data/lib/phusion_passenger/templates/standalone/welcome.txt.erb +8 -0
  1160. data/lib/phusion_passenger/templates/standalone_default_root/index.html +1 -0
  1161. data/lib/phusion_passenger/templates/version_not_found.html.erb +34 -0
  1162. data/lib/phusion_passenger/utils.rb +1080 -0
  1163. data/lib/phusion_passenger/utils/file_system_watcher.rb +186 -0
  1164. data/lib/phusion_passenger/utils/hosts_file_parser.rb +130 -0
  1165. data/lib/phusion_passenger/utils/rewindable_input.rb +125 -0
  1166. data/lib/phusion_passenger/utils/tmpdir.rb +70 -0
  1167. data/lib/phusion_passenger/utils/unseekable_socket.rb +196 -0
  1168. data/lib/phusion_passenger/wsgi/application_spawner.rb +108 -0
  1169. data/lib/phusion_passenger/wsgi/request_handler.py +199 -0
  1170. data/man/passenger-config.1 +29 -0
  1171. data/man/passenger-make-enterprisey.8 +23 -0
  1172. data/man/passenger-memory-stats.8 +33 -0
  1173. data/man/passenger-status.8 +43 -0
  1174. data/man/passenger-stress-test.1 +43 -0
  1175. data/resources/mime.types +73 -0
  1176. data/resources/union_station_gateway.crt +32 -0
  1177. data/test/config.yml.example +41 -0
  1178. data/test/cxx/ApplicationPool_PoolTest.cpp +33 -0
  1179. data/test/cxx/ApplicationPool_PoolTestCases.cpp +1029 -0
  1180. data/test/cxx/ApplicationPool_ServerTest.cpp +308 -0
  1181. data/test/cxx/ApplicationPool_Server_PoolTest.cpp +80 -0
  1182. data/test/cxx/Base64Test.cpp +50 -0
  1183. data/test/cxx/BufferedIOTest.cpp +364 -0
  1184. data/test/cxx/CachedFileStatTest.cpp +402 -0
  1185. data/test/cxx/CxxTestMain.cpp +122 -0
  1186. data/test/cxx/EventedClientTest.cpp +523 -0
  1187. data/test/cxx/FileChangeCheckerTest.cpp +329 -0
  1188. data/test/cxx/FileDescriptorTest.cpp +69 -0
  1189. data/test/cxx/HttpStatusExtractorTest.cpp +198 -0
  1190. data/test/cxx/IOUtilsTest.cpp +796 -0
  1191. data/test/cxx/LoggingTest.cpp +914 -0
  1192. data/test/cxx/MessageChannelTest.cpp +557 -0
  1193. data/test/cxx/MessageReadersWritersTest.cpp +574 -0
  1194. data/test/cxx/MessageServerTest.cpp +383 -0
  1195. data/test/cxx/PoolOptionsTest.cpp +116 -0
  1196. data/test/cxx/ProcessMetricsCollectorTest.cpp +121 -0
  1197. data/test/cxx/ScgiRequestParserTest.cpp +389 -0
  1198. data/test/cxx/ServerInstanceDirTest.cpp +186 -0
  1199. data/test/cxx/SpawnManagerTest.cpp +161 -0
  1200. data/test/cxx/StaticStringTest.cpp +220 -0
  1201. data/test/cxx/SystemTimeTest.cpp +37 -0
  1202. data/test/cxx/TestSupport.cpp +166 -0
  1203. data/test/cxx/TestSupport.h +254 -0
  1204. data/test/cxx/UtilsTest.cpp +491 -0
  1205. data/test/cxx/VariantMapTest.cpp +179 -0
  1206. data/test/integration_tests/apache2_tests.rb +666 -0
  1207. data/test/integration_tests/cgi_environment_spec.rb +26 -0
  1208. data/test/integration_tests/hello_world_rack_spec.rb +36 -0
  1209. data/test/integration_tests/hello_world_wsgi_spec.rb +41 -0
  1210. data/test/integration_tests/mycook_spec.rb +166 -0
  1211. data/test/integration_tests/nginx_tests.rb +260 -0
  1212. data/test/integration_tests/spec_helper.rb +19 -0
  1213. data/test/oxt/backtrace_test.cpp +88 -0
  1214. data/test/oxt/counter.hpp +55 -0
  1215. data/test/oxt/dynamic_thread_group_test.cpp +131 -0
  1216. data/test/oxt/oxt_test_main.cpp +25 -0
  1217. data/test/oxt/spin_lock_test.cpp +59 -0
  1218. data/test/oxt/syscall_interruption_test.cpp +38 -0
  1219. data/test/ruby/abstract_request_handler_spec.rb +406 -0
  1220. data/test/ruby/abstract_server_collection_spec.rb +247 -0
  1221. data/test/ruby/abstract_server_spec.rb +61 -0
  1222. data/test/ruby/admin_tools_spec.rb +362 -0
  1223. data/test/ruby/analytics_logger_spec.rb +253 -0
  1224. data/test/ruby/app_process_spec.rb +43 -0
  1225. data/test/ruby/classic_rails/application_spawner_spec.rb +89 -0
  1226. data/test/ruby/classic_rails/framework_spawner_spec.rb +92 -0
  1227. data/test/ruby/debug_logging_spec.rb +141 -0
  1228. data/test/ruby/message_channel_spec.rb +196 -0
  1229. data/test/ruby/rack/application_spawner_spec.rb +116 -0
  1230. data/test/ruby/shared/abstract_server_spec.rb +23 -0
  1231. data/test/ruby/shared/rails/analytics_logging_extensions_spec.rb +375 -0
  1232. data/test/ruby/shared/spawners/classic_rails/framework_spawner_spec.rb +38 -0
  1233. data/test/ruby/shared/spawners/classic_rails/lack_of_rails_gem_version_spec.rb +19 -0
  1234. data/test/ruby/shared/spawners/classic_rails/spawner_spec.rb +15 -0
  1235. data/test/ruby/shared/spawners/non_preloading_spawner_spec.rb +27 -0
  1236. data/test/ruby/shared/spawners/preloading_spawner_spec.rb +29 -0
  1237. data/test/ruby/shared/spawners/reload_all_spec.rb +36 -0
  1238. data/test/ruby/shared/spawners/reload_single_spec.rb +52 -0
  1239. data/test/ruby/shared/spawners/spawn_server_spec.rb +28 -0
  1240. data/test/ruby/shared/spawners/spawner_spec.rb +273 -0
  1241. data/test/ruby/shared/utils/pseudo_io_spec.rb +60 -0
  1242. data/test/ruby/spawn_manager_spec.rb +134 -0
  1243. data/test/ruby/spec_helper.rb +104 -0
  1244. data/test/ruby/utils/file_system_watcher_spec.rb +221 -0
  1245. data/test/ruby/utils/hosts_file_parser.rb +258 -0
  1246. data/test/ruby/utils/unseekable_socket_spec.rb +66 -0
  1247. data/test/ruby/utils_spec.rb +748 -0
  1248. data/test/ruby/wsgi/application_spawner_spec.rb +50 -0
  1249. data/test/stub/apache2/httpd.conf.erb +86 -0
  1250. data/test/stub/apache2/mime.types +748 -0
  1251. data/test/stub/garbage1.dat +0 -0
  1252. data/test/stub/garbage2.dat +0 -0
  1253. data/test/stub/garbage3.dat +0 -0
  1254. data/test/stub/http_request.yml +23 -0
  1255. data/test/stub/message_channel.rb +11 -0
  1256. data/test/stub/message_channel_2.rb +12 -0
  1257. data/test/stub/message_channel_3.rb +19 -0
  1258. data/test/stub/nginx/koi-utf +109 -0
  1259. data/test/stub/nginx/koi-win +103 -0
  1260. data/test/stub/nginx/mime.types +70 -0
  1261. data/test/stub/nginx/nginx.conf.erb +58 -0
  1262. data/test/stub/nginx/win-utf +126 -0
  1263. data/test/stub/rack/config.ru +4 -0
  1264. data/test/stub/rack/public/rack.jpg +0 -0
  1265. data/test/stub/rails_apps/1.2/empty/Rakefile +10 -0
  1266. data/test/stub/rails_apps/1.2/empty/app/controllers/application.rb +7 -0
  1267. data/test/stub/rails_apps/1.2/empty/app/helpers/application_helper.rb +3 -0
  1268. data/test/stub/rails_apps/1.2/empty/config/boot.rb +108 -0
  1269. data/test/stub/rails_apps/1.2/empty/config/database.yml +31 -0
  1270. data/test/stub/rails_apps/1.2/empty/config/environment.rb +66 -0
  1271. data/test/stub/rails_apps/1.2/empty/config/environments/development.rb +21 -0
  1272. data/test/stub/rails_apps/1.2/empty/config/environments/production.rb +18 -0
  1273. data/test/stub/rails_apps/1.2/empty/config/environments/staging.rb +18 -0
  1274. data/test/stub/rails_apps/1.2/empty/config/environments/test.rb +19 -0
  1275. data/test/stub/rails_apps/1.2/empty/config/routes.rb +23 -0
  1276. data/test/stub/rails_apps/1.2/empty/doc/README_FOR_APP +2 -0
  1277. data/test/stub/rails_apps/1.2/empty/public/404.html +30 -0
  1278. data/test/stub/rails_apps/1.2/empty/public/500.html +30 -0
  1279. data/test/stub/rails_apps/1.2/empty/public/dispatch.cgi +10 -0
  1280. data/test/stub/rails_apps/1.2/empty/public/dispatch.fcgi +24 -0
  1281. data/test/stub/rails_apps/1.2/empty/public/dispatch.rb +10 -0
  1282. data/test/stub/rails_apps/1.2/empty/public/favicon.ico +0 -0
  1283. data/test/stub/rails_apps/1.2/empty/public/images/rails.png +0 -0
  1284. data/test/stub/rails_apps/1.2/empty/public/robots.txt +1 -0
  1285. data/test/stub/rails_apps/1.2/empty/script/about +3 -0
  1286. data/test/stub/rails_apps/1.2/empty/script/breakpointer +3 -0
  1287. data/test/stub/rails_apps/1.2/empty/script/console +3 -0
  1288. data/test/stub/rails_apps/1.2/empty/script/destroy +3 -0
  1289. data/test/stub/rails_apps/1.2/empty/script/generate +3 -0
  1290. data/test/stub/rails_apps/1.2/empty/script/performance/benchmarker +3 -0
  1291. data/test/stub/rails_apps/1.2/empty/script/performance/profiler +3 -0
  1292. data/test/stub/rails_apps/1.2/empty/script/plugin +3 -0
  1293. data/test/stub/rails_apps/1.2/empty/script/process/inspector +3 -0
  1294. data/test/stub/rails_apps/1.2/empty/script/process/reaper +3 -0
  1295. data/test/stub/rails_apps/1.2/empty/script/process/spawner +3 -0
  1296. data/test/stub/rails_apps/1.2/empty/script/runner +3 -0
  1297. data/test/stub/rails_apps/1.2/empty/script/server +3 -0
  1298. data/test/stub/rails_apps/1.2/empty/test/test_helper.rb +28 -0
  1299. data/test/stub/rails_apps/2.0/empty/Rakefile +10 -0
  1300. data/test/stub/rails_apps/2.0/empty/app/controllers/application.rb +10 -0
  1301. data/test/stub/rails_apps/2.0/empty/app/helpers/application_helper.rb +3 -0
  1302. data/test/stub/rails_apps/2.0/empty/config/boot.rb +108 -0
  1303. data/test/stub/rails_apps/2.0/empty/config/database.yml +31 -0
  1304. data/test/stub/rails_apps/2.0/empty/config/environment.rb +59 -0
  1305. data/test/stub/rails_apps/2.0/empty/config/environments/development.rb +18 -0
  1306. data/test/stub/rails_apps/2.0/empty/config/environments/production.rb +18 -0
  1307. data/test/stub/rails_apps/2.0/empty/config/environments/staging.rb +18 -0
  1308. data/test/stub/rails_apps/2.0/empty/config/environments/test.rb +22 -0
  1309. data/test/stub/rails_apps/2.0/empty/config/initializers/inflections.rb +10 -0
  1310. data/test/stub/rails_apps/2.0/empty/config/initializers/mime_types.rb +5 -0
  1311. data/test/stub/rails_apps/2.0/empty/config/routes.rb +35 -0
  1312. data/test/stub/rails_apps/2.0/empty/doc/README_FOR_APP +2 -0
  1313. data/test/stub/rails_apps/2.0/empty/public/404.html +30 -0
  1314. data/test/stub/rails_apps/2.0/empty/public/422.html +30 -0
  1315. data/test/stub/rails_apps/2.0/empty/public/500.html +30 -0
  1316. data/test/stub/rails_apps/2.0/empty/public/dispatch.cgi +10 -0
  1317. data/test/stub/rails_apps/2.0/empty/public/dispatch.fcgi +24 -0
  1318. data/test/stub/rails_apps/2.0/empty/public/dispatch.rb +10 -0
  1319. data/test/stub/rails_apps/2.0/empty/public/favicon.ico +0 -0
  1320. data/test/stub/rails_apps/2.0/empty/public/images/rails.png +0 -0
  1321. data/test/stub/rails_apps/2.0/empty/public/robots.txt +5 -0
  1322. data/test/stub/rails_apps/2.0/empty/script/about +3 -0
  1323. data/test/stub/rails_apps/2.0/empty/script/console +3 -0
  1324. data/test/stub/rails_apps/2.0/empty/script/destroy +3 -0
  1325. data/test/stub/rails_apps/2.0/empty/script/generate +3 -0
  1326. data/test/stub/rails_apps/2.0/empty/script/performance/benchmarker +3 -0
  1327. data/test/stub/rails_apps/2.0/empty/script/performance/profiler +3 -0
  1328. data/test/stub/rails_apps/2.0/empty/script/performance/request +3 -0
  1329. data/test/stub/rails_apps/2.0/empty/script/plugin +3 -0
  1330. data/test/stub/rails_apps/2.0/empty/script/process/inspector +3 -0
  1331. data/test/stub/rails_apps/2.0/empty/script/process/reaper +3 -0
  1332. data/test/stub/rails_apps/2.0/empty/script/process/spawner +3 -0
  1333. data/test/stub/rails_apps/2.0/empty/script/runner +3 -0
  1334. data/test/stub/rails_apps/2.0/empty/script/server +3 -0
  1335. data/test/stub/rails_apps/2.0/empty/test/test_helper.rb +38 -0
  1336. data/test/stub/rails_apps/2.2/empty/Rakefile +10 -0
  1337. data/test/stub/rails_apps/2.2/empty/app/controllers/application.rb +15 -0
  1338. data/test/stub/rails_apps/2.2/empty/app/helpers/application_helper.rb +3 -0
  1339. data/test/stub/rails_apps/2.2/empty/config/boot.rb +109 -0
  1340. data/test/stub/rails_apps/2.2/empty/config/database.yml +31 -0
  1341. data/test/stub/rails_apps/2.2/empty/config/environment.rb +75 -0
  1342. data/test/stub/rails_apps/2.2/empty/config/environments/development.rb +17 -0
  1343. data/test/stub/rails_apps/2.2/empty/config/environments/production.rb +24 -0
  1344. data/test/stub/rails_apps/2.2/empty/config/environments/staging.rb +24 -0
  1345. data/test/stub/rails_apps/2.2/empty/config/environments/test.rb +22 -0
  1346. data/test/stub/rails_apps/2.2/empty/config/initializers/inflections.rb +10 -0
  1347. data/test/stub/rails_apps/2.2/empty/config/initializers/mime_types.rb +5 -0
  1348. data/test/stub/rails_apps/2.2/empty/config/initializers/new_rails_defaults.rb +17 -0
  1349. data/test/stub/rails_apps/2.2/empty/config/locales/en.yml +5 -0
  1350. data/test/stub/rails_apps/2.2/empty/config/routes.rb +43 -0
  1351. data/test/stub/rails_apps/2.2/empty/doc/README_FOR_APP +5 -0
  1352. data/test/stub/rails_apps/2.2/empty/public/404.html +30 -0
  1353. data/test/stub/rails_apps/2.2/empty/public/422.html +30 -0
  1354. data/test/stub/rails_apps/2.2/empty/public/500.html +33 -0
  1355. data/test/stub/rails_apps/2.2/empty/public/dispatch.cgi +10 -0
  1356. data/test/stub/rails_apps/2.2/empty/public/dispatch.fcgi +24 -0
  1357. data/test/stub/rails_apps/2.2/empty/public/dispatch.rb +10 -0
  1358. data/test/stub/rails_apps/2.2/empty/public/favicon.ico +0 -0
  1359. data/test/stub/rails_apps/2.2/empty/public/images/rails.png +0 -0
  1360. data/test/stub/rails_apps/2.2/empty/public/robots.txt +5 -0
  1361. data/test/stub/rails_apps/2.2/empty/script/about +4 -0
  1362. data/test/stub/rails_apps/2.2/empty/script/console +3 -0
  1363. data/test/stub/rails_apps/2.2/empty/script/dbconsole +3 -0
  1364. data/test/stub/rails_apps/2.2/empty/script/destroy +3 -0
  1365. data/test/stub/rails_apps/2.2/empty/script/generate +3 -0
  1366. data/test/stub/rails_apps/2.2/empty/script/performance/benchmarker +3 -0
  1367. data/test/stub/rails_apps/2.2/empty/script/performance/profiler +3 -0
  1368. data/test/stub/rails_apps/2.2/empty/script/performance/request +3 -0
  1369. data/test/stub/rails_apps/2.2/empty/script/plugin +3 -0
  1370. data/test/stub/rails_apps/2.2/empty/script/process/inspector +3 -0
  1371. data/test/stub/rails_apps/2.2/empty/script/process/reaper +3 -0
  1372. data/test/stub/rails_apps/2.2/empty/script/process/spawner +3 -0
  1373. data/test/stub/rails_apps/2.2/empty/script/runner +3 -0
  1374. data/test/stub/rails_apps/2.2/empty/script/server +3 -0
  1375. data/test/stub/rails_apps/2.2/empty/test/performance/browsing_test.rb +9 -0
  1376. data/test/stub/rails_apps/2.2/empty/test/test_helper.rb +38 -0
  1377. data/test/stub/rails_apps/2.3/empty/Rakefile +10 -0
  1378. data/test/stub/rails_apps/2.3/empty/app/controllers/application_controller.rb +10 -0
  1379. data/test/stub/rails_apps/2.3/empty/app/helpers/application_helper.rb +3 -0
  1380. data/test/stub/rails_apps/2.3/empty/config/boot.rb +110 -0
  1381. data/test/stub/rails_apps/2.3/empty/config/database.yml +31 -0
  1382. data/test/stub/rails_apps/2.3/empty/config/environment.rb +41 -0
  1383. data/test/stub/rails_apps/2.3/empty/config/environments/development.rb +17 -0
  1384. data/test/stub/rails_apps/2.3/empty/config/environments/production.rb +28 -0
  1385. data/test/stub/rails_apps/2.3/empty/config/environments/staging.rb +28 -0
  1386. data/test/stub/rails_apps/2.3/empty/config/environments/test.rb +28 -0
  1387. data/test/stub/rails_apps/2.3/empty/config/initializers/backtrace_silencers.rb +7 -0
  1388. data/test/stub/rails_apps/2.3/empty/config/initializers/inflections.rb +10 -0
  1389. data/test/stub/rails_apps/2.3/empty/config/initializers/mime_types.rb +5 -0
  1390. data/test/stub/rails_apps/2.3/empty/config/initializers/new_rails_defaults.rb +21 -0
  1391. data/test/stub/rails_apps/2.3/empty/config/initializers/session_store.rb +15 -0
  1392. data/test/stub/rails_apps/2.3/empty/config/locales/en.yml +5 -0
  1393. data/test/stub/rails_apps/2.3/empty/config/routes.rb +43 -0
  1394. data/test/stub/rails_apps/2.3/empty/db/seeds.rb +7 -0
  1395. data/test/stub/rails_apps/2.3/empty/doc/README_FOR_APP +2 -0
  1396. data/test/stub/rails_apps/2.3/empty/public/404.html +30 -0
  1397. data/test/stub/rails_apps/2.3/empty/public/422.html +30 -0
  1398. data/test/stub/rails_apps/2.3/empty/public/500.html +30 -0
  1399. data/test/stub/rails_apps/2.3/empty/public/favicon.ico +0 -0
  1400. data/test/stub/rails_apps/2.3/empty/public/images/rails.png +0 -0
  1401. data/test/stub/rails_apps/2.3/empty/public/robots.txt +5 -0
  1402. data/test/stub/rails_apps/2.3/empty/script/about +4 -0
  1403. data/test/stub/rails_apps/2.3/empty/script/console +3 -0
  1404. data/test/stub/rails_apps/2.3/empty/script/dbconsole +3 -0
  1405. data/test/stub/rails_apps/2.3/empty/script/destroy +3 -0
  1406. data/test/stub/rails_apps/2.3/empty/script/generate +3 -0
  1407. data/test/stub/rails_apps/2.3/empty/script/performance/benchmarker +3 -0
  1408. data/test/stub/rails_apps/2.3/empty/script/performance/profiler +3 -0
  1409. data/test/stub/rails_apps/2.3/empty/script/plugin +3 -0
  1410. data/test/stub/rails_apps/2.3/empty/script/runner +3 -0
  1411. data/test/stub/rails_apps/2.3/empty/script/server +3 -0
  1412. data/test/stub/rails_apps/2.3/empty/test/performance/browsing_test.rb +9 -0
  1413. data/test/stub/rails_apps/2.3/empty/test/test_helper.rb +38 -0
  1414. data/test/stub/rails_apps/2.3/foobar/Rakefile +10 -0
  1415. data/test/stub/rails_apps/2.3/foobar/app/controllers/application_controller.rb +12 -0
  1416. data/test/stub/rails_apps/2.3/foobar/app/controllers/bar_controller_1.rb +5 -0
  1417. data/test/stub/rails_apps/2.3/foobar/app/controllers/bar_controller_2.rb +5 -0
  1418. data/test/stub/rails_apps/2.3/foobar/app/controllers/foo_controller.rb +21 -0
  1419. data/test/stub/rails_apps/2.3/foobar/app/helpers/application_helper.rb +3 -0
  1420. data/test/stub/rails_apps/2.3/foobar/config/boot.rb +110 -0
  1421. data/test/stub/rails_apps/2.3/foobar/config/database.yml +19 -0
  1422. data/test/stub/rails_apps/2.3/foobar/config/environment.rb +59 -0
  1423. data/test/stub/rails_apps/2.3/foobar/config/environments/development.rb +17 -0
  1424. data/test/stub/rails_apps/2.3/foobar/config/environments/production.rb +18 -0
  1425. data/test/stub/rails_apps/2.3/foobar/config/environments/staging.rb +18 -0
  1426. data/test/stub/rails_apps/2.3/foobar/config/initializers/inflections.rb +10 -0
  1427. data/test/stub/rails_apps/2.3/foobar/config/initializers/mime_types.rb +5 -0
  1428. data/test/stub/rails_apps/2.3/foobar/config/routes.rb +35 -0
  1429. data/test/stub/rails_apps/2.3/foobar/script/about +3 -0
  1430. data/test/stub/rails_apps/2.3/foobar/script/console +3 -0
  1431. data/test/stub/rails_apps/2.3/foobar/script/dbconsole +3 -0
  1432. data/test/stub/rails_apps/2.3/foobar/script/destroy +3 -0
  1433. data/test/stub/rails_apps/2.3/foobar/script/generate +3 -0
  1434. data/test/stub/rails_apps/2.3/foobar/script/performance/benchmarker +3 -0
  1435. data/test/stub/rails_apps/2.3/foobar/script/performance/profiler +3 -0
  1436. data/test/stub/rails_apps/2.3/foobar/script/performance/request +3 -0
  1437. data/test/stub/rails_apps/2.3/foobar/script/plugin +3 -0
  1438. data/test/stub/rails_apps/2.3/foobar/script/process/inspector +3 -0
  1439. data/test/stub/rails_apps/2.3/foobar/script/process/reaper +3 -0
  1440. data/test/stub/rails_apps/2.3/foobar/script/process/spawner +3 -0
  1441. data/test/stub/rails_apps/2.3/foobar/script/runner +3 -0
  1442. data/test/stub/rails_apps/2.3/foobar/script/server +3 -0
  1443. data/test/stub/rails_apps/2.3/mycook/Rakefile +10 -0
  1444. data/test/stub/rails_apps/2.3/mycook/app/controllers/application_controller.rb +12 -0
  1445. data/test/stub/rails_apps/2.3/mycook/app/controllers/recipes_controller.rb +5 -0
  1446. data/test/stub/rails_apps/2.3/mycook/app/controllers/uploads_controller.rb +15 -0
  1447. data/test/stub/rails_apps/2.3/mycook/app/controllers/welcome_controller.rb +71 -0
  1448. data/test/stub/rails_apps/2.3/mycook/app/helpers/application_helper.rb +3 -0
  1449. data/test/stub/rails_apps/2.3/mycook/app/views/layouts/default.rhtml +26 -0
  1450. data/test/stub/rails_apps/2.3/mycook/app/views/recipes/create.rhtml +13 -0
  1451. data/test/stub/rails_apps/2.3/mycook/app/views/recipes/index.rhtml +3 -0
  1452. data/test/stub/rails_apps/2.3/mycook/app/views/recipes/new.rhtml +8 -0
  1453. data/test/stub/rails_apps/2.3/mycook/app/views/uploads/index.rhtml +1 -0
  1454. data/test/stub/rails_apps/2.3/mycook/app/views/uploads/new.html.erb +8 -0
  1455. data/test/stub/rails_apps/2.3/mycook/app/views/welcome/cached.rhtml +1 -0
  1456. data/test/stub/rails_apps/2.3/mycook/app/views/welcome/index.rhtml +20 -0
  1457. data/test/stub/rails_apps/2.3/mycook/config/boot.rb +110 -0
  1458. data/test/stub/rails_apps/2.3/mycook/config/database.yml +19 -0
  1459. data/test/stub/rails_apps/2.3/mycook/config/environment.rb +61 -0
  1460. data/test/stub/rails_apps/2.3/mycook/config/environments/development.rb +18 -0
  1461. data/test/stub/rails_apps/2.3/mycook/config/environments/production.rb +19 -0
  1462. data/test/stub/rails_apps/2.3/mycook/config/initializers/inflections.rb +10 -0
  1463. data/test/stub/rails_apps/2.3/mycook/config/initializers/mime_types.rb +5 -0
  1464. data/test/stub/rails_apps/2.3/mycook/config/routes.rb +38 -0
  1465. data/test/stub/rails_apps/2.3/mycook/log/useless.txt +1 -0
  1466. data/test/stub/rails_apps/2.3/mycook/public/404.html +30 -0
  1467. data/test/stub/rails_apps/2.3/mycook/public/422.html +30 -0
  1468. data/test/stub/rails_apps/2.3/mycook/public/500.html +30 -0
  1469. data/test/stub/rails_apps/2.3/mycook/public/dispatch.cgi +10 -0
  1470. data/test/stub/rails_apps/2.3/mycook/public/dispatch.fcgi +24 -0
  1471. data/test/stub/rails_apps/2.3/mycook/public/dispatch.rb +10 -0
  1472. data/test/stub/rails_apps/2.3/mycook/public/favicon.ico +0 -0
  1473. data/test/stub/rails_apps/2.3/mycook/public/images/angrywizard.gif +0 -0
  1474. data/test/stub/rails_apps/2.3/mycook/public/images/cookbook.gif +0 -0
  1475. data/test/stub/rails_apps/2.3/mycook/public/images/header.png +0 -0
  1476. data/test/stub/rails_apps/2.3/mycook/public/images/rails.png +0 -0
  1477. data/test/stub/rails_apps/2.3/mycook/public/javascripts/application.js +2 -0
  1478. data/test/stub/rails_apps/2.3/mycook/public/javascripts/controls.js +963 -0
  1479. data/test/stub/rails_apps/2.3/mycook/public/javascripts/dragdrop.js +973 -0
  1480. data/test/stub/rails_apps/2.3/mycook/public/javascripts/effects.js +1128 -0
  1481. data/test/stub/rails_apps/2.3/mycook/public/javascripts/prototype.js +4320 -0
  1482. data/test/stub/rails_apps/2.3/mycook/public/robots.txt +5 -0
  1483. data/test/stub/rails_apps/2.3/mycook/public/uploads.html +26 -0
  1484. data/test/stub/rails_apps/2.3/mycook/public/welcome/cached.html +26 -0
  1485. data/test/stub/rails_apps/2.3/mycook/script/about +3 -0
  1486. data/test/stub/rails_apps/2.3/mycook/script/console +3 -0
  1487. data/test/stub/rails_apps/2.3/mycook/script/dbconsole +3 -0
  1488. data/test/stub/rails_apps/2.3/mycook/script/destroy +3 -0
  1489. data/test/stub/rails_apps/2.3/mycook/script/generate +3 -0
  1490. data/test/stub/rails_apps/2.3/mycook/script/performance/benchmarker +3 -0
  1491. data/test/stub/rails_apps/2.3/mycook/script/performance/profiler +3 -0
  1492. data/test/stub/rails_apps/2.3/mycook/script/performance/request +3 -0
  1493. data/test/stub/rails_apps/2.3/mycook/script/plugin +3 -0
  1494. data/test/stub/rails_apps/2.3/mycook/script/process/inspector +3 -0
  1495. data/test/stub/rails_apps/2.3/mycook/script/process/reaper +3 -0
  1496. data/test/stub/rails_apps/2.3/mycook/script/process/spawner +3 -0
  1497. data/test/stub/rails_apps/2.3/mycook/script/runner +3 -0
  1498. data/test/stub/rails_apps/2.3/mycook/script/server +3 -0
  1499. data/test/stub/rails_apps/2.3/mycook/sites/some.site/public/uploads.html +26 -0
  1500. data/test/stub/rails_apps/2.3/mycook/sites/some.site/public/welcome/cached.html +26 -0
  1501. data/test/stub/rails_apps/2.3/mycook/tmp/cache/useless.txt +1 -0
  1502. data/test/stub/rails_apps/2.3/mycook/tmp/pids/useless.txt +1 -0
  1503. data/test/stub/rails_apps/2.3/mycook/tmp/sessions/useless.txt +1 -0
  1504. data/test/stub/rails_apps/2.3/mycook/tmp/sockets/useless.txt +1 -0
  1505. data/test/stub/rails_apps/3.0/empty/Gemfile +22 -0
  1506. data/test/stub/rails_apps/3.0/empty/Gemfile.lock +73 -0
  1507. data/test/stub/rails_apps/3.0/empty/Rakefile +10 -0
  1508. data/test/stub/rails_apps/3.0/empty/app/controllers/application_controller.rb +4 -0
  1509. data/test/stub/rails_apps/3.0/empty/app/helpers/application_helper.rb +2 -0
  1510. data/test/stub/rails_apps/3.0/empty/app/views/layouts/application.html.erb +14 -0
  1511. data/test/stub/rails_apps/3.0/empty/config.ru +4 -0
  1512. data/test/stub/rails_apps/3.0/empty/config/application.rb +48 -0
  1513. data/test/stub/rails_apps/3.0/empty/config/boot.rb +13 -0
  1514. data/test/stub/rails_apps/3.0/empty/config/database.yml +22 -0
  1515. data/test/stub/rails_apps/3.0/empty/config/environment.rb +5 -0
  1516. data/test/stub/rails_apps/3.0/empty/config/environments/development.rb +19 -0
  1517. data/test/stub/rails_apps/3.0/empty/config/environments/production.rb +48 -0
  1518. data/test/stub/rails_apps/3.0/empty/config/environments/test.rb +32 -0
  1519. data/test/stub/rails_apps/3.0/empty/config/initializers/backtrace_silencers.rb +7 -0
  1520. data/test/stub/rails_apps/3.0/empty/config/initializers/inflections.rb +10 -0
  1521. data/test/stub/rails_apps/3.0/empty/config/initializers/mime_types.rb +5 -0
  1522. data/test/stub/rails_apps/3.0/empty/config/initializers/passenger.rb +1 -0
  1523. data/test/stub/rails_apps/3.0/empty/config/initializers/secret_token.rb +7 -0
  1524. data/test/stub/rails_apps/3.0/empty/config/initializers/session_store.rb +8 -0
  1525. data/test/stub/rails_apps/3.0/empty/config/locales/en.yml +5 -0
  1526. data/test/stub/rails_apps/3.0/empty/config/routes.rb +58 -0
  1527. data/test/stub/rails_apps/3.0/empty/db/seeds.rb +7 -0
  1528. data/test/stub/rails_apps/3.0/empty/doc/README_FOR_APP +2 -0
  1529. data/test/stub/rails_apps/3.0/empty/public/404.html +26 -0
  1530. data/test/stub/rails_apps/3.0/empty/public/422.html +26 -0
  1531. data/test/stub/rails_apps/3.0/empty/public/500.html +26 -0
  1532. data/test/stub/rails_apps/3.0/empty/public/favicon.ico +0 -0
  1533. data/test/stub/rails_apps/3.0/empty/public/index.html +279 -0
  1534. data/test/stub/rails_apps/3.0/empty/public/robots.txt +5 -0
  1535. data/test/stub/rails_apps/3.0/empty/script/rails +9 -0
  1536. data/test/stub/rails_apps/3.0/empty/test/performance/browsing_test.rb +9 -0
  1537. data/test/stub/rails_apps/3.0/empty/test/test_helper.rb +13 -0
  1538. data/test/stub/spawn_server.rb +22 -0
  1539. data/test/stub/upload_data.txt +494 -0
  1540. data/test/stub/vendor_rails/minimal/README +1 -0
  1541. data/test/stub/vendor_rails/minimal/actionmailer/lib/action_mailer.rb +0 -0
  1542. data/test/stub/vendor_rails/minimal/actionpack/lib/action_controller.rb +22 -0
  1543. data/test/stub/vendor_rails/minimal/actionpack/lib/action_pack.rb +0 -0
  1544. data/test/stub/vendor_rails/minimal/actionpack/lib/action_view.rb +0 -0
  1545. data/test/stub/vendor_rails/minimal/activerecord/lib/active_record.rb +7 -0
  1546. data/test/stub/vendor_rails/minimal/activeresource/lib/active_resource.rb +0 -0
  1547. data/test/stub/vendor_rails/minimal/activesupport/lib/active_support.rb +17 -0
  1548. data/test/stub/vendor_rails/minimal/activesupport/lib/active_support/whiny_nil.rb +0 -0
  1549. data/test/stub/vendor_rails/minimal/railties/lib/dispatcher.rb +0 -0
  1550. data/test/stub/vendor_rails/minimal/railties/lib/initializer.rb +57 -0
  1551. data/test/stub/vendor_rails/minimal/railties/lib/ruby_version_check.rb +1 -0
  1552. data/test/stub/wsgi/passenger_wsgi.py +3 -0
  1553. data/test/stub/wsgi/public/wsgi-snake.jpg +0 -0
  1554. data/test/stub/zsfa/header.png +0 -0
  1555. data/test/stub/zsfa/index.html +14 -0
  1556. data/test/stub/zsfa/zsfa.png +0 -0
  1557. data/test/support/allocate_memory.c +14 -0
  1558. data/test/support/apache2_controller.rb +258 -0
  1559. data/test/support/multipart.rb +62 -0
  1560. data/test/support/nginx_controller.rb +99 -0
  1561. data/test/support/test_helper.rb +448 -0
  1562. data/test/support/valgrind.h +2539 -0
  1563. data/test/tut/tut.h +1240 -0
  1564. data/test/tut/tut_reporter.h +256 -0
  1565. metadata +1703 -0
@@ -0,0 +1,336 @@
1
+ #! /bin/sh
2
+ # Common stub for a few missing GNU programs while installing.
3
+ # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
4
+ # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
5
+
6
+ # This program is free software; you can redistribute it and/or modify
7
+ # it under the terms of the GNU General Public License as published by
8
+ # the Free Software Foundation; either version 2, or (at your option)
9
+ # any later version.
10
+
11
+ # This program is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU General Public License for more details.
15
+
16
+ # You should have received a copy of the GNU General Public License
17
+ # along with this program; if not, write to the Free Software
18
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19
+ # 02111-1307, USA.
20
+
21
+ # As a special exception to the GNU General Public License, if you
22
+ # distribute this file as part of a program that contains a
23
+ # configuration script generated by Autoconf, you may include it under
24
+ # the same distribution terms that you use for the rest of that program.
25
+
26
+ if test $# -eq 0; then
27
+ echo 1>&2 "Try \`$0 --help' for more information"
28
+ exit 1
29
+ fi
30
+
31
+ run=:
32
+
33
+ # In the cases where this matters, `missing' is being run in the
34
+ # srcdir already.
35
+ if test -f configure.ac; then
36
+ configure_ac=configure.ac
37
+ else
38
+ configure_ac=configure.in
39
+ fi
40
+
41
+ case "$1" in
42
+ --run)
43
+ # Try to run requested program, and just exit if it succeeds.
44
+ run=
45
+ shift
46
+ "$@" && exit 0
47
+ ;;
48
+ esac
49
+
50
+ # If it does not exist, or fails to run (possibly an outdated version),
51
+ # try to emulate it.
52
+ case "$1" in
53
+
54
+ -h|--h|--he|--hel|--help)
55
+ echo "\
56
+ $0 [OPTION]... PROGRAM [ARGUMENT]...
57
+
58
+ Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
59
+ error status if there is no known handling for PROGRAM.
60
+
61
+ Options:
62
+ -h, --help display this help and exit
63
+ -v, --version output version information and exit
64
+ --run try to run the given command, and emulate it if it fails
65
+
66
+ Supported PROGRAM values:
67
+ aclocal touch file \`aclocal.m4'
68
+ autoconf touch file \`configure'
69
+ autoheader touch file \`config.h.in'
70
+ automake touch all \`Makefile.in' files
71
+ bison create \`y.tab.[ch]', if possible, from existing .[ch]
72
+ flex create \`lex.yy.c', if possible, from existing .c
73
+ help2man touch the output file
74
+ lex create \`lex.yy.c', if possible, from existing .c
75
+ makeinfo touch the output file
76
+ tar try tar, gnutar, gtar, then tar without non-portable flags
77
+ yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
78
+ ;;
79
+
80
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
81
+ echo "missing 0.4 - GNU automake"
82
+ ;;
83
+
84
+ -*)
85
+ echo 1>&2 "$0: Unknown \`$1' option"
86
+ echo 1>&2 "Try \`$0 --help' for more information"
87
+ exit 1
88
+ ;;
89
+
90
+ aclocal*)
91
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
92
+ # We have it, but it failed.
93
+ exit 1
94
+ fi
95
+
96
+ echo 1>&2 "\
97
+ WARNING: \`$1' is missing on your system. You should only need it if
98
+ you modified \`acinclude.m4' or \`${configure_ac}'. You might want
99
+ to install the \`Automake' and \`Perl' packages. Grab them from
100
+ any GNU archive site."
101
+ touch aclocal.m4
102
+ ;;
103
+
104
+ autoconf)
105
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
106
+ # We have it, but it failed.
107
+ exit 1
108
+ fi
109
+
110
+ echo 1>&2 "\
111
+ WARNING: \`$1' is missing on your system. You should only need it if
112
+ you modified \`${configure_ac}'. You might want to install the
113
+ \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
114
+ archive site."
115
+ touch configure
116
+ ;;
117
+
118
+ autoheader)
119
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
120
+ # We have it, but it failed.
121
+ exit 1
122
+ fi
123
+
124
+ echo 1>&2 "\
125
+ WARNING: \`$1' is missing on your system. You should only need it if
126
+ you modified \`acconfig.h' or \`${configure_ac}'. You might want
127
+ to install the \`Autoconf' and \`GNU m4' packages. Grab them
128
+ from any GNU archive site."
129
+ files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
130
+ test -z "$files" && files="config.h"
131
+ touch_files=
132
+ for f in $files; do
133
+ case "$f" in
134
+ *:*) touch_files="$touch_files "`echo "$f" |
135
+ sed -e 's/^[^:]*://' -e 's/:.*//'`;;
136
+ *) touch_files="$touch_files $f.in";;
137
+ esac
138
+ done
139
+ touch $touch_files
140
+ ;;
141
+
142
+ automake*)
143
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
144
+ # We have it, but it failed.
145
+ exit 1
146
+ fi
147
+
148
+ echo 1>&2 "\
149
+ WARNING: \`$1' is missing on your system. You should only need it if
150
+ you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
151
+ You might want to install the \`Automake' and \`Perl' packages.
152
+ Grab them from any GNU archive site."
153
+ find . -type f -name Makefile.am -print |
154
+ sed 's/\.am$/.in/' |
155
+ while read f; do touch "$f"; done
156
+ ;;
157
+
158
+ autom4te)
159
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
160
+ # We have it, but it failed.
161
+ exit 1
162
+ fi
163
+
164
+ echo 1>&2 "\
165
+ WARNING: \`$1' is needed, and you do not seem to have it handy on your
166
+ system. You might have modified some files without having the
167
+ proper tools for further handling them.
168
+ You can get \`$1' as part of \`Autoconf' from any GNU
169
+ archive site."
170
+
171
+ file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
172
+ test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
173
+ if test -f "$file"; then
174
+ touch $file
175
+ else
176
+ test -z "$file" || exec >$file
177
+ echo "#! /bin/sh"
178
+ echo "# Created by GNU Automake missing as a replacement of"
179
+ echo "# $ $@"
180
+ echo "exit 0"
181
+ chmod +x $file
182
+ exit 1
183
+ fi
184
+ ;;
185
+
186
+ bison|yacc)
187
+ echo 1>&2 "\
188
+ WARNING: \`$1' is missing on your system. You should only need it if
189
+ you modified a \`.y' file. You may need the \`Bison' package
190
+ in order for those modifications to take effect. You can get
191
+ \`Bison' from any GNU archive site."
192
+ rm -f y.tab.c y.tab.h
193
+ if [ $# -ne 1 ]; then
194
+ eval LASTARG="\${$#}"
195
+ case "$LASTARG" in
196
+ *.y)
197
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
198
+ if [ -f "$SRCFILE" ]; then
199
+ cp "$SRCFILE" y.tab.c
200
+ fi
201
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
202
+ if [ -f "$SRCFILE" ]; then
203
+ cp "$SRCFILE" y.tab.h
204
+ fi
205
+ ;;
206
+ esac
207
+ fi
208
+ if [ ! -f y.tab.h ]; then
209
+ echo >y.tab.h
210
+ fi
211
+ if [ ! -f y.tab.c ]; then
212
+ echo 'main() { return 0; }' >y.tab.c
213
+ fi
214
+ ;;
215
+
216
+ lex|flex)
217
+ echo 1>&2 "\
218
+ WARNING: \`$1' is missing on your system. You should only need it if
219
+ you modified a \`.l' file. You may need the \`Flex' package
220
+ in order for those modifications to take effect. You can get
221
+ \`Flex' from any GNU archive site."
222
+ rm -f lex.yy.c
223
+ if [ $# -ne 1 ]; then
224
+ eval LASTARG="\${$#}"
225
+ case "$LASTARG" in
226
+ *.l)
227
+ SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
228
+ if [ -f "$SRCFILE" ]; then
229
+ cp "$SRCFILE" lex.yy.c
230
+ fi
231
+ ;;
232
+ esac
233
+ fi
234
+ if [ ! -f lex.yy.c ]; then
235
+ echo 'main() { return 0; }' >lex.yy.c
236
+ fi
237
+ ;;
238
+
239
+ help2man)
240
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
241
+ # We have it, but it failed.
242
+ exit 1
243
+ fi
244
+
245
+ echo 1>&2 "\
246
+ WARNING: \`$1' is missing on your system. You should only need it if
247
+ you modified a dependency of a manual page. You may need the
248
+ \`Help2man' package in order for those modifications to take
249
+ effect. You can get \`Help2man' from any GNU archive site."
250
+
251
+ file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
252
+ if test -z "$file"; then
253
+ file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
254
+ fi
255
+ if [ -f "$file" ]; then
256
+ touch $file
257
+ else
258
+ test -z "$file" || exec >$file
259
+ echo ".ab help2man is required to generate this page"
260
+ exit 1
261
+ fi
262
+ ;;
263
+
264
+ makeinfo)
265
+ if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
266
+ # We have makeinfo, but it failed.
267
+ exit 1
268
+ fi
269
+
270
+ echo 1>&2 "\
271
+ WARNING: \`$1' is missing on your system. You should only need it if
272
+ you modified a \`.texi' or \`.texinfo' file, or any other file
273
+ indirectly affecting the aspect of the manual. The spurious
274
+ call might also be the consequence of using a buggy \`make' (AIX,
275
+ DU, IRIX). You might want to install the \`Texinfo' package or
276
+ the \`GNU make' package. Grab either from any GNU archive site."
277
+ file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
278
+ if test -z "$file"; then
279
+ file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
280
+ file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
281
+ fi
282
+ touch $file
283
+ ;;
284
+
285
+ tar)
286
+ shift
287
+ if test -n "$run"; then
288
+ echo 1>&2 "ERROR: \`tar' requires --run"
289
+ exit 1
290
+ fi
291
+
292
+ # We have already tried tar in the generic part.
293
+ # Look for gnutar/gtar before invocation to avoid ugly error
294
+ # messages.
295
+ if (gnutar --version > /dev/null 2>&1); then
296
+ gnutar "$@" && exit 0
297
+ fi
298
+ if (gtar --version > /dev/null 2>&1); then
299
+ gtar "$@" && exit 0
300
+ fi
301
+ firstarg="$1"
302
+ if shift; then
303
+ case "$firstarg" in
304
+ *o*)
305
+ firstarg=`echo "$firstarg" | sed s/o//`
306
+ tar "$firstarg" "$@" && exit 0
307
+ ;;
308
+ esac
309
+ case "$firstarg" in
310
+ *h*)
311
+ firstarg=`echo "$firstarg" | sed s/h//`
312
+ tar "$firstarg" "$@" && exit 0
313
+ ;;
314
+ esac
315
+ fi
316
+
317
+ echo 1>&2 "\
318
+ WARNING: I can't seem to be able to run \`tar' with the given arguments.
319
+ You may want to install GNU tar or Free paxutils, or check the
320
+ command line arguments."
321
+ exit 1
322
+ ;;
323
+
324
+ *)
325
+ echo 1>&2 "\
326
+ WARNING: \`$1' is needed, and you do not seem to have it handy on your
327
+ system. You might have modified some files without having the
328
+ proper tools for further handling them. Check the \`README' file,
329
+ it often tells you about the needed prerequisites for installing
330
+ this package. You may also peek at any GNU archive site, in case
331
+ some other package would contain this missing \`$1' program."
332
+ exit 1
333
+ ;;
334
+ esac
335
+
336
+ exit 0
@@ -0,0 +1,111 @@
1
+ #! /bin/sh
2
+ # mkinstalldirs --- make directory hierarchy
3
+ # Author: Noah Friedman <friedman@prep.ai.mit.edu>
4
+ # Created: 1993-05-16
5
+ # Public domain
6
+
7
+ errstatus=0
8
+ dirmode=""
9
+
10
+ usage="\
11
+ Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
12
+
13
+ # process command line arguments
14
+ while test $# -gt 0 ; do
15
+ case $1 in
16
+ -h | --help | --h*) # -h for help
17
+ echo "$usage" 1>&2
18
+ exit 0
19
+ ;;
20
+ -m) # -m PERM arg
21
+ shift
22
+ test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
23
+ dirmode=$1
24
+ shift
25
+ ;;
26
+ --) # stop option processing
27
+ shift
28
+ break
29
+ ;;
30
+ -*) # unknown option
31
+ echo "$usage" 1>&2
32
+ exit 1
33
+ ;;
34
+ *) # first non-opt arg
35
+ break
36
+ ;;
37
+ esac
38
+ done
39
+
40
+ for file
41
+ do
42
+ if test -d "$file"; then
43
+ shift
44
+ else
45
+ break
46
+ fi
47
+ done
48
+
49
+ case $# in
50
+ 0) exit 0 ;;
51
+ esac
52
+
53
+ case $dirmode in
54
+ '')
55
+ if mkdir -p -- . 2>/dev/null; then
56
+ echo "mkdir -p -- $*"
57
+ exec mkdir -p -- "$@"
58
+ fi
59
+ ;;
60
+ *)
61
+ if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
62
+ echo "mkdir -m $dirmode -p -- $*"
63
+ exec mkdir -m "$dirmode" -p -- "$@"
64
+ fi
65
+ ;;
66
+ esac
67
+
68
+ for file
69
+ do
70
+ set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
71
+ shift
72
+
73
+ pathcomp=
74
+ for d
75
+ do
76
+ pathcomp="$pathcomp$d"
77
+ case $pathcomp in
78
+ -*) pathcomp=./$pathcomp ;;
79
+ esac
80
+
81
+ if test ! -d "$pathcomp"; then
82
+ echo "mkdir $pathcomp"
83
+
84
+ mkdir "$pathcomp" || lasterr=$?
85
+
86
+ if test ! -d "$pathcomp"; then
87
+ errstatus=$lasterr
88
+ else
89
+ if test ! -z "$dirmode"; then
90
+ echo "chmod $dirmode $pathcomp"
91
+ lasterr=""
92
+ chmod "$dirmode" "$pathcomp" || lasterr=$?
93
+
94
+ if test ! -z "$lasterr"; then
95
+ errstatus=$lasterr
96
+ fi
97
+ fi
98
+ fi
99
+ fi
100
+
101
+ pathcomp="$pathcomp/"
102
+ done
103
+ done
104
+
105
+ exit $errstatus
106
+
107
+ # Local Variables:
108
+ # mode: shell-script
109
+ # sh-indentation: 2
110
+ # End:
111
+ # mkinstalldirs ends here
@@ -0,0 +1,1454 @@
1
+ /*
2
+ * Copyright (C) Igor Sysoev
3
+ * Copyright (C) 2007 Manlio Perillo (manlio.perillo@gmail.com)
4
+ * Copyright (C) 2010 Phusion
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions
8
+ * are met:
9
+ * 1. Redistributions of source code must retain the above copyright
10
+ * notice, this list of conditions and the following disclaimer.
11
+ * 2. Redistributions in binary form must reproduce the above copyright
12
+ * notice, this list of conditions and the following disclaimer in the
13
+ * documentation and/or other materials provided with the distribution.
14
+ *
15
+ * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
+ * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
19
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25
+ * SUCH DAMAGE.
26
+ */
27
+
28
+ #include <ngx_config.h>
29
+ #include <ngx_core.h>
30
+ #include <ngx_http.h>
31
+
32
+ #include <sys/types.h>
33
+ #include <pwd.h>
34
+
35
+ #include "ngx_http_passenger_module.h"
36
+ #include "Configuration.h"
37
+ #include "ContentHandler.h"
38
+ #include "../common/Constants.h"
39
+
40
+
41
+ static ngx_str_t headers_to_hide[] = {
42
+ /* NOTE: Do not hide the "Status" header; some broken HTTP clients
43
+ * expect this header. See http://tinyurl.com/87rezm
44
+ */
45
+ ngx_string("X-Accel-Expires"),
46
+ ngx_string("X-Accel-Redirect"),
47
+ ngx_string("X-Accel-Limit-Rate"),
48
+ ngx_string("X-Accel-Buffer"),
49
+ ngx_null_string
50
+ };
51
+
52
+ passenger_main_conf_t passenger_main_conf;
53
+
54
+ static ngx_path_init_t ngx_http_proxy_temp_path = {
55
+ ngx_string(NGX_HTTP_PROXY_TEMP_PATH), { 1, 2, 0 }
56
+ };
57
+
58
+
59
+ void *
60
+ passenger_create_main_conf(ngx_conf_t *cf)
61
+ {
62
+ passenger_main_conf_t *conf;
63
+
64
+ conf = ngx_pcalloc(cf->pool, sizeof(passenger_main_conf_t));
65
+ if (conf == NULL) {
66
+ return NGX_CONF_ERROR;
67
+ }
68
+
69
+ conf->log_level = (ngx_int_t) NGX_CONF_UNSET;
70
+ conf->debug_log_file.data = NULL;
71
+ conf->debug_log_file.len = 0;
72
+ conf->abort_on_startup_error = NGX_CONF_UNSET;
73
+ conf->max_pool_size = (ngx_uint_t) NGX_CONF_UNSET;
74
+ conf->max_instances_per_app = (ngx_uint_t) NGX_CONF_UNSET;
75
+ conf->pool_idle_time = (ngx_uint_t) NGX_CONF_UNSET;
76
+ conf->user_switching = NGX_CONF_UNSET;
77
+ conf->default_user.data = NULL;
78
+ conf->default_user.len = 0;
79
+ conf->default_group.data = NULL;
80
+ conf->default_group.len = 0;
81
+ conf->analytics_log_dir.data = NULL;
82
+ conf->analytics_log_dir.len = 0;
83
+ conf->analytics_log_user.data = NULL;
84
+ conf->analytics_log_user.len = 0;
85
+ conf->analytics_log_group.data = NULL;
86
+ conf->analytics_log_group.len = 0;
87
+ conf->analytics_log_permissions.data = NULL;
88
+ conf->analytics_log_permissions.len = 0;
89
+ conf->union_station_gateway_address.data = NULL;
90
+ conf->union_station_gateway_address.len = 0;
91
+ conf->union_station_gateway_port = (ngx_uint_t) NGX_CONF_UNSET;
92
+ conf->union_station_gateway_cert.data = NULL;
93
+ conf->union_station_gateway_cert.len = 0;
94
+
95
+ conf->prestart_uris = ngx_array_create(cf->pool, 1, sizeof(ngx_str_t));
96
+ if (conf->prestart_uris == NULL) {
97
+ return NGX_CONF_ERROR;
98
+ }
99
+
100
+ return conf;
101
+ }
102
+
103
+ char *
104
+ passenger_init_main_conf(ngx_conf_t *cf, void *conf_pointer)
105
+ {
106
+ passenger_main_conf_t *conf;
107
+ u_char filename[NGX_MAX_PATH], *last;
108
+ ngx_str_t str;
109
+ struct passwd *user_entry;
110
+ struct group *group_entry;
111
+ char buf[128];
112
+
113
+ conf = &passenger_main_conf;
114
+ *conf = *((passenger_main_conf_t *) conf_pointer);
115
+
116
+ if (conf->ruby.len == 0) {
117
+ conf->ruby.data = (u_char *) "ruby";
118
+ conf->ruby.len = sizeof("ruby") - 1;
119
+ }
120
+
121
+ if (conf->log_level == (ngx_int_t) NGX_CONF_UNSET) {
122
+ conf->log_level = DEFAULT_LOG_LEVEL;
123
+ }
124
+
125
+ if (conf->debug_log_file.len == 0) {
126
+ conf->debug_log_file.data = (u_char *) "";
127
+ }
128
+
129
+ if (conf->abort_on_startup_error == NGX_CONF_UNSET) {
130
+ conf->abort_on_startup_error = 0;
131
+ }
132
+
133
+ if (conf->max_pool_size == (ngx_uint_t) NGX_CONF_UNSET) {
134
+ conf->max_pool_size = DEFAULT_MAX_POOL_SIZE;
135
+ }
136
+
137
+ if (conf->max_instances_per_app == (ngx_uint_t) NGX_CONF_UNSET) {
138
+ conf->max_instances_per_app = DEFAULT_MAX_INSTANCES_PER_APP;
139
+ }
140
+
141
+ if (conf->pool_idle_time == (ngx_uint_t) NGX_CONF_UNSET) {
142
+ conf->pool_idle_time = DEFAULT_POOL_IDLE_TIME;
143
+ }
144
+
145
+ if (conf->user_switching == NGX_CONF_UNSET) {
146
+ conf->user_switching = 1;
147
+ }
148
+
149
+ if (conf->default_user.len == 0) {
150
+ conf->default_user.len = sizeof(DEFAULT_WEB_APP_USER) - 1;
151
+ conf->default_user.data = (u_char *) DEFAULT_WEB_APP_USER;
152
+ }
153
+ if (conf->default_user.len > sizeof(buf) - 1) {
154
+ return "Value for 'default_user' is too long.";
155
+ }
156
+ memcpy(buf, conf->default_user.data, conf->default_user.len);
157
+ buf[conf->default_user.len] = '\0';
158
+ user_entry = getpwnam(buf);
159
+ if (user_entry == NULL) {
160
+ return "The user specified by the 'default_user' option does not exist.";
161
+ }
162
+
163
+ if (conf->default_group.len == 0) {
164
+ group_entry = getgrgid(user_entry->pw_gid);
165
+ if (group_entry != NULL) {
166
+ conf->default_group.len = strlen(group_entry->gr_name);
167
+ conf->default_group.data = ngx_palloc(cf->pool, conf->default_group.len + 1);
168
+ memcpy(conf->default_group.data, group_entry->gr_name, conf->default_group.len + 1);
169
+ } else {
170
+ return "The primary group of the user specified by the 'default_user' "
171
+ "option does not exist. Your system's user account database is "
172
+ "probably broken, please fix it.";
173
+ }
174
+ } else {
175
+ if (conf->default_group.len > sizeof(buf) - 1) {
176
+ return "Value for 'default_group' is too long.";
177
+ }
178
+ memcpy(buf, conf->default_group.data, conf->default_group.len);
179
+ buf[conf->default_group.len] = '\0';
180
+ group_entry = getgrnam(buf);
181
+ if (group_entry == NULL) {
182
+ return "The group specified by the 'default_group' option does not exist.";
183
+ }
184
+ }
185
+
186
+ if (conf->analytics_log_dir.len == 0) {
187
+ if (geteuid() == 0) {
188
+ conf->analytics_log_dir.data = (u_char *) "/var/log/passenger-analytics";
189
+ conf->analytics_log_dir.len = sizeof("/var/log/passenger-analytics") - 1;
190
+ } else {
191
+ user_entry = getpwuid(geteuid());
192
+ if (user_entry == NULL) {
193
+ last = ngx_snprintf(filename, sizeof(filename),
194
+ "/tmp/passenger-analytics-logs.user-%L",
195
+ (int64_t) geteuid());
196
+ } else {
197
+ last = ngx_snprintf(filename, sizeof(filename),
198
+ "/tmp/passenger-analytics-logs.%s",
199
+ user_entry->pw_name);
200
+ }
201
+ str.data = filename;
202
+ str.len = last - filename;
203
+ conf->analytics_log_dir.data = ngx_pstrdup(cf->pool, &str);
204
+ conf->analytics_log_dir.len = str.len;
205
+ }
206
+ }
207
+
208
+ if (conf->analytics_log_user.len == 0) {
209
+ conf->analytics_log_user.len = sizeof(DEFAULT_ANALYTICS_LOG_USER) - 1;
210
+ conf->analytics_log_user.data = (u_char *) DEFAULT_ANALYTICS_LOG_USER;
211
+ }
212
+
213
+ if (conf->analytics_log_group.len == 0) {
214
+ conf->analytics_log_group.len = sizeof(DEFAULT_ANALYTICS_LOG_GROUP) - 1;
215
+ conf->analytics_log_group.data = (u_char *) DEFAULT_ANALYTICS_LOG_GROUP;
216
+ }
217
+
218
+ if (conf->analytics_log_permissions.len == 0) {
219
+ conf->analytics_log_permissions.len = sizeof(DEFAULT_ANALYTICS_LOG_PERMISSIONS) - 1;
220
+ conf->analytics_log_permissions.data = (u_char *) DEFAULT_ANALYTICS_LOG_PERMISSIONS;
221
+ }
222
+
223
+ if (conf->union_station_gateway_address.len == 0) {
224
+ conf->union_station_gateway_address.data = (u_char *) "";
225
+ }
226
+
227
+ if (conf->union_station_gateway_port == (ngx_uint_t) NGX_CONF_UNSET) {
228
+ conf->union_station_gateway_port = DEFAULT_UNION_STATION_GATEWAY_PORT;
229
+ }
230
+
231
+ if (conf->union_station_gateway_cert.len == 0) {
232
+ conf->union_station_gateway_cert.data = (u_char *) "";
233
+ }
234
+
235
+ return NGX_CONF_OK;
236
+ }
237
+
238
+ void *
239
+ passenger_create_loc_conf(ngx_conf_t *cf)
240
+ {
241
+ passenger_loc_conf_t *conf;
242
+ ngx_keyval_t *kv;
243
+
244
+ conf = ngx_pcalloc(cf->pool, sizeof(passenger_loc_conf_t));
245
+ if (conf == NULL) {
246
+ return NGX_CONF_ERROR;
247
+ }
248
+
249
+ /*
250
+ * set by ngx_pcalloc():
251
+ *
252
+ * conf->upstream_config.bufs.num = 0;
253
+ * conf->upstream_config.next_upstream = 0;
254
+ * conf->upstream_config.temp_path = NULL;
255
+ * conf->upstream_config.hide_headers_hash = { NULL, 0 };
256
+ * conf->upstream_config.hide_headers = NULL;
257
+ * conf->upstream_config.pass_headers = NULL;
258
+ * conf->upstream_config.uri = { 0, NULL };
259
+ * conf->upstream_config.location = NULL;
260
+ * conf->upstream_config.store_lengths = NULL;
261
+ * conf->upstream_config.store_values = NULL;
262
+ *
263
+ * conf->index.len = 0;
264
+ * conf->index.data = NULL;
265
+ */
266
+
267
+ conf->enabled = NGX_CONF_UNSET;
268
+ conf->use_global_queue = NGX_CONF_UNSET;
269
+ conf->friendly_error_pages = NGX_CONF_UNSET;
270
+ conf->analytics = NGX_CONF_UNSET;
271
+ conf->debugger = NGX_CONF_UNSET;
272
+ conf->show_version_in_header = NGX_CONF_UNSET;
273
+ conf->environment.data = NULL;
274
+ conf->environment.len = 0;
275
+ conf->spawn_method.data = NULL;
276
+ conf->spawn_method.len = 0;
277
+ conf->union_station_key.data = NULL;
278
+ conf->union_station_key.len = 0;
279
+ conf->user.data = NULL;
280
+ conf->user.len = 0;
281
+ conf->group.data = NULL;
282
+ conf->group.len = 0;
283
+ conf->app_group_name.data = NULL;
284
+ conf->app_group_name.len = 0;
285
+ conf->app_rights.data = NULL;
286
+ conf->app_rights.len = 0;
287
+ conf->base_uris = NGX_CONF_UNSET_PTR;
288
+ conf->min_instances = NGX_CONF_UNSET;
289
+ conf->framework_spawner_idle_time = NGX_CONF_UNSET;
290
+ conf->app_spawner_idle_time = NGX_CONF_UNSET;
291
+
292
+ /******************************/
293
+ /******************************/
294
+
295
+ conf->upstream_config.pass_headers = ngx_array_create(cf->pool, 1, sizeof(ngx_keyval_t));
296
+
297
+ conf->upstream_config.store = NGX_CONF_UNSET;
298
+ conf->upstream_config.store_access = NGX_CONF_UNSET_UINT;
299
+ conf->upstream_config.buffering = NGX_CONF_UNSET;
300
+ conf->upstream_config.ignore_client_abort = NGX_CONF_UNSET;
301
+
302
+ conf->upstream_config.connect_timeout = NGX_CONF_UNSET_MSEC;
303
+ conf->upstream_config.send_timeout = NGX_CONF_UNSET_MSEC;
304
+ conf->upstream_config.read_timeout = NGX_CONF_UNSET_MSEC;
305
+
306
+ conf->upstream_config.send_lowat = NGX_CONF_UNSET_SIZE;
307
+ conf->upstream_config.buffer_size = NGX_CONF_UNSET_SIZE;
308
+
309
+ conf->upstream_config.busy_buffers_size_conf = NGX_CONF_UNSET_SIZE;
310
+ conf->upstream_config.max_temp_file_size_conf = NGX_CONF_UNSET_SIZE;
311
+ conf->upstream_config.temp_file_write_size_conf = NGX_CONF_UNSET_SIZE;
312
+
313
+ conf->upstream_config.pass_request_headers = NGX_CONF_UNSET;
314
+ conf->upstream_config.pass_request_body = NGX_CONF_UNSET;
315
+
316
+ conf->upstream_config.intercept_errors = NGX_CONF_UNSET;
317
+
318
+ conf->upstream_config.cyclic_temp_file = 0;
319
+
320
+ #define DEFINE_VAR_TO_PASS(header_name, var_name) \
321
+ kv = ngx_array_push(conf->vars_source); \
322
+ kv->key.data = (u_char *) header_name; \
323
+ kv->key.len = strlen(header_name) + 1; \
324
+ kv->value.data = (u_char *) var_name; \
325
+ kv->value.len = strlen(var_name) + 1
326
+
327
+ conf->vars_source = ngx_array_create(cf->pool, 4, sizeof(ngx_keyval_t));
328
+ if (conf->vars_source == NULL) {
329
+ return NGX_CONF_ERROR;
330
+ }
331
+
332
+ DEFINE_VAR_TO_PASS("SCGI", "1");
333
+ DEFINE_VAR_TO_PASS("QUERY_STRING", "$query_string");
334
+ DEFINE_VAR_TO_PASS("REQUEST_METHOD", "$request_method");
335
+ DEFINE_VAR_TO_PASS("REQUEST_URI", "$uri$is_args$args");
336
+ DEFINE_VAR_TO_PASS("SERVER_PROTOCOL", "$server_protocol");
337
+ DEFINE_VAR_TO_PASS("SERVER_SOFTWARE", "nginx/$nginx_version");
338
+ DEFINE_VAR_TO_PASS("REMOTE_ADDR", "$remote_addr");
339
+ DEFINE_VAR_TO_PASS("REMOTE_PORT", "$remote_port");
340
+ DEFINE_VAR_TO_PASS("SERVER_ADDR", "$server_addr");
341
+ DEFINE_VAR_TO_PASS("SERVER_PORT", "$server_port");
342
+ DEFINE_VAR_TO_PASS("SERVER_NAME", "$server_name");
343
+
344
+ return conf;
345
+ }
346
+
347
+ char *
348
+ passenger_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
349
+ {
350
+ passenger_loc_conf_t *prev = parent;
351
+ passenger_loc_conf_t *conf = child;
352
+
353
+ u_char *p;
354
+ size_t size;
355
+ uintptr_t *code;
356
+ ngx_str_t *header;
357
+ ngx_uint_t i, j;
358
+ ngx_array_t hide_headers;
359
+ ngx_str_t *prev_base_uris, *base_uri;
360
+ ngx_keyval_t *src;
361
+ ngx_hash_key_t *hk;
362
+ ngx_hash_init_t hash;
363
+ ngx_http_script_compile_t sc;
364
+ ngx_http_script_copy_code_t *copy;
365
+
366
+ ngx_conf_merge_value(conf->enabled, prev->enabled, 0);
367
+ ngx_conf_merge_value(conf->use_global_queue, prev->use_global_queue, 1);
368
+ ngx_conf_merge_value(conf->friendly_error_pages, prev->friendly_error_pages, 1);
369
+ ngx_conf_merge_value(conf->analytics, prev->analytics, 0);
370
+ ngx_conf_merge_value(conf->debugger, prev->debugger, 0);
371
+ ngx_conf_merge_value(conf->show_version_in_header, prev->show_version_in_header, 1);
372
+ ngx_conf_merge_str_value(conf->environment, prev->environment, "production");
373
+ ngx_conf_merge_str_value(conf->spawn_method, prev->spawn_method, "smart-lv2");
374
+ ngx_conf_merge_str_value(conf->union_station_key, prev->union_station_key, NULL);
375
+ ngx_conf_merge_str_value(conf->user, prev->user, "");
376
+ ngx_conf_merge_str_value(conf->group, prev->group, "");
377
+ ngx_conf_merge_str_value(conf->app_group_name, prev->app_group_name, NULL);
378
+ ngx_conf_merge_str_value(conf->app_rights, prev->app_rights, NULL);
379
+ ngx_conf_merge_value(conf->min_instances, prev->min_instances, (ngx_int_t) -1);
380
+ ngx_conf_merge_value(conf->framework_spawner_idle_time, prev->framework_spawner_idle_time, (ngx_int_t) -1);
381
+ ngx_conf_merge_value(conf->app_spawner_idle_time, prev->app_spawner_idle_time, (ngx_int_t) -1);
382
+
383
+ if (prev->base_uris != NGX_CONF_UNSET_PTR) {
384
+ if (conf->base_uris == NGX_CONF_UNSET_PTR) {
385
+ conf->base_uris = ngx_array_create(cf->pool, 4, sizeof(ngx_str_t));
386
+ if (conf->base_uris == NULL) {
387
+ return NGX_CONF_ERROR;
388
+ }
389
+ }
390
+
391
+ prev_base_uris = (ngx_str_t *) prev->base_uris->elts;
392
+ for (i = 0; i < prev->base_uris->nelts; i++) {
393
+ base_uri = (ngx_str_t *) ngx_array_push(conf->base_uris);
394
+ if (base_uri == NULL) {
395
+ return NGX_CONF_ERROR;
396
+ }
397
+ *base_uri = prev_base_uris[i];
398
+ }
399
+ }
400
+
401
+ /******************************/
402
+ /******************************/
403
+
404
+ if (conf->upstream_config.store != 0) {
405
+ ngx_conf_merge_value(conf->upstream_config.store,
406
+ prev->upstream_config.store, 0);
407
+
408
+ if (conf->upstream_config.store_lengths == NULL) {
409
+ conf->upstream_config.store_lengths = prev->upstream_config.store_lengths;
410
+ conf->upstream_config.store_values = prev->upstream_config.store_values;
411
+ }
412
+ }
413
+
414
+ ngx_conf_merge_uint_value(conf->upstream_config.store_access,
415
+ prev->upstream_config.store_access, 0600);
416
+
417
+ ngx_conf_merge_value(conf->upstream_config.buffering,
418
+ prev->upstream_config.buffering, 1);
419
+
420
+ ngx_conf_merge_value(conf->upstream_config.ignore_client_abort,
421
+ prev->upstream_config.ignore_client_abort, 0);
422
+
423
+ ngx_conf_merge_msec_value(conf->upstream_config.connect_timeout,
424
+ prev->upstream_config.connect_timeout, 600000);
425
+
426
+ ngx_conf_merge_msec_value(conf->upstream_config.send_timeout,
427
+ prev->upstream_config.send_timeout, 600000);
428
+
429
+ ngx_conf_merge_msec_value(conf->upstream_config.read_timeout,
430
+ prev->upstream_config.read_timeout, 600000);
431
+
432
+ ngx_conf_merge_size_value(conf->upstream_config.send_lowat,
433
+ prev->upstream_config.send_lowat, 0);
434
+
435
+ ngx_conf_merge_size_value(conf->upstream_config.buffer_size,
436
+ prev->upstream_config.buffer_size,
437
+ (size_t) ngx_pagesize);
438
+
439
+
440
+ ngx_conf_merge_bufs_value(conf->upstream_config.bufs, prev->upstream_config.bufs,
441
+ 8, ngx_pagesize);
442
+
443
+ if (conf->upstream_config.bufs.num < 2) {
444
+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
445
+ "there must be at least 2 \"scgi_buffers\"");
446
+ return NGX_CONF_ERROR;
447
+ }
448
+
449
+
450
+ size = conf->upstream_config.buffer_size;
451
+ if (size < conf->upstream_config.bufs.size) {
452
+ size = conf->upstream_config.bufs.size;
453
+ }
454
+
455
+
456
+ ngx_conf_merge_size_value(conf->upstream_config.busy_buffers_size_conf,
457
+ prev->upstream_config.busy_buffers_size_conf,
458
+ NGX_CONF_UNSET_SIZE);
459
+
460
+ if (conf->upstream_config.busy_buffers_size_conf == NGX_CONF_UNSET_SIZE) {
461
+ conf->upstream_config.busy_buffers_size = 2 * size;
462
+ } else {
463
+ conf->upstream_config.busy_buffers_size =
464
+ conf->upstream_config.busy_buffers_size_conf;
465
+ }
466
+
467
+ if (conf->upstream_config.busy_buffers_size < size) {
468
+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
469
+ "\"scgi_busy_buffers_size\" must be equal or bigger than "
470
+ "maximum of the value of \"scgi_buffer_size\" and "
471
+ "one of the \"scgi_buffers\"");
472
+
473
+ return NGX_CONF_ERROR;
474
+ }
475
+
476
+ if (conf->upstream_config.busy_buffers_size
477
+ > (conf->upstream_config.bufs.num - 1) * conf->upstream_config.bufs.size)
478
+ {
479
+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
480
+ "\"scgi_busy_buffers_size\" must be less than "
481
+ "the size of all \"scgi_buffers\" minus one buffer");
482
+
483
+ return NGX_CONF_ERROR;
484
+ }
485
+
486
+
487
+ ngx_conf_merge_size_value(conf->upstream_config.temp_file_write_size_conf,
488
+ prev->upstream_config.temp_file_write_size_conf,
489
+ NGX_CONF_UNSET_SIZE);
490
+
491
+ if (conf->upstream_config.temp_file_write_size_conf == NGX_CONF_UNSET_SIZE) {
492
+ conf->upstream_config.temp_file_write_size = 2 * size;
493
+ } else {
494
+ conf->upstream_config.temp_file_write_size =
495
+ conf->upstream_config.temp_file_write_size_conf;
496
+ }
497
+
498
+ if (conf->upstream_config.temp_file_write_size < size) {
499
+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
500
+ "\"scgi_temp_file_write_size\" must be equal or bigger than "
501
+ "maximum of the value of \"scgi_buffer_size\" and "
502
+ "one of the \"scgi_buffers\"");
503
+
504
+ return NGX_CONF_ERROR;
505
+ }
506
+
507
+
508
+ ngx_conf_merge_size_value(conf->upstream_config.max_temp_file_size_conf,
509
+ prev->upstream_config.max_temp_file_size_conf,
510
+ NGX_CONF_UNSET_SIZE);
511
+
512
+ if (conf->upstream_config.max_temp_file_size_conf == NGX_CONF_UNSET_SIZE) {
513
+ conf->upstream_config.max_temp_file_size = 1024 * 1024 * 1024;
514
+ } else {
515
+ conf->upstream_config.max_temp_file_size =
516
+ conf->upstream_config.max_temp_file_size_conf;
517
+ }
518
+
519
+ if (conf->upstream_config.max_temp_file_size != 0
520
+ && conf->upstream_config.max_temp_file_size < size)
521
+ {
522
+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
523
+ "\"scgi_max_temp_file_size\" must be equal to zero to disable "
524
+ "the temporary files usage or must be equal or bigger than "
525
+ "maximum of the value of \"scgi_buffer_size\" and "
526
+ "one of the \"scgi_buffers\"");
527
+
528
+ return NGX_CONF_ERROR;
529
+ }
530
+
531
+
532
+ ngx_conf_merge_bitmask_value(conf->upstream_config.next_upstream,
533
+ prev->upstream_config.next_upstream,
534
+ (NGX_CONF_BITMASK_SET
535
+ |NGX_HTTP_UPSTREAM_FT_ERROR
536
+ |NGX_HTTP_UPSTREAM_FT_TIMEOUT));
537
+
538
+ if (conf->upstream_config.next_upstream & NGX_HTTP_UPSTREAM_FT_OFF) {
539
+ conf->upstream_config.next_upstream = NGX_CONF_BITMASK_SET
540
+ |NGX_HTTP_UPSTREAM_FT_OFF;
541
+ }
542
+
543
+ ngx_conf_merge_path_value(cf,
544
+ &conf->upstream_config.temp_path,
545
+ prev->upstream_config.temp_path,
546
+ &ngx_http_proxy_temp_path);
547
+
548
+ ngx_conf_merge_value(conf->upstream_config.pass_request_headers,
549
+ prev->upstream_config.pass_request_headers, 1);
550
+ ngx_conf_merge_value(conf->upstream_config.pass_request_body,
551
+ prev->upstream_config.pass_request_body, 1);
552
+
553
+ ngx_conf_merge_value(conf->upstream_config.intercept_errors,
554
+ prev->upstream_config.intercept_errors, 0);
555
+
556
+
557
+
558
+ ngx_conf_merge_str_value(conf->index, prev->index, "");
559
+
560
+ if (conf->upstream_config.hide_headers == NULL
561
+ && conf->upstream_config.pass_headers == NULL)
562
+ {
563
+ conf->upstream_config.hide_headers = prev->upstream_config.hide_headers;
564
+ conf->upstream_config.pass_headers = prev->upstream_config.pass_headers;
565
+ conf->upstream_config.hide_headers_hash = prev->upstream_config.hide_headers_hash;
566
+
567
+ if (conf->upstream_config.hide_headers_hash.buckets) {
568
+ goto peers;
569
+ }
570
+
571
+ } else {
572
+ if (conf->upstream_config.hide_headers == NULL) {
573
+ conf->upstream_config.hide_headers = prev->upstream_config.hide_headers;
574
+ }
575
+
576
+ if (conf->upstream_config.pass_headers == NULL) {
577
+ conf->upstream_config.pass_headers = prev->upstream_config.pass_headers;
578
+ }
579
+ }
580
+
581
+ if (ngx_array_init(&hide_headers, cf->temp_pool, 4, sizeof(ngx_hash_key_t))
582
+ != NGX_OK)
583
+ {
584
+ return NGX_CONF_ERROR;
585
+ }
586
+
587
+ for (header = headers_to_hide; header->len; header++) {
588
+ hk = ngx_array_push(&hide_headers);
589
+ if (hk == NULL) {
590
+ return NGX_CONF_ERROR;
591
+ }
592
+
593
+ hk->key = *header;
594
+ hk->key_hash = ngx_hash_key_lc(header->data, header->len);
595
+ hk->value = (void *) 1;
596
+ }
597
+
598
+ if (conf->upstream_config.hide_headers) {
599
+
600
+ header = conf->upstream_config.hide_headers->elts;
601
+
602
+ for (i = 0; i < conf->upstream_config.hide_headers->nelts; i++) {
603
+
604
+ hk = hide_headers.elts;
605
+
606
+ for (j = 0; j < hide_headers.nelts; j++) {
607
+ if (ngx_strcasecmp(header[i].data, hk[j].key.data) == 0) {
608
+ goto exist;
609
+ }
610
+ }
611
+
612
+ hk = ngx_array_push(&hide_headers);
613
+ if (hk == NULL) {
614
+ return NGX_CONF_ERROR;
615
+ }
616
+
617
+ hk->key = header[i];
618
+ hk->key_hash = ngx_hash_key_lc(header[i].data, header[i].len);
619
+ hk->value = (void *) 1;
620
+
621
+ exist:
622
+
623
+ continue;
624
+ }
625
+ }
626
+
627
+ if (conf->upstream_config.pass_headers) {
628
+
629
+ hk = hide_headers.elts;
630
+ header = conf->upstream_config.pass_headers->elts;
631
+
632
+ for (i = 0; i < conf->upstream_config.pass_headers->nelts; i++) {
633
+
634
+ for (j = 0; j < hide_headers.nelts; j++) {
635
+
636
+ if (hk[j].key.data == NULL) {
637
+ continue;
638
+ }
639
+
640
+ if (ngx_strcasecmp(header[i].data, hk[j].key.data) == 0) {
641
+ hk[j].key.data = NULL;
642
+ break;
643
+ }
644
+ }
645
+ }
646
+ }
647
+
648
+ hash.hash = &conf->upstream_config.hide_headers_hash;
649
+ hash.key = ngx_hash_key_lc;
650
+ hash.max_size = 512;
651
+ hash.bucket_size = ngx_align(64, ngx_cacheline_size);
652
+ hash.name = "passenger_hide_headers_hash";
653
+ hash.pool = cf->pool;
654
+ hash.temp_pool = NULL;
655
+
656
+ if (ngx_hash_init(&hash, hide_headers.elts, hide_headers.nelts) != NGX_OK) {
657
+ return NGX_CONF_ERROR;
658
+ }
659
+
660
+ peers:
661
+
662
+ if (conf->upstream_config.upstream == NULL) {
663
+ conf->upstream_config.upstream = prev->upstream_config.upstream;
664
+ }
665
+
666
+ if (conf->vars_source == NULL) {
667
+ conf->flushes = prev->flushes;
668
+ conf->vars_len = prev->vars_len;
669
+ conf->vars = prev->vars;
670
+ conf->vars_source = prev->vars_source;
671
+
672
+ if (conf->vars_source == NULL) {
673
+ return NGX_CONF_OK;
674
+ }
675
+ }
676
+
677
+ conf->vars_len = ngx_array_create(cf->pool, 64, 1);
678
+ if (conf->vars_len == NULL) {
679
+ return NGX_CONF_ERROR;
680
+ }
681
+
682
+ conf->vars = ngx_array_create(cf->pool, 512, 1);
683
+ if (conf->vars == NULL) {
684
+ return NGX_CONF_ERROR;
685
+ }
686
+
687
+ src = conf->vars_source->elts;
688
+ for (i = 0; i < conf->vars_source->nelts; i++) {
689
+
690
+ if (ngx_http_script_variables_count(&src[i].value) == 0) {
691
+ copy = ngx_array_push_n(conf->vars_len,
692
+ sizeof(ngx_http_script_copy_code_t));
693
+ if (copy == NULL) {
694
+ return NGX_CONF_ERROR;
695
+ }
696
+
697
+ copy->code = (ngx_http_script_code_pt)
698
+ ngx_http_script_copy_len_code;
699
+ copy->len = src[i].key.len;
700
+
701
+
702
+ copy = ngx_array_push_n(conf->vars_len,
703
+ sizeof(ngx_http_script_copy_code_t));
704
+ if (copy == NULL) {
705
+ return NGX_CONF_ERROR;
706
+ }
707
+
708
+ copy->code = (ngx_http_script_code_pt)
709
+ ngx_http_script_copy_len_code;
710
+ copy->len = src[i].value.len;
711
+
712
+
713
+ size = (sizeof(ngx_http_script_copy_code_t)
714
+ + src[i].key.len + src[i].value.len
715
+ + sizeof(uintptr_t) - 1)
716
+ & ~(sizeof(uintptr_t) - 1);
717
+
718
+ copy = ngx_array_push_n(conf->vars, size);
719
+ if (copy == NULL) {
720
+ return NGX_CONF_ERROR;
721
+ }
722
+
723
+ copy->code = ngx_http_script_copy_code;
724
+ copy->len = src[i].key.len + src[i].value.len;
725
+
726
+ p = (u_char *) copy + sizeof(ngx_http_script_copy_code_t);
727
+
728
+ p = ngx_cpymem(p, src[i].key.data, src[i].key.len);
729
+ ngx_memcpy(p, src[i].value.data, src[i].value.len);
730
+
731
+ } else {
732
+ copy = ngx_array_push_n(conf->vars_len,
733
+ sizeof(ngx_http_script_copy_code_t));
734
+ if (copy == NULL) {
735
+ return NGX_CONF_ERROR;
736
+ }
737
+
738
+ copy->code = (ngx_http_script_code_pt)
739
+ ngx_http_script_copy_len_code;
740
+ copy->len = src[i].key.len;
741
+
742
+
743
+ size = (sizeof(ngx_http_script_copy_code_t)
744
+ + src[i].key.len + sizeof(uintptr_t) - 1)
745
+ & ~(sizeof(uintptr_t) - 1);
746
+
747
+ copy = ngx_array_push_n(conf->vars, size);
748
+ if (copy == NULL) {
749
+ return NGX_CONF_ERROR;
750
+ }
751
+
752
+ copy->code = ngx_http_script_copy_code;
753
+ copy->len = src[i].key.len;
754
+
755
+ p = (u_char *) copy + sizeof(ngx_http_script_copy_code_t);
756
+ ngx_memcpy(p, src[i].key.data, src[i].key.len);
757
+
758
+
759
+ ngx_memzero(&sc, sizeof(ngx_http_script_compile_t));
760
+
761
+ sc.cf = cf;
762
+ sc.source = &src[i].value;
763
+ sc.flushes = &conf->flushes;
764
+ sc.lengths = &conf->vars_len;
765
+ sc.values = &conf->vars;
766
+
767
+ if (ngx_http_script_compile(&sc) != NGX_OK) {
768
+ return NGX_CONF_ERROR;
769
+ }
770
+ }
771
+
772
+ code = ngx_array_push_n(conf->vars_len, sizeof(uintptr_t));
773
+ if (code == NULL) {
774
+ return NGX_CONF_ERROR;
775
+ }
776
+
777
+ *code = (uintptr_t) NULL;
778
+
779
+
780
+ code = ngx_array_push_n(conf->vars, sizeof(uintptr_t));
781
+ if (code == NULL) {
782
+ return NGX_CONF_ERROR;
783
+ }
784
+
785
+ *code = (uintptr_t) NULL;
786
+ }
787
+
788
+ code = ngx_array_push_n(conf->vars_len, sizeof(uintptr_t));
789
+ if (code == NULL) {
790
+ return NGX_CONF_ERROR;
791
+ }
792
+
793
+ *code = (uintptr_t) NULL;
794
+
795
+ return NGX_CONF_OK;
796
+ }
797
+
798
+ static char *
799
+ passenger_enabled(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
800
+ {
801
+ passenger_loc_conf_t *passenger_conf = conf;
802
+ ngx_http_core_loc_conf_t *clcf;
803
+ ngx_str_t *value;
804
+ ngx_url_t upstream_url;
805
+
806
+ value = cf->args->elts;
807
+ if (ngx_strcasecmp(value[1].data, (u_char *) "on") == 0) {
808
+ passenger_conf->enabled = 1;
809
+
810
+ /* Register a placeholder value as upstream address. The real upstream
811
+ * address (the helper agent socket filename) will be set while processing
812
+ * requests, because we can't start the helper agent until config
813
+ * loading is done.
814
+ */
815
+ ngx_memzero(&upstream_url, sizeof(ngx_url_t));
816
+ upstream_url.url = passenger_placeholder_upstream_address;
817
+ upstream_url.no_resolve = 1;
818
+ passenger_conf->upstream_config.upstream = ngx_http_upstream_add(cf, &upstream_url, 0);
819
+ if (passenger_conf->upstream_config.upstream == NULL) {
820
+ return NGX_CONF_ERROR;
821
+ }
822
+
823
+ clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module);
824
+ clcf->handler = passenger_content_handler;
825
+
826
+ if (clcf->name.data != NULL
827
+ && clcf->name.data[clcf->name.len - 1] == '/') {
828
+ clcf->auto_redirect = 1;
829
+ }
830
+ } else if (ngx_strcasecmp(value[1].data, (u_char *) "off") == 0) {
831
+ passenger_conf->enabled = 0;
832
+ } else {
833
+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
834
+ "\"passenger_enabled\" must be either set to \"on\" "
835
+ "or \"off\"");
836
+
837
+ return NGX_CONF_ERROR;
838
+ }
839
+
840
+ return NGX_CONF_OK;
841
+ }
842
+
843
+ static char *
844
+ set_null_terminated_keyval_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
845
+ {
846
+ char *p = conf;
847
+
848
+ ngx_str_t *value;
849
+ ngx_array_t **a;
850
+ ngx_keyval_t *kv;
851
+ ngx_conf_post_t *post;
852
+ u_char *last;
853
+
854
+ a = (ngx_array_t **) (p + cmd->offset);
855
+
856
+ if (*a == NULL) {
857
+ *a = ngx_array_create(cf->pool, 4, sizeof(ngx_keyval_t));
858
+ if (*a == NULL) {
859
+ return NGX_CONF_ERROR;
860
+ }
861
+ }
862
+
863
+ kv = ngx_array_push(*a);
864
+ if (kv == NULL) {
865
+ return NGX_CONF_ERROR;
866
+ }
867
+
868
+ value = cf->args->elts;
869
+
870
+ kv->key.data = ngx_palloc(cf->pool, value[1].len + 1);
871
+ kv->key.len = value[1].len + 1;
872
+ last = ngx_copy(kv->key.data, value[1].data, value[1].len);
873
+ *last = '\0';
874
+
875
+ kv->value.data = ngx_palloc(cf->pool, value[2].len + 1);
876
+ kv->value.len = value[2].len + 1;
877
+ last = ngx_copy(kv->value.data, value[2].data, value[2].len);
878
+ *last = '\0';
879
+
880
+ if (cmd->post) {
881
+ post = cmd->post;
882
+ return post->post_handler(cf, post, kv);
883
+ }
884
+
885
+ return NGX_CONF_OK;
886
+ }
887
+
888
+ #if 0
889
+ static char *
890
+ ngx_http_scgi_lowat_check(ngx_conf_t *cf, void *post, void *data)
891
+ {
892
+ #if (NGX_FREEBSD)
893
+ ssize_t *np = data;
894
+
895
+ if ((u_long) *np >= ngx_freebsd_net_inet_tcp_sendspace) {
896
+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
897
+ "\"scgi_send_lowat\" must be less than %d "
898
+ "(sysctl net.inet.tcp.sendspace)",
899
+ ngx_freebsd_net_inet_tcp_sendspace);
900
+
901
+ return NGX_CONF_ERROR;
902
+ }
903
+
904
+ #elif !(NGX_HAVE_SO_SNDLOWAT)
905
+ ssize_t *np = data;
906
+
907
+ ngx_conf_log_error(NGX_LOG_WARN, cf, 0,
908
+ "\"scgi_send_lowat\" is not supported, ignored");
909
+
910
+ *np = 0;
911
+
912
+ #endif
913
+
914
+ return NGX_CONF_OK;
915
+ }
916
+
917
+ static char *
918
+ ngx_http_scgi_store(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
919
+ {
920
+ passenger_loc_conf_t *slcf = conf;
921
+
922
+ ngx_str_t *value;
923
+ ngx_http_script_compile_t sc;
924
+
925
+ if (slcf->upstream.store != NGX_CONF_UNSET || slcf->upstream.store_lengths)
926
+ {
927
+ return "is duplicate";
928
+ }
929
+
930
+ value = cf->args->elts;
931
+
932
+ if (ngx_strcmp(value[1].data, "on") == 0) {
933
+ slcf->upstream.store = 1;
934
+ return NGX_CONF_OK;
935
+ }
936
+
937
+ if (ngx_strcmp(value[1].data, "off") == 0) {
938
+ slcf->upstream.store = 0;
939
+ return NGX_CONF_OK;
940
+ }
941
+
942
+ /* include the terminating '\0' into script */
943
+ value[1].len++;
944
+
945
+ ngx_memzero(&sc, sizeof(ngx_http_script_compile_t));
946
+
947
+ sc.cf = cf;
948
+ sc.source = &value[1];
949
+ sc.lengths = &slcf->upstream.store_lengths;
950
+ sc.values = &slcf->upstream.store_values;
951
+ sc.variables = ngx_http_script_variables_count(&value[1]);
952
+ sc.complete_lengths = 1;
953
+ sc.complete_values = 1;
954
+
955
+ if (ngx_http_script_compile(&sc) != NGX_OK) {
956
+ return NGX_CONF_ERROR;
957
+ }
958
+
959
+ return NGX_CONF_OK;
960
+ }
961
+
962
+ char *
963
+ ngx_scgi_set_keyval_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
964
+ {
965
+ /*
966
+ * Like ngx_conf_set_keyval_slot but keeps the \0 at the end of
967
+ * the strings.
968
+ */
969
+
970
+ char *p = conf;
971
+
972
+ ngx_str_t *value;
973
+ ngx_array_t **a;
974
+ ngx_keyval_t *kv;
975
+ ngx_conf_post_t *post;
976
+
977
+ a = (ngx_array_t **) (p + cmd->offset);
978
+
979
+ if (*a == NULL) {
980
+ *a = ngx_array_create(cf->pool, 4, sizeof(ngx_keyval_t));
981
+ if (*a == NULL) {
982
+ return NGX_CONF_ERROR;
983
+ }
984
+ }
985
+
986
+ kv = ngx_array_push(*a);
987
+ if (kv == NULL) {
988
+ return NGX_CONF_ERROR;
989
+ }
990
+
991
+ value = cf->args->elts;
992
+
993
+ /* strings are null terminated */
994
+ value[1].len += 1;
995
+ value[2].len += 1;
996
+
997
+ kv->key = value[1];
998
+ kv->value = value[2];
999
+
1000
+ if (cmd->post) {
1001
+ post = cmd->post;
1002
+ return post->post_handler(cf, post, kv);
1003
+ }
1004
+
1005
+ return NGX_CONF_OK;
1006
+ }
1007
+
1008
+
1009
+ static ngx_conf_post_t ngx_http_scgi_lowat_post =
1010
+ { ngx_http_scgi_lowat_check };
1011
+
1012
+ #endif /* 0 */
1013
+
1014
+ const ngx_command_t passenger_commands[] = {
1015
+
1016
+ { ngx_string("passenger_enabled"),
1017
+ NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_FLAG,
1018
+ passenger_enabled,
1019
+ NGX_HTTP_LOC_CONF_OFFSET,
1020
+ 0,
1021
+ NULL },
1022
+
1023
+ { ngx_string("passenger_root"),
1024
+ NGX_HTTP_MAIN_CONF | NGX_CONF_TAKE1,
1025
+ ngx_conf_set_str_slot,
1026
+ NGX_HTTP_MAIN_CONF_OFFSET,
1027
+ offsetof(passenger_main_conf_t, root_dir),
1028
+ NULL },
1029
+
1030
+ { ngx_string("passenger_ruby"),
1031
+ NGX_HTTP_MAIN_CONF | NGX_CONF_TAKE1,
1032
+ ngx_conf_set_str_slot,
1033
+ NGX_HTTP_MAIN_CONF_OFFSET,
1034
+ offsetof(passenger_main_conf_t, ruby),
1035
+ NULL },
1036
+
1037
+ { ngx_string("passenger_log_level"),
1038
+ NGX_HTTP_MAIN_CONF | NGX_CONF_TAKE1,
1039
+ ngx_conf_set_num_slot,
1040
+ NGX_HTTP_MAIN_CONF_OFFSET,
1041
+ offsetof(passenger_main_conf_t, log_level),
1042
+ NULL },
1043
+
1044
+ { ngx_string("passenger_debug_log_file"),
1045
+ NGX_HTTP_MAIN_CONF | NGX_CONF_TAKE1,
1046
+ ngx_conf_set_str_slot,
1047
+ NGX_HTTP_MAIN_CONF_OFFSET,
1048
+ offsetof(passenger_main_conf_t, debug_log_file),
1049
+ NULL },
1050
+
1051
+ { ngx_string("passenger_abort_on_startup_error"),
1052
+ NGX_HTTP_MAIN_CONF | NGX_CONF_FLAG,
1053
+ ngx_conf_set_flag_slot,
1054
+ NGX_HTTP_MAIN_CONF_OFFSET,
1055
+ offsetof(passenger_main_conf_t, abort_on_startup_error),
1056
+ NULL },
1057
+
1058
+ { ngx_string("passenger_use_global_queue"),
1059
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_FLAG,
1060
+ ngx_conf_set_flag_slot,
1061
+ NGX_HTTP_LOC_CONF_OFFSET,
1062
+ offsetof(passenger_loc_conf_t, use_global_queue),
1063
+ NULL },
1064
+
1065
+ { ngx_string("passenger_friendly_error_pages"),
1066
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_FLAG,
1067
+ ngx_conf_set_flag_slot,
1068
+ NGX_HTTP_LOC_CONF_OFFSET,
1069
+ offsetof(passenger_loc_conf_t, friendly_error_pages),
1070
+ NULL },
1071
+
1072
+ { ngx_string("passenger_max_pool_size"),
1073
+ NGX_HTTP_MAIN_CONF | NGX_CONF_TAKE1,
1074
+ ngx_conf_set_num_slot,
1075
+ NGX_HTTP_MAIN_CONF_OFFSET,
1076
+ offsetof(passenger_main_conf_t, max_pool_size),
1077
+ NULL },
1078
+
1079
+ { ngx_string("passenger_min_instances"),
1080
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
1081
+ ngx_conf_set_num_slot,
1082
+ NGX_HTTP_LOC_CONF_OFFSET,
1083
+ offsetof(passenger_loc_conf_t, min_instances),
1084
+ NULL },
1085
+
1086
+ { ngx_string("passenger_max_instances_per_app"),
1087
+ NGX_HTTP_MAIN_CONF | NGX_CONF_TAKE1,
1088
+ ngx_conf_set_num_slot,
1089
+ NGX_HTTP_MAIN_CONF_OFFSET,
1090
+ offsetof(passenger_main_conf_t, max_instances_per_app),
1091
+ NULL },
1092
+
1093
+ { ngx_string("passenger_pool_idle_time"),
1094
+ NGX_HTTP_MAIN_CONF | NGX_CONF_TAKE1,
1095
+ ngx_conf_set_num_slot,
1096
+ NGX_HTTP_MAIN_CONF_OFFSET,
1097
+ offsetof(passenger_main_conf_t, pool_idle_time),
1098
+ NULL },
1099
+
1100
+ { ngx_string("passenger_base_uri"),
1101
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
1102
+ ngx_conf_set_str_array_slot,
1103
+ NGX_HTTP_LOC_CONF_OFFSET,
1104
+ offsetof(passenger_loc_conf_t, base_uris),
1105
+ NULL },
1106
+
1107
+ { ngx_string("passenger_user_switching"),
1108
+ NGX_HTTP_MAIN_CONF | NGX_CONF_FLAG,
1109
+ ngx_conf_set_flag_slot,
1110
+ NGX_HTTP_MAIN_CONF_OFFSET,
1111
+ offsetof(passenger_main_conf_t, user_switching),
1112
+ NULL },
1113
+
1114
+ { ngx_string("passenger_user"),
1115
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
1116
+ ngx_conf_set_str_slot,
1117
+ NGX_HTTP_LOC_CONF_OFFSET,
1118
+ offsetof(passenger_loc_conf_t, user),
1119
+ NULL },
1120
+
1121
+ { ngx_string("passenger_group"),
1122
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
1123
+ ngx_conf_set_str_slot,
1124
+ NGX_HTTP_LOC_CONF_OFFSET,
1125
+ offsetof(passenger_loc_conf_t, group),
1126
+ NULL },
1127
+
1128
+ { ngx_string("passenger_default_user"),
1129
+ NGX_HTTP_MAIN_CONF | NGX_CONF_TAKE1,
1130
+ ngx_conf_set_str_slot,
1131
+ NGX_HTTP_MAIN_CONF_OFFSET,
1132
+ offsetof(passenger_main_conf_t, default_user),
1133
+ NULL },
1134
+
1135
+ { ngx_string("passenger_default_group"),
1136
+ NGX_HTTP_MAIN_CONF | NGX_CONF_TAKE1,
1137
+ ngx_conf_set_str_slot,
1138
+ NGX_HTTP_MAIN_CONF_OFFSET,
1139
+ offsetof(passenger_main_conf_t, default_group),
1140
+ NULL },
1141
+
1142
+ { ngx_string("passenger_app_group_name"),
1143
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_FLAG,
1144
+ ngx_conf_set_str_slot,
1145
+ NGX_HTTP_LOC_CONF_OFFSET,
1146
+ offsetof(passenger_loc_conf_t, app_group_name),
1147
+ NULL },
1148
+
1149
+ { ngx_string("passenger_app_rights"),
1150
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_FLAG,
1151
+ ngx_conf_set_str_slot,
1152
+ NGX_HTTP_LOC_CONF_OFFSET,
1153
+ offsetof(passenger_loc_conf_t, app_rights),
1154
+ NULL },
1155
+
1156
+ { ngx_string("passenger_analytics"),
1157
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_FLAG,
1158
+ ngx_conf_set_flag_slot,
1159
+ NGX_HTTP_LOC_CONF_OFFSET,
1160
+ offsetof(passenger_loc_conf_t, analytics),
1161
+ NULL },
1162
+
1163
+ { ngx_string("passenger_analytics_log_dir"),
1164
+ NGX_HTTP_MAIN_CONF | NGX_CONF_TAKE1,
1165
+ ngx_conf_set_str_slot,
1166
+ NGX_HTTP_MAIN_CONF_OFFSET,
1167
+ offsetof(passenger_main_conf_t, analytics_log_dir),
1168
+ NULL },
1169
+
1170
+ { ngx_string("passenger_analytics_log_user"),
1171
+ NGX_HTTP_MAIN_CONF | NGX_CONF_TAKE1,
1172
+ ngx_conf_set_str_slot,
1173
+ NGX_HTTP_MAIN_CONF_OFFSET,
1174
+ offsetof(passenger_main_conf_t, analytics_log_user),
1175
+ NULL },
1176
+
1177
+ { ngx_string("passenger_analytics_log_group"),
1178
+ NGX_HTTP_MAIN_CONF | NGX_CONF_TAKE1,
1179
+ ngx_conf_set_str_slot,
1180
+ NGX_HTTP_MAIN_CONF_OFFSET,
1181
+ offsetof(passenger_main_conf_t, analytics_log_group),
1182
+ NULL },
1183
+
1184
+ { ngx_string("passenger_analytics_log_permissions"),
1185
+ NGX_HTTP_MAIN_CONF | NGX_CONF_TAKE1,
1186
+ ngx_conf_set_str_slot,
1187
+ NGX_HTTP_MAIN_CONF_OFFSET,
1188
+ offsetof(passenger_main_conf_t, analytics_log_permissions),
1189
+ NULL },
1190
+
1191
+ { ngx_string("union_station_gateway_address"),
1192
+ NGX_HTTP_MAIN_CONF | NGX_CONF_TAKE1,
1193
+ ngx_conf_set_str_slot,
1194
+ NGX_HTTP_MAIN_CONF_OFFSET,
1195
+ offsetof(passenger_main_conf_t, union_station_gateway_address),
1196
+ NULL },
1197
+
1198
+ { ngx_string("union_station_gateway_port"),
1199
+ NGX_HTTP_MAIN_CONF | NGX_CONF_TAKE1,
1200
+ ngx_conf_set_num_slot,
1201
+ NGX_HTTP_MAIN_CONF_OFFSET,
1202
+ offsetof(passenger_main_conf_t, union_station_gateway_port),
1203
+ NULL },
1204
+
1205
+ { ngx_string("union_station_gateway_cert"),
1206
+ NGX_HTTP_MAIN_CONF | NGX_CONF_TAKE1,
1207
+ ngx_conf_set_str_slot,
1208
+ NGX_HTTP_MAIN_CONF_OFFSET,
1209
+ offsetof(passenger_main_conf_t, union_station_gateway_cert),
1210
+ NULL },
1211
+
1212
+ { ngx_string("passenger_debugger"),
1213
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_FLAG,
1214
+ ngx_conf_set_flag_slot,
1215
+ NGX_HTTP_LOC_CONF_OFFSET,
1216
+ offsetof(passenger_loc_conf_t, debugger),
1217
+ NULL },
1218
+
1219
+ { ngx_string("passenger_show_version_in_header"),
1220
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_FLAG,
1221
+ ngx_conf_set_flag_slot,
1222
+ NGX_HTTP_LOC_CONF_OFFSET,
1223
+ offsetof(passenger_loc_conf_t, show_version_in_header),
1224
+ NULL },
1225
+
1226
+ { ngx_string("passenger_pre_start"),
1227
+ NGX_HTTP_MAIN_CONF | NGX_CONF_TAKE1,
1228
+ ngx_conf_set_str_array_slot,
1229
+ NGX_HTTP_MAIN_CONF_OFFSET,
1230
+ offsetof(passenger_main_conf_t, prestart_uris),
1231
+ NULL },
1232
+
1233
+ { ngx_string("passenger_pass_header"),
1234
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_FLAG,
1235
+ ngx_conf_set_str_array_slot,
1236
+ NGX_HTTP_LOC_CONF_OFFSET,
1237
+ offsetof(passenger_loc_conf_t, upstream_config.pass_headers),
1238
+ NULL },
1239
+
1240
+ { ngx_string("passenger_set_cgi_param"),
1241
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE2,
1242
+ set_null_terminated_keyval_slot,
1243
+ NGX_HTTP_LOC_CONF_OFFSET,
1244
+ offsetof(passenger_loc_conf_t, vars_source),
1245
+ NULL },
1246
+
1247
+ { ngx_string("passenger_ignore_client_abort"),
1248
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_CONF_FLAG,
1249
+ ngx_conf_set_flag_slot,
1250
+ NGX_HTTP_LOC_CONF_OFFSET,
1251
+ offsetof(passenger_loc_conf_t, upstream_config.ignore_client_abort),
1252
+ NULL },
1253
+
1254
+ { ngx_string("passenger_buffer_response"),
1255
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_CONF_FLAG,
1256
+ ngx_conf_set_flag_slot,
1257
+ NGX_HTTP_LOC_CONF_OFFSET,
1258
+ offsetof(passenger_loc_conf_t, upstream_config.buffering),
1259
+ NULL },
1260
+
1261
+ { ngx_string("passenger_spawn_method"),
1262
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
1263
+ ngx_conf_set_str_slot,
1264
+ NGX_HTTP_LOC_CONF_OFFSET,
1265
+ offsetof(passenger_loc_conf_t, spawn_method),
1266
+ NULL },
1267
+
1268
+ { ngx_string("union_station_key"),
1269
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
1270
+ ngx_conf_set_str_slot,
1271
+ NGX_HTTP_LOC_CONF_OFFSET,
1272
+ offsetof(passenger_loc_conf_t, union_station_key),
1273
+ NULL },
1274
+
1275
+ { ngx_string("rails_env"),
1276
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
1277
+ ngx_conf_set_str_slot,
1278
+ NGX_HTTP_LOC_CONF_OFFSET,
1279
+ offsetof(passenger_loc_conf_t, environment),
1280
+ NULL },
1281
+
1282
+ { ngx_string("rails_framework_spawner_idle_time"),
1283
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
1284
+ ngx_conf_set_num_slot,
1285
+ NGX_HTTP_LOC_CONF_OFFSET,
1286
+ offsetof(passenger_loc_conf_t, framework_spawner_idle_time),
1287
+ NULL },
1288
+
1289
+ { ngx_string("rails_app_spawner_idle_time"),
1290
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
1291
+ ngx_conf_set_num_slot,
1292
+ NGX_HTTP_LOC_CONF_OFFSET,
1293
+ offsetof(passenger_loc_conf_t, app_spawner_idle_time),
1294
+ NULL },
1295
+
1296
+ { ngx_string("rack_env"),
1297
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
1298
+ ngx_conf_set_str_slot,
1299
+ NGX_HTTP_LOC_CONF_OFFSET,
1300
+ offsetof(passenger_loc_conf_t, environment),
1301
+ NULL },
1302
+
1303
+ /************************************/
1304
+ /************************************/
1305
+
1306
+ /******** Backward compatibility options ********/
1307
+
1308
+ { ngx_string("rails_spawn_method"),
1309
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
1310
+ ngx_conf_set_str_slot,
1311
+ NGX_HTTP_LOC_CONF_OFFSET,
1312
+ offsetof(passenger_loc_conf_t, spawn_method),
1313
+ NULL },
1314
+
1315
+ /*
1316
+
1317
+ { ngx_string("scgi_index"),
1318
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
1319
+ ngx_conf_set_str_slot,
1320
+ NGX_HTTP_LOC_CONF_OFFSET,
1321
+ offsetof(passenger_loc_conf_t, index),
1322
+ NULL },
1323
+
1324
+ { ngx_string("scgi_store"),
1325
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
1326
+ ngx_http_scgi_store,
1327
+ NGX_HTTP_LOC_CONF_OFFSET,
1328
+ 0,
1329
+ NULL },
1330
+
1331
+ { ngx_string("scgi_store_access"),
1332
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE123,
1333
+ ngx_conf_set_access_slot,
1334
+ NGX_HTTP_LOC_CONF_OFFSET,
1335
+ offsetof(passenger_loc_conf_t, upstream.store_access),
1336
+ NULL },
1337
+
1338
+ { ngx_string("scgi_ignore_client_abort"),
1339
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
1340
+ ngx_conf_set_flag_slot,
1341
+ NGX_HTTP_LOC_CONF_OFFSET,
1342
+ offsetof(passenger_loc_conf_t, upstream.ignore_client_abort),
1343
+ NULL },
1344
+
1345
+ { ngx_string("scgi_connect_timeout"),
1346
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
1347
+ ngx_conf_set_msec_slot,
1348
+ NGX_HTTP_LOC_CONF_OFFSET,
1349
+ offsetof(passenger_loc_conf_t, upstream.connect_timeout),
1350
+ NULL },
1351
+
1352
+ { ngx_string("scgi_send_timeout"),
1353
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
1354
+ ngx_conf_set_msec_slot,
1355
+ NGX_HTTP_LOC_CONF_OFFSET,
1356
+ offsetof(passenger_loc_conf_t, upstream.send_timeout),
1357
+ NULL },
1358
+
1359
+ { ngx_string("scgi_send_lowat"),
1360
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
1361
+ ngx_conf_set_size_slot,
1362
+ NGX_HTTP_LOC_CONF_OFFSET,
1363
+ offsetof(passenger_loc_conf_t, upstream.send_lowat),
1364
+ &ngx_http_scgi_lowat_post },
1365
+
1366
+ { ngx_string("scgi_buffer_size"),
1367
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
1368
+ ngx_conf_set_size_slot,
1369
+ NGX_HTTP_LOC_CONF_OFFSET,
1370
+ offsetof(passenger_loc_conf_t, upstream.buffer_size),
1371
+ NULL },
1372
+
1373
+ { ngx_string("scgi_pass_request_headers"),
1374
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
1375
+ ngx_conf_set_flag_slot,
1376
+ NGX_HTTP_LOC_CONF_OFFSET,
1377
+ offsetof(passenger_loc_conf_t, upstream.pass_request_headers),
1378
+ NULL },
1379
+
1380
+ { ngx_string("scgi_pass_request_body"),
1381
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
1382
+ ngx_conf_set_flag_slot,
1383
+ NGX_HTTP_LOC_CONF_OFFSET,
1384
+ offsetof(passenger_loc_conf_t, upstream.pass_request_body),
1385
+ NULL },
1386
+
1387
+ { ngx_string("scgi_intercept_errors"),
1388
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
1389
+ ngx_conf_set_flag_slot,
1390
+ NGX_HTTP_LOC_CONF_OFFSET,
1391
+ offsetof(passenger_loc_conf_t, upstream.intercept_errors),
1392
+ NULL },
1393
+
1394
+ { ngx_string("scgi_read_timeout"),
1395
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
1396
+ ngx_conf_set_msec_slot,
1397
+ NGX_HTTP_LOC_CONF_OFFSET,
1398
+ offsetof(passenger_loc_conf_t, upstream.read_timeout),
1399
+ NULL },
1400
+
1401
+ { ngx_string("scgi_buffers"),
1402
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE2,
1403
+ ngx_conf_set_bufs_slot,
1404
+ NGX_HTTP_LOC_CONF_OFFSET,
1405
+ offsetof(passenger_loc_conf_t, upstream.bufs),
1406
+ NULL },
1407
+
1408
+ { ngx_string("scgi_busy_buffers_size"),
1409
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
1410
+ ngx_conf_set_size_slot,
1411
+ NGX_HTTP_LOC_CONF_OFFSET,
1412
+ offsetof(passenger_loc_conf_t, upstream.busy_buffers_size_conf),
1413
+ NULL },
1414
+
1415
+ { ngx_string("scgi_temp_path"),
1416
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1234,
1417
+ ngx_conf_set_path_slot,
1418
+ NGX_HTTP_LOC_CONF_OFFSET,
1419
+ offsetof(passenger_loc_conf_t, upstream.temp_path),
1420
+ (void *) ngx_garbage_collector_temp_handler },
1421
+
1422
+ { ngx_string("scgi_max_temp_file_size"),
1423
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
1424
+ ngx_conf_set_size_slot,
1425
+ NGX_HTTP_LOC_CONF_OFFSET,
1426
+ offsetof(passenger_loc_conf_t, upstream.max_temp_file_size_conf),
1427
+ NULL },
1428
+
1429
+ { ngx_string("scgi_temp_file_write_size"),
1430
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
1431
+ ngx_conf_set_size_slot,
1432
+ NGX_HTTP_LOC_CONF_OFFSET,
1433
+ offsetof(passenger_loc_conf_t, upstream.temp_file_write_size_conf),
1434
+ NULL },
1435
+
1436
+ { ngx_string("scgi_var"),
1437
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE2,
1438
+ ngx_scgi_set_keyval_slot,
1439
+ NGX_HTTP_LOC_CONF_OFFSET,
1440
+ offsetof(passenger_loc_conf_t, vars_source),
1441
+ NULL },
1442
+
1443
+ { ngx_string("scgi_hide_header"),
1444
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
1445
+ ngx_conf_set_str_array_slot,
1446
+ NGX_HTTP_LOC_CONF_OFFSET,
1447
+ offsetof(passenger_loc_conf_t, upstream.hide_headers),
1448
+ NULL },
1449
+
1450
+ */
1451
+
1452
+ ngx_null_command
1453
+ };
1454
+