passenger 5.0.4 → 5.0.5

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of passenger might be problematic. Click here for more details.

Files changed (550) hide show
  1. checksums.yaml +8 -8
  2. checksums.yaml.gz.asc +7 -7
  3. data.tar.gz.asc +7 -7
  4. data/.editorconfig +10 -0
  5. data/CHANGELOG +21 -0
  6. data/build/agents.rb +2 -2
  7. data/build/apache2.rb +6 -5
  8. data/build/common_library.rb +22 -7
  9. data/build/cxx_tests.rb +0 -3
  10. data/build/misc.rb +1 -1
  11. data/dev/parse_file_descriptor_log +119 -0
  12. data/doc/CloudLicensingConfiguration.html +387 -0
  13. data/doc/Design and Architecture.html +2430 -0
  14. data/doc/Packaging.html +488 -0
  15. data/doc/Security of user switching support.html +1833 -0
  16. data/doc/ServerOptimizationGuide.html +659 -0
  17. data/doc/ServerOptimizationGuide.txt.md +8 -0
  18. data/doc/Users guide Apache.html +9116 -0
  19. data/doc/Users guide Apache.idmap.txt +6 -2
  20. data/doc/Users guide Apache.txt +26 -7
  21. data/doc/Users guide Nginx.html +9025 -0
  22. data/doc/Users guide Nginx.idmap.txt +7 -3
  23. data/doc/Users guide Nginx.txt +29 -6
  24. data/doc/Users guide Standalone.html +3983 -0
  25. data/doc/Users guide.html +1748 -0
  26. data/doc/users_guide_snippets/installation.txt +4 -4
  27. data/ext/apache2/Configuration.cpp +16 -5
  28. data/ext/apache2/Configuration.hpp +4 -2
  29. data/ext/apache2/Hooks.cpp +44 -19
  30. data/ext/boost/libs/thread/src/pthread/once.cpp +2 -0
  31. data/ext/boost/libs/thread/src/pthread/once_atomic.cpp +6 -0
  32. data/ext/common/AgentsStarter.h +3 -2
  33. data/ext/common/ApplicationPool2/DirectSpawner.h +14 -4
  34. data/ext/common/ApplicationPool2/DummySpawner.h +12 -7
  35. data/ext/common/ApplicationPool2/Implementation.cpp +1 -1
  36. data/ext/common/ApplicationPool2/Process.h +2 -1
  37. data/ext/common/ApplicationPool2/Session.h +6 -6
  38. data/ext/common/ApplicationPool2/SmartSpawner.h +19 -4
  39. data/ext/common/ApplicationPool2/Socket.h +59 -27
  40. data/ext/common/ApplicationPool2/Spawner.h +2 -2
  41. data/ext/common/BackgroundEventLoop.cpp +6 -1
  42. data/ext/common/Constants.h +1 -1
  43. data/ext/common/EventedClient.h +1 -1
  44. data/ext/common/EventedServer.h +2 -2
  45. data/ext/common/FileDescriptor.h +25 -6
  46. data/ext/common/Logging.cpp +107 -52
  47. data/ext/common/Logging.h +146 -19
  48. data/ext/common/MessageClient.h +2 -2
  49. data/ext/common/MessageServer.h +3 -2
  50. data/ext/common/RandomGenerator.h +8 -7
  51. data/ext/common/SafeLibev.h +5 -1
  52. data/ext/common/ServerKit/AcceptLoadBalancer.h +9 -4
  53. data/ext/common/ServerKit/FdSinkChannel.h +5 -2
  54. data/ext/common/ServerKit/FdSourceChannel.h +5 -2
  55. data/ext/common/ServerKit/FileBufferedChannel.h +2 -0
  56. data/ext/common/ServerKit/FileBufferedFdSinkChannel.h +7 -2
  57. data/ext/common/ServerKit/HttpServer.h +6 -0
  58. data/ext/common/ServerKit/Server.h +40 -3
  59. data/ext/common/StaticString.h +20 -0
  60. data/ext/common/UnionStation/Connection.h +3 -1
  61. data/ext/common/UnionStation/Core.h +6 -4
  62. data/ext/common/Utils.cpp +4 -3
  63. data/ext/common/Utils/DateParsing.h +19 -5
  64. data/ext/common/Utils/FastStringStream.h +183 -0
  65. data/ext/common/Utils/IOUtils.cpp +47 -28
  66. data/ext/common/Utils/IOUtils.h +56 -12
  67. data/ext/common/Utils/MessagePassing.h +3 -3
  68. data/ext/common/Utils/ProcessMetricsCollector.h +2 -2
  69. data/ext/common/Utils/ScopeGuard.h +16 -5
  70. data/ext/common/Utils/SpeedMeter.h +2 -2
  71. data/ext/common/Utils/StrIntUtils.cpp +6 -6
  72. data/ext/common/Utils/StrIntUtils.h +2 -1
  73. data/ext/common/agents/Base.cpp +56 -4
  74. data/ext/common/agents/Base.h +2 -1
  75. data/ext/common/agents/HelperAgent/AdminServer.h +122 -11
  76. data/ext/common/agents/HelperAgent/Main.cpp +16 -5
  77. data/ext/common/agents/HelperAgent/OptionParser.h +7 -1
  78. data/ext/common/agents/HelperAgent/RequestHandler.h +1 -1
  79. data/ext/common/agents/HelperAgent/RequestHandler/Hooks.cpp +10 -1
  80. data/ext/common/agents/HelperAgent/RequestHandler/Request.h +8 -0
  81. data/ext/common/agents/HelperAgent/RequestHandler/TurboCaching.h +4 -3
  82. data/ext/common/agents/LoggingAgent/AdminServer.h +57 -11
  83. data/ext/common/agents/LoggingAgent/LoggingServer.h +3 -3
  84. data/ext/common/agents/LoggingAgent/Main.cpp +11 -3
  85. data/ext/common/agents/Watchdog/AdminServer.h +53 -11
  86. data/ext/common/agents/Watchdog/AgentWatcher.cpp +3 -3
  87. data/ext/common/agents/Watchdog/Main.cpp +13 -6
  88. data/ext/libeio/ecb.h +1 -1
  89. data/ext/libev/ev.c +13 -1
  90. data/ext/libev/ev.h +3 -0
  91. data/ext/nginx/Configuration.c +28 -6
  92. data/ext/nginx/Configuration.h +2 -1
  93. data/ext/nginx/ngx_http_passenger_module.c +5 -4
  94. data/ext/oxt/dynamic_thread_group.hpp +38 -5
  95. data/lib/phusion_passenger.rb +1 -1
  96. data/lib/phusion_passenger/common_library.rb +9 -5
  97. data/lib/phusion_passenger/config/reopen_logs_command.rb +2 -2
  98. data/lib/phusion_passenger/packaging.rb +23 -37
  99. data/passenger.gemspec +21 -21
  100. metadata +4 -453
  101. metadata.gz.asc +7 -7
  102. data/.gitignore +0 -68
  103. data/.travis.yml +0 -16
  104. data/Gemfile +0 -17
  105. data/Gemfile.lock +0 -39
  106. data/Vagrantfile +0 -54
  107. data/debian.template/README.Debian +0 -15
  108. data/debian.template/changelog +0 -316
  109. data/debian.template/compat +0 -1
  110. data/debian.template/control.erb +0 -91
  111. data/debian.template/copyright +0 -385
  112. data/debian.template/libapache2-mod-passenger.install +0 -3
  113. data/debian.template/libapache2-mod-passenger.postinst +0 -36
  114. data/debian.template/libapache2-mod-passenger.prerm +0 -15
  115. data/debian.template/locations.ini.erb +0 -14
  116. data/debian.template/passenger-dev.install.erb +0 -3
  117. data/debian.template/passenger-doc.install.erb +0 -2
  118. data/debian.template/passenger.conf +0 -6
  119. data/debian.template/passenger.docs +0 -4
  120. data/debian.template/passenger.install.erb +0 -14
  121. data/debian.template/passenger.load +0 -3
  122. data/debian.template/passenger.manpages +0 -3
  123. data/debian.template/patches/series +0 -0
  124. data/debian.template/rules.erb +0 -76
  125. data/debian.template/source/format +0 -1
  126. data/ext/common/EventedBufferedInput.h +0 -458
  127. data/packaging/rpm/LICENSE.txt +0 -19
  128. data/packaging/rpm/Makefile +0 -13
  129. data/packaging/rpm/README.md +0 -41
  130. data/packaging/rpm/Vagrantfile +0 -38
  131. data/packaging/rpm/Vagrantfile.centos +0 -30
  132. data/packaging/rpm/build +0 -170
  133. data/packaging/rpm/create_project +0 -41
  134. data/packaging/rpm/git_update +0 -88
  135. data/packaging/rpm/image/Dockerfile +0 -37
  136. data/packaging/rpm/image/Gemfile +0 -3
  137. data/packaging/rpm/image/Gemfile.lock +0 -12
  138. data/packaging/rpm/image/RPM-GPG-KEY-amazon-ga +0 -19
  139. data/packaging/rpm/image/amazon2014-i386.cfg +0 -96
  140. data/packaging/rpm/image/amazon2014-x86_64.cfg +0 -96
  141. data/packaging/rpm/image/site-defaults.cfg +0 -168
  142. data/packaging/rpm/internal/build_tasks.rb +0 -238
  143. data/packaging/rpm/internal/dummygpg +0 -11
  144. data/packaging/rpm/internal/exec_build +0 -42
  145. data/packaging/rpm/internal/get_distro_arch +0 -14
  146. data/packaging/rpm/internal/get_distro_id +0 -10
  147. data/packaging/rpm/internal/git_update +0 -27
  148. data/packaging/rpm/internal/inituidgid +0 -17
  149. data/packaging/rpm/internal/my_init +0 -344
  150. data/packaging/rpm/internal/python27 +0 -3
  151. data/packaging/rpm/internal/repo_update +0 -46
  152. data/packaging/rpm/internal/setuser +0 -26
  153. data/packaging/rpm/internal/tracking_helper +0 -40
  154. data/packaging/rpm/jenkins_release +0 -99
  155. data/packaging/rpm/lib/build_tasks_support.rb +0 -402
  156. data/packaging/rpm/lib/preprocessor.rb +0 -341
  157. data/packaging/rpm/nginx_spec/404.html +0 -119
  158. data/packaging/rpm/nginx_spec/50x.html +0 -119
  159. data/packaging/rpm/nginx_spec/index.html +0 -116
  160. data/packaging/rpm/nginx_spec/nginx-auto-cc-gcc.patch +0 -13
  161. data/packaging/rpm/nginx_spec/nginx-logo.png +0 -0
  162. data/packaging/rpm/nginx_spec/nginx-upgrade +0 -13
  163. data/packaging/rpm/nginx_spec/nginx-upgrade.8 +0 -151
  164. data/packaging/rpm/nginx_spec/nginx.conf +0 -131
  165. data/packaging/rpm/nginx_spec/nginx.init +0 -144
  166. data/packaging/rpm/nginx_spec/nginx.logrotate +0 -13
  167. data/packaging/rpm/nginx_spec/nginx.service +0 -15
  168. data/packaging/rpm/nginx_spec/nginx.spec.template +0 -560
  169. data/packaging/rpm/nginx_spec/nginx.sysconfig +0 -4
  170. data/packaging/rpm/nginx_spec/passenger.conf +0 -9
  171. data/packaging/rpm/nginx_spec/poweredby.png +0 -0
  172. data/packaging/rpm/passenger_spec/apache-passenger.conf.in +0 -26
  173. data/packaging/rpm/passenger_spec/config.json +0 -30
  174. data/packaging/rpm/passenger_spec/passenger.logrotate +0 -7
  175. data/packaging/rpm/passenger_spec/passenger.spec.template +0 -478
  176. data/packaging/rpm/passenger_spec/passenger_dynamic_thread_group.patch +0 -16
  177. data/packaging/rpm/passenger_spec/passenger_tests_default_config_example.patch +0 -44
  178. data/packaging/rpm/passenger_spec/rubygem-passenger-4.0.18-GLIBC_HAVE_LONG_LONG.patch +0 -21
  179. data/packaging/rpm/repo_update +0 -114
  180. data/packaging/rpm/setup-system +0 -61
  181. data/packaging/rpm/shell +0 -10
  182. data/test/.rspec +0 -4
  183. data/test/config.json.example +0 -42
  184. data/test/config.json.rpm-automation +0 -15
  185. data/test/config.json.travis +0 -15
  186. data/test/config.json.vagrant +0 -30
  187. data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +0 -124
  188. data/test/cxx/ApplicationPool2/OptionsTest.cpp +0 -30
  189. data/test/cxx/ApplicationPool2/PoolTest.cpp +0 -2062
  190. data/test/cxx/ApplicationPool2/ProcessTest.cpp +0 -130
  191. data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +0 -243
  192. data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +0 -823
  193. data/test/cxx/BufferedIOTest.cpp +0 -364
  194. data/test/cxx/CachedFileStatTest.cpp +0 -402
  195. data/test/cxx/CxxTestMain.cpp +0 -181
  196. data/test/cxx/DataStructures/LStringTest.cpp +0 -275
  197. data/test/cxx/DataStructures/StringKeyTableTest.cpp +0 -199
  198. data/test/cxx/DateParsingTest.cpp +0 -75
  199. data/test/cxx/DechunkerTest.cpp +0 -250
  200. data/test/cxx/EventedBufferedInputTest.cpp +0 -758
  201. data/test/cxx/EventedClientTest.cpp +0 -523
  202. data/test/cxx/FileChangeCheckerTest.cpp +0 -331
  203. data/test/cxx/FileDescriptorTest.cpp +0 -69
  204. data/test/cxx/FilterSupportTest.cpp +0 -433
  205. data/test/cxx/IOUtilsTest.cpp +0 -861
  206. data/test/cxx/MemoryKit/MbufTest.cpp +0 -213
  207. data/test/cxx/MessageIOTest.cpp +0 -360
  208. data/test/cxx/MessagePassingTest.cpp +0 -81
  209. data/test/cxx/MessageReadersWritersTest.cpp +0 -576
  210. data/test/cxx/MessageServerTest.cpp +0 -393
  211. data/test/cxx/ProcessMetricsCollectorTest.cpp +0 -123
  212. data/test/cxx/RequestHandlerTest.cpp +0 -1463
  213. data/test/cxx/ResponseCacheTest.cpp +0 -322
  214. data/test/cxx/ServerKit/ChannelTest.cpp +0 -1467
  215. data/test/cxx/ServerKit/CookieUtilsTest.cpp +0 -274
  216. data/test/cxx/ServerKit/FileBufferedChannelTest.cpp +0 -992
  217. data/test/cxx/ServerKit/HeaderTableTest.cpp +0 -177
  218. data/test/cxx/ServerKit/HttpServerTest.cpp +0 -1580
  219. data/test/cxx/ServerKit/ServerTest.cpp +0 -408
  220. data/test/cxx/StaticStringTest.cpp +0 -220
  221. data/test/cxx/StringMapTest.cpp +0 -131
  222. data/test/cxx/SystemTimeTest.cpp +0 -37
  223. data/test/cxx/TemplateTest.cpp +0 -118
  224. data/test/cxx/TestSupport.cpp +0 -207
  225. data/test/cxx/TestSupport.h +0 -333
  226. data/test/cxx/UnionStationTest.cpp +0 -741
  227. data/test/cxx/Utils/StrIntUtilsTest.cpp +0 -39
  228. data/test/cxx/UtilsTest.cpp +0 -672
  229. data/test/cxx/VariantMapTest.cpp +0 -191
  230. data/test/gdbinit.example +0 -34
  231. data/test/integration_tests/apache2_tests.rb +0 -585
  232. data/test/integration_tests/downloaded_binaries_tests.rb +0 -185
  233. data/test/integration_tests/native_packaging_spec.rb +0 -368
  234. data/test/integration_tests/nginx_tests.rb +0 -402
  235. data/test/integration_tests/shared/example_webapp_tests.rb +0 -289
  236. data/test/integration_tests/source_packaging_test.rb +0 -201
  237. data/test/integration_tests/spec_helper.rb +0 -22
  238. data/test/integration_tests/standalone_tests.rb +0 -392
  239. data/test/node/line_reader_spec.js +0 -338
  240. data/test/node/spec_helper.js +0 -65
  241. data/test/oxt/backtrace_test.cpp +0 -88
  242. data/test/oxt/counter.hpp +0 -55
  243. data/test/oxt/dynamic_thread_group_test.cpp +0 -131
  244. data/test/oxt/oxt_test_main.cpp +0 -27
  245. data/test/oxt/spin_lock_test.cpp +0 -59
  246. data/test/oxt/syscall_interruption_test.cpp +0 -39
  247. data/test/ruby/debug_logging_spec.rb +0 -145
  248. data/test/ruby/message_channel_spec.rb +0 -196
  249. data/test/ruby/rack/loader_spec.rb +0 -42
  250. data/test/ruby/rack/preloader_spec.rb +0 -48
  251. data/test/ruby/rails3.0/loader_spec.rb +0 -26
  252. data/test/ruby/rails3.0/preloader_spec.rb +0 -32
  253. data/test/ruby/rails3.1/loader_spec.rb +0 -26
  254. data/test/ruby/rails3.1/preloader_spec.rb +0 -32
  255. data/test/ruby/rails3.2/loader_spec.rb +0 -26
  256. data/test/ruby/rails3.2/preloader_spec.rb +0 -32
  257. data/test/ruby/rails4.0/loader_spec.rb +0 -28
  258. data/test/ruby/rails4.0/preloader_spec.rb +0 -34
  259. data/test/ruby/rails4.1/loader_spec.rb +0 -28
  260. data/test/ruby/rails4.1/preloader_spec.rb +0 -34
  261. data/test/ruby/request_handler_spec.rb +0 -747
  262. data/test/ruby/shared/loader_sharedspec.rb +0 -247
  263. data/test/ruby/shared/rails/union_station_extensions_sharedspec.rb +0 -357
  264. data/test/ruby/shared/ruby_loader_sharedspec.rb +0 -55
  265. data/test/ruby/spec_helper.rb +0 -114
  266. data/test/ruby/standalone/runtime_installer_spec.rb +0 -402
  267. data/test/ruby/union_station_spec.rb +0 -288
  268. data/test/ruby/utils/file_system_watcher_spec.rb +0 -229
  269. data/test/ruby/utils/hosts_file_parser.rb +0 -258
  270. data/test/ruby/utils/tee_input_spec.rb +0 -235
  271. data/test/ruby/utils/unseekable_socket_spec.rb +0 -66
  272. data/test/ruby/utils_spec.rb +0 -41
  273. data/test/stub/apache2/httpd.conf.erb +0 -122
  274. data/test/stub/apache2/mime.types +0 -748
  275. data/test/stub/garbage1.dat +0 -0
  276. data/test/stub/garbage2.dat +0 -0
  277. data/test/stub/garbage3.dat +0 -0
  278. data/test/stub/http_request.yml +0 -23
  279. data/test/stub/index.html +0 -1
  280. data/test/stub/nginx/koi-utf +0 -109
  281. data/test/stub/nginx/koi-win +0 -103
  282. data/test/stub/nginx/mime.types +0 -70
  283. data/test/stub/nginx/nginx.conf.erb +0 -70
  284. data/test/stub/nginx/win-utf +0 -126
  285. data/test/stub/node/app.js +0 -133
  286. data/test/stub/node/public/.gitignore +0 -0
  287. data/test/stub/node/tmp/.gitignore +0 -0
  288. data/test/stub/rack/config.ru +0 -95
  289. data/test/stub/rack/library.rb +0 -16
  290. data/test/stub/rack/public/.gitignore +0 -0
  291. data/test/stub/rack/start.rb +0 -52
  292. data/test/stub/rack/tmp/.gitignore +0 -0
  293. data/test/stub/rails3.0/.gitignore +0 -4
  294. data/test/stub/rails3.0/Gemfile +0 -22
  295. data/test/stub/rails3.0/Gemfile.lock +0 -80
  296. data/test/stub/rails3.0/Rakefile +0 -10
  297. data/test/stub/rails3.0/app/controllers/application_controller.rb +0 -4
  298. data/test/stub/rails3.0/app/helpers/application_helper.rb +0 -2
  299. data/test/stub/rails3.0/app/views/layouts/application.html.erb +0 -14
  300. data/test/stub/rails3.0/config.ru +0 -4
  301. data/test/stub/rails3.0/config/application.rb +0 -48
  302. data/test/stub/rails3.0/config/boot.rb +0 -13
  303. data/test/stub/rails3.0/config/database.yml +0 -22
  304. data/test/stub/rails3.0/config/environment.rb +0 -5
  305. data/test/stub/rails3.0/config/environments/development.rb +0 -19
  306. data/test/stub/rails3.0/config/environments/production.rb +0 -48
  307. data/test/stub/rails3.0/config/environments/test.rb +0 -32
  308. data/test/stub/rails3.0/config/initializers/backtrace_silencers.rb +0 -7
  309. data/test/stub/rails3.0/config/initializers/inflections.rb +0 -10
  310. data/test/stub/rails3.0/config/initializers/mime_types.rb +0 -5
  311. data/test/stub/rails3.0/config/initializers/passenger.rb +0 -2
  312. data/test/stub/rails3.0/config/initializers/secret_token.rb +0 -7
  313. data/test/stub/rails3.0/config/initializers/session_store.rb +0 -8
  314. data/test/stub/rails3.0/config/locales/en.yml +0 -5
  315. data/test/stub/rails3.0/config/routes.rb +0 -58
  316. data/test/stub/rails3.0/db/seeds.rb +0 -7
  317. data/test/stub/rails3.0/doc/README_FOR_APP +0 -2
  318. data/test/stub/rails3.0/lib/tasks/.gitkeep +0 -0
  319. data/test/stub/rails3.0/log/.gitignore +0 -0
  320. data/test/stub/rails3.0/public/404.html +0 -26
  321. data/test/stub/rails3.0/public/422.html +0 -26
  322. data/test/stub/rails3.0/public/500.html +0 -26
  323. data/test/stub/rails3.0/public/favicon.ico +0 -0
  324. data/test/stub/rails3.0/public/index.html +0 -279
  325. data/test/stub/rails3.0/public/robots.txt +0 -5
  326. data/test/stub/rails3.0/public/stylesheets/.gitkeep +0 -0
  327. data/test/stub/rails3.0/script/rails +0 -9
  328. data/test/stub/rails3.0/test/performance/browsing_test.rb +0 -9
  329. data/test/stub/rails3.0/test/test_helper.rb +0 -13
  330. data/test/stub/rails3.0/vendor/plugins/.gitkeep +0 -0
  331. data/test/stub/rails3.1/.gitignore +0 -15
  332. data/test/stub/rails3.1/Gemfile +0 -37
  333. data/test/stub/rails3.1/Gemfile.lock +0 -115
  334. data/test/stub/rails3.1/README +0 -261
  335. data/test/stub/rails3.1/Rakefile +0 -7
  336. data/test/stub/rails3.1/app/assets/images/rails.png +0 -0
  337. data/test/stub/rails3.1/app/assets/stylesheets/application.css +0 -7
  338. data/test/stub/rails3.1/app/controllers/application_controller.rb +0 -3
  339. data/test/stub/rails3.1/app/helpers/application_helper.rb +0 -2
  340. data/test/stub/rails3.1/app/mailers/.gitkeep +0 -0
  341. data/test/stub/rails3.1/app/models/.gitkeep +0 -0
  342. data/test/stub/rails3.1/app/views/layouts/application.html.erb +0 -14
  343. data/test/stub/rails3.1/config.ru +0 -4
  344. data/test/stub/rails3.1/config/application.rb +0 -48
  345. data/test/stub/rails3.1/config/boot.rb +0 -6
  346. data/test/stub/rails3.1/config/database.yml +0 -25
  347. data/test/stub/rails3.1/config/environment.rb +0 -5
  348. data/test/stub/rails3.1/config/environments/development.rb +0 -30
  349. data/test/stub/rails3.1/config/environments/production.rb +0 -60
  350. data/test/stub/rails3.1/config/environments/test.rb +0 -39
  351. data/test/stub/rails3.1/config/initializers/backtrace_silencers.rb +0 -7
  352. data/test/stub/rails3.1/config/initializers/inflections.rb +0 -10
  353. data/test/stub/rails3.1/config/initializers/mime_types.rb +0 -5
  354. data/test/stub/rails3.1/config/initializers/passenger.rb +0 -2
  355. data/test/stub/rails3.1/config/initializers/secret_token.rb +0 -7
  356. data/test/stub/rails3.1/config/initializers/session_store.rb +0 -8
  357. data/test/stub/rails3.1/config/initializers/wrap_parameters.rb +0 -14
  358. data/test/stub/rails3.1/config/locales/en.yml +0 -5
  359. data/test/stub/rails3.1/config/routes.rb +0 -58
  360. data/test/stub/rails3.1/db/seeds.rb +0 -7
  361. data/test/stub/rails3.1/doc/README_FOR_APP +0 -2
  362. data/test/stub/rails3.1/lib/assets/.gitkeep +0 -0
  363. data/test/stub/rails3.1/lib/tasks/.gitkeep +0 -0
  364. data/test/stub/rails3.1/log/.gitkeep +0 -0
  365. data/test/stub/rails3.1/public/404.html +0 -26
  366. data/test/stub/rails3.1/public/422.html +0 -26
  367. data/test/stub/rails3.1/public/500.html +0 -26
  368. data/test/stub/rails3.1/public/favicon.ico +0 -0
  369. data/test/stub/rails3.1/public/index.html +0 -241
  370. data/test/stub/rails3.1/public/robots.txt +0 -5
  371. data/test/stub/rails3.1/script/rails +0 -6
  372. data/test/stub/rails3.1/test/fixtures/.gitkeep +0 -0
  373. data/test/stub/rails3.1/test/functional/.gitkeep +0 -0
  374. data/test/stub/rails3.1/test/integration/.gitkeep +0 -0
  375. data/test/stub/rails3.1/test/performance/browsing_test.rb +0 -12
  376. data/test/stub/rails3.1/test/test_helper.rb +0 -13
  377. data/test/stub/rails3.1/test/unit/.gitkeep +0 -0
  378. data/test/stub/rails3.1/vendor/assets/stylesheets/.gitkeep +0 -0
  379. data/test/stub/rails3.1/vendor/plugins/.gitkeep +0 -0
  380. data/test/stub/rails3.2/.gitignore +0 -15
  381. data/test/stub/rails3.2/Gemfile +0 -39
  382. data/test/stub/rails3.2/Gemfile.lock +0 -113
  383. data/test/stub/rails3.2/Rakefile +0 -7
  384. data/test/stub/rails3.2/app/assets/images/rails.png +0 -0
  385. data/test/stub/rails3.2/app/assets/stylesheets/application.css +0 -13
  386. data/test/stub/rails3.2/app/controllers/application_controller.rb +0 -3
  387. data/test/stub/rails3.2/app/helpers/application_helper.rb +0 -2
  388. data/test/stub/rails3.2/app/mailers/.gitkeep +0 -0
  389. data/test/stub/rails3.2/app/models/.gitkeep +0 -0
  390. data/test/stub/rails3.2/app/views/layouts/application.html.erb +0 -14
  391. data/test/stub/rails3.2/config.ru +0 -4
  392. data/test/stub/rails3.2/config/application.rb +0 -62
  393. data/test/stub/rails3.2/config/boot.rb +0 -6
  394. data/test/stub/rails3.2/config/database.yml +0 -25
  395. data/test/stub/rails3.2/config/environment.rb +0 -5
  396. data/test/stub/rails3.2/config/environments/development.rb +0 -37
  397. data/test/stub/rails3.2/config/environments/production.rb +0 -67
  398. data/test/stub/rails3.2/config/environments/test.rb +0 -37
  399. data/test/stub/rails3.2/config/initializers/backtrace_silencers.rb +0 -7
  400. data/test/stub/rails3.2/config/initializers/inflections.rb +0 -15
  401. data/test/stub/rails3.2/config/initializers/mime_types.rb +0 -5
  402. data/test/stub/rails3.2/config/initializers/passenger.rb +0 -2
  403. data/test/stub/rails3.2/config/initializers/secret_token.rb +0 -7
  404. data/test/stub/rails3.2/config/initializers/session_store.rb +0 -8
  405. data/test/stub/rails3.2/config/initializers/wrap_parameters.rb +0 -14
  406. data/test/stub/rails3.2/config/locales/en.yml +0 -5
  407. data/test/stub/rails3.2/config/routes.rb +0 -58
  408. data/test/stub/rails3.2/db/seeds.rb +0 -7
  409. data/test/stub/rails3.2/doc/README_FOR_APP +0 -2
  410. data/test/stub/rails3.2/lib/assets/.gitkeep +0 -0
  411. data/test/stub/rails3.2/lib/tasks/.gitkeep +0 -0
  412. data/test/stub/rails3.2/log/.gitkeep +0 -0
  413. data/test/stub/rails3.2/public/404.html +0 -26
  414. data/test/stub/rails3.2/public/422.html +0 -26
  415. data/test/stub/rails3.2/public/500.html +0 -25
  416. data/test/stub/rails3.2/public/favicon.ico +0 -0
  417. data/test/stub/rails3.2/public/index.html +0 -241
  418. data/test/stub/rails3.2/public/robots.txt +0 -5
  419. data/test/stub/rails3.2/script/rails +0 -6
  420. data/test/stub/rails3.2/test/fixtures/.gitkeep +0 -0
  421. data/test/stub/rails3.2/test/functional/.gitkeep +0 -0
  422. data/test/stub/rails3.2/test/integration/.gitkeep +0 -0
  423. data/test/stub/rails3.2/test/performance/browsing_test.rb +0 -12
  424. data/test/stub/rails3.2/test/test_helper.rb +0 -13
  425. data/test/stub/rails3.2/test/unit/.gitkeep +0 -0
  426. data/test/stub/rails3.2/vendor/assets/stylesheets/.gitkeep +0 -0
  427. data/test/stub/rails3.2/vendor/plugins/.gitkeep +0 -0
  428. data/test/stub/rails4.0/.gitignore +0 -16
  429. data/test/stub/rails4.0/Gemfile +0 -45
  430. data/test/stub/rails4.0/Gemfile.lock +0 -126
  431. data/test/stub/rails4.0/README.rdoc +0 -28
  432. data/test/stub/rails4.0/Rakefile +0 -6
  433. data/test/stub/rails4.0/app/assets/images/.keep +0 -0
  434. data/test/stub/rails4.0/app/assets/javascripts/application.js +0 -16
  435. data/test/stub/rails4.0/app/assets/stylesheets/application.css +0 -13
  436. data/test/stub/rails4.0/app/controllers/application_controller.rb +0 -5
  437. data/test/stub/rails4.0/app/controllers/concerns/.keep +0 -0
  438. data/test/stub/rails4.0/app/helpers/application_helper.rb +0 -2
  439. data/test/stub/rails4.0/app/mailers/.keep +0 -0
  440. data/test/stub/rails4.0/app/models/.keep +0 -0
  441. data/test/stub/rails4.0/app/models/concerns/.keep +0 -0
  442. data/test/stub/rails4.0/app/views/layouts/application.html.erb +0 -14
  443. data/test/stub/rails4.0/bin/bundle +0 -3
  444. data/test/stub/rails4.0/bin/rails +0 -4
  445. data/test/stub/rails4.0/bin/rake +0 -4
  446. data/test/stub/rails4.0/config.ru +0 -4
  447. data/test/stub/rails4.0/config/application.rb +0 -23
  448. data/test/stub/rails4.0/config/boot.rb +0 -4
  449. data/test/stub/rails4.0/config/database.yml +0 -25
  450. data/test/stub/rails4.0/config/environment.rb +0 -5
  451. data/test/stub/rails4.0/config/environments/development.rb +0 -29
  452. data/test/stub/rails4.0/config/environments/production.rb +0 -80
  453. data/test/stub/rails4.0/config/environments/test.rb +0 -36
  454. data/test/stub/rails4.0/config/initializers/backtrace_silencers.rb +0 -7
  455. data/test/stub/rails4.0/config/initializers/filter_parameter_logging.rb +0 -4
  456. data/test/stub/rails4.0/config/initializers/inflections.rb +0 -16
  457. data/test/stub/rails4.0/config/initializers/mime_types.rb +0 -5
  458. data/test/stub/rails4.0/config/initializers/passenger.rb +0 -2
  459. data/test/stub/rails4.0/config/initializers/secret_token.rb +0 -12
  460. data/test/stub/rails4.0/config/initializers/session_store.rb +0 -3
  461. data/test/stub/rails4.0/config/initializers/wrap_parameters.rb +0 -14
  462. data/test/stub/rails4.0/config/locales/en.yml +0 -23
  463. data/test/stub/rails4.0/config/routes.rb +0 -57
  464. data/test/stub/rails4.0/db/seeds.rb +0 -7
  465. data/test/stub/rails4.0/lib/assets/.keep +0 -0
  466. data/test/stub/rails4.0/lib/tasks/.keep +0 -0
  467. data/test/stub/rails4.0/log/.keep +0 -0
  468. data/test/stub/rails4.0/public/404.html +0 -58
  469. data/test/stub/rails4.0/public/422.html +0 -58
  470. data/test/stub/rails4.0/public/500.html +0 -57
  471. data/test/stub/rails4.0/public/favicon.ico +0 -0
  472. data/test/stub/rails4.0/public/robots.txt +0 -5
  473. data/test/stub/rails4.0/test/controllers/.keep +0 -0
  474. data/test/stub/rails4.0/test/fixtures/.keep +0 -0
  475. data/test/stub/rails4.0/test/helpers/.keep +0 -0
  476. data/test/stub/rails4.0/test/integration/.keep +0 -0
  477. data/test/stub/rails4.0/test/mailers/.keep +0 -0
  478. data/test/stub/rails4.0/test/models/.keep +0 -0
  479. data/test/stub/rails4.0/test/test_helper.rb +0 -15
  480. data/test/stub/rails4.0/vendor/assets/javascripts/.keep +0 -0
  481. data/test/stub/rails4.0/vendor/assets/stylesheets/.keep +0 -0
  482. data/test/stub/rails4.1/.gitignore +0 -16
  483. data/test/stub/rails4.1/Gemfile +0 -45
  484. data/test/stub/rails4.1/Gemfile.lock +0 -129
  485. data/test/stub/rails4.1/README.rdoc +0 -28
  486. data/test/stub/rails4.1/Rakefile +0 -6
  487. data/test/stub/rails4.1/app/assets/images/.keep +0 -0
  488. data/test/stub/rails4.1/app/assets/javascripts/application.js +0 -16
  489. data/test/stub/rails4.1/app/assets/stylesheets/application.css +0 -13
  490. data/test/stub/rails4.1/app/controllers/application_controller.rb +0 -5
  491. data/test/stub/rails4.1/app/controllers/concerns/.keep +0 -0
  492. data/test/stub/rails4.1/app/helpers/application_helper.rb +0 -2
  493. data/test/stub/rails4.1/app/mailers/.keep +0 -0
  494. data/test/stub/rails4.1/app/models/.keep +0 -0
  495. data/test/stub/rails4.1/app/models/concerns/.keep +0 -0
  496. data/test/stub/rails4.1/app/views/layouts/application.html.erb +0 -14
  497. data/test/stub/rails4.1/bin/bundle +0 -3
  498. data/test/stub/rails4.1/bin/rails +0 -4
  499. data/test/stub/rails4.1/bin/rake +0 -4
  500. data/test/stub/rails4.1/config.ru +0 -4
  501. data/test/stub/rails4.1/config/application.rb +0 -23
  502. data/test/stub/rails4.1/config/boot.rb +0 -4
  503. data/test/stub/rails4.1/config/database.yml +0 -25
  504. data/test/stub/rails4.1/config/environment.rb +0 -5
  505. data/test/stub/rails4.1/config/environments/development.rb +0 -29
  506. data/test/stub/rails4.1/config/environments/production.rb +0 -80
  507. data/test/stub/rails4.1/config/environments/test.rb +0 -36
  508. data/test/stub/rails4.1/config/initializers/backtrace_silencers.rb +0 -7
  509. data/test/stub/rails4.1/config/initializers/filter_parameter_logging.rb +0 -4
  510. data/test/stub/rails4.1/config/initializers/inflections.rb +0 -16
  511. data/test/stub/rails4.1/config/initializers/mime_types.rb +0 -5
  512. data/test/stub/rails4.1/config/initializers/passenger.rb +0 -5
  513. data/test/stub/rails4.1/config/initializers/secret_token.rb +0 -12
  514. data/test/stub/rails4.1/config/initializers/session_store.rb +0 -3
  515. data/test/stub/rails4.1/config/initializers/wrap_parameters.rb +0 -14
  516. data/test/stub/rails4.1/config/locales/en.yml +0 -23
  517. data/test/stub/rails4.1/config/routes.rb +0 -57
  518. data/test/stub/rails4.1/db/seeds.rb +0 -7
  519. data/test/stub/rails4.1/lib/assets/.keep +0 -0
  520. data/test/stub/rails4.1/lib/tasks/.keep +0 -0
  521. data/test/stub/rails4.1/log/.keep +0 -0
  522. data/test/stub/rails4.1/public/404.html +0 -58
  523. data/test/stub/rails4.1/public/422.html +0 -58
  524. data/test/stub/rails4.1/public/500.html +0 -57
  525. data/test/stub/rails4.1/public/favicon.ico +0 -0
  526. data/test/stub/rails4.1/public/robots.txt +0 -5
  527. data/test/stub/rails4.1/test/controllers/.keep +0 -0
  528. data/test/stub/rails4.1/test/fixtures/.keep +0 -0
  529. data/test/stub/rails4.1/test/helpers/.keep +0 -0
  530. data/test/stub/rails4.1/test/integration/.keep +0 -0
  531. data/test/stub/rails4.1/test/mailers/.keep +0 -0
  532. data/test/stub/rails4.1/test/models/.keep +0 -0
  533. data/test/stub/rails4.1/test/test_helper.rb +0 -15
  534. data/test/stub/rails4.1/vendor/assets/javascripts/.keep +0 -0
  535. data/test/stub/rails4.1/vendor/assets/stylesheets/.keep +0 -0
  536. data/test/stub/start_error.pl +0 -24
  537. data/test/stub/upload_data.txt +0 -494
  538. data/test/stub/wsgi/passenger_wsgi.py +0 -212
  539. data/test/stub/wsgi/public/.gitignore +0 -0
  540. data/test/stub/wsgi/tmp/.gitignore +0 -0
  541. data/test/support/allocate_memory.c +0 -14
  542. data/test/support/apache2_controller.rb +0 -258
  543. data/test/support/multipart.rb +0 -62
  544. data/test/support/nginx_controller.rb +0 -97
  545. data/test/support/placebo-preloader.rb +0 -88
  546. data/test/support/test_helper.rb +0 -455
  547. data/test/support/valgrind.h +0 -2539
  548. data/test/tut/tut.h +0 -1310
  549. data/test/tut/tut_reporter.h +0 -256
  550. data/test/valgrind-osx.supp +0 -7
@@ -157,11 +157,11 @@ ifdef::apache[]
157
157
  sudo apt-get install libapache2-mod-passenger
158
158
  --------------------------------------------------------------
159
159
  +
160
- 3. Enable the Phusion Passenger Apache module and restart Apache:
160
+ 3. Enable the Phusion Passenger Apache module and stop/start Apache (reload or restart is not enough when upgrading):
161
161
  +
162
162
  --------------------------------------------------------------
163
163
  sudo a2enmod passenger
164
- sudo service apache2 restart
164
+ sudo apache2ctl stop; sudo apache2ctl start
165
165
  --------------------------------------------------------------
166
166
  endif::[]
167
167
  ifdef::standalone[]
@@ -197,11 +197,11 @@ ifdef::apache[]
197
197
  sudo apt-get install libapache2-mod-passenger-enterprise
198
198
  --------------------------------------------------------------
199
199
  +
200
- 4. Enable the Phusion Passenger Apache module and restart Apache:
200
+ 4. Enable the Phusion Passenger Apache module and stop/start Apache (reload or restart is not enough when upgrading):
201
201
  +
202
202
  --------------------------------------------------------------
203
203
  sudo a2enmod passenger
204
- sudo service apache2 restart
204
+ sudo apache2ctl stop; sudo apache2ctl start
205
205
  --------------------------------------------------------------
206
206
  endif::[]
207
207
  ifdef::standalone[]
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2010-2014 Phusion
3
+ * Copyright (c) 2010-2015 Phusion
4
4
  *
5
5
  * "Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.
6
6
  *
@@ -235,7 +235,8 @@ passenger_config_merge_dir(apr_pool_t *p, void *basev, void *addv) {
235
235
  DEFINE_SERVER_STR_CONFIG_SETTER(cmd_passenger_root, root)
236
236
  DEFINE_SERVER_STR_CONFIG_SETTER(cmd_passenger_default_ruby, defaultRuby)
237
237
  DEFINE_SERVER_INT_CONFIG_SETTER(cmd_passenger_log_level, logLevel, unsigned int, 0)
238
- DEFINE_SERVER_STR_CONFIG_SETTER(cmd_passenger_debug_log_file, debugLogFile)
238
+ DEFINE_SERVER_STR_CONFIG_SETTER(cmd_passenger_log_file, logFile)
239
+ DEFINE_SERVER_STR_CONFIG_SETTER(cmd_passenger_file_descriptor_log_file, fileDescriptorLogFile)
239
240
  DEFINE_SERVER_INT_CONFIG_SETTER(cmd_passenger_max_pool_size, maxPoolSize, unsigned int, 1)
240
241
  DEFINE_SERVER_INT_CONFIG_SETTER(cmd_passenger_pool_idle_time, poolIdleTime, unsigned int, 0)
241
242
  DEFINE_SERVER_INT_CONFIG_SETTER(cmd_passenger_response_buffer_high_watermark, responseBufferHighWatermark, unsigned int, 0)
@@ -396,11 +397,16 @@ const command_rec passenger_commands[] = {
396
397
  NULL,
397
398
  RSRC_CONF,
398
399
  "Passenger log verbosity."),
399
- AP_INIT_TAKE1("PassengerDebugLogFile",
400
- (Take1Func) cmd_passenger_debug_log_file,
400
+ AP_INIT_TAKE1("PassengerLogFile",
401
+ (Take1Func) cmd_passenger_log_file,
402
+ NULL,
403
+ RSRC_CONF,
404
+ "Passenger log file."),
405
+ AP_INIT_TAKE1("PassengerFileDescriptorLogFile",
406
+ (Take1Func) cmd_passenger_file_descriptor_log_file,
401
407
  NULL,
402
408
  RSRC_CONF,
403
- "Passenger debug log file."),
409
+ "Passenger file descriptor log file."),
404
410
  AP_INIT_TAKE1("PassengerMaxPoolSize",
405
411
  (Take1Func) cmd_passenger_max_pool_size,
406
412
  NULL,
@@ -578,6 +584,11 @@ const command_rec passenger_commands[] = {
578
584
  "The number of threads that Phusion Passenger should spawn per application."),
579
585
 
580
586
  // Backwards compatibility options.
587
+ AP_INIT_TAKE1("PassengerDebugLogFile",
588
+ (Take1Func) cmd_passenger_log_file,
589
+ NULL,
590
+ RSRC_CONF,
591
+ "Passenger log file."),
581
592
  AP_INIT_TAKE1("RailsRuby",
582
593
  (Take1Func) cmd_passenger_ruby,
583
594
  NULL,
@@ -177,7 +177,8 @@ struct ServerConfig {
177
177
  int logLevel;
178
178
 
179
179
  /** A file to print debug messages to, or NULL to just use STDERR. */
180
- const char *debugLogFile;
180
+ const char *logFile;
181
+ const char *fileDescriptorLogFile;
181
182
 
182
183
  /** The maximum number of simultaneously alive application
183
184
  * instances. */
@@ -219,7 +220,8 @@ struct ServerConfig {
219
220
  root = NULL;
220
221
  defaultRuby = DEFAULT_RUBY;
221
222
  logLevel = DEFAULT_LOG_LEVEL;
222
- debugLogFile = NULL;
223
+ logFile = NULL;
224
+ fileDescriptorLogFile = NULL;
223
225
  maxPoolSize = DEFAULT_MAX_POOL_SIZE;
224
226
  poolIdleTime = DEFAULT_POOL_IDLE_TIME;
225
227
  responseBufferHighWatermark = DEFAULT_RESPONSE_BUFFER_HIGH_WATERMARK;
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2010-2014 Phusion
3
+ * Copyright (c) 2010-2015 Phusion
4
4
  *
5
5
  * "Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.
6
6
  *
@@ -52,15 +52,16 @@
52
52
  #include "Hooks.h"
53
53
  #include "Bucket.h"
54
54
  #include "Configuration.hpp"
55
- #include "Utils.h"
56
- #include "Utils/IOUtils.h"
57
- #include "Utils/Timer.h"
58
- #include "Utils/HttpConstants.h"
59
- #include "Utils/modp_b64.h"
60
- #include "Logging.h"
61
- #include "AgentsStarter.h"
62
55
  #include "DirectoryMapper.h"
63
- #include "Constants.h"
56
+ #include <Utils.h>
57
+ #include <Utils/IOUtils.h>
58
+ #include <Utils/StrIntUtils.h>
59
+ #include <Utils/Timer.h>
60
+ #include <Utils/HttpConstants.h>
61
+ #include <Utils/modp_b64.h>
62
+ #include <Logging.h>
63
+ #include <AgentsStarter.h>
64
+ #include <Constants.h>
64
65
 
65
66
  /* The Apache/APR headers *must* come after the Boost headers, otherwise
66
67
  * compilation will fail on OpenBSD.
@@ -245,7 +246,7 @@ private:
245
246
  FileDescriptor conn;
246
247
 
247
248
  try {
248
- conn = connectToServer(getServerAddress());
249
+ conn.assign(connectToServer(getServerAddress(), __FILE__, __LINE__), NULL, 0);
249
250
  } catch (const SystemException &e) {
250
251
  if (e.code() == EPIPE || e.code() == ECONNREFUSED || e.code() == ENOENT) {
251
252
  UPDATE_TRACE_POINT();
@@ -259,7 +260,7 @@ private:
259
260
  time_t deadline = time(NULL) + 5;
260
261
  while (!connected && time(NULL) < deadline) {
261
262
  try {
262
- conn = connectToServer(getServerAddress());
263
+ conn.assign(connectToServer(getServerAddress(), __FILE__, __LINE__), NULL, 0);
263
264
  connected = true;
264
265
  } catch (const SystemException &e) {
265
266
  if (e.code() == EPIPE || e.code() == ECONNREFUSED || e.code() == ENOENT) {
@@ -741,6 +742,27 @@ private:
741
742
  return lookupInTable(r->subprocess_env, name);
742
743
  }
743
744
 
745
+ bool connectionUpgradeFlagSet(const char *header) const {
746
+ size_t headerSize = strlen(header);
747
+ if (headerSize < 1024) {
748
+ char buffer[headerSize + 1];
749
+ return connectionUpgradeFlagSet(header, headerSize, buffer, headerSize + 1);
750
+ } else {
751
+ DynamicBuffer buffer(headerSize + 1);
752
+ return connectionUpgradeFlagSet(header, headerSize, buffer.data, headerSize + 1);
753
+ }
754
+ }
755
+
756
+ bool connectionUpgradeFlagSet(const char *header, size_t headerSize,
757
+ char *buffer, size_t bufsize) const
758
+ {
759
+ assert(bufsize > headerSize);
760
+ memcpy(buffer, header, headerSize);
761
+ convertLowerCase((unsigned char *) buffer, headerSize);
762
+ buffer[headerSize] = '\0';
763
+ return strstr(buffer, "upgrade");
764
+ }
765
+
744
766
  void addHeader(string &headers, const StaticString &name, const char *value) {
745
767
  if (value != NULL) {
746
768
  headers.append(name.data(), name.size());
@@ -851,12 +873,10 @@ private:
851
873
  }
852
874
  }
853
875
 
854
- if (connectionHeader == NULL || strcasecmp(connectionHeader->val, "keep-alive") == 0) {
855
- result.append("Connection: close\r\n", sizeof("Connection: close\r\n") - 1);
876
+ if (connectionHeader != NULL && connectionUpgradeFlagSet(connectionHeader->val)) {
877
+ result.append("Connection: upgrade\r\n", sizeof("Connection: upgrade\r\n") - 1);
856
878
  } else {
857
- result.append("Connection: ", sizeof("Connection: ") - 1);
858
- result.append(connectionHeader->val);
859
- result.append("\r\n", 2);
879
+ result.append("Connection: close\r\n", sizeof("Connection: close\r\n") - 1);
860
880
  }
861
881
 
862
882
  if (transferEncodingHeader != NULL) {
@@ -1185,8 +1205,11 @@ public:
1185
1205
  {
1186
1206
  serverConfig.finalize();
1187
1207
  Passenger::setLogLevel(serverConfig.logLevel);
1188
- if (serverConfig.debugLogFile != NULL) {
1189
- Passenger::setLogFile(serverConfig.debugLogFile);
1208
+ if (serverConfig.logFile != NULL) {
1209
+ Passenger::setLogFile(serverConfig.logFile);
1210
+ }
1211
+ if (serverConfig.fileDescriptorLogFile != NULL) {
1212
+ Passenger::setFileDescriptorLogFile(serverConfig.fileDescriptorLogFile);
1190
1213
  }
1191
1214
  m_hasModRewrite = UNKNOWN;
1192
1215
  m_hasModDir = UNKNOWN;
@@ -1215,7 +1238,9 @@ public:
1215
1238
  .set ("server_software", webServerDesc)
1216
1239
  .setBool("multi_app", true)
1217
1240
  .setBool("load_shell_envvars", true)
1218
- .set ("debug_log_file", (serverConfig.debugLogFile == NULL) ? "" : serverConfig.debugLogFile)
1241
+ .set ("log_file", (serverConfig.logFile == NULL) ? "" : serverConfig.logFile)
1242
+ .set ("file_descriptor_log_file", (serverConfig.fileDescriptorLogFile == NULL)
1243
+ ? "" : serverConfig.fileDescriptorLogFile)
1219
1244
  .set ("data_buffer_dir", serverConfig.dataBufferDir)
1220
1245
  .set ("instance_registry_dir", serverConfig.instanceRegistryDir)
1221
1246
  .setBool("user_switching", serverConfig.userSwitching)
@@ -3,6 +3,8 @@
3
3
  // Distributed under the Boost Software License, Version 1.0. (See accompanying
4
4
  // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
5
 
6
+ #define IN_ONCE_CPP
7
+
6
8
  #include <boost/thread/detail/config.hpp>
7
9
  #ifdef BOOST_THREAD_ONCE_ATOMIC
8
10
  #include "./once_atomic.cpp"
@@ -4,6 +4,10 @@
4
4
  // Distributed under the Boost Software License, Version 1.0. (See accompanying
5
5
  // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6
6
 
7
+ // Our build system will compile once_atomic.o, but the symbols in this file are already included in once.o.
8
+ // This guard here prevents once_atomic.o from containing a duplicate of those symbols.
9
+ #ifdef IN_ONCE_CPP
10
+
7
11
  //#define __STDC_CONSTANT_MACROS
8
12
  #include <boost/thread/detail/config.hpp>
9
13
  #include <boost/thread/once.hpp>
@@ -88,3 +92,5 @@ namespace boost
88
92
  } // namespace thread_detail
89
93
 
90
94
  } // namespace boost
95
+
96
+ #endif /* IN_ONCE_CPP */
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2010-2014 Phusion
3
+ * Copyright (c) 2010-2015 Phusion
4
4
  *
5
5
  * "Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.
6
6
  *
@@ -326,7 +326,7 @@ public:
326
326
  .setInt ("log_level", getLogLevel());
327
327
  extraParams.addTo(params);
328
328
 
329
- fds = createUnixSocketPair();
329
+ fds = createUnixSocketPair(__FILE__, __LINE__);
330
330
  pid = syscalls::fork();
331
331
  if (pid == 0) {
332
332
  // Child
@@ -388,6 +388,7 @@ public:
388
388
 
389
389
  ScopeGuard guard(boost::bind(&AgentsStarter::killProcessGroupAndWait, &pid, 0));
390
390
  fds[1].close();
391
+ P_LOG_FILE_DESCRIPTOR_PURPOSE(feedbackFd, "AgentsStarter: feedback FD");
391
392
 
392
393
 
393
394
  /****** Send arguments to watchdog through the feedback channel ******/
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2011-2014 Phusion
3
+ * Copyright (c) 2011-2015 Phusion
4
4
  *
5
5
  * "Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.
6
6
  *
@@ -160,8 +160,8 @@ public:
160
160
  shared_array<const char *> args;
161
161
  SpawnPreparationInfo preparation = prepareSpawn(options);
162
162
  vector<string> command = createCommand(options, preparation, args);
163
- SocketPair adminSocket = createUnixSocketPair();
164
- Pipe errorPipe = createPipe();
163
+ SocketPair adminSocket = createUnixSocketPair(__FILE__, __LINE__);
164
+ Pipe errorPipe = createPipe(__FILE__, __LINE__);
165
165
  DebugDirPtr debugDir = boost::make_shared<DebugDir>(preparation.uid, preparation.gid);
166
166
  pid_t pid;
167
167
 
@@ -199,6 +199,16 @@ public:
199
199
  throw SystemException("Cannot fork a new process", e);
200
200
 
201
201
  } else {
202
+ UPDATE_TRACE_POINT();
203
+ P_LOG_FILE_DESCRIPTOR_PURPOSE(adminSocket.first,
204
+ "App " << pid << " (" << options.appRoot << ") adminSocket[0]");
205
+ P_LOG_FILE_DESCRIPTOR_PURPOSE(adminSocket.second,
206
+ "App " << pid << " (" << options.appRoot << ") adminSocket[1]");
207
+ P_LOG_FILE_DESCRIPTOR_PURPOSE(errorPipe.first,
208
+ "App " << pid << " (" << options.appRoot << ") errorPipe[0]");
209
+ P_LOG_FILE_DESCRIPTOR_PURPOSE(errorPipe.second,
210
+ "App " << pid << " (" << options.appRoot << ") errorPipe[1]");
211
+
202
212
  UPDATE_TRACE_POINT();
203
213
  ScopeGuard guard(boost::bind(nonInterruptableKillAndWaitpid, pid));
204
214
  P_DEBUG("Process forked for appRoot=" << options.appRoot << ": PID " << pid);
@@ -208,7 +218,7 @@ public:
208
218
  NegotiationDetails details;
209
219
  details.preparation = &preparation;
210
220
  details.stderrCapturer =
211
- make_shared<BackgroundIOCapturer>(
221
+ boost::make_shared<BackgroundIOCapturer>(
212
222
  errorPipe.first,
213
223
  pid,
214
224
  // The cast works around a compilation problem in Clang.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2011-2014 Phusion
3
+ * Copyright (c) 2011-2015 Phusion
4
4
  *
5
5
  * "Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.
6
6
  *
@@ -54,17 +54,22 @@ public:
54
54
  TRACE_POINT();
55
55
  possiblyRaiseInternalError(options);
56
56
 
57
- SocketPair adminSocket = createUnixSocketPair();
57
+ pid_t pid;
58
+ {
59
+ boost::lock_guard<boost::mutex> l(lock);
60
+ count++;
61
+ pid = count;
62
+ }
63
+
64
+ SocketPair adminSocket = createUnixSocketPair(__FILE__, __LINE__);
58
65
  SocketList sockets;
59
- sockets.add("main", "tcp://127.0.0.1:1234", "session", config->concurrency);
66
+ sockets.add(pid, "main", "tcp://127.0.0.1:1234", "session", config->concurrency);
60
67
  syscalls::usleep(config->spawnTime);
61
68
 
62
- boost::lock_guard<boost::mutex> l(lock);
63
- count++;
64
69
  SpawnObject object;
65
- string gupid = "gupid-" + toString(count);
70
+ string gupid = "gupid-" + toString(pid);
66
71
  object.process = boost::make_shared<Process>(
67
- (pid_t) count, gupid,
72
+ pid, gupid,
68
73
  adminSocket.second, FileDescriptor(), sockets,
69
74
  SystemTime::getUsec(), SystemTime::getUsec());
70
75
  object.process->dummy = true;
@@ -198,7 +198,7 @@ void processAndLogNewSpawnException(SpawnException &e, const Options &options,
198
198
  getSystemTempDir());
199
199
  fd = mkstemp(filename);
200
200
  #endif
201
- FdGuard guard(fd, true);
201
+ FdGuard guard(fd, NULL, 0, true);
202
202
  if (fd == -1) {
203
203
  int e = errno;
204
204
  throw SystemException("Cannot generate a temporary filename",
@@ -484,12 +484,13 @@ public:
484
484
 
485
485
  P_TRACE(2, "Cleaning up process " << inspect());
486
486
  if (!dummy) {
487
- SocketList::const_iterator it, end = sockets.end();
487
+ SocketList::iterator it, end = sockets.end();
488
488
  for (it = sockets.begin(); it != end; it++) {
489
489
  if (getSocketAddressType(it->address) == SAT_UNIX) {
490
490
  string filename = parseUnixSocketAddress(it->address);
491
491
  syscalls::unlink(filename.c_str());
492
492
  }
493
+ it->closeAllConnections();
493
494
  }
494
495
  }
495
496
 
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2011-2014 Phusion
3
+ * Copyright (c) 2011-2015 Phusion
4
4
  *
5
5
  * "Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.
6
6
  *
@@ -72,9 +72,9 @@ private:
72
72
  mutable boost::atomic<int> refcount;
73
73
  bool closed;
74
74
 
75
- void deinitiate(bool success, bool persistent) {
75
+ void deinitiate(bool success, bool wantKeepAlive) {
76
76
  connection.fail = !success;
77
- connection.persistent = persistent;
77
+ connection.wantKeepAlive = wantKeepAlive;
78
78
  socket->checkinConnection(connection);
79
79
  connection.fd = -1;
80
80
  }
@@ -150,7 +150,7 @@ public:
150
150
  Connection connection = socket->checkoutConnection();
151
151
  connection.fail = true;
152
152
  if (connection.blocking && !blocking) {
153
- FdGuard g2(connection.fd);
153
+ FdGuard g2(connection.fd, NULL, 0);
154
154
  setNonBlocking(connection.fd);
155
155
  g2.clear();
156
156
  connection.blocking = false;
@@ -172,9 +172,9 @@ public:
172
172
  /**
173
173
  * This Session object becomes fully unsable after closing.
174
174
  */
175
- void close(bool success, bool persistent = false) {
175
+ void close(bool success, bool wantKeepAlive = false) {
176
176
  if (OXT_LIKELY(initiated())) {
177
- deinitiate(success, persistent);
177
+ deinitiate(success, wantKeepAlive);
178
178
  }
179
179
  if (OXT_LIKELY(!closed)) {
180
180
  callOnClose();
@@ -212,8 +212,8 @@ private:
212
212
  shared_array<const char *> args;
213
213
  preparation = prepareSpawn(options);
214
214
  vector<string> command = createRealPreloaderCommand(options, args);
215
- SocketPair adminSocket = createUnixSocketPair();
216
- Pipe errorPipe = createPipe();
215
+ SocketPair adminSocket = createUnixSocketPair(__FILE__, __LINE__);
216
+ Pipe errorPipe = createPipe(__FILE__, __LINE__);
217
217
  DebugDirPtr debugDir = boost::make_shared<DebugDir>(preparation.uid, preparation.gid);
218
218
  pid_t pid;
219
219
 
@@ -251,6 +251,17 @@ private:
251
251
  throw SystemException("Cannot fork a new process", e);
252
252
 
253
253
  } else {
254
+ UPDATE_TRACE_POINT();
255
+ P_LOG_FILE_DESCRIPTOR_PURPOSE(adminSocket.first,
256
+ "Preloader " << pid << " (" << options.appRoot << ") adminSocket[0]");
257
+ P_LOG_FILE_DESCRIPTOR_PURPOSE(adminSocket.second,
258
+ "Preloader " << pid << " (" << options.appRoot << ") adminSocket[1]");
259
+ P_LOG_FILE_DESCRIPTOR_PURPOSE(errorPipe.first,
260
+ "Preloader " << pid << " (" << options.appRoot << ") errorPipe[0]");
261
+ P_LOG_FILE_DESCRIPTOR_PURPOSE(errorPipe.second,
262
+ "Preloader " << pid << " (" << options.appRoot << ") errorPipe[1]");
263
+
264
+ UPDATE_TRACE_POINT();
254
265
  ScopeGuard guard(boost::bind(nonInterruptableKillAndWaitpid, pid));
255
266
  P_DEBUG("Preloader process forked for appRoot=" << options.appRoot << ": PID " << pid);
256
267
  adminSocket.first.close();
@@ -261,7 +272,7 @@ private:
261
272
  details.adminSocket = adminSocket.second;
262
273
  details.io = BufferedIO(adminSocket.second);
263
274
  details.stderrCapturer =
264
- make_shared<BackgroundIOCapturer>(
275
+ boost::make_shared<BackgroundIOCapturer>(
265
276
  errorPipe.first,
266
277
  pid,
267
278
  // The cast works around a compilation problem in Clang.
@@ -610,7 +621,7 @@ private:
610
621
  TRACE_POINT();
611
622
  FileDescriptor fd;
612
623
  try {
613
- fd = connectToServer(socketAddress);
624
+ fd.assign(connectToServer(socketAddress, __FILE__, __LINE__), NULL, 0);
614
625
  } catch (const SystemException &e) {
615
626
  BackgroundIOCapturerPtr stderrCapturer;
616
627
  throwPreloaderSpawnException("An error occurred while starting "
@@ -621,6 +632,8 @@ private:
621
632
  options,
622
633
  DebugDirPtr());
623
634
  }
635
+ P_LOG_FILE_DESCRIPTOR_PURPOSE(fd, "Preloader " << pid
636
+ << " (" << options.appRoot << ") connection");
624
637
 
625
638
  UPDATE_TRACE_POINT();
626
639
  BufferedIO io(fd);
@@ -671,6 +684,8 @@ private:
671
684
  }
672
685
 
673
686
  SpawnResult result;
687
+ P_LOG_FILE_DESCRIPTOR_PURPOSE(fd, "App " << spawnedPid
688
+ << " (" << options.appRoot << ") adminSocket[1]");
674
689
  result.pid = spawnedPid;
675
690
  result.adminSocket = fd;
676
691
  result.io = io;