passenger 2.2.1 → 2.2.2

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 (216) hide show
  1. data/Rakefile +66 -79
  2. data/bin/passenger-install-nginx-module +1 -1
  3. data/bin/passenger-memory-stats +1 -1
  4. data/bin/passenger-spawn-server +8 -2
  5. data/doc/Users guide Apache.html +33 -49
  6. data/doc/Users guide Apache.txt +28 -27
  7. data/doc/Users guide Nginx.html +9 -19
  8. data/doc/Users guide Nginx.txt +8 -20
  9. data/doc/cxxapi/Bucket_8h-source.html +1 -1
  10. data/doc/cxxapi/Configuration_8h-source.html +297 -300
  11. data/doc/cxxapi/DirectoryMapper_8h-source.html +1 -1
  12. data/doc/cxxapi/Hooks_8h-source.html +1 -1
  13. data/doc/cxxapi/annotated.html +1 -1
  14. data/doc/cxxapi/classHooks-members.html +1 -1
  15. data/doc/cxxapi/classHooks.html +1 -1
  16. data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +1 -1
  17. data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +1 -1
  18. data/doc/cxxapi/classes.html +1 -1
  19. data/doc/cxxapi/definitions_8h-source.html +1 -1
  20. data/doc/cxxapi/files.html +1 -1
  21. data/doc/cxxapi/functions.html +1 -1
  22. data/doc/cxxapi/functions_func.html +1 -1
  23. data/doc/cxxapi/graph_legend.html +1 -1
  24. data/doc/cxxapi/group__Configuration.html +1 -23
  25. data/doc/cxxapi/group__Core.html +1 -1
  26. data/doc/cxxapi/group__Hooks.html +1 -1
  27. data/doc/cxxapi/group__Support.html +1 -1
  28. data/doc/cxxapi/main.html +1 -1
  29. data/doc/cxxapi/modules.html +1 -1
  30. data/doc/users_guide_snippets/rackup_specifications.txt +4 -2
  31. data/ext/apache2/Configuration.h +0 -3
  32. data/ext/apache2/Hooks.cpp +5 -3
  33. data/ext/common/ApplicationPoolServer.h +1 -0
  34. data/ext/common/ApplicationPoolServerExecutable.cpp +5 -2
  35. data/ext/common/SpawnManager.h +1 -0
  36. data/ext/common/Utils.cpp +22 -23
  37. data/ext/common/Utils.h +32 -21
  38. data/ext/common/Version.h +31 -0
  39. data/ext/nginx/ContentHandler.c +61 -8
  40. data/ext/nginx/HelperServer.cpp +3 -0
  41. data/ext/nginx/HttpStatusExtractor.h +185 -0
  42. data/ext/nginx/StaticContentHandler.c +18 -3
  43. data/ext/nginx/config +2 -1
  44. data/ext/nginx/ngx_http_passenger_module.c +21 -15
  45. data/ext/oxt/backtrace.cpp +4 -2
  46. data/ext/oxt/spin_lock.hpp +3 -3
  47. data/lib/phusion_passenger/abstract_request_handler.rb +5 -3
  48. data/lib/phusion_passenger/admin_tools/control_process.rb +6 -1
  49. data/lib/phusion_passenger/constants.rb +2 -2
  50. data/lib/phusion_passenger/rack/application_spawner.rb +2 -1
  51. data/lib/phusion_passenger/rack/request_handler.rb +45 -35
  52. data/lib/phusion_passenger/templates/nginx/config_snippets.txt.erb +1 -1
  53. data/lib/phusion_passenger/utils.rb +13 -3
  54. data/misc/rake/cplusplus.rb +7 -0
  55. data/test/ApplicationPoolServer_ApplicationPoolTest.cpp +2 -0
  56. data/test/ApplicationPoolTest.cpp +39 -62
  57. data/test/CxxTestMain.cpp +6 -6
  58. data/test/HttpStatusExtractorTest.cpp +17 -0
  59. data/test/StandardApplicationPoolTest.cpp +2 -0
  60. data/test/UtilsTest.cpp +17 -28
  61. data/test/ruby/abstract_request_handler_spec.rb +3 -7
  62. data/test/ruby/utils_spec.rb +18 -13
  63. data/test/ruby/wsgi/application_spawner_spec.rb +5 -9
  64. data/test/stub/railsapp/app/controllers/{bar_controller_1.rb → bar_controller.rb} +0 -0
  65. data/test/stub/railsapp/app/controllers/bar_controller_1.txt +5 -0
  66. data/test/stub/railsapp/app/controllers/{bar_controller_2.rb → bar_controller_2.txt} +0 -0
  67. data/test/support/Support.h +20 -0
  68. data/test/support/config.rb +13 -0
  69. data/vendor/README +4 -3
  70. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/COPYING +1 -1
  71. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/KNOWN-ISSUES +0 -0
  72. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/README +54 -7
  73. data/vendor/rack-1.0.0-git/Rakefile +164 -0
  74. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack.rb +7 -3
  75. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/adapter/camping.rb +0 -0
  76. data/vendor/rack-1.0.0-git/lib/rack/auth/abstract/handler.rb +37 -0
  77. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/auth/abstract/request.rb +0 -0
  78. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/auth/basic.rb +0 -0
  79. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/auth/digest/md5.rb +1 -1
  80. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/auth/digest/nonce.rb +0 -0
  81. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/auth/digest/params.rb +0 -0
  82. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/auth/digest/request.rb +2 -2
  83. data/vendor/rack-1.0.0-git/lib/rack/auth/openid.rb +480 -0
  84. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/builder.rb +1 -5
  85. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/cascade.rb +0 -0
  86. data/vendor/rack-1.0.0-git/lib/rack/chunked.rb +49 -0
  87. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/commonlogger.rb +0 -0
  88. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/conditionalget.rb +4 -0
  89. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/content_length.rb +7 -3
  90. data/vendor/rack-1.0.0-git/lib/rack/content_type.rb +23 -0
  91. data/vendor/rack-1.0.0-git/lib/rack/deflater.rb +96 -0
  92. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/directory.rb +5 -2
  93. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/file.rb +4 -1
  94. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/handler.rb +22 -1
  95. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/handler/cgi.rb +7 -3
  96. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/handler/evented_mongrel.rb +0 -0
  97. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/handler/fastcgi.rb +26 -24
  98. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/handler/lsws.rb +7 -4
  99. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/handler/mongrel.rb +5 -3
  100. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/handler/scgi.rb +5 -3
  101. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/handler/swiftiplied_mongrel.rb +0 -0
  102. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/handler/thin.rb +3 -0
  103. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/handler/webrick.rb +11 -5
  104. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/head.rb +0 -0
  105. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/lint.rb +138 -66
  106. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/lobster.rb +0 -0
  107. data/vendor/rack-1.0.0-git/lib/rack/lock.rb +16 -0
  108. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/methodoverride.rb +0 -0
  109. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/mime.rb +4 -4
  110. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/mock.rb +42 -5
  111. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/recursive.rb +0 -0
  112. data/vendor/rack-1.0.0-git/lib/rack/reloader.rb +106 -0
  113. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/request.rb +46 -10
  114. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/response.rb +15 -3
  115. data/vendor/rack-1.0.0-git/lib/rack/rewindable_input.rb +98 -0
  116. data/vendor/rack-1.0.0-git/lib/rack/session/abstract/id.rb +142 -0
  117. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/session/cookie.rb +2 -0
  118. data/vendor/rack-1.0.0-git/lib/rack/session/memcache.rb +109 -0
  119. data/vendor/rack-1.0.0-git/lib/rack/session/pool.rb +100 -0
  120. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/showexceptions.rb +2 -1
  121. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/showstatus.rb +1 -1
  122. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/static.rb +0 -0
  123. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/urlmap.rb +12 -5
  124. data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/utils.rb +212 -65
  125. metadata +71 -170
  126. data/doc/rdoc/classes/ConditionVariable.html +0 -194
  127. data/doc/rdoc/classes/Exception.html +0 -120
  128. data/doc/rdoc/classes/GC.html +0 -113
  129. data/doc/rdoc/classes/IO.html +0 -169
  130. data/doc/rdoc/classes/PhusionPassenger.html +0 -238
  131. data/doc/rdoc/classes/PhusionPassenger/AbstractInstaller.html +0 -153
  132. data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +0 -506
  133. data/doc/rdoc/classes/PhusionPassenger/AbstractServer.html +0 -692
  134. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerAlreadyStarted.html +0 -97
  135. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerError.html +0 -96
  136. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerNotStarted.html +0 -97
  137. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/UnknownMessage.html +0 -96
  138. data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +0 -598
  139. data/doc/rdoc/classes/PhusionPassenger/AdminTools.html +0 -140
  140. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess.html +0 -264
  141. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess/Instance.html +0 -138
  142. data/doc/rdoc/classes/PhusionPassenger/AppInitError.html +0 -154
  143. data/doc/rdoc/classes/PhusionPassenger/Application.html +0 -283
  144. data/doc/rdoc/classes/PhusionPassenger/ConsoleTextTemplate.html +0 -172
  145. data/doc/rdoc/classes/PhusionPassenger/FrameworkInitError.html +0 -145
  146. data/doc/rdoc/classes/PhusionPassenger/HTMLTemplate.html +0 -175
  147. data/doc/rdoc/classes/PhusionPassenger/InitializationError.html +0 -141
  148. data/doc/rdoc/classes/PhusionPassenger/InvalidPath.html +0 -92
  149. data/doc/rdoc/classes/PhusionPassenger/MessageChannel.html +0 -489
  150. data/doc/rdoc/classes/PhusionPassenger/NativeSupport.html +0 -350
  151. data/doc/rdoc/classes/PhusionPassenger/Rack.html +0 -91
  152. data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner.html +0 -185
  153. data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +0 -184
  154. data/doc/rdoc/classes/PhusionPassenger/Railz.html +0 -95
  155. data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner.html +0 -419
  156. data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner/Error.html +0 -98
  157. data/doc/rdoc/classes/PhusionPassenger/Railz/CGIFixed.html +0 -200
  158. data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner.html +0 -443
  159. data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner/Error.html +0 -98
  160. data/doc/rdoc/classes/PhusionPassenger/Railz/RequestHandler.html +0 -154
  161. data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +0 -402
  162. data/doc/rdoc/classes/PhusionPassenger/UnknownError.html +0 -125
  163. data/doc/rdoc/classes/PhusionPassenger/Utils.html +0 -694
  164. data/doc/rdoc/classes/PhusionPassenger/VersionNotFound.html +0 -140
  165. data/doc/rdoc/classes/PhusionPassenger/WSGI.html +0 -89
  166. data/doc/rdoc/classes/PhusionPassenger/WSGI/ApplicationSpawner.html +0 -188
  167. data/doc/rdoc/classes/PlatformInfo.html +0 -831
  168. data/doc/rdoc/classes/RakeExtensions.html +0 -197
  169. data/doc/rdoc/classes/Signal.html +0 -134
  170. data/doc/rdoc/created.rid +0 -1
  171. data/doc/rdoc/files/DEVELOPERS_TXT.html +0 -240
  172. data/doc/rdoc/files/README.html +0 -157
  173. data/doc/rdoc/files/ext/phusion_passenger/native_support_c.html +0 -92
  174. data/doc/rdoc/files/lib/phusion_passenger/abstract_installer_rb.html +0 -129
  175. data/doc/rdoc/files/lib/phusion_passenger/abstract_request_handler_rb.html +0 -131
  176. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html +0 -126
  177. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_rb.html +0 -130
  178. data/doc/rdoc/files/lib/phusion_passenger/admin_tools/control_process_rb.html +0 -129
  179. data/doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html +0 -122
  180. data/doc/rdoc/files/lib/phusion_passenger/application_rb.html +0 -127
  181. data/doc/rdoc/files/lib/phusion_passenger/console_text_template_rb.html +0 -126
  182. data/doc/rdoc/files/lib/phusion_passenger/constants_rb.html +0 -122
  183. data/doc/rdoc/files/lib/phusion_passenger/dependencies_rb.html +0 -134
  184. data/doc/rdoc/files/lib/phusion_passenger/events_rb.html +0 -122
  185. data/doc/rdoc/files/lib/phusion_passenger/exceptions_rb.html +0 -122
  186. data/doc/rdoc/files/lib/phusion_passenger/html_template_rb.html +0 -126
  187. data/doc/rdoc/files/lib/phusion_passenger/message_channel_rb.html +0 -122
  188. data/doc/rdoc/files/lib/phusion_passenger/packaging_rb.html +0 -122
  189. data/doc/rdoc/files/lib/phusion_passenger/platform_info_rb.html +0 -127
  190. data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +0 -133
  191. data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +0 -126
  192. data/doc/rdoc/files/lib/phusion_passenger/railz/application_spawner_rb.html +0 -143
  193. data/doc/rdoc/files/lib/phusion_passenger/railz/cgi_fixed_rb.html +0 -126
  194. data/doc/rdoc/files/lib/phusion_passenger/railz/framework_spawner_rb.html +0 -145
  195. data/doc/rdoc/files/lib/phusion_passenger/railz/request_handler_rb.html +0 -127
  196. data/doc/rdoc/files/lib/phusion_passenger/simple_benchmarking_rb.html +0 -122
  197. data/doc/rdoc/files/lib/phusion_passenger/spawn_manager_rb.html +0 -161
  198. data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +0 -175
  199. data/doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html +0 -129
  200. data/doc/rdoc/files/misc/rake/extensions_rb.html +0 -130
  201. data/doc/rdoc/fr_class_index.html +0 -90
  202. data/doc/rdoc/fr_file_index.html +0 -76
  203. data/doc/rdoc/fr_method_index.html +0 -195
  204. data/doc/rdoc/index.html +0 -26
  205. data/doc/rdoc/rdoc-style.css +0 -187
  206. data/vendor/rack-0.9.1/AUTHORS +0 -8
  207. data/vendor/rack-0.9.1/ChangeLog +0 -1423
  208. data/vendor/rack-0.9.1/Rakefile +0 -188
  209. data/vendor/rack-0.9.1/SPEC +0 -129
  210. data/vendor/rack-0.9.1/lib/rack/auth/abstract/handler.rb +0 -28
  211. data/vendor/rack-0.9.1/lib/rack/auth/openid.rb +0 -438
  212. data/vendor/rack-0.9.1/lib/rack/deflater.rb +0 -87
  213. data/vendor/rack-0.9.1/lib/rack/reloader.rb +0 -64
  214. data/vendor/rack-0.9.1/lib/rack/session/abstract/id.rb +0 -153
  215. data/vendor/rack-0.9.1/lib/rack/session/memcache.rb +0 -97
  216. data/vendor/rack-0.9.1/lib/rack/session/pool.rb +0 -73
@@ -1243,25 +1243,15 @@ by about 33%. And it&#8217;s not hard to install.</td>
1243
1243
  </tr></table>
1244
1244
  </div>
1245
1245
  <h4 id="_passenger_max_instances_per_app_lt_integer_gt">5.8.2. passenger_max_instances_per_app &lt;integer&gt;</h4>
1246
- <div class="paragraph"><p>The maximum number of seconds that an application instance may be idle. That is,
1247
- if an application instance hasn&#8217;t received any traffic after the given number of
1248
- seconds, then it will be shutdown in order to conserve memory.</p></div>
1249
- <div class="paragraph"><p>Decreasing this value means that applications will have to be spawned
1250
- more often. Since spawning is a relatively slow operation, some visitors may
1251
- notice a small delay when they visit your Rails/Rack website. However, it will also
1252
- free up resources used by applications more quickly.</p></div>
1253
- <div class="paragraph"><p>The optimal value depends on the average time that a visitor spends on a single
1254
- Rails/Rack web page. We recommend a value of <tt>2 * x</tt>, where <tt>x</tt> is the average
1255
- number of seconds that a visitor spends on a single Rails/Rack web page. But your
1256
- mileage may vary.</p></div>
1257
- <div class="paragraph"><p>When this value is set to <em>0</em>, application instances will not be shutdown unless
1258
- it&#8217;s really necessary, i.e. when Phusion Passenger is out of worker processes
1259
- for a given application and one of the inactive application instances needs to
1260
- make place for another application instance. Setting the value to 0 is
1261
- recommended if you&#8217;re on a non-shared host that&#8217;s only running a few
1262
- applications, each which must be available at all times.</p></div>
1246
+ <div class="paragraph"><p>The maximum number of application instances that may be simultaneously active
1247
+ for a single application. This helps to make sure that a single application
1248
+ will not occupy all available slots in the application pool.</p></div>
1249
+ <div class="paragraph"><p>This value must be less than <a href="#PassengerMaxPoolSize">passenger_max_pool_size</a>. A value of 0
1250
+ means that there is no limit placed on the number of instances a single application
1251
+ may use, i.e. only the global limit of <a href="#PassengerMaxPoolSize">passenger_max_pool_size</a>
1252
+ will be enforced.</p></div>
1263
1253
  <div class="paragraph"><p>This option may only occur once, in the <em>http</em> configuration block.
1264
- The default value is <em>300</em>.</p></div>
1254
+ The default value is <em>0</em>.</p></div>
1265
1255
  <h4 id="PassengerPoolIdleTime">5.8.3. passenger_pool_idle_time &lt;integer&gt;</h4>
1266
1256
  <div class="paragraph"><p>The maximum number of seconds that an application instance may be idle. That is,
1267
1257
  if an application instance hasn&#8217;t received any traffic after the given number of
@@ -2269,7 +2259,7 @@ has no effect.</p></div>
2269
2259
  </div>
2270
2260
  <div id="footer">
2271
2261
  <div id="footer-text">
2272
- Last updated 2009-04-16 19:42:11 CEST
2262
+ Last updated 2009-04-25 13:32:58 CEST
2273
2263
  </div>
2274
2264
  </div>
2275
2265
  </body>
@@ -603,29 +603,17 @@ Edition>>. This allows you to reduce the memory usage of your Ruby on Rails appl
603
603
  by about 33%. And it's not hard to install.
604
604
 
605
605
  ==== passenger_max_instances_per_app <integer> ====
606
- The maximum number of seconds that an application instance may be idle. That is,
607
- if an application instance hasn't received any traffic after the given number of
608
- seconds, then it will be shutdown in order to conserve memory.
609
-
610
- Decreasing this value means that applications will have to be spawned
611
- more often. Since spawning is a relatively slow operation, some visitors may
612
- notice a small delay when they visit your Rails/Rack website. However, it will also
613
- free up resources used by applications more quickly.
614
-
615
- The optimal value depends on the average time that a visitor spends on a single
616
- Rails/Rack web page. We recommend a value of `2 * x`, where `x` is the average
617
- number of seconds that a visitor spends on a single Rails/Rack web page. But your
618
- mileage may vary.
606
+ The maximum number of application instances that may be simultaneously active
607
+ for a single application. This helps to make sure that a single application
608
+ will not occupy all available slots in the application pool.
619
609
 
620
- When this value is set to '0', application instances will not be shutdown unless
621
- it's really necessary, i.e. when Phusion Passenger is out of worker processes
622
- for a given application and one of the inactive application instances needs to
623
- make place for another application instance. Setting the value to 0 is
624
- recommended if you're on a non-shared host that's only running a few
625
- applications, each which must be available at all times.
610
+ This value must be less than <<PassengerMaxPoolSize,passenger_max_pool_size>>. A value of 0
611
+ means that there is no limit placed on the number of instances a single application
612
+ may use, i.e. only the global limit of <<PassengerMaxPoolSize,passenger_max_pool_size>>
613
+ will be enforced.
626
614
 
627
615
  This option may only occur once, in the 'http' configuration block.
628
- The default value is '300'.
616
+ The default value is '0'.
629
617
 
630
618
  [[PassengerPoolIdleTime]]
631
619
  ==== passenger_pool_idle_time <integer> ====
@@ -70,7 +70,7 @@
70
70
  <a name="l00049"></a>00049 <span class="preprocessor">#endif </span><span class="comment">/* _PASSENGER_BUCKET_H_ */</span>
71
71
  <a name="l00050"></a>00050
72
72
  </pre></div></div>
73
- <hr size="1"><address style="text-align: right;"><small>Generated on Sat Apr 18 20:08:25 2009 for Passenger by&nbsp;
73
+ <hr size="1"><address style="text-align: right;"><small>Generated on Sun Apr 26 13:02:37 2009 for Passenger by&nbsp;
74
74
  <a href="http://www.doxygen.org/index.html">
75
75
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
76
76
  </body>
@@ -65,318 +65,315 @@
65
65
  <a name="l00044"></a>00044 <span class="comment"> * @ingroup Core</span>
66
66
  <a name="l00045"></a>00045 <span class="comment"> * @{</span>
67
67
  <a name="l00046"></a>00046 <span class="comment"> */</span>
68
- <a name="l00047"></a>00047 <span class="comment"></span>
69
- <a name="l00048"></a>00048 <span class="comment">/** Module version number. */</span>
70
- <a name="l00049"></a><a class="code" href="group__Configuration.html#ga19398896775408d6ab7fd8ce2acd992">00049</a> <span class="preprocessor">#define PASSENGER_VERSION "2.2.1"</span>
71
- <a name="l00050"></a>00050 <span class="preprocessor"></span>
72
- <a name="l00051"></a>00051 <span class="preprocessor">#ifdef __cplusplus</span>
73
- <a name="l00052"></a>00052 <span class="preprocessor"></span><span class="preprocessor"> #include &lt;set&gt;</span>
74
- <a name="l00053"></a>00053 <span class="preprocessor"> #include &lt;string&gt;</span>
75
- <a name="l00054"></a>00054
76
- <a name="l00055"></a>00055 <span class="keyword">namespace </span>Passenger {
77
- <a name="l00056"></a>00056
78
- <a name="l00057"></a>00057 <span class="keyword">using namespace </span>std;
79
- <a name="l00058"></a>00058 <span class="comment"></span>
80
- <a name="l00059"></a>00059 <span class="comment"> /**</span>
81
- <a name="l00060"></a>00060 <span class="comment"> * Per-directory configuration information.</span>
82
- <a name="l00061"></a>00061 <span class="comment"> *</span>
83
- <a name="l00062"></a>00062 <span class="comment"> * Use the getter methods to query information, because those will return</span>
84
- <a name="l00063"></a>00063 <span class="comment"> * the default value if the value is not specified.</span>
85
- <a name="l00064"></a>00064 <span class="comment"> */</span>
86
- <a name="l00065"></a>00065 <span class="keyword">struct </span>DirConfig {
87
- <a name="l00066"></a>00066 <span class="keyword">enum</span> Threeway { ENABLED, DISABLED, UNSET };
88
- <a name="l00067"></a>00067 <span class="keyword">enum</span> SpawnMethod { SM_UNSET, SM_SMART, SM_SMART_LV2, SM_CONSERVATIVE };
89
- <a name="l00068"></a>00068
90
- <a name="l00069"></a>00069 Threeway enabled;
91
- <a name="l00070"></a>00070
92
- <a name="l00071"></a>00071 std::set&lt;std::string&gt; railsBaseURIs;
93
- <a name="l00072"></a>00072 std::set&lt;std::string&gt; rackBaseURIs;
68
+ <a name="l00047"></a>00047
69
+ <a name="l00048"></a>00048 <span class="preprocessor">#ifdef __cplusplus</span>
70
+ <a name="l00049"></a>00049 <span class="preprocessor"></span><span class="preprocessor"> #include &lt;set&gt;</span>
71
+ <a name="l00050"></a>00050 <span class="preprocessor"> #include &lt;string&gt;</span>
72
+ <a name="l00051"></a>00051
73
+ <a name="l00052"></a>00052 <span class="keyword">namespace </span>Passenger {
74
+ <a name="l00053"></a>00053
75
+ <a name="l00054"></a>00054 <span class="keyword">using namespace </span>std;
76
+ <a name="l00055"></a>00055 <span class="comment"></span>
77
+ <a name="l00056"></a>00056 <span class="comment"> /**</span>
78
+ <a name="l00057"></a>00057 <span class="comment"> * Per-directory configuration information.</span>
79
+ <a name="l00058"></a>00058 <span class="comment"> *</span>
80
+ <a name="l00059"></a>00059 <span class="comment"> * Use the getter methods to query information, because those will return</span>
81
+ <a name="l00060"></a>00060 <span class="comment"> * the default value if the value is not specified.</span>
82
+ <a name="l00061"></a>00061 <span class="comment"> */</span>
83
+ <a name="l00062"></a>00062 <span class="keyword">struct </span>DirConfig {
84
+ <a name="l00063"></a>00063 <span class="keyword">enum</span> Threeway { ENABLED, DISABLED, UNSET };
85
+ <a name="l00064"></a>00064 <span class="keyword">enum</span> SpawnMethod { SM_UNSET, SM_SMART, SM_SMART_LV2, SM_CONSERVATIVE };
86
+ <a name="l00065"></a>00065
87
+ <a name="l00066"></a>00066 Threeway enabled;
88
+ <a name="l00067"></a>00067
89
+ <a name="l00068"></a>00068 std::set&lt;std::string&gt; railsBaseURIs;
90
+ <a name="l00069"></a>00069 std::set&lt;std::string&gt; rackBaseURIs;
91
+ <a name="l00070"></a>00070 <span class="comment"></span>
92
+ <a name="l00071"></a>00071 <span class="comment"> /** Whether to autodetect Rails applications. */</span>
93
+ <a name="l00072"></a>00072 Threeway autoDetectRails;
94
94
  <a name="l00073"></a>00073 <span class="comment"></span>
95
- <a name="l00074"></a>00074 <span class="comment"> /** Whether to autodetect Rails applications. */</span>
96
- <a name="l00075"></a>00075 Threeway autoDetectRails;
95
+ <a name="l00074"></a>00074 <span class="comment"> /** Whether to autodetect Rack applications. */</span>
96
+ <a name="l00075"></a>00075 Threeway autoDetectRack;
97
97
  <a name="l00076"></a>00076 <span class="comment"></span>
98
- <a name="l00077"></a>00077 <span class="comment"> /** Whether to autodetect Rack applications. */</span>
99
- <a name="l00078"></a>00078 Threeway autoDetectRack;
98
+ <a name="l00077"></a>00077 <span class="comment"> /** Whether to autodetect WSGI applications. */</span>
99
+ <a name="l00078"></a>00078 Threeway autoDetectWSGI;
100
100
  <a name="l00079"></a>00079 <span class="comment"></span>
101
- <a name="l00080"></a>00080 <span class="comment"> /** Whether to autodetect WSGI applications. */</span>
102
- <a name="l00081"></a>00081 Threeway autoDetectWSGI;
101
+ <a name="l00080"></a>00080 <span class="comment"> /** Whether mod_rewrite should be allowed for Rails applications. */</span>
102
+ <a name="l00081"></a>00081 Threeway allowModRewrite;
103
103
  <a name="l00082"></a>00082 <span class="comment"></span>
104
- <a name="l00083"></a>00083 <span class="comment"> /** Whether mod_rewrite should be allowed for Rails applications. */</span>
105
- <a name="l00084"></a>00084 Threeway allowModRewrite;
106
- <a name="l00085"></a>00085 <span class="comment"></span>
107
- <a name="l00086"></a>00086 <span class="comment"> /** The environment (i.e. value for RAILS_ENV) under which</span>
108
- <a name="l00087"></a>00087 <span class="comment"> * Rails applications should operate. */</span>
109
- <a name="l00088"></a>00088 <span class="keyword">const</span> <span class="keywordtype">char</span> *railsEnv;
110
- <a name="l00089"></a>00089 <span class="comment"></span>
111
- <a name="l00090"></a>00090 <span class="comment"> /** The path to the application's root (for example: RAILS_ROOT</span>
112
- <a name="l00091"></a>00091 <span class="comment"> * for Rails applications, directory containing 'config.ru'</span>
113
- <a name="l00092"></a>00092 <span class="comment"> * for Rack applications). If this value is NULL, the default</span>
114
- <a name="l00093"></a>00093 <span class="comment"> * autodetected path will be used.</span>
115
- <a name="l00094"></a>00094 <span class="comment"> */</span>
116
- <a name="l00095"></a>00095 <span class="keyword">const</span> <span class="keywordtype">char</span> *appRoot;
117
- <a name="l00096"></a>00096 <span class="comment"></span>
118
- <a name="l00097"></a>00097 <span class="comment"> /** The environment (i.e. value for RACK_ENV) under which</span>
119
- <a name="l00098"></a>00098 <span class="comment"> * Rack applications should operate. */</span>
120
- <a name="l00099"></a>00099 <span class="keyword">const</span> <span class="keywordtype">char</span> *rackEnv;
104
+ <a name="l00083"></a>00083 <span class="comment"> /** The environment (i.e. value for RAILS_ENV) under which</span>
105
+ <a name="l00084"></a>00084 <span class="comment"> * Rails applications should operate. */</span>
106
+ <a name="l00085"></a>00085 <span class="keyword">const</span> <span class="keywordtype">char</span> *railsEnv;
107
+ <a name="l00086"></a>00086 <span class="comment"></span>
108
+ <a name="l00087"></a>00087 <span class="comment"> /** The path to the application's root (for example: RAILS_ROOT</span>
109
+ <a name="l00088"></a>00088 <span class="comment"> * for Rails applications, directory containing 'config.ru'</span>
110
+ <a name="l00089"></a>00089 <span class="comment"> * for Rack applications). If this value is NULL, the default</span>
111
+ <a name="l00090"></a>00090 <span class="comment"> * autodetected path will be used.</span>
112
+ <a name="l00091"></a>00091 <span class="comment"> */</span>
113
+ <a name="l00092"></a>00092 <span class="keyword">const</span> <span class="keywordtype">char</span> *appRoot;
114
+ <a name="l00093"></a>00093 <span class="comment"></span>
115
+ <a name="l00094"></a>00094 <span class="comment"> /** The environment (i.e. value for RACK_ENV) under which</span>
116
+ <a name="l00095"></a>00095 <span class="comment"> * Rack applications should operate. */</span>
117
+ <a name="l00096"></a>00096 <span class="keyword">const</span> <span class="keywordtype">char</span> *rackEnv;
118
+ <a name="l00097"></a>00097 <span class="comment"></span>
119
+ <a name="l00098"></a>00098 <span class="comment"> /** The Rails spawn method to use. */</span>
120
+ <a name="l00099"></a>00099 SpawnMethod spawnMethod;
121
121
  <a name="l00100"></a>00100 <span class="comment"></span>
122
- <a name="l00101"></a>00101 <span class="comment"> /** The Rails spawn method to use. */</span>
123
- <a name="l00102"></a>00102 SpawnMethod spawnMethod;
124
- <a name="l00103"></a>00103 <span class="comment"></span>
125
- <a name="l00104"></a>00104 <span class="comment"> /**</span>
126
- <a name="l00105"></a>00105 <span class="comment"> * The idle timeout, in seconds, of Rails framework spawners.</span>
127
- <a name="l00106"></a>00106 <span class="comment"> * May also be 0 (which indicates that the framework spawner should</span>
128
- <a name="l00107"></a>00107 <span class="comment"> * never idle timeout) or -1 (which means that the value is not specified).</span>
129
- <a name="l00108"></a>00108 <span class="comment"> */</span>
130
- <a name="l00109"></a>00109 <span class="keywordtype">long</span> frameworkSpawnerTimeout;
131
- <a name="l00110"></a>00110 <span class="comment"></span>
132
- <a name="l00111"></a>00111 <span class="comment"> /**</span>
133
- <a name="l00112"></a>00112 <span class="comment"> * The idle timeout, in seconds, of Rails application spawners.</span>
134
- <a name="l00113"></a>00113 <span class="comment"> * May also be 0 (which indicates that the application spawner should</span>
135
- <a name="l00114"></a>00114 <span class="comment"> * never idle timeout) or -1 (which means that the value is not specified).</span>
136
- <a name="l00115"></a>00115 <span class="comment"> */</span>
137
- <a name="l00116"></a>00116 <span class="keywordtype">long</span> appSpawnerTimeout;
138
- <a name="l00117"></a>00117 <span class="comment"></span>
139
- <a name="l00118"></a>00118 <span class="comment"> /**</span>
140
- <a name="l00119"></a>00119 <span class="comment"> * The maximum number of requests that the spawned application may process</span>
141
- <a name="l00120"></a>00120 <span class="comment"> * before exiting. A value of 0 means unlimited.</span>
142
- <a name="l00121"></a>00121 <span class="comment"> */</span>
143
- <a name="l00122"></a>00122 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> maxRequests;
144
- <a name="l00123"></a>00123 <span class="comment"></span>
145
- <a name="l00124"></a>00124 <span class="comment"> /** Indicates whether the maxRequests option was explicitly specified</span>
146
- <a name="l00125"></a>00125 <span class="comment"> * in the directory configuration. */</span>
147
- <a name="l00126"></a>00126 <span class="keywordtype">bool</span> maxRequestsSpecified;
148
- <a name="l00127"></a>00127 <span class="comment"></span>
149
- <a name="l00128"></a>00128 <span class="comment"> /**</span>
150
- <a name="l00129"></a>00129 <span class="comment"> * The maximum amount of memory (in MB) the spawned application may use.</span>
151
- <a name="l00130"></a>00130 <span class="comment"> * A value of 0 means unlimited.</span>
152
- <a name="l00131"></a>00131 <span class="comment"> */</span>
153
- <a name="l00132"></a>00132 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> memoryLimit;
154
- <a name="l00133"></a>00133 <span class="comment"></span>
155
- <a name="l00134"></a>00134 <span class="comment"> /** Indicates whether the memoryLimit option was explicitly specified</span>
156
- <a name="l00135"></a>00135 <span class="comment"> * in the directory configuration. */</span>
157
- <a name="l00136"></a>00136 <span class="keywordtype">bool</span> memoryLimitSpecified;
158
- <a name="l00137"></a>00137
159
- <a name="l00138"></a>00138 Threeway highPerformance;
122
+ <a name="l00101"></a>00101 <span class="comment"> /**</span>
123
+ <a name="l00102"></a>00102 <span class="comment"> * The idle timeout, in seconds, of Rails framework spawners.</span>
124
+ <a name="l00103"></a>00103 <span class="comment"> * May also be 0 (which indicates that the framework spawner should</span>
125
+ <a name="l00104"></a>00104 <span class="comment"> * never idle timeout) or -1 (which means that the value is not specified).</span>
126
+ <a name="l00105"></a>00105 <span class="comment"> */</span>
127
+ <a name="l00106"></a>00106 <span class="keywordtype">long</span> frameworkSpawnerTimeout;
128
+ <a name="l00107"></a>00107 <span class="comment"></span>
129
+ <a name="l00108"></a>00108 <span class="comment"> /**</span>
130
+ <a name="l00109"></a>00109 <span class="comment"> * The idle timeout, in seconds, of Rails application spawners.</span>
131
+ <a name="l00110"></a>00110 <span class="comment"> * May also be 0 (which indicates that the application spawner should</span>
132
+ <a name="l00111"></a>00111 <span class="comment"> * never idle timeout) or -1 (which means that the value is not specified).</span>
133
+ <a name="l00112"></a>00112 <span class="comment"> */</span>
134
+ <a name="l00113"></a>00113 <span class="keywordtype">long</span> appSpawnerTimeout;
135
+ <a name="l00114"></a>00114 <span class="comment"></span>
136
+ <a name="l00115"></a>00115 <span class="comment"> /**</span>
137
+ <a name="l00116"></a>00116 <span class="comment"> * The maximum number of requests that the spawned application may process</span>
138
+ <a name="l00117"></a>00117 <span class="comment"> * before exiting. A value of 0 means unlimited.</span>
139
+ <a name="l00118"></a>00118 <span class="comment"> */</span>
140
+ <a name="l00119"></a>00119 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> maxRequests;
141
+ <a name="l00120"></a>00120 <span class="comment"></span>
142
+ <a name="l00121"></a>00121 <span class="comment"> /** Indicates whether the maxRequests option was explicitly specified</span>
143
+ <a name="l00122"></a>00122 <span class="comment"> * in the directory configuration. */</span>
144
+ <a name="l00123"></a>00123 <span class="keywordtype">bool</span> maxRequestsSpecified;
145
+ <a name="l00124"></a>00124 <span class="comment"></span>
146
+ <a name="l00125"></a>00125 <span class="comment"> /**</span>
147
+ <a name="l00126"></a>00126 <span class="comment"> * The maximum amount of memory (in MB) the spawned application may use.</span>
148
+ <a name="l00127"></a>00127 <span class="comment"> * A value of 0 means unlimited.</span>
149
+ <a name="l00128"></a>00128 <span class="comment"> */</span>
150
+ <a name="l00129"></a>00129 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> memoryLimit;
151
+ <a name="l00130"></a>00130 <span class="comment"></span>
152
+ <a name="l00131"></a>00131 <span class="comment"> /** Indicates whether the memoryLimit option was explicitly specified</span>
153
+ <a name="l00132"></a>00132 <span class="comment"> * in the directory configuration. */</span>
154
+ <a name="l00133"></a>00133 <span class="keywordtype">bool</span> memoryLimitSpecified;
155
+ <a name="l00134"></a>00134
156
+ <a name="l00135"></a>00135 Threeway highPerformance;
157
+ <a name="l00136"></a>00136 <span class="comment"></span>
158
+ <a name="l00137"></a>00137 <span class="comment"> /** Whether global queuing should be used. */</span>
159
+ <a name="l00138"></a>00138 Threeway useGlobalQueue;
160
160
  <a name="l00139"></a>00139 <span class="comment"></span>
161
- <a name="l00140"></a>00140 <span class="comment"> /** Whether global queuing should be used. */</span>
162
- <a name="l00141"></a>00141 Threeway useGlobalQueue;
163
- <a name="l00142"></a>00142 <span class="comment"></span>
164
- <a name="l00143"></a>00143 <span class="comment"> /**</span>
165
- <a name="l00144"></a>00144 <span class="comment"> * Throttle the number of stat() calls on files like</span>
166
- <a name="l00145"></a>00145 <span class="comment"> * restart.txt to the once per given number of seconds.</span>
167
- <a name="l00146"></a>00146 <span class="comment"> */</span>
168
- <a name="l00147"></a>00147 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> statThrottleRate;
169
- <a name="l00148"></a>00148 <span class="comment"></span>
170
- <a name="l00149"></a>00149 <span class="comment"> /** Indicates whether the statThrottleRate option was</span>
171
- <a name="l00150"></a>00150 <span class="comment"> * explicitly specified in the directory configuration. */</span>
172
- <a name="l00151"></a>00151 <span class="keywordtype">bool</span> statThrottleRateSpecified;
173
- <a name="l00152"></a>00152 <span class="comment"></span>
174
- <a name="l00153"></a>00153 <span class="comment"> /** The directory in which Passenger should look for</span>
175
- <a name="l00154"></a>00154 <span class="comment"> * restart.txt. NULL means that the default directory</span>
176
- <a name="l00155"></a>00155 <span class="comment"> * should be used.</span>
177
- <a name="l00156"></a>00156 <span class="comment"> */</span>
178
- <a name="l00157"></a>00157 <span class="keyword">const</span> <span class="keywordtype">char</span> *restartDir;
179
- <a name="l00158"></a>00158
180
- <a name="l00159"></a>00159 <span class="comment">/*************************************/</span>
181
- <a name="l00160"></a>00160
182
- <a name="l00161"></a>00161 <span class="keywordtype">bool</span> isEnabled()<span class="keyword"> const </span>{
183
- <a name="l00162"></a>00162 <span class="keywordflow">return</span> enabled != DISABLED;
184
- <a name="l00163"></a>00163 }
185
- <a name="l00164"></a>00164
186
- <a name="l00165"></a>00165 <span class="keywordtype">string</span> getAppRoot(<span class="keyword">const</span> <span class="keywordtype">char</span> *documentRoot)<span class="keyword"> const </span>{
187
- <a name="l00166"></a>00166 <span class="keywordflow">if</span> (appRoot == NULL) {
188
- <a name="l00167"></a>00167 <span class="keywordflow">return</span> extractDirName(documentRoot);
189
- <a name="l00168"></a>00168 } <span class="keywordflow">else</span> {
190
- <a name="l00169"></a>00169 <span class="keywordflow">return</span> appRoot;
191
- <a name="l00170"></a>00170 }
192
- <a name="l00171"></a>00171 }
193
- <a name="l00172"></a>00172
194
- <a name="l00173"></a>00173 <span class="keywordtype">string</span> getAppRoot(<span class="keyword">const</span> <span class="keywordtype">string</span> &amp;documentRoot)<span class="keyword"> const </span>{
195
- <a name="l00174"></a>00174 <span class="keywordflow">if</span> (appRoot == NULL) {
196
- <a name="l00175"></a>00175 <span class="keywordflow">return</span> extractDirName(documentRoot);
197
- <a name="l00176"></a>00176 } <span class="keywordflow">else</span> {
198
- <a name="l00177"></a>00177 <span class="keywordflow">return</span> appRoot;
199
- <a name="l00178"></a>00178 }
200
- <a name="l00179"></a>00179 }
201
- <a name="l00180"></a>00180
202
- <a name="l00181"></a>00181 <span class="keyword">const</span> <span class="keywordtype">char</span> *getRailsEnv()<span class="keyword"> const </span>{
203
- <a name="l00182"></a>00182 <span class="keywordflow">if</span> (railsEnv != NULL) {
204
- <a name="l00183"></a>00183 <span class="keywordflow">return</span> railsEnv;
205
- <a name="l00184"></a>00184 } <span class="keywordflow">else</span> {
206
- <a name="l00185"></a>00185 <span class="keywordflow">return</span> <span class="stringliteral">"production"</span>;
207
- <a name="l00186"></a>00186 }
208
- <a name="l00187"></a>00187 }
209
- <a name="l00188"></a>00188
210
- <a name="l00189"></a>00189 <span class="keyword">const</span> <span class="keywordtype">char</span> *getRackEnv()<span class="keyword"> const </span>{
211
- <a name="l00190"></a>00190 <span class="keywordflow">if</span> (rackEnv != NULL) {
212
- <a name="l00191"></a>00191 <span class="keywordflow">return</span> rackEnv;
213
- <a name="l00192"></a>00192 } <span class="keywordflow">else</span> {
214
- <a name="l00193"></a>00193 <span class="keywordflow">return</span> <span class="stringliteral">"production"</span>;
215
- <a name="l00194"></a>00194 }
216
- <a name="l00195"></a>00195 }
217
- <a name="l00196"></a>00196
218
- <a name="l00197"></a>00197 <span class="keyword">const</span> <span class="keywordtype">char</span> *getSpawnMethodString() {
219
- <a name="l00198"></a>00198 <span class="keywordflow">switch</span> (spawnMethod) {
220
- <a name="l00199"></a>00199 <span class="keywordflow">case</span> SM_SMART:
221
- <a name="l00200"></a>00200 <span class="keywordflow">return</span> <span class="stringliteral">"smart"</span>;
222
- <a name="l00201"></a>00201 <span class="keywordflow">case</span> SM_SMART_LV2:
223
- <a name="l00202"></a>00202 <span class="keywordflow">return</span> <span class="stringliteral">"smart-lv2"</span>;
224
- <a name="l00203"></a>00203 <span class="keywordflow">case</span> SM_CONSERVATIVE:
225
- <a name="l00204"></a>00204 <span class="keywordflow">return</span> <span class="stringliteral">"conservative"</span>;
226
- <a name="l00205"></a>00205 <span class="keywordflow">default</span>:
227
- <a name="l00206"></a>00206 <span class="keywordflow">return</span> <span class="stringliteral">"smart-lv2"</span>;
228
- <a name="l00207"></a>00207 }
229
- <a name="l00208"></a>00208 }
230
- <a name="l00209"></a>00209
231
- <a name="l00210"></a>00210 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> getMaxRequests() {
232
- <a name="l00211"></a>00211 <span class="keywordflow">if</span> (maxRequestsSpecified) {
233
- <a name="l00212"></a>00212 <span class="keywordflow">return</span> maxRequests;
234
- <a name="l00213"></a>00213 } <span class="keywordflow">else</span> {
235
- <a name="l00214"></a>00214 <span class="keywordflow">return</span> 0;
236
- <a name="l00215"></a>00215 }
237
- <a name="l00216"></a>00216 }
238
- <a name="l00217"></a>00217
239
- <a name="l00218"></a>00218 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> getMemoryLimit() {
240
- <a name="l00219"></a>00219 <span class="keywordflow">if</span> (memoryLimitSpecified) {
241
- <a name="l00220"></a>00220 <span class="keywordflow">return</span> memoryLimit;
242
- <a name="l00221"></a>00221 } <span class="keywordflow">else</span> {
243
- <a name="l00222"></a>00222 <span class="keywordflow">return</span> 200;
244
- <a name="l00223"></a>00223 }
245
- <a name="l00224"></a>00224 }
246
- <a name="l00225"></a>00225
247
- <a name="l00226"></a>00226 <span class="keywordtype">bool</span> highPerformanceMode()<span class="keyword"> const </span>{
248
- <a name="l00227"></a>00227 <span class="keywordflow">return</span> highPerformance == ENABLED;
249
- <a name="l00228"></a>00228 }
250
- <a name="l00229"></a>00229
251
- <a name="l00230"></a>00230 <span class="keywordtype">bool</span> usingGlobalQueue()<span class="keyword"> const </span>{
252
- <a name="l00231"></a>00231 <span class="keywordflow">return</span> useGlobalQueue == ENABLED;
253
- <a name="l00232"></a>00232 }
254
- <a name="l00233"></a>00233
255
- <a name="l00234"></a>00234 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> getStatThrottleRate()<span class="keyword"> const </span>{
256
- <a name="l00235"></a>00235 <span class="keywordflow">if</span> (statThrottleRateSpecified) {
257
- <a name="l00236"></a>00236 <span class="keywordflow">return</span> statThrottleRate;
258
- <a name="l00237"></a>00237 } <span class="keywordflow">else</span> {
259
- <a name="l00238"></a>00238 <span class="keywordflow">return</span> 0;
260
- <a name="l00239"></a>00239 }
261
- <a name="l00240"></a>00240 }
262
- <a name="l00241"></a>00241
263
- <a name="l00242"></a>00242 <span class="keyword">const</span> <span class="keywordtype">char</span> *getRestartDir()<span class="keyword"> const </span>{
264
- <a name="l00243"></a>00243 <span class="keywordflow">if</span> (restartDir != NULL) {
265
- <a name="l00244"></a>00244 <span class="keywordflow">return</span> restartDir;
266
- <a name="l00245"></a>00245 } <span class="keywordflow">else</span> {
267
- <a name="l00246"></a>00246 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
268
- <a name="l00247"></a>00247 }
269
- <a name="l00248"></a>00248 }
270
- <a name="l00249"></a>00249
271
- <a name="l00250"></a>00250 <span class="comment">/*************************************/</span>
272
- <a name="l00251"></a>00251 };
273
- <a name="l00252"></a>00252 <span class="comment"></span>
274
- <a name="l00253"></a>00253 <span class="comment"> /**</span>
275
- <a name="l00254"></a>00254 <span class="comment"> * Server-wide (global, not per-virtual host) configuration information.</span>
276
- <a name="l00255"></a>00255 <span class="comment"> *</span>
277
- <a name="l00256"></a>00256 <span class="comment"> * Use the getter methods to query information, because those will return</span>
278
- <a name="l00257"></a>00257 <span class="comment"> * the default value if the value is not specified.</span>
279
- <a name="l00258"></a>00258 <span class="comment"> */</span>
280
- <a name="l00259"></a>00259 <span class="keyword">struct </span>ServerConfig {<span class="comment"></span>
281
- <a name="l00260"></a>00260 <span class="comment"> /** The filename of the Ruby interpreter to use. */</span>
282
- <a name="l00261"></a>00261 <span class="keyword">const</span> <span class="keywordtype">char</span> *ruby;
161
+ <a name="l00140"></a>00140 <span class="comment"> /**</span>
162
+ <a name="l00141"></a>00141 <span class="comment"> * Throttle the number of stat() calls on files like</span>
163
+ <a name="l00142"></a>00142 <span class="comment"> * restart.txt to the once per given number of seconds.</span>
164
+ <a name="l00143"></a>00143 <span class="comment"> */</span>
165
+ <a name="l00144"></a>00144 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> statThrottleRate;
166
+ <a name="l00145"></a>00145 <span class="comment"></span>
167
+ <a name="l00146"></a>00146 <span class="comment"> /** Indicates whether the statThrottleRate option was</span>
168
+ <a name="l00147"></a>00147 <span class="comment"> * explicitly specified in the directory configuration. */</span>
169
+ <a name="l00148"></a>00148 <span class="keywordtype">bool</span> statThrottleRateSpecified;
170
+ <a name="l00149"></a>00149 <span class="comment"></span>
171
+ <a name="l00150"></a>00150 <span class="comment"> /** The directory in which Passenger should look for</span>
172
+ <a name="l00151"></a>00151 <span class="comment"> * restart.txt. NULL means that the default directory</span>
173
+ <a name="l00152"></a>00152 <span class="comment"> * should be used.</span>
174
+ <a name="l00153"></a>00153 <span class="comment"> */</span>
175
+ <a name="l00154"></a>00154 <span class="keyword">const</span> <span class="keywordtype">char</span> *restartDir;
176
+ <a name="l00155"></a>00155
177
+ <a name="l00156"></a>00156 <span class="comment">/*************************************/</span>
178
+ <a name="l00157"></a>00157
179
+ <a name="l00158"></a>00158 <span class="keywordtype">bool</span> isEnabled()<span class="keyword"> const </span>{
180
+ <a name="l00159"></a>00159 <span class="keywordflow">return</span> enabled != DISABLED;
181
+ <a name="l00160"></a>00160 }
182
+ <a name="l00161"></a>00161
183
+ <a name="l00162"></a>00162 <span class="keywordtype">string</span> getAppRoot(<span class="keyword">const</span> <span class="keywordtype">char</span> *documentRoot)<span class="keyword"> const </span>{
184
+ <a name="l00163"></a>00163 <span class="keywordflow">if</span> (appRoot == NULL) {
185
+ <a name="l00164"></a>00164 <span class="keywordflow">return</span> extractDirName(documentRoot);
186
+ <a name="l00165"></a>00165 } <span class="keywordflow">else</span> {
187
+ <a name="l00166"></a>00166 <span class="keywordflow">return</span> appRoot;
188
+ <a name="l00167"></a>00167 }
189
+ <a name="l00168"></a>00168 }
190
+ <a name="l00169"></a>00169
191
+ <a name="l00170"></a>00170 <span class="keywordtype">string</span> getAppRoot(<span class="keyword">const</span> <span class="keywordtype">string</span> &amp;documentRoot)<span class="keyword"> const </span>{
192
+ <a name="l00171"></a>00171 <span class="keywordflow">if</span> (appRoot == NULL) {
193
+ <a name="l00172"></a>00172 <span class="keywordflow">return</span> extractDirName(documentRoot);
194
+ <a name="l00173"></a>00173 } <span class="keywordflow">else</span> {
195
+ <a name="l00174"></a>00174 <span class="keywordflow">return</span> appRoot;
196
+ <a name="l00175"></a>00175 }
197
+ <a name="l00176"></a>00176 }
198
+ <a name="l00177"></a>00177
199
+ <a name="l00178"></a>00178 <span class="keyword">const</span> <span class="keywordtype">char</span> *getRailsEnv()<span class="keyword"> const </span>{
200
+ <a name="l00179"></a>00179 <span class="keywordflow">if</span> (railsEnv != NULL) {
201
+ <a name="l00180"></a>00180 <span class="keywordflow">return</span> railsEnv;
202
+ <a name="l00181"></a>00181 } <span class="keywordflow">else</span> {
203
+ <a name="l00182"></a>00182 <span class="keywordflow">return</span> <span class="stringliteral">"production"</span>;
204
+ <a name="l00183"></a>00183 }
205
+ <a name="l00184"></a>00184 }
206
+ <a name="l00185"></a>00185
207
+ <a name="l00186"></a>00186 <span class="keyword">const</span> <span class="keywordtype">char</span> *getRackEnv()<span class="keyword"> const </span>{
208
+ <a name="l00187"></a>00187 <span class="keywordflow">if</span> (rackEnv != NULL) {
209
+ <a name="l00188"></a>00188 <span class="keywordflow">return</span> rackEnv;
210
+ <a name="l00189"></a>00189 } <span class="keywordflow">else</span> {
211
+ <a name="l00190"></a>00190 <span class="keywordflow">return</span> <span class="stringliteral">"production"</span>;
212
+ <a name="l00191"></a>00191 }
213
+ <a name="l00192"></a>00192 }
214
+ <a name="l00193"></a>00193
215
+ <a name="l00194"></a>00194 <span class="keyword">const</span> <span class="keywordtype">char</span> *getSpawnMethodString() {
216
+ <a name="l00195"></a>00195 <span class="keywordflow">switch</span> (spawnMethod) {
217
+ <a name="l00196"></a>00196 <span class="keywordflow">case</span> SM_SMART:
218
+ <a name="l00197"></a>00197 <span class="keywordflow">return</span> <span class="stringliteral">"smart"</span>;
219
+ <a name="l00198"></a>00198 <span class="keywordflow">case</span> SM_SMART_LV2:
220
+ <a name="l00199"></a>00199 <span class="keywordflow">return</span> <span class="stringliteral">"smart-lv2"</span>;
221
+ <a name="l00200"></a>00200 <span class="keywordflow">case</span> SM_CONSERVATIVE:
222
+ <a name="l00201"></a>00201 <span class="keywordflow">return</span> <span class="stringliteral">"conservative"</span>;
223
+ <a name="l00202"></a>00202 <span class="keywordflow">default</span>:
224
+ <a name="l00203"></a>00203 <span class="keywordflow">return</span> <span class="stringliteral">"smart-lv2"</span>;
225
+ <a name="l00204"></a>00204 }
226
+ <a name="l00205"></a>00205 }
227
+ <a name="l00206"></a>00206
228
+ <a name="l00207"></a>00207 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> getMaxRequests() {
229
+ <a name="l00208"></a>00208 <span class="keywordflow">if</span> (maxRequestsSpecified) {
230
+ <a name="l00209"></a>00209 <span class="keywordflow">return</span> maxRequests;
231
+ <a name="l00210"></a>00210 } <span class="keywordflow">else</span> {
232
+ <a name="l00211"></a>00211 <span class="keywordflow">return</span> 0;
233
+ <a name="l00212"></a>00212 }
234
+ <a name="l00213"></a>00213 }
235
+ <a name="l00214"></a>00214
236
+ <a name="l00215"></a>00215 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> getMemoryLimit() {
237
+ <a name="l00216"></a>00216 <span class="keywordflow">if</span> (memoryLimitSpecified) {
238
+ <a name="l00217"></a>00217 <span class="keywordflow">return</span> memoryLimit;
239
+ <a name="l00218"></a>00218 } <span class="keywordflow">else</span> {
240
+ <a name="l00219"></a>00219 <span class="keywordflow">return</span> 200;
241
+ <a name="l00220"></a>00220 }
242
+ <a name="l00221"></a>00221 }
243
+ <a name="l00222"></a>00222
244
+ <a name="l00223"></a>00223 <span class="keywordtype">bool</span> highPerformanceMode()<span class="keyword"> const </span>{
245
+ <a name="l00224"></a>00224 <span class="keywordflow">return</span> highPerformance == ENABLED;
246
+ <a name="l00225"></a>00225 }
247
+ <a name="l00226"></a>00226
248
+ <a name="l00227"></a>00227 <span class="keywordtype">bool</span> usingGlobalQueue()<span class="keyword"> const </span>{
249
+ <a name="l00228"></a>00228 <span class="keywordflow">return</span> useGlobalQueue == ENABLED;
250
+ <a name="l00229"></a>00229 }
251
+ <a name="l00230"></a>00230
252
+ <a name="l00231"></a>00231 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> getStatThrottleRate()<span class="keyword"> const </span>{
253
+ <a name="l00232"></a>00232 <span class="keywordflow">if</span> (statThrottleRateSpecified) {
254
+ <a name="l00233"></a>00233 <span class="keywordflow">return</span> statThrottleRate;
255
+ <a name="l00234"></a>00234 } <span class="keywordflow">else</span> {
256
+ <a name="l00235"></a>00235 <span class="keywordflow">return</span> 0;
257
+ <a name="l00236"></a>00236 }
258
+ <a name="l00237"></a>00237 }
259
+ <a name="l00238"></a>00238
260
+ <a name="l00239"></a>00239 <span class="keyword">const</span> <span class="keywordtype">char</span> *getRestartDir()<span class="keyword"> const </span>{
261
+ <a name="l00240"></a>00240 <span class="keywordflow">if</span> (restartDir != NULL) {
262
+ <a name="l00241"></a>00241 <span class="keywordflow">return</span> restartDir;
263
+ <a name="l00242"></a>00242 } <span class="keywordflow">else</span> {
264
+ <a name="l00243"></a>00243 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
265
+ <a name="l00244"></a>00244 }
266
+ <a name="l00245"></a>00245 }
267
+ <a name="l00246"></a>00246
268
+ <a name="l00247"></a>00247 <span class="comment">/*************************************/</span>
269
+ <a name="l00248"></a>00248 };
270
+ <a name="l00249"></a>00249 <span class="comment"></span>
271
+ <a name="l00250"></a>00250 <span class="comment"> /**</span>
272
+ <a name="l00251"></a>00251 <span class="comment"> * Server-wide (global, not per-virtual host) configuration information.</span>
273
+ <a name="l00252"></a>00252 <span class="comment"> *</span>
274
+ <a name="l00253"></a>00253 <span class="comment"> * Use the getter methods to query information, because those will return</span>
275
+ <a name="l00254"></a>00254 <span class="comment"> * the default value if the value is not specified.</span>
276
+ <a name="l00255"></a>00255 <span class="comment"> */</span>
277
+ <a name="l00256"></a>00256 <span class="keyword">struct </span>ServerConfig {<span class="comment"></span>
278
+ <a name="l00257"></a>00257 <span class="comment"> /** The filename of the Ruby interpreter to use. */</span>
279
+ <a name="l00258"></a>00258 <span class="keyword">const</span> <span class="keywordtype">char</span> *ruby;
280
+ <a name="l00259"></a>00259 <span class="comment"></span>
281
+ <a name="l00260"></a>00260 <span class="comment"> /** The Passenger root folder. */</span>
282
+ <a name="l00261"></a>00261 <span class="keyword">const</span> <span class="keywordtype">char</span> *root;
283
283
  <a name="l00262"></a>00262 <span class="comment"></span>
284
- <a name="l00263"></a>00263 <span class="comment"> /** The Passenger root folder. */</span>
285
- <a name="l00264"></a>00264 <span class="keyword">const</span> <span class="keywordtype">char</span> *root;
284
+ <a name="l00263"></a>00263 <span class="comment"> /** The log verbosity. */</span>
285
+ <a name="l00264"></a>00264 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> logLevel;
286
286
  <a name="l00265"></a>00265 <span class="comment"></span>
287
- <a name="l00266"></a>00266 <span class="comment"> /** The log verbosity. */</span>
288
- <a name="l00267"></a>00267 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> logLevel;
289
- <a name="l00268"></a>00268 <span class="comment"></span>
290
- <a name="l00269"></a>00269 <span class="comment"> /** The maximum number of simultaneously alive application</span>
291
- <a name="l00270"></a>00270 <span class="comment"> * instances. */</span>
292
- <a name="l00271"></a>00271 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxPoolSize;
293
- <a name="l00272"></a>00272 <span class="comment"></span>
294
- <a name="l00273"></a>00273 <span class="comment"> /** Whether the maxPoolSize option was explicitly specified in</span>
295
- <a name="l00274"></a>00274 <span class="comment"> * this server config. */</span>
296
- <a name="l00275"></a>00275 <span class="keywordtype">bool</span> maxPoolSizeSpecified;
297
- <a name="l00276"></a>00276 <span class="comment"></span>
298
- <a name="l00277"></a>00277 <span class="comment"> /** The maximum number of simultaneously alive Rails application</span>
299
- <a name="l00278"></a>00278 <span class="comment"> * that a single Rails application may occupy. */</span>
300
- <a name="l00279"></a>00279 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxInstancesPerApp;
301
- <a name="l00280"></a>00280 <span class="comment"></span>
302
- <a name="l00281"></a>00281 <span class="comment"> /** Whether the maxInstancesPerApp option was explicitly specified in</span>
303
- <a name="l00282"></a>00282 <span class="comment"> * this server config. */</span>
304
- <a name="l00283"></a>00283 <span class="keywordtype">bool</span> maxInstancesPerAppSpecified;
305
- <a name="l00284"></a>00284 <span class="comment"></span>
306
- <a name="l00285"></a>00285 <span class="comment"> /** The maximum number of seconds that an application may be</span>
307
- <a name="l00286"></a>00286 <span class="comment"> * idle before it gets terminated. */</span>
308
- <a name="l00287"></a>00287 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> poolIdleTime;
309
- <a name="l00288"></a>00288 <span class="comment"></span>
310
- <a name="l00289"></a>00289 <span class="comment"> /** Whether the poolIdleTime option was explicitly specified in</span>
311
- <a name="l00290"></a>00290 <span class="comment"> * this server config. */</span>
312
- <a name="l00291"></a>00291 <span class="keywordtype">bool</span> poolIdleTimeSpecified;
287
+ <a name="l00266"></a>00266 <span class="comment"> /** The maximum number of simultaneously alive application</span>
288
+ <a name="l00267"></a>00267 <span class="comment"> * instances. */</span>
289
+ <a name="l00268"></a>00268 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxPoolSize;
290
+ <a name="l00269"></a>00269 <span class="comment"></span>
291
+ <a name="l00270"></a>00270 <span class="comment"> /** Whether the maxPoolSize option was explicitly specified in</span>
292
+ <a name="l00271"></a>00271 <span class="comment"> * this server config. */</span>
293
+ <a name="l00272"></a>00272 <span class="keywordtype">bool</span> maxPoolSizeSpecified;
294
+ <a name="l00273"></a>00273 <span class="comment"></span>
295
+ <a name="l00274"></a>00274 <span class="comment"> /** The maximum number of simultaneously alive Rails application</span>
296
+ <a name="l00275"></a>00275 <span class="comment"> * that a single Rails application may occupy. */</span>
297
+ <a name="l00276"></a>00276 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxInstancesPerApp;
298
+ <a name="l00277"></a>00277 <span class="comment"></span>
299
+ <a name="l00278"></a>00278 <span class="comment"> /** Whether the maxInstancesPerApp option was explicitly specified in</span>
300
+ <a name="l00279"></a>00279 <span class="comment"> * this server config. */</span>
301
+ <a name="l00280"></a>00280 <span class="keywordtype">bool</span> maxInstancesPerAppSpecified;
302
+ <a name="l00281"></a>00281 <span class="comment"></span>
303
+ <a name="l00282"></a>00282 <span class="comment"> /** The maximum number of seconds that an application may be</span>
304
+ <a name="l00283"></a>00283 <span class="comment"> * idle before it gets terminated. */</span>
305
+ <a name="l00284"></a>00284 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> poolIdleTime;
306
+ <a name="l00285"></a>00285 <span class="comment"></span>
307
+ <a name="l00286"></a>00286 <span class="comment"> /** Whether the poolIdleTime option was explicitly specified in</span>
308
+ <a name="l00287"></a>00287 <span class="comment"> * this server config. */</span>
309
+ <a name="l00288"></a>00288 <span class="keywordtype">bool</span> poolIdleTimeSpecified;
310
+ <a name="l00289"></a>00289 <span class="comment"></span>
311
+ <a name="l00290"></a>00290 <span class="comment"> /** Whether user switching support is enabled. */</span>
312
+ <a name="l00291"></a>00291 <span class="keywordtype">bool</span> userSwitching;
313
313
  <a name="l00292"></a>00292 <span class="comment"></span>
314
- <a name="l00293"></a>00293 <span class="comment"> /** Whether user switching support is enabled. */</span>
315
- <a name="l00294"></a>00294 <span class="keywordtype">bool</span> userSwitching;
316
- <a name="l00295"></a>00295 <span class="comment"></span>
317
- <a name="l00296"></a>00296 <span class="comment"> /** Whether the userSwitching option was explicitly specified in</span>
318
- <a name="l00297"></a>00297 <span class="comment"> * this server config. */</span>
319
- <a name="l00298"></a>00298 <span class="keywordtype">bool</span> userSwitchingSpecified;
320
- <a name="l00299"></a>00299 <span class="comment"></span>
321
- <a name="l00300"></a>00300 <span class="comment"> /** The user that applications must run as if user switching</span>
322
- <a name="l00301"></a>00301 <span class="comment"> * fails or is disabled. NULL means the option is not specified.</span>
323
- <a name="l00302"></a>00302 <span class="comment"> */</span>
324
- <a name="l00303"></a>00303 <span class="keyword">const</span> <span class="keywordtype">char</span> *defaultUser;
325
- <a name="l00304"></a>00304 <span class="comment"></span>
326
- <a name="l00305"></a>00305 <span class="comment"> /** The temp directory that Passenger should use. NULL</span>
327
- <a name="l00306"></a>00306 <span class="comment"> * means unspecified.</span>
328
- <a name="l00307"></a>00307 <span class="comment"> */</span>
329
- <a name="l00308"></a>00308 <span class="keyword">const</span> <span class="keywordtype">char</span> *tempDir;
330
- <a name="l00309"></a>00309
331
- <a name="l00310"></a>00310 <span class="keyword">const</span> <span class="keywordtype">char</span> *getDefaultUser()<span class="keyword"> const </span>{
332
- <a name="l00311"></a>00311 <span class="keywordflow">if</span> (defaultUser != NULL) {
333
- <a name="l00312"></a>00312 <span class="keywordflow">return</span> defaultUser;
334
- <a name="l00313"></a>00313 } <span class="keywordflow">else</span> {
335
- <a name="l00314"></a>00314 <span class="keywordflow">return</span> <span class="stringliteral">"nobody"</span>;
336
- <a name="l00315"></a>00315 }
337
- <a name="l00316"></a>00316 }
338
- <a name="l00317"></a>00317
339
- <a name="l00318"></a>00318 <span class="keyword">const</span> <span class="keywordtype">char</span> *getTempDir()<span class="keyword"> const </span>{
340
- <a name="l00319"></a>00319 <span class="keywordflow">if</span> (tempDir != NULL) {
341
- <a name="l00320"></a>00320 <span class="keywordflow">return</span> tempDir;
342
- <a name="l00321"></a>00321 } <span class="keywordflow">else</span> {
343
- <a name="l00322"></a>00322 <span class="keywordflow">return</span> getSystemTempDir();
344
- <a name="l00323"></a>00323 }
345
- <a name="l00324"></a>00324 }
346
- <a name="l00325"></a>00325 };
347
- <a name="l00326"></a>00326 }
348
- <a name="l00327"></a>00327
349
- <a name="l00328"></a>00328 <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
350
- <a name="l00329"></a>00329 <span class="preprocessor">#endif</span>
351
- <a name="l00330"></a>00330 <span class="preprocessor"></span><span class="comment"></span>
352
- <a name="l00331"></a>00331 <span class="comment">/** Configuration hook for per-directory configuration structure creation. */</span>
353
- <a name="l00332"></a>00332 <span class="keywordtype">void</span> *<a class="code" href="group__Configuration.html#g92dc583c1fa5f8025149799e356a6c78" title="Configuration hook for per-directory configuration structure creation.">passenger_config_create_dir</a>(apr_pool_t *p, <span class="keywordtype">char</span> *dirspec);
314
+ <a name="l00293"></a>00293 <span class="comment"> /** Whether the userSwitching option was explicitly specified in</span>
315
+ <a name="l00294"></a>00294 <span class="comment"> * this server config. */</span>
316
+ <a name="l00295"></a>00295 <span class="keywordtype">bool</span> userSwitchingSpecified;
317
+ <a name="l00296"></a>00296 <span class="comment"></span>
318
+ <a name="l00297"></a>00297 <span class="comment"> /** The user that applications must run as if user switching</span>
319
+ <a name="l00298"></a>00298 <span class="comment"> * fails or is disabled. NULL means the option is not specified.</span>
320
+ <a name="l00299"></a>00299 <span class="comment"> */</span>
321
+ <a name="l00300"></a>00300 <span class="keyword">const</span> <span class="keywordtype">char</span> *defaultUser;
322
+ <a name="l00301"></a>00301 <span class="comment"></span>
323
+ <a name="l00302"></a>00302 <span class="comment"> /** The temp directory that Passenger should use. NULL</span>
324
+ <a name="l00303"></a>00303 <span class="comment"> * means unspecified.</span>
325
+ <a name="l00304"></a>00304 <span class="comment"> */</span>
326
+ <a name="l00305"></a>00305 <span class="keyword">const</span> <span class="keywordtype">char</span> *tempDir;
327
+ <a name="l00306"></a>00306
328
+ <a name="l00307"></a>00307 <span class="keyword">const</span> <span class="keywordtype">char</span> *getDefaultUser()<span class="keyword"> const </span>{
329
+ <a name="l00308"></a>00308 <span class="keywordflow">if</span> (defaultUser != NULL) {
330
+ <a name="l00309"></a>00309 <span class="keywordflow">return</span> defaultUser;
331
+ <a name="l00310"></a>00310 } <span class="keywordflow">else</span> {
332
+ <a name="l00311"></a>00311 <span class="keywordflow">return</span> <span class="stringliteral">"nobody"</span>;
333
+ <a name="l00312"></a>00312 }
334
+ <a name="l00313"></a>00313 }
335
+ <a name="l00314"></a>00314
336
+ <a name="l00315"></a>00315 <span class="keyword">const</span> <span class="keywordtype">char</span> *getTempDir()<span class="keyword"> const </span>{
337
+ <a name="l00316"></a>00316 <span class="keywordflow">if</span> (tempDir != NULL) {
338
+ <a name="l00317"></a>00317 <span class="keywordflow">return</span> tempDir;
339
+ <a name="l00318"></a>00318 } <span class="keywordflow">else</span> {
340
+ <a name="l00319"></a>00319 <span class="keywordflow">return</span> getSystemTempDir();
341
+ <a name="l00320"></a>00320 }
342
+ <a name="l00321"></a>00321 }
343
+ <a name="l00322"></a>00322 };
344
+ <a name="l00323"></a>00323 }
345
+ <a name="l00324"></a>00324
346
+ <a name="l00325"></a>00325 <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
347
+ <a name="l00326"></a>00326 <span class="preprocessor">#endif</span>
348
+ <a name="l00327"></a>00327 <span class="preprocessor"></span><span class="comment"></span>
349
+ <a name="l00328"></a>00328 <span class="comment">/** Configuration hook for per-directory configuration structure creation. */</span>
350
+ <a name="l00329"></a>00329 <span class="keywordtype">void</span> *<a class="code" href="group__Configuration.html#g92dc583c1fa5f8025149799e356a6c78" title="Configuration hook for per-directory configuration structure creation.">passenger_config_create_dir</a>(apr_pool_t *p, <span class="keywordtype">char</span> *dirspec);
351
+ <a name="l00330"></a>00330 <span class="comment"></span>
352
+ <a name="l00331"></a>00331 <span class="comment">/** Configuration hook for per-directory configuration structure merging. */</span>
353
+ <a name="l00332"></a>00332 <span class="keywordtype">void</span> *<a class="code" href="group__Configuration.html#g17787a036ef3f4dc46ae0acc9da2c7b0" title="Configuration hook for per-directory configuration structure merging.">passenger_config_merge_dir</a>(apr_pool_t *p, <span class="keywordtype">void</span> *basev, <span class="keywordtype">void</span> *addv);
354
354
  <a name="l00333"></a>00333 <span class="comment"></span>
355
- <a name="l00334"></a>00334 <span class="comment">/** Configuration hook for per-directory configuration structure merging. */</span>
356
- <a name="l00335"></a>00335 <span class="keywordtype">void</span> *<a class="code" href="group__Configuration.html#g17787a036ef3f4dc46ae0acc9da2c7b0" title="Configuration hook for per-directory configuration structure merging.">passenger_config_merge_dir</a>(apr_pool_t *p, <span class="keywordtype">void</span> *basev, <span class="keywordtype">void</span> *addv);
355
+ <a name="l00334"></a>00334 <span class="comment">/** Configuration hook for per-server configuration structure creation. */</span>
356
+ <a name="l00335"></a>00335 <span class="keywordtype">void</span> *<a class="code" href="group__Configuration.html#ga93bd8d426649b4e86da38eb67a49178" title="Configuration hook for per-server configuration structure creation.">passenger_config_create_server</a>(apr_pool_t *p, server_rec *s);
357
357
  <a name="l00336"></a>00336 <span class="comment"></span>
358
- <a name="l00337"></a>00337 <span class="comment">/** Configuration hook for per-server configuration structure creation. */</span>
359
- <a name="l00338"></a>00338 <span class="keywordtype">void</span> *<a class="code" href="group__Configuration.html#ga93bd8d426649b4e86da38eb67a49178" title="Configuration hook for per-server configuration structure creation.">passenger_config_create_server</a>(apr_pool_t *p, server_rec *s);
360
- <a name="l00339"></a>00339 <span class="comment"></span>
361
- <a name="l00340"></a>00340 <span class="comment">/** Configuration hook for per-server configuration structure merging. */</span>
362
- <a name="l00341"></a>00341 <span class="keywordtype">void</span> *<a class="code" href="group__Configuration.html#g95c963a61867190928d912779952b15e" title="Configuration hook for per-server configuration structure merging.">passenger_config_merge_server</a>(apr_pool_t *p, <span class="keywordtype">void</span> *basev, <span class="keywordtype">void</span> *overridesv);
363
- <a name="l00342"></a>00342
364
- <a name="l00343"></a>00343 <span class="keywordtype">void</span> passenger_config_merge_all_servers(apr_pool_t *pool, server_rec *main_server);
365
- <a name="l00344"></a>00344 <span class="comment"></span>
366
- <a name="l00345"></a>00345 <span class="comment">/** Apache module commands array. */</span>
367
- <a name="l00346"></a>00346 <span class="keyword">extern</span> <span class="keyword">const</span> command_rec <a class="code" href="group__Configuration.html#g21954abbf4018583acb9d8daef3dfd95" title="Apache module commands array.">passenger_commands</a>[];
368
- <a name="l00347"></a>00347
369
- <a name="l00348"></a>00348 <span class="preprocessor">#ifdef __cplusplus</span>
370
- <a name="l00349"></a>00349 <span class="preprocessor"></span> }
371
- <a name="l00350"></a>00350 <span class="preprocessor">#endif</span>
372
- <a name="l00351"></a>00351 <span class="preprocessor"></span><span class="comment"></span>
373
- <a name="l00352"></a>00352 <span class="comment">/**</span>
374
- <a name="l00353"></a>00353 <span class="comment"> * @}</span>
375
- <a name="l00354"></a>00354 <span class="comment"> */</span>
376
- <a name="l00355"></a>00355
377
- <a name="l00356"></a>00356 <span class="preprocessor">#endif </span><span class="comment">/* _PASSENGER_CONFIGURATION_H_ */</span>
358
+ <a name="l00337"></a>00337 <span class="comment">/** Configuration hook for per-server configuration structure merging. */</span>
359
+ <a name="l00338"></a>00338 <span class="keywordtype">void</span> *<a class="code" href="group__Configuration.html#g95c963a61867190928d912779952b15e" title="Configuration hook for per-server configuration structure merging.">passenger_config_merge_server</a>(apr_pool_t *p, <span class="keywordtype">void</span> *basev, <span class="keywordtype">void</span> *overridesv);
360
+ <a name="l00339"></a>00339
361
+ <a name="l00340"></a>00340 <span class="keywordtype">void</span> passenger_config_merge_all_servers(apr_pool_t *pool, server_rec *main_server);
362
+ <a name="l00341"></a>00341 <span class="comment"></span>
363
+ <a name="l00342"></a>00342 <span class="comment">/** Apache module commands array. */</span>
364
+ <a name="l00343"></a>00343 <span class="keyword">extern</span> <span class="keyword">const</span> command_rec <a class="code" href="group__Configuration.html#g21954abbf4018583acb9d8daef3dfd95" title="Apache module commands array.">passenger_commands</a>[];
365
+ <a name="l00344"></a>00344
366
+ <a name="l00345"></a>00345 <span class="preprocessor">#ifdef __cplusplus</span>
367
+ <a name="l00346"></a>00346 <span class="preprocessor"></span> }
368
+ <a name="l00347"></a>00347 <span class="preprocessor">#endif</span>
369
+ <a name="l00348"></a>00348 <span class="preprocessor"></span><span class="comment"></span>
370
+ <a name="l00349"></a>00349 <span class="comment">/**</span>
371
+ <a name="l00350"></a>00350 <span class="comment"> * @}</span>
372
+ <a name="l00351"></a>00351 <span class="comment"> */</span>
373
+ <a name="l00352"></a>00352
374
+ <a name="l00353"></a>00353 <span class="preprocessor">#endif </span><span class="comment">/* _PASSENGER_CONFIGURATION_H_ */</span>
378
375
  </pre></div></div>
379
- <hr size="1"><address style="text-align: right;"><small>Generated on Sat Apr 18 20:08:25 2009 for Passenger by&nbsp;
376
+ <hr size="1"><address style="text-align: right;"><small>Generated on Sun Apr 26 13:02:37 2009 for Passenger by&nbsp;
380
377
  <a href="http://www.doxygen.org/index.html">
381
378
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
382
379
  </body>