passenger 2.2.4 → 2.2.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 (105) hide show
  1. data/NEWS +137 -0
  2. data/Rakefile +101 -19
  3. data/bin/passenger-install-nginx-module +10 -3
  4. data/bin/passenger-make-enterprisey +1 -1
  5. data/doc/Users guide Apache.html +227 -92
  6. data/doc/Users guide Apache.txt +169 -75
  7. data/doc/Users guide Nginx.html +1 -1
  8. data/doc/cxxapi/Bucket_8h-source.html +1 -1
  9. data/doc/cxxapi/Configuration_8h-source.html +373 -338
  10. data/doc/cxxapi/DirectoryMapper_8h-source.html +1 -1
  11. data/doc/cxxapi/Hooks_8h-source.html +1 -1
  12. data/doc/cxxapi/annotated.html +1 -1
  13. data/doc/cxxapi/classHooks-members.html +1 -1
  14. data/doc/cxxapi/classHooks.html +2 -2
  15. data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +1 -1
  16. data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +1 -1
  17. data/doc/cxxapi/classes.html +1 -1
  18. data/doc/cxxapi/definitions_8h-source.html +1 -1
  19. data/doc/cxxapi/files.html +1 -1
  20. data/doc/cxxapi/functions.html +1 -1
  21. data/doc/cxxapi/functions_func.html +1 -1
  22. data/doc/cxxapi/graph_legend.html +1 -1
  23. data/doc/cxxapi/group__Configuration.html +1 -1
  24. data/doc/cxxapi/group__Core.html +1 -1
  25. data/doc/cxxapi/group__Hooks.html +1 -1
  26. data/doc/cxxapi/group__Support.html +1 -1
  27. data/doc/cxxapi/main.html +1 -1
  28. data/doc/cxxapi/modules.html +1 -1
  29. data/doc/rdoc/classes/ConditionVariable.html +59 -59
  30. data/doc/rdoc/classes/Exception.html +11 -11
  31. data/doc/rdoc/classes/GC.html +4 -4
  32. data/doc/rdoc/classes/IO.html +14 -14
  33. data/doc/rdoc/classes/PhusionPassenger.html +1 -1
  34. data/doc/rdoc/classes/PhusionPassenger/AbstractInstaller.html +8 -8
  35. data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +136 -136
  36. data/doc/rdoc/classes/PhusionPassenger/AbstractServer.html +254 -254
  37. data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +61 -61
  38. data/doc/rdoc/classes/PhusionPassenger/AppInitError.html +4 -4
  39. data/doc/rdoc/classes/PhusionPassenger/Application.html +14 -14
  40. data/doc/rdoc/classes/PhusionPassenger/ConsoleTextTemplate.html +12 -12
  41. data/doc/rdoc/classes/PhusionPassenger/FrameworkInitError.html +4 -4
  42. data/doc/rdoc/classes/PhusionPassenger/HTMLTemplate.html +12 -12
  43. data/doc/rdoc/classes/PhusionPassenger/InitializationError.html +5 -5
  44. data/doc/rdoc/classes/PhusionPassenger/MessageChannel.html +139 -139
  45. data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +61 -56
  46. data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner.html +3 -3
  47. data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner.html +7 -7
  48. data/doc/rdoc/classes/PhusionPassenger/Railz/RequestHandler.html +15 -15
  49. data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +119 -119
  50. data/doc/rdoc/classes/PhusionPassenger/UnknownError.html +4 -4
  51. data/doc/rdoc/classes/PhusionPassenger/Utils.html +310 -312
  52. data/doc/rdoc/classes/PhusionPassenger/Utils/PseudoIO.html +169 -0
  53. data/doc/rdoc/classes/PhusionPassenger/VersionNotFound.html +4 -4
  54. data/doc/rdoc/classes/PlatformInfo.html +165 -164
  55. data/doc/rdoc/classes/Signal.html +23 -23
  56. data/doc/rdoc/created.rid +1 -1
  57. data/doc/rdoc/files/ext/phusion_passenger/native_support_c.html +1 -1
  58. data/doc/rdoc/files/lib/phusion_passenger/abstract_request_handler_rb.html +26 -28
  59. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_rb.html +26 -28
  60. data/doc/rdoc/files/lib/phusion_passenger/admin_tools/control_process_rb.html +1 -1
  61. data/doc/rdoc/files/lib/phusion_passenger/constants_rb.html +1 -1
  62. data/doc/rdoc/files/lib/phusion_passenger/message_channel_rb.html +26 -28
  63. data/doc/rdoc/files/lib/phusion_passenger/platform_info_rb.html +1 -1
  64. data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +1 -1
  65. data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +26 -28
  66. data/doc/rdoc/files/lib/phusion_passenger/railz/application_spawner_rb.html +1 -2
  67. data/doc/rdoc/files/lib/phusion_passenger/railz/framework_spawner_rb.html +1 -1
  68. data/doc/rdoc/files/lib/phusion_passenger/railz/request_handler_rb.html +26 -28
  69. data/doc/rdoc/files/lib/phusion_passenger/spawn_manager_rb.html +26 -28
  70. data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +34 -36
  71. data/doc/rdoc/fr_class_index.html +1 -0
  72. data/doc/rdoc/fr_method_index.html +72 -68
  73. data/ext/apache2/Configuration.cpp +69 -15
  74. data/ext/apache2/Configuration.h +37 -2
  75. data/ext/apache2/Hooks.cpp +167 -59
  76. data/ext/common/ApplicationPoolServerExecutable.cpp +1 -1
  77. data/ext/common/MessageChannel.h +4 -4
  78. data/ext/common/StandardApplicationPool.h +1 -1
  79. data/ext/common/Timer.h +2 -0
  80. data/ext/common/Version.h +1 -1
  81. data/ext/nginx/Configuration.c +3 -3
  82. data/ext/nginx/ContentHandler.c +16 -4
  83. data/ext/nginx/HelperServer.cpp +1 -1
  84. data/ext/oxt/system_calls.cpp +6 -1
  85. data/ext/oxt/thread.hpp +17 -2
  86. data/ext/phusion_passenger/native_support.c +4 -4
  87. data/lib/phusion_passenger/abstract_request_handler.rb +3 -3
  88. data/lib/phusion_passenger/abstract_server.rb +1 -0
  89. data/lib/phusion_passenger/constants.rb +1 -1
  90. data/lib/phusion_passenger/message_channel.rb +1 -0
  91. data/lib/phusion_passenger/platform_info.rb +3 -2
  92. data/lib/phusion_passenger/rack/request_handler.rb +11 -7
  93. data/lib/phusion_passenger/railz/application_spawner.rb +7 -4
  94. data/lib/phusion_passenger/railz/request_handler.rb +1 -0
  95. data/lib/phusion_passenger/spawn_manager.rb +1 -0
  96. data/lib/phusion_passenger/utils.rb +38 -20
  97. data/test/integration_tests/apache2_tests.rb +162 -100
  98. data/test/integration_tests/mycook_spec.rb +63 -62
  99. data/test/integration_tests/nginx_tests.rb +12 -5
  100. data/test/ruby/utils_spec.rb +98 -14
  101. data/test/stub/apache2/httpd.conf.erb +2 -1
  102. data/test/stub/rails_apps/mycook/app/controllers/welcome_controller.rb +8 -0
  103. data/test/support/apache2_controller.rb +5 -1
  104. data/test/support/test_helper.rb +42 -13
  105. metadata +7 -137
@@ -63,7 +63,7 @@
63
63
  </tr>
64
64
  <tr>
65
65
  <td>Modified:</td>
66
- <td>Wed Jun 10 10:12:29 +0200 2009</td>
66
+ <td>Mon Aug 31 15:39:27 +0200 2009</td>
67
67
  </tr>
68
68
  </table>
69
69
  </td></tr>
@@ -76,34 +76,32 @@
76
76
  <div id="content">
77
77
 
78
78
  <div class="description"><p>
79
- Phusion Passenger - <a href="http://www.modrails.com">www.modrails.com</a>/
80
- Copyright (c) 2008, 2009 Phusion
81
- </p>
82
- <p>
83
- &quot;Phusion Passenger&quot; is a trademark of Hongli Lai &amp; Ninh Bui.
84
- </p>
85
- <p>
86
- Permission is hereby granted, free of charge, to any person obtaining a
87
- copy of this software and associated documentation files (the
88
- &quot;Software&quot;), to deal in the Software without restriction,
89
- including without limitation the rights to use, copy, modify, merge,
90
- publish, distribute, sublicense, and/or sell copies of the Software, and to
91
- permit persons to whom the Software is furnished to do so, subject to the
92
- following conditions:
93
- </p>
94
- <p>
95
- The above copyright notice and this permission notice shall be included in
96
- all copies or substantial portions of the Software.
97
- </p>
98
- <p>
99
- THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND,
100
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
101
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
102
- NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
103
- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
104
- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
105
- USE OR OTHER DEALINGS IN THE SOFTWARE.
79
+ encoding: binary
106
80
  </p>
81
+ <pre>
82
+ Phusion Passenger - http://www.modrails.com/
83
+ Copyright (c) 2008, 2009 Phusion
84
+
85
+ &quot;Phusion Passenger&quot; is a trademark of Hongli Lai &amp; Ninh Bui.
86
+
87
+ Permission is hereby granted, free of charge, to any person obtaining a copy
88
+ of this software and associated documentation files (the &quot;Software&quot;), to deal
89
+ in the Software without restriction, including without limitation the rights
90
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
91
+ copies of the Software, and to permit persons to whom the Software is
92
+ furnished to do so, subject to the following conditions:
93
+
94
+ The above copyright notice and this permission notice shall be included in
95
+ all copies or substantial portions of the Software.
96
+
97
+ THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
98
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
99
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
100
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
101
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
102
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
103
+ THE SOFTWARE.
104
+ </pre>
107
105
  </div>
108
106
 
109
107
  <div class="sectiontitle">Required Files</div>
@@ -63,7 +63,7 @@
63
63
  </tr>
64
64
  <tr>
65
65
  <td>Modified:</td>
66
- <td>Wed Jun 10 10:12:29 +0200 2009</td>
66
+ <td>Mon Aug 31 15:39:27 +0200 2009</td>
67
67
  </tr>
68
68
  </table>
69
69
  </td></tr>
@@ -76,34 +76,32 @@
76
76
  <div id="content">
77
77
 
78
78
  <div class="description"><p>
79
- Phusion Passenger - <a href="http://www.modrails.com">www.modrails.com</a>/
80
- Copyright (c) 2008, 2009 Phusion
81
- </p>
82
- <p>
83
- &quot;Phusion Passenger&quot; is a trademark of Hongli Lai &amp; Ninh Bui.
84
- </p>
85
- <p>
86
- Permission is hereby granted, free of charge, to any person obtaining a
87
- copy of this software and associated documentation files (the
88
- &quot;Software&quot;), to deal in the Software without restriction,
89
- including without limitation the rights to use, copy, modify, merge,
90
- publish, distribute, sublicense, and/or sell copies of the Software, and to
91
- permit persons to whom the Software is furnished to do so, subject to the
92
- following conditions:
93
- </p>
94
- <p>
95
- The above copyright notice and this permission notice shall be included in
96
- all copies or substantial portions of the Software.
97
- </p>
98
- <p>
99
- THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND,
100
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
101
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
102
- NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
103
- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
104
- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
105
- USE OR OTHER DEALINGS IN THE SOFTWARE.
79
+ encoding: binary
106
80
  </p>
81
+ <pre>
82
+ Phusion Passenger - http://www.modrails.com/
83
+ Copyright (c) 2008, 2009 Phusion
84
+
85
+ &quot;Phusion Passenger&quot; is a trademark of Hongli Lai &amp; Ninh Bui.
86
+
87
+ Permission is hereby granted, free of charge, to any person obtaining a copy
88
+ of this software and associated documentation files (the &quot;Software&quot;), to deal
89
+ in the Software without restriction, including without limitation the rights
90
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
91
+ copies of the Software, and to permit persons to whom the Software is
92
+ furnished to do so, subject to the following conditions:
93
+
94
+ The above copyright notice and this permission notice shall be included in
95
+ all copies or substantial portions of the Software.
96
+
97
+ THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
98
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
99
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
100
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
101
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
102
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
103
+ THE SOFTWARE.
104
+ </pre>
107
105
  </div>
108
106
 
109
107
  <div class="sectiontitle">Required Files</div>
@@ -143,10 +141,10 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
143
141
  <p class="source-link">[ <a href="javascript:toggleSource('M000001_source')" id="l_M000001_source">show source</a> ]</p>
144
142
  <div id="M000001_source" class="dyn-source">
145
143
  <pre>
146
- <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 566</span>
147
- 566: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">recv_io</span>
148
- 567: <span class="ruby-keyword kw">super</span>
149
- 568: <span class="ruby-keyword kw">end</span>
144
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 584</span>
145
+ 584: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">recv_io</span>
146
+ 585: <span class="ruby-keyword kw">super</span>
147
+ 586: <span class="ruby-keyword kw">end</span>
150
148
  </pre>
151
149
  </div>
152
150
  </div>
@@ -159,10 +157,10 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
159
157
  <p class="source-link">[ <a href="javascript:toggleSource('M000002_source')" id="l_M000002_source">show source</a> ]</p>
160
158
  <div id="M000002_source" class="dyn-source">
161
159
  <pre>
162
- <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 570</span>
163
- 570: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">send_io</span>(<span class="ruby-identifier">io</span>)
164
- 571: <span class="ruby-keyword kw">super</span>
165
- 572: <span class="ruby-keyword kw">end</span>
160
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 588</span>
161
+ 588: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">send_io</span>(<span class="ruby-identifier">io</span>)
162
+ 589: <span class="ruby-keyword kw">super</span>
163
+ 590: <span class="ruby-keyword kw">end</span>
166
164
  </pre>
167
165
  </div>
168
166
  </div>
@@ -80,6 +80,7 @@
80
80
  <a href="classes/PhusionPassenger/SpawnManager.html">PhusionPassenger::SpawnManager</a><br />
81
81
  <a href="classes/PhusionPassenger/UnknownError.html">PhusionPassenger::UnknownError</a><br />
82
82
  <a href="classes/PhusionPassenger/Utils.html">PhusionPassenger::Utils</a><br />
83
+ <a href="classes/PhusionPassenger/Utils/PseudoIO.html">PhusionPassenger::Utils::PseudoIO</a><br />
83
84
  <a href="classes/PhusionPassenger/VersionNotFound.html">PhusionPassenger::VersionNotFound</a><br />
84
85
  <a href="classes/PhusionPassenger/WSGI.html">PhusionPassenger::WSGI</a><br />
85
86
  <a href="classes/PhusionPassenger/WSGI/ApplicationSpawner.html">PhusionPassenger::WSGI::ApplicationSpawner</a><br />
@@ -42,8 +42,8 @@
42
42
  <body>
43
43
  <div class="banner">Methods</div>
44
44
  <div class="entries">
45
- <a href="classes/PhusionPassenger/HTMLTemplate.html#M000111">[]= (PhusionPassenger::HTMLTemplate)</a><br />
46
- <a href="classes/PhusionPassenger/ConsoleTextTemplate.html#M000127">[]= (PhusionPassenger::ConsoleTextTemplate)</a><br />
45
+ <a href="classes/PhusionPassenger/ConsoleTextTemplate.html#M000131">[]= (PhusionPassenger::ConsoleTextTemplate)</a><br />
46
+ <a href="classes/PhusionPassenger/HTMLTemplate.html#M000115">[]= (PhusionPassenger::HTMLTemplate)</a><br />
47
47
  <a href="classes/PhusionPassenger/NativeSupport.html#M000061">accept (PhusionPassenger::NativeSupport)</a><br />
48
48
  <a href="classes/PlatformInfo.html#M000019">apache2_bindir (PlatformInfo)</a><br />
49
49
  <a href="classes/PlatformInfo.html#M000024">apache2_module_cflags (PlatformInfo)</a><br />
@@ -66,72 +66,75 @@
66
66
  <a href="classes/PhusionPassenger/Utils.html#M000078">assert_valid_username (PhusionPassenger::Utils)</a><br />
67
67
  <a href="classes/Exception.html#M000008">backtrace_string (Exception)</a><br />
68
68
  <a href="classes/PhusionPassenger/AdminTools/ControlProcess.html#M000070">backtraces (PhusionPassenger::AdminTools::ControlProcess)</a><br />
69
- <a href="classes/PhusionPassenger/AbstractServer.html#M000135">before_fork (PhusionPassenger::AbstractServer)</a><br />
69
+ <a href="classes/PhusionPassenger/AbstractServer.html#M000139">before_fork (PhusionPassenger::AbstractServer)</a><br />
70
70
  <a href="classes/PhusionPassenger.html#M000035">call_event (PhusionPassenger)</a><br />
71
71
  <a href="classes/PhusionPassenger/Utils.html#M000074">canonicalize_path (PhusionPassenger::Utils)</a><br />
72
- <a href="classes/PhusionPassenger/AbstractServerCollection.html#M000104">check_idle_servers! (PhusionPassenger::AbstractServerCollection)</a><br />
73
- <a href="classes/PhusionPassenger/AbstractServerCollection.html#M000108">cleanup (PhusionPassenger::AbstractServerCollection)</a><br />
74
- <a href="classes/PhusionPassenger/AbstractRequestHandler.html#M000121">cleanup (PhusionPassenger::AbstractRequestHandler)</a><br />
75
- <a href="classes/PhusionPassenger/SpawnManager.html#M000119">cleanup (PhusionPassenger::SpawnManager)</a><br />
76
- <a href="classes/PhusionPassenger/AbstractServerCollection.html#M000107">clear (PhusionPassenger::AbstractServerCollection)</a><br />
77
- <a href="classes/PhusionPassenger/AbstractServer.html#M000141">client (PhusionPassenger::AbstractServer)</a><br />
78
- <a href="classes/PhusionPassenger/Application.html#M000115">close (PhusionPassenger::Application)</a><br />
79
- <a href="classes/PhusionPassenger/MessageChannel.html#M000152">close (PhusionPassenger::MessageChannel)</a><br />
72
+ <a href="classes/PhusionPassenger/AbstractServerCollection.html#M000108">check_idle_servers! (PhusionPassenger::AbstractServerCollection)</a><br />
73
+ <a href="classes/PhusionPassenger/AbstractRequestHandler.html#M000125">cleanup (PhusionPassenger::AbstractRequestHandler)</a><br />
74
+ <a href="classes/PhusionPassenger/SpawnManager.html#M000123">cleanup (PhusionPassenger::SpawnManager)</a><br />
75
+ <a href="classes/PhusionPassenger/AbstractServerCollection.html#M000112">cleanup (PhusionPassenger::AbstractServerCollection)</a><br />
76
+ <a href="classes/PhusionPassenger/AbstractServerCollection.html#M000111">clear (PhusionPassenger::AbstractServerCollection)</a><br />
77
+ <a href="classes/PhusionPassenger/AbstractServer.html#M000145">client (PhusionPassenger::AbstractServer)</a><br />
78
+ <a href="classes/PhusionPassenger/MessageChannel.html#M000156">close (PhusionPassenger::MessageChannel)</a><br />
79
+ <a href="classes/PhusionPassenger/Application.html#M000119">close (PhusionPassenger::Application)</a><br />
80
80
  <a href="classes/PhusionPassenger/NativeSupport.html#M000062">close_all_file_descriptors (PhusionPassenger::NativeSupport)</a><br />
81
81
  <a href="classes/PhusionPassenger/Utils.html#M000080">close_all_io_objects_for_fds (PhusionPassenger::Utils)</a><br />
82
82
  <a href="classes/IO.html#M000007">close_on_exec! (IO)</a><br />
83
83
  <a href="classes/GC.html#M000033">copy_on_write_friendly? (GC)</a><br />
84
84
  <a href="classes/PhusionPassenger/NativeSupport.html#M000060">create_unix_socket (PhusionPassenger::NativeSupport)</a><br />
85
85
  <a href="classes/PlatformInfo.html#M000023">debugging_cflags (PlatformInfo)</a><br />
86
- <a href="classes/PhusionPassenger/AbstractServer.html#M000138">define_message_handler (PhusionPassenger::AbstractServer)</a><br />
87
- <a href="classes/PhusionPassenger/AbstractServer.html#M000139">define_signal_handler (PhusionPassenger::AbstractServer)</a><br />
88
- <a href="classes/PhusionPassenger/AbstractServerCollection.html#M000102">delete (PhusionPassenger::AbstractServerCollection)</a><br />
89
- <a href="classes/PhusionPassenger/Application.html#M000113">detect_framework_version (PhusionPassenger::Application)</a><br />
86
+ <a href="classes/PhusionPassenger/AbstractServer.html#M000142">define_message_handler (PhusionPassenger::AbstractServer)</a><br />
87
+ <a href="classes/PhusionPassenger/AbstractServer.html#M000143">define_signal_handler (PhusionPassenger::AbstractServer)</a><br />
88
+ <a href="classes/PhusionPassenger/AbstractServerCollection.html#M000106">delete (PhusionPassenger::AbstractServerCollection)</a><br />
89
+ <a href="classes/PhusionPassenger/Application.html#M000117">detect_framework_version (PhusionPassenger::Application)</a><br />
90
90
  <a href="classes/PhusionPassenger/NativeSupport.html#M000063">disable_stdio_buffering (PhusionPassenger::NativeSupport)</a><br />
91
91
  <a href="classes/PhusionPassenger/AdminTools/ControlProcess.html#M000072">domains (PhusionPassenger::AdminTools::ControlProcess)</a><br />
92
- <a href="classes/PhusionPassenger/AbstractServerCollection.html#M000105">each (PhusionPassenger::AbstractServerCollection)</a><br />
93
- <a href="classes/PhusionPassenger/AbstractServerCollection.html#M000106">each_pair (PhusionPassenger::AbstractServerCollection)</a><br />
94
- <a href="classes/PhusionPassenger/AbstractServerCollection.html#M000101">empty? (PhusionPassenger::AbstractServerCollection)</a><br />
92
+ <a href="classes/PhusionPassenger/Utils/PseudoIO.html#M000095">done! (PhusionPassenger::Utils::PseudoIO)</a><br />
93
+ <a href="classes/PhusionPassenger/AbstractServerCollection.html#M000109">each (PhusionPassenger::AbstractServerCollection)</a><br />
94
+ <a href="classes/PhusionPassenger/AbstractServerCollection.html#M000110">each_pair (PhusionPassenger::AbstractServerCollection)</a><br />
95
+ <a href="classes/PhusionPassenger/AbstractServerCollection.html#M000105">empty? (PhusionPassenger::AbstractServerCollection)</a><br />
95
96
  <a href="classes/PhusionPassenger/Railz/CGIFixed.html#M000045">env_table (PhusionPassenger::Railz::CGIFixed)</a><br />
96
- <a href="classes/PhusionPassenger/MessageChannel.html#M000151">fileno (PhusionPassenger::MessageChannel)</a><br />
97
- <a href="classes/PhusionPassenger/AbstractServer.html#M000143">fileno_of (PhusionPassenger::AbstractServer)</a><br />
98
- <a href="classes/PhusionPassenger/AbstractServer.html#M000137">finalize_server (PhusionPassenger::AbstractServer)</a><br />
97
+ <a href="classes/PhusionPassenger/MessageChannel.html#M000155">fileno (PhusionPassenger::MessageChannel)</a><br />
98
+ <a href="classes/PhusionPassenger/AbstractServer.html#M000147">fileno_of (PhusionPassenger::AbstractServer)</a><br />
99
+ <a href="classes/PhusionPassenger/AbstractServer.html#M000141">finalize_server (PhusionPassenger::AbstractServer)</a><br />
99
100
  <a href="classes/PlatformInfo.html#M000011">find_command (PlatformInfo)</a><br />
100
101
  <a href="classes/PhusionPassenger/AdminTools/ControlProcess.html#M000067">for_pid (PhusionPassenger::AdminTools::ControlProcess)</a><br />
101
- <a href="classes/PhusionPassenger/AbstractServerCollection.html#M000100">has_key? (PhusionPassenger::AbstractServerCollection)</a><br />
102
+ <a href="classes/PhusionPassenger/AbstractServerCollection.html#M000104">has_key? (PhusionPassenger::AbstractServerCollection)</a><br />
102
103
  <a href="classes/PlatformInfo.html#M000016">httpd (PlatformInfo)</a><br />
103
- <a href="classes/PhusionPassenger/AbstractServer.html#M000136">initialize_server (PhusionPassenger::AbstractServer)</a><br />
104
+ <a href="classes/PhusionPassenger/AbstractServer.html#M000140">initialize_server (PhusionPassenger::AbstractServer)</a><br />
104
105
  <a href="classes/PhusionPassenger/AdminTools/ControlProcess.html#M000073">instances (PhusionPassenger::AdminTools::ControlProcess)</a><br />
105
106
  <a href="classes/PlatformInfo.html#M000031">library_extension (PlatformInfo)</a><br />
106
107
  <a href="classes/PlatformInfo.html#M000032">linux_distro (PlatformInfo)</a><br />
107
108
  <a href="classes/PhusionPassenger/AdminTools/ControlProcess.html#M000066">list (PhusionPassenger::AdminTools::ControlProcess)</a><br />
108
109
  <a href="classes/Signal.html#M000010">list_trappable (Signal)</a><br />
109
- <a href="classes/PhusionPassenger/AbstractServerCollection.html#M000099">lookup_or_add (PhusionPassenger::AbstractServerCollection)</a><br />
110
+ <a href="classes/PhusionPassenger/AbstractServerCollection.html#M000103">lookup_or_add (PhusionPassenger::AbstractServerCollection)</a><br />
110
111
  <a href="classes/PhusionPassenger/Utils.html#M000087">lower_privilege (PhusionPassenger::Utils)</a><br />
111
- <a href="classes/PhusionPassenger/AbstractRequestHandler.html#M000123">main_loop (PhusionPassenger::AbstractRequestHandler)</a><br />
112
- <a href="classes/PhusionPassenger/AbstractRequestHandler.html#M000122">main_loop_running? (PhusionPassenger::AbstractRequestHandler)</a><br />
112
+ <a href="classes/PhusionPassenger/AbstractRequestHandler.html#M000127">main_loop (PhusionPassenger::AbstractRequestHandler)</a><br />
113
+ <a href="classes/PhusionPassenger/AbstractRequestHandler.html#M000126">main_loop_running? (PhusionPassenger::AbstractRequestHandler)</a><br />
113
114
  <a href="classes/PhusionPassenger/Utils.html#M000081">marshal_exception (PhusionPassenger::Utils)</a><br />
115
+ <a href="classes/PhusionPassenger/Utils/PseudoIO.html#M000096">method_missing (PhusionPassenger::Utils::PseudoIO)</a><br />
114
116
  <a href="classes/PhusionPassenger.html#M000036">natively_packaged? (PhusionPassenger)</a><br />
115
- <a href="classes/PhusionPassenger/AbstractRequestHandler.html#M000120">new (PhusionPassenger::AbstractRequestHandler)</a><br />
116
- <a href="classes/PhusionPassenger/AdminTools/ControlProcess.html#M000068">new (PhusionPassenger::AdminTools::ControlProcess)</a><br />
117
+ <a href="classes/PhusionPassenger/AbstractServer.html#M000133">new (PhusionPassenger::AbstractServer)</a><br />
117
118
  <a href="classes/PhusionPassenger/Railz/FrameworkSpawner.html#M000039">new (PhusionPassenger::Railz::FrameworkSpawner)</a><br />
118
- <a href="classes/PhusionPassenger/Railz/CGIFixed.html#M000043">new (PhusionPassenger::Railz::CGIFixed)</a><br />
119
119
  <a href="classes/PhusionPassenger/Rack/RequestHandler.html#M000056">new (PhusionPassenger::Rack::RequestHandler)</a><br />
120
- <a href="classes/PhusionPassenger/AbstractServerCollection.html#M000097">new (PhusionPassenger::AbstractServerCollection)</a><br />
121
- <a href="classes/PhusionPassenger/VersionNotFound.html#M000094">new (PhusionPassenger::VersionNotFound)</a><br />
122
- <a href="classes/PhusionPassenger/AbstractServer.html#M000129">new (PhusionPassenger::AbstractServer)</a><br />
123
- <a href="classes/PhusionPassenger/UnknownError.html#M000125">new (PhusionPassenger::UnknownError)</a><br />
124
- <a href="classes/PhusionPassenger/InitializationError.html#M000096">new (PhusionPassenger::InitializationError)</a><br />
125
- <a href="classes/PhusionPassenger/AbstractInstaller.html#M000153">new (PhusionPassenger::AbstractInstaller)</a><br />
126
- <a href="classes/PhusionPassenger/Railz/RequestHandler.html#M000052">new (PhusionPassenger::Railz::RequestHandler)</a><br />
127
- <a href="classes/PhusionPassenger/AppInitError.html#M000095">new (PhusionPassenger::AppInitError)</a><br />
128
- <a href="classes/PhusionPassenger/Application.html#M000114">new (PhusionPassenger::Application)</a><br />
129
- <a href="classes/PhusionPassenger/ConsoleTextTemplate.html#M000126">new (PhusionPassenger::ConsoleTextTemplate)</a><br />
130
- <a href="classes/PhusionPassenger/MessageChannel.html#M000144">new (PhusionPassenger::MessageChannel)</a><br />
120
+ <a href="classes/PhusionPassenger/AbstractRequestHandler.html#M000124">new (PhusionPassenger::AbstractRequestHandler)</a><br />
121
+ <a href="classes/PhusionPassenger/AdminTools/ControlProcess.html#M000068">new (PhusionPassenger::AdminTools::ControlProcess)</a><br />
122
+ <a href="classes/PhusionPassenger/MessageChannel.html#M000148">new (PhusionPassenger::MessageChannel)</a><br />
131
123
  <a href="classes/PhusionPassenger/Railz/ApplicationSpawner.html#M000048">new (PhusionPassenger::Railz::ApplicationSpawner)</a><br />
132
- <a href="classes/PhusionPassenger/HTMLTemplate.html#M000110">new (PhusionPassenger::HTMLTemplate)</a><br />
133
- <a href="classes/PhusionPassenger/FrameworkInitError.html#M000109">new (PhusionPassenger::FrameworkInitError)</a><br />
134
- <a href="classes/PhusionPassenger/SpawnManager.html#M000116">new (PhusionPassenger::SpawnManager)</a><br />
124
+ <a href="classes/PhusionPassenger/SpawnManager.html#M000120">new (PhusionPassenger::SpawnManager)</a><br />
125
+ <a href="classes/PhusionPassenger/AbstractServerCollection.html#M000101">new (PhusionPassenger::AbstractServerCollection)</a><br />
126
+ <a href="classes/PhusionPassenger/InitializationError.html#M000100">new (PhusionPassenger::InitializationError)</a><br />
127
+ <a href="classes/PhusionPassenger/AppInitError.html#M000099">new (PhusionPassenger::AppInitError)</a><br />
128
+ <a href="classes/PhusionPassenger/Application.html#M000118">new (PhusionPassenger::Application)</a><br />
129
+ <a href="classes/PhusionPassenger/VersionNotFound.html#M000098">new (PhusionPassenger::VersionNotFound)</a><br />
130
+ <a href="classes/PhusionPassenger/AbstractInstaller.html#M000157">new (PhusionPassenger::AbstractInstaller)</a><br />
131
+ <a href="classes/PhusionPassenger/ConsoleTextTemplate.html#M000130">new (PhusionPassenger::ConsoleTextTemplate)</a><br />
132
+ <a href="classes/PhusionPassenger/HTMLTemplate.html#M000114">new (PhusionPassenger::HTMLTemplate)</a><br />
133
+ <a href="classes/PhusionPassenger/FrameworkInitError.html#M000113">new (PhusionPassenger::FrameworkInitError)</a><br />
134
+ <a href="classes/PhusionPassenger/Railz/RequestHandler.html#M000052">new (PhusionPassenger::Railz::RequestHandler)</a><br />
135
+ <a href="classes/PhusionPassenger/Utils/PseudoIO.html#M000094">new (PhusionPassenger::Utils::PseudoIO)</a><br />
136
+ <a href="classes/PhusionPassenger/Railz/CGIFixed.html#M000043">new (PhusionPassenger::Railz::CGIFixed)</a><br />
137
+ <a href="classes/PhusionPassenger/UnknownError.html#M000129">new (PhusionPassenger::UnknownError)</a><br />
135
138
  <a href="classes/PhusionPassenger.html#M000034">on_event (PhusionPassenger)</a><br />
136
139
  <a href="classes/PhusionPassenger/Utils.html#M000092">passenger_tmpdir (PhusionPassenger::Utils)</a><br />
137
140
  <a href="classes/PhusionPassenger/Utils.html#M000091">passenger_tmpdir (PhusionPassenger::Utils)</a><br />
@@ -140,61 +143,62 @@
140
143
  <a href="classes/PlatformInfo.html#M000022">portability_ldflags (PlatformInfo)</a><br />
141
144
  <a href="classes/PhusionPassenger/Utils.html#M000083">print_exception (PhusionPassenger::Utils)</a><br />
142
145
  <a href="classes/PhusionPassenger/AdminTools.html#M000065">process_is_alive? (PhusionPassenger::AdminTools)</a><br />
143
- <a href="classes/PhusionPassenger/Railz/RequestHandler.html#M000053">process_request (PhusionPassenger::Railz::RequestHandler)</a><br />
144
146
  <a href="classes/PhusionPassenger/Rack/RequestHandler.html#M000057">process_request (PhusionPassenger::Rack::RequestHandler)</a><br />
145
- <a href="classes/PhusionPassenger/AbstractServer.html#M000142">quit_main (PhusionPassenger::AbstractServer)</a><br />
147
+ <a href="classes/PhusionPassenger/Railz/RequestHandler.html#M000053">process_request (PhusionPassenger::Railz::RequestHandler)</a><br />
148
+ <a href="classes/PhusionPassenger/AbstractServer.html#M000146">quit_main (PhusionPassenger::AbstractServer)</a><br />
146
149
  <a href="classes/PlatformInfo.html#M000012">rake (PlatformInfo)</a><br />
147
- <a href="classes/PhusionPassenger/MessageChannel.html#M000145">read (PhusionPassenger::MessageChannel)</a><br />
148
- <a href="classes/PhusionPassenger/MessageChannel.html#M000146">read_scalar (PhusionPassenger::MessageChannel)</a><br />
150
+ <a href="classes/PhusionPassenger/MessageChannel.html#M000149">read (PhusionPassenger::MessageChannel)</a><br />
151
+ <a href="classes/PhusionPassenger/MessageChannel.html#M000150">read_scalar (PhusionPassenger::MessageChannel)</a><br />
149
152
  <a href="classes/PhusionPassenger/NativeSupport.html#M000059">recv_fd (PhusionPassenger::NativeSupport)</a><br />
150
153
  <a href="files/lib/phusion_passenger/utils_rb.html#M000001">recv_io (lib/phusion_passenger/utils.rb)</a><br />
154
+ <a href="classes/PhusionPassenger/MessageChannel.html#M000153">recv_io (PhusionPassenger::MessageChannel)</a><br />
151
155
  <a href="classes/IO.html#M000006">recv_io (IO)</a><br />
152
- <a href="classes/PhusionPassenger/MessageChannel.html#M000149">recv_io (PhusionPassenger::MessageChannel)</a><br />
153
- <a href="classes/PhusionPassenger/AbstractServerCollection.html#M000103">register_activity (PhusionPassenger::AbstractServerCollection)</a><br />
156
+ <a href="classes/PhusionPassenger/AbstractServerCollection.html#M000107">register_activity (PhusionPassenger::AbstractServerCollection)</a><br />
154
157
  <a href="classes/PhusionPassenger/Railz/FrameworkSpawner.html#M000042">reload (PhusionPassenger::Railz::FrameworkSpawner)</a><br />
155
- <a href="classes/PhusionPassenger/SpawnManager.html#M000118">reload (PhusionPassenger::SpawnManager)</a><br />
158
+ <a href="classes/PhusionPassenger/SpawnManager.html#M000122">reload (PhusionPassenger::SpawnManager)</a><br />
156
159
  <a href="classes/PhusionPassenger/Utils.html#M000085">report_app_init_status (PhusionPassenger::Utils)</a><br />
157
- <a href="classes/PhusionPassenger/ConsoleTextTemplate.html#M000128">result (PhusionPassenger::ConsoleTextTemplate)</a><br />
158
- <a href="classes/PhusionPassenger/HTMLTemplate.html#M000112">result (PhusionPassenger::HTMLTemplate)</a><br />
160
+ <a href="classes/PhusionPassenger/Utils/PseudoIO.html#M000097">respond_to? (PhusionPassenger::Utils::PseudoIO)</a><br />
161
+ <a href="classes/PhusionPassenger/ConsoleTextTemplate.html#M000132">result (PhusionPassenger::ConsoleTextTemplate)</a><br />
162
+ <a href="classes/PhusionPassenger/HTMLTemplate.html#M000116">result (PhusionPassenger::HTMLTemplate)</a><br />
159
163
  <a href="classes/PlatformInfo.html#M000013">rspec (PlatformInfo)</a><br />
160
164
  <a href="classes/PhusionPassenger/Utils.html#M000084">safe_fork (PhusionPassenger::Utils)</a><br />
161
165
  <a href="classes/PhusionPassenger/Utils.html#M000090">sanitize_spawn_options (PhusionPassenger::Utils)</a><br />
162
166
  <a href="classes/PhusionPassenger/NativeSupport.html#M000058">send_fd (PhusionPassenger::NativeSupport)</a><br />
163
- <a href="files/lib/phusion_passenger/utils_rb.html#M000002">send_io (lib/phusion_passenger/utils.rb)</a><br />
164
167
  <a href="classes/IO.html#M000005">send_io (IO)</a><br />
165
- <a href="classes/PhusionPassenger/MessageChannel.html#M000150">send_io (PhusionPassenger::MessageChannel)</a><br />
166
- <a href="classes/PhusionPassenger/AbstractServer.html#M000140">server (PhusionPassenger::AbstractServer)</a><br />
167
- <a href="classes/PhusionPassenger/AbstractServer.html#M000134">server_pid (PhusionPassenger::AbstractServer)</a><br />
168
- <a href="classes/PhusionPassenger/SpawnManager.html#M000117">spawn_application (PhusionPassenger::SpawnManager)</a><br />
168
+ <a href="classes/PhusionPassenger/MessageChannel.html#M000154">send_io (PhusionPassenger::MessageChannel)</a><br />
169
+ <a href="files/lib/phusion_passenger/utils_rb.html#M000002">send_io (lib/phusion_passenger/utils.rb)</a><br />
170
+ <a href="classes/PhusionPassenger/AbstractServer.html#M000144">server (PhusionPassenger::AbstractServer)</a><br />
171
+ <a href="classes/PhusionPassenger/AbstractServer.html#M000138">server_pid (PhusionPassenger::AbstractServer)</a><br />
172
+ <a href="classes/PhusionPassenger/WSGI/ApplicationSpawner.html#M000038">spawn_application (PhusionPassenger::WSGI::ApplicationSpawner)</a><br />
169
173
  <a href="classes/PhusionPassenger/Rack/ApplicationSpawner.html#M000054">spawn_application (PhusionPassenger::Rack::ApplicationSpawner)</a><br />
174
+ <a href="classes/PhusionPassenger/Railz/FrameworkSpawner.html#M000041">spawn_application (PhusionPassenger::Railz::FrameworkSpawner)</a><br />
175
+ <a href="classes/PhusionPassenger/SpawnManager.html#M000121">spawn_application (PhusionPassenger::SpawnManager)</a><br />
170
176
  <a href="classes/PhusionPassenger/Rack/ApplicationSpawner.html#M000055">spawn_application (PhusionPassenger::Rack::ApplicationSpawner)</a><br />
171
- <a href="classes/PhusionPassenger/WSGI/ApplicationSpawner.html#M000038">spawn_application (PhusionPassenger::WSGI::ApplicationSpawner)</a><br />
172
177
  <a href="classes/PhusionPassenger/WSGI/ApplicationSpawner.html#M000037">spawn_application (PhusionPassenger::WSGI::ApplicationSpawner)</a><br />
173
178
  <a href="classes/PhusionPassenger/Railz/ApplicationSpawner.html#M000049">spawn_application (PhusionPassenger::Railz::ApplicationSpawner)</a><br />
174
- <a href="classes/PhusionPassenger/Railz/FrameworkSpawner.html#M000041">spawn_application (PhusionPassenger::Railz::FrameworkSpawner)</a><br />
175
179
  <a href="classes/PhusionPassenger/Railz/ApplicationSpawner.html#M000050">spawn_application! (PhusionPassenger::Railz::ApplicationSpawner)</a><br />
176
180
  <a href="classes/PhusionPassenger/Railz/ApplicationSpawner.html#M000051">start (PhusionPassenger::Railz::ApplicationSpawner)</a><br />
177
- <a href="classes/PhusionPassenger/AbstractServer.html#M000130">start (PhusionPassenger::AbstractServer)</a><br />
178
181
  <a href="classes/PhusionPassenger/Railz/FrameworkSpawner.html#M000040">start (PhusionPassenger::Railz::FrameworkSpawner)</a><br />
179
- <a href="classes/PhusionPassenger/AbstractInstaller.html#M000154">start (PhusionPassenger::AbstractInstaller)</a><br />
180
- <a href="classes/PhusionPassenger/AbstractRequestHandler.html#M000124">start_main_loop_thread (PhusionPassenger::AbstractRequestHandler)</a><br />
181
- <a href="classes/PhusionPassenger/AbstractServer.html#M000131">start_synchronously (PhusionPassenger::AbstractServer)</a><br />
182
- <a href="classes/PhusionPassenger/AbstractServer.html#M000133">started? (PhusionPassenger::AbstractServer)</a><br />
182
+ <a href="classes/PhusionPassenger/AbstractInstaller.html#M000158">start (PhusionPassenger::AbstractInstaller)</a><br />
183
+ <a href="classes/PhusionPassenger/AbstractServer.html#M000134">start (PhusionPassenger::AbstractServer)</a><br />
184
+ <a href="classes/PhusionPassenger/AbstractRequestHandler.html#M000128">start_main_loop_thread (PhusionPassenger::AbstractRequestHandler)</a><br />
185
+ <a href="classes/PhusionPassenger/AbstractServer.html#M000135">start_synchronously (PhusionPassenger::AbstractServer)</a><br />
186
+ <a href="classes/PhusionPassenger/AbstractServer.html#M000137">started? (PhusionPassenger::AbstractServer)</a><br />
183
187
  <a href="classes/PhusionPassenger/AdminTools/ControlProcess.html#M000069">status (PhusionPassenger::AdminTools::ControlProcess)</a><br />
184
188
  <a href="classes/PhusionPassenger/Railz/CGIFixed.html#M000046">stdinput (PhusionPassenger::Railz::CGIFixed)</a><br />
185
189
  <a href="classes/PhusionPassenger/Railz/CGIFixed.html#M000047">stdoutput (PhusionPassenger::Railz::CGIFixed)</a><br />
186
- <a href="classes/PhusionPassenger/AbstractServer.html#M000132">stop (PhusionPassenger::AbstractServer)</a><br />
190
+ <a href="classes/PhusionPassenger/AbstractServer.html#M000136">stop (PhusionPassenger::AbstractServer)</a><br />
187
191
  <a href="classes/RakeExtensions.html#M000009">subdir (RakeExtensions)</a><br />
188
192
  <a href="classes/PhusionPassenger/Utils.html#M000088">switch_to_user (PhusionPassenger::Utils)</a><br />
189
- <a href="classes/PhusionPassenger/AbstractServerCollection.html#M000098">synchronize (PhusionPassenger::AbstractServerCollection)</a><br />
193
+ <a href="classes/PhusionPassenger/AbstractServerCollection.html#M000102">synchronize (PhusionPassenger::AbstractServerCollection)</a><br />
190
194
  <a href="classes/ConditionVariable.html#M000003">timed_wait (ConditionVariable)</a><br />
191
195
  <a href="classes/ConditionVariable.html#M000004">timed_wait! (ConditionVariable)</a><br />
192
196
  <a href="classes/PhusionPassenger/AdminTools.html#M000064">tmpdir (PhusionPassenger::AdminTools)</a><br />
193
197
  <a href="classes/PhusionPassenger/Utils.html#M000089">to_boolean (PhusionPassenger::Utils)</a><br />
194
198
  <a href="classes/PhusionPassenger/Utils.html#M000086">unmarshal_and_raise_errors (PhusionPassenger::Utils)</a><br />
195
199
  <a href="classes/PhusionPassenger/Utils.html#M000082">unmarshal_exception (PhusionPassenger::Utils)</a><br />
196
- <a href="classes/PhusionPassenger/MessageChannel.html#M000147">write (PhusionPassenger::MessageChannel)</a><br />
197
- <a href="classes/PhusionPassenger/MessageChannel.html#M000148">write_scalar (PhusionPassenger::MessageChannel)</a><br />
200
+ <a href="classes/PhusionPassenger/MessageChannel.html#M000151">write (PhusionPassenger::MessageChannel)</a><br />
201
+ <a href="classes/PhusionPassenger/MessageChannel.html#M000152">write_scalar (PhusionPassenger::MessageChannel)</a><br />
198
202
  <a href="classes/PhusionPassenger/AdminTools/ControlProcess.html#M000071">xml (PhusionPassenger::AdminTools::ControlProcess)</a><br />
199
203
  </div>
200
204
  </body></html>
@@ -24,6 +24,16 @@
24
24
  */
25
25
  #include <algorithm>
26
26
  #include <cstdlib>
27
+
28
+ /* ap_config.h checks whether the compiler has support for C99's designated
29
+ * initializers, and defines AP_HAVE_DESIGNATED_INITIALIZER if it does. However,
30
+ * g++ does not support designated initializers, even when ap_config.h thinks
31
+ * it does. Here we undefine the macro to force httpd_config.h to not use
32
+ * designated initializers. This should fix compilation problems on some systems.
33
+ */
34
+ #include <ap_config.h>
35
+ #undef AP_HAVE_DESIGNATED_INITIALIZER
36
+
27
37
  #include "Configuration.h"
28
38
  #include "Utils.h"
29
39
 
@@ -84,6 +94,8 @@ passenger_config_create_dir(apr_pool_t *p, char *dirspec) {
84
94
  config->memoryLimitSpecified = false;
85
95
  config->highPerformance = DirConfig::UNSET;
86
96
  config->useGlobalQueue = DirConfig::UNSET;
97
+ config->resolveSymlinksInDocRoot = DirConfig::UNSET;
98
+ config->allowEncodedSlashes = DirConfig::UNSET;
87
99
  config->statThrottleRate = 0;
88
100
  config->statThrottleRateSpecified = false;
89
101
  config->restartDir = NULL;
@@ -129,6 +141,8 @@ passenger_config_merge_dir(apr_pool_t *p, void *basev, void *addv) {
129
141
  config->statThrottleRateSpecified = base->statThrottleRateSpecified || add->statThrottleRateSpecified;
130
142
  config->restartDir = (add->restartDir == NULL) ? base->restartDir : add->restartDir;
131
143
  config->uploadBufferDir = (add->uploadBufferDir == NULL) ? base->uploadBufferDir : add->uploadBufferDir;
144
+ config->resolveSymlinksInDocRoot = (add->resolveSymlinksInDocRoot == DirConfig::UNSET) ? base->resolveSymlinksInDocRoot : add->resolveSymlinksInDocRoot;
145
+ config->allowEncodedSlashes = (add->allowEncodedSlashes == DirConfig::UNSET) ? base->allowEncodedSlashes : add->allowEncodedSlashes;
132
146
  /*************************************/
133
147
  return config;
134
148
  }
@@ -410,6 +424,20 @@ cmd_passenger_upload_buffer_dir(cmd_parms *cmd, void *pcfg, const char *arg) {
410
424
  return NULL;
411
425
  }
412
426
 
427
+ static const char *
428
+ cmd_passenger_resolve_symlinks_in_document_root(cmd_parms *cmd, void *pcfg, int arg) {
429
+ DirConfig *config = (DirConfig *) pcfg;
430
+ config->resolveSymlinksInDocRoot = (arg) ? DirConfig::ENABLED : DirConfig::DISABLED;
431
+ return NULL;
432
+ }
433
+
434
+ static const char *
435
+ cmd_passenger_allow_encoded_slashes(cmd_parms *cmd, void *pcfg, int arg) {
436
+ DirConfig *config = (DirConfig *) pcfg;
437
+ config->allowEncodedSlashes = (arg) ? DirConfig::ENABLED : DirConfig::DISABLED;
438
+ return NULL;
439
+ }
440
+
413
441
 
414
442
  /*************************************************
415
443
  * Rails-specific settings
@@ -418,8 +446,16 @@ cmd_passenger_upload_buffer_dir(cmd_parms *cmd, void *pcfg, const char *arg) {
418
446
  static const char *
419
447
  cmd_rails_base_uri(cmd_parms *cmd, void *pcfg, const char *arg) {
420
448
  DirConfig *config = (DirConfig *) pcfg;
421
- config->railsBaseURIs.insert(arg);
422
- return NULL;
449
+ if (strlen(arg) == 0) {
450
+ return "RailsBaseURI may not be set to the empty string";
451
+ } else if (arg[0] != '/') {
452
+ return "RailsBaseURI must start with a slash (/)";
453
+ } else if (strlen(arg) > 1 && arg[strlen(arg) - 1] == '/') {
454
+ return "RailsBaseURI must not end with a slash (/)";
455
+ } else {
456
+ config->railsBaseURIs.insert(arg);
457
+ return NULL;
458
+ }
423
459
  }
424
460
 
425
461
  static const char *
@@ -500,8 +536,16 @@ cmd_rails_app_spawner_idle_time(cmd_parms *cmd, void *pcfg, const char *arg) {
500
536
  static const char *
501
537
  cmd_rack_base_uri(cmd_parms *cmd, void *pcfg, const char *arg) {
502
538
  DirConfig *config = (DirConfig *) pcfg;
503
- config->rackBaseURIs.insert(arg);
504
- return NULL;
539
+ if (strlen(arg) == 0) {
540
+ return "RackBaseURI may not be set to the empty string";
541
+ } else if (arg[0] != '/') {
542
+ return "RackBaseURI must start with a slash (/)";
543
+ } else if (strlen(arg) > 1 && arg[strlen(arg) - 1] == '/') {
544
+ return "RackBaseURI must not end with a slash (/)";
545
+ } else {
546
+ config->rackBaseURIs.insert(arg);
547
+ return NULL;
548
+ }
505
549
  }
506
550
 
507
551
  static const char *
@@ -545,9 +589,8 @@ cmd_rails_spawn_server(cmd_parms *cmd, void *pcfg, const char *arg) {
545
589
  }
546
590
 
547
591
 
548
- // Workaround for some weird C++-specific compiler error.
549
- typedef const char * (*Take0Func)();
550
592
  typedef const char * (*Take1Func)();
593
+ typedef const char * (*FlagFunc)();
551
594
 
552
595
  const command_rec passenger_commands[] = {
553
596
  // Passenger settings.
@@ -582,12 +625,12 @@ const command_rec passenger_commands[] = {
582
625
  RSRC_CONF,
583
626
  "The maximum number of seconds that an application may be idle before it gets terminated."),
584
627
  AP_INIT_FLAG("PassengerUseGlobalQueue",
585
- (Take1Func) cmd_passenger_use_global_queue,
628
+ (FlagFunc) cmd_passenger_use_global_queue,
586
629
  NULL,
587
630
  OR_OPTIONS | ACCESS_CONF | RSRC_CONF,
588
631
  "Enable or disable Passenger's global queuing mode mode."),
589
632
  AP_INIT_FLAG("PassengerUserSwitching",
590
- (Take1Func) cmd_passenger_user_switching,
633
+ (FlagFunc) cmd_passenger_user_switching,
591
634
  NULL,
592
635
  RSRC_CONF,
593
636
  "Whether to enable user switching support."),
@@ -607,12 +650,12 @@ const command_rec passenger_commands[] = {
607
650
  OR_LIMIT | ACCESS_CONF | RSRC_CONF,
608
651
  "The maximum number of requests that an application instance may process."),
609
652
  AP_INIT_FLAG("PassengerHighPerformance",
610
- (Take1Func) cmd_passenger_high_performance,
653
+ (FlagFunc) cmd_passenger_high_performance,
611
654
  NULL,
612
655
  OR_ALL,
613
656
  "Enable or disable Passenger's high performance mode."),
614
657
  AP_INIT_FLAG("PassengerEnabled",
615
- (Take1Func) cmd_passenger_enabled,
658
+ (FlagFunc) cmd_passenger_enabled,
616
659
  NULL,
617
660
  OR_ALL,
618
661
  "Enable or disable Phusion Passenger."),
@@ -636,6 +679,17 @@ const command_rec passenger_commands[] = {
636
679
  NULL,
637
680
  OR_OPTIONS,
638
681
  "The directory in which upload buffer files should be placed."),
682
+ AP_INIT_FLAG("PassengerResolveSymlinksInDocumentRoot",
683
+ (FlagFunc) cmd_passenger_resolve_symlinks_in_document_root,
684
+ NULL,
685
+ OR_OPTIONS | ACCESS_CONF | RSRC_CONF,
686
+ "Whether to resolve symlinks in the DocumentRoot path"),
687
+ AP_INIT_FLAG("PassengerAllowEncodedSlashes",
688
+ (FlagFunc) cmd_passenger_allow_encoded_slashes,
689
+ NULL,
690
+ OR_OPTIONS | ACCESS_CONF | RSRC_CONF,
691
+ "Whether to support encoded slashes in the URL"),
692
+
639
693
  /*****************************/
640
694
 
641
695
  // Rails-specific settings.
@@ -645,12 +699,12 @@ const command_rec passenger_commands[] = {
645
699
  OR_OPTIONS | ACCESS_CONF | RSRC_CONF,
646
700
  "Reserve the given URI to a Rails application."),
647
701
  AP_INIT_FLAG("RailsAutoDetect",
648
- (Take1Func) cmd_rails_auto_detect,
702
+ (FlagFunc) cmd_rails_auto_detect,
649
703
  NULL,
650
704
  RSRC_CONF,
651
705
  "Whether auto-detection of Ruby on Rails applications should be enabled."),
652
706
  AP_INIT_FLAG("RailsAllowModRewrite",
653
- (Take1Func) cmd_rails_allow_mod_rewrite,
707
+ (FlagFunc) cmd_rails_allow_mod_rewrite,
654
708
  NULL,
655
709
  RSRC_CONF,
656
710
  "Whether custom mod_rewrite rules should be allowed."),
@@ -682,7 +736,7 @@ const command_rec passenger_commands[] = {
682
736
  OR_OPTIONS | ACCESS_CONF | RSRC_CONF,
683
737
  "Reserve the given URI to a Rack application."),
684
738
  AP_INIT_FLAG("RackAutoDetect",
685
- (Take1Func) cmd_rack_auto_detect,
739
+ (FlagFunc) cmd_rack_auto_detect,
686
740
  NULL,
687
741
  RSRC_CONF,
688
742
  "Whether auto-detection of Rack applications should be enabled."),
@@ -694,7 +748,7 @@ const command_rec passenger_commands[] = {
694
748
 
695
749
  // WSGI-specific settings.
696
750
  AP_INIT_FLAG("PassengerWSGIAutoDetect",
697
- (Take1Func) cmd_wsgi_auto_detect,
751
+ (FlagFunc) cmd_wsgi_auto_detect,
698
752
  NULL,
699
753
  RSRC_CONF,
700
754
  "Whether auto-detection of WSGI applications should be enabled."),
@@ -721,7 +775,7 @@ const command_rec passenger_commands[] = {
721
775
  RSRC_CONF,
722
776
  "Deprecated option."),
723
777
  AP_INIT_FLAG("RailsUserSwitching",
724
- (Take1Func) cmd_passenger_user_switching,
778
+ (FlagFunc) cmd_passenger_user_switching,
725
779
  NULL,
726
780
  RSRC_CONF,
727
781
  "Deprecated option."),