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.
- data/Rakefile +66 -79
- data/bin/passenger-install-nginx-module +1 -1
- data/bin/passenger-memory-stats +1 -1
- data/bin/passenger-spawn-server +8 -2
- data/doc/Users guide Apache.html +33 -49
- data/doc/Users guide Apache.txt +28 -27
- data/doc/Users guide Nginx.html +9 -19
- data/doc/Users guide Nginx.txt +8 -20
- data/doc/cxxapi/Bucket_8h-source.html +1 -1
- data/doc/cxxapi/Configuration_8h-source.html +297 -300
- data/doc/cxxapi/DirectoryMapper_8h-source.html +1 -1
- data/doc/cxxapi/Hooks_8h-source.html +1 -1
- data/doc/cxxapi/annotated.html +1 -1
- data/doc/cxxapi/classHooks-members.html +1 -1
- data/doc/cxxapi/classHooks.html +1 -1
- data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +1 -1
- data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +1 -1
- data/doc/cxxapi/classes.html +1 -1
- data/doc/cxxapi/definitions_8h-source.html +1 -1
- data/doc/cxxapi/files.html +1 -1
- data/doc/cxxapi/functions.html +1 -1
- data/doc/cxxapi/functions_func.html +1 -1
- data/doc/cxxapi/graph_legend.html +1 -1
- data/doc/cxxapi/group__Configuration.html +1 -23
- data/doc/cxxapi/group__Core.html +1 -1
- data/doc/cxxapi/group__Hooks.html +1 -1
- data/doc/cxxapi/group__Support.html +1 -1
- data/doc/cxxapi/main.html +1 -1
- data/doc/cxxapi/modules.html +1 -1
- data/doc/users_guide_snippets/rackup_specifications.txt +4 -2
- data/ext/apache2/Configuration.h +0 -3
- data/ext/apache2/Hooks.cpp +5 -3
- data/ext/common/ApplicationPoolServer.h +1 -0
- data/ext/common/ApplicationPoolServerExecutable.cpp +5 -2
- data/ext/common/SpawnManager.h +1 -0
- data/ext/common/Utils.cpp +22 -23
- data/ext/common/Utils.h +32 -21
- data/ext/common/Version.h +31 -0
- data/ext/nginx/ContentHandler.c +61 -8
- data/ext/nginx/HelperServer.cpp +3 -0
- data/ext/nginx/HttpStatusExtractor.h +185 -0
- data/ext/nginx/StaticContentHandler.c +18 -3
- data/ext/nginx/config +2 -1
- data/ext/nginx/ngx_http_passenger_module.c +21 -15
- data/ext/oxt/backtrace.cpp +4 -2
- data/ext/oxt/spin_lock.hpp +3 -3
- data/lib/phusion_passenger/abstract_request_handler.rb +5 -3
- data/lib/phusion_passenger/admin_tools/control_process.rb +6 -1
- data/lib/phusion_passenger/constants.rb +2 -2
- data/lib/phusion_passenger/rack/application_spawner.rb +2 -1
- data/lib/phusion_passenger/rack/request_handler.rb +45 -35
- data/lib/phusion_passenger/templates/nginx/config_snippets.txt.erb +1 -1
- data/lib/phusion_passenger/utils.rb +13 -3
- data/misc/rake/cplusplus.rb +7 -0
- data/test/ApplicationPoolServer_ApplicationPoolTest.cpp +2 -0
- data/test/ApplicationPoolTest.cpp +39 -62
- data/test/CxxTestMain.cpp +6 -6
- data/test/HttpStatusExtractorTest.cpp +17 -0
- data/test/StandardApplicationPoolTest.cpp +2 -0
- data/test/UtilsTest.cpp +17 -28
- data/test/ruby/abstract_request_handler_spec.rb +3 -7
- data/test/ruby/utils_spec.rb +18 -13
- data/test/ruby/wsgi/application_spawner_spec.rb +5 -9
- data/test/stub/railsapp/app/controllers/{bar_controller_1.rb → bar_controller.rb} +0 -0
- data/test/stub/railsapp/app/controllers/bar_controller_1.txt +5 -0
- data/test/stub/railsapp/app/controllers/{bar_controller_2.rb → bar_controller_2.txt} +0 -0
- data/test/support/Support.h +20 -0
- data/test/support/config.rb +13 -0
- data/vendor/README +4 -3
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/COPYING +1 -1
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/KNOWN-ISSUES +0 -0
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/README +54 -7
- data/vendor/rack-1.0.0-git/Rakefile +164 -0
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack.rb +7 -3
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/adapter/camping.rb +0 -0
- data/vendor/rack-1.0.0-git/lib/rack/auth/abstract/handler.rb +37 -0
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/auth/abstract/request.rb +0 -0
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/auth/basic.rb +0 -0
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/auth/digest/md5.rb +1 -1
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/auth/digest/nonce.rb +0 -0
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/auth/digest/params.rb +0 -0
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/auth/digest/request.rb +2 -2
- data/vendor/rack-1.0.0-git/lib/rack/auth/openid.rb +480 -0
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/builder.rb +1 -5
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/cascade.rb +0 -0
- data/vendor/rack-1.0.0-git/lib/rack/chunked.rb +49 -0
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/commonlogger.rb +0 -0
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/conditionalget.rb +4 -0
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/content_length.rb +7 -3
- data/vendor/rack-1.0.0-git/lib/rack/content_type.rb +23 -0
- data/vendor/rack-1.0.0-git/lib/rack/deflater.rb +96 -0
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/directory.rb +5 -2
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/file.rb +4 -1
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/handler.rb +22 -1
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/handler/cgi.rb +7 -3
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/handler/evented_mongrel.rb +0 -0
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/handler/fastcgi.rb +26 -24
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/handler/lsws.rb +7 -4
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/handler/mongrel.rb +5 -3
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/handler/scgi.rb +5 -3
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/handler/swiftiplied_mongrel.rb +0 -0
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/handler/thin.rb +3 -0
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/handler/webrick.rb +11 -5
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/head.rb +0 -0
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/lint.rb +138 -66
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/lobster.rb +0 -0
- data/vendor/rack-1.0.0-git/lib/rack/lock.rb +16 -0
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/methodoverride.rb +0 -0
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/mime.rb +4 -4
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/mock.rb +42 -5
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/recursive.rb +0 -0
- data/vendor/rack-1.0.0-git/lib/rack/reloader.rb +106 -0
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/request.rb +46 -10
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/response.rb +15 -3
- data/vendor/rack-1.0.0-git/lib/rack/rewindable_input.rb +98 -0
- data/vendor/rack-1.0.0-git/lib/rack/session/abstract/id.rb +142 -0
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/session/cookie.rb +2 -0
- data/vendor/rack-1.0.0-git/lib/rack/session/memcache.rb +109 -0
- data/vendor/rack-1.0.0-git/lib/rack/session/pool.rb +100 -0
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/showexceptions.rb +2 -1
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/showstatus.rb +1 -1
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/static.rb +0 -0
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/urlmap.rb +12 -5
- data/vendor/{rack-0.9.1 → rack-1.0.0-git}/lib/rack/utils.rb +212 -65
- metadata +71 -170
- data/doc/rdoc/classes/ConditionVariable.html +0 -194
- data/doc/rdoc/classes/Exception.html +0 -120
- data/doc/rdoc/classes/GC.html +0 -113
- data/doc/rdoc/classes/IO.html +0 -169
- data/doc/rdoc/classes/PhusionPassenger.html +0 -238
- data/doc/rdoc/classes/PhusionPassenger/AbstractInstaller.html +0 -153
- data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +0 -506
- data/doc/rdoc/classes/PhusionPassenger/AbstractServer.html +0 -692
- data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerAlreadyStarted.html +0 -97
- data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerError.html +0 -96
- data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerNotStarted.html +0 -97
- data/doc/rdoc/classes/PhusionPassenger/AbstractServer/UnknownMessage.html +0 -96
- data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +0 -598
- data/doc/rdoc/classes/PhusionPassenger/AdminTools.html +0 -140
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess.html +0 -264
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess/Instance.html +0 -138
- data/doc/rdoc/classes/PhusionPassenger/AppInitError.html +0 -154
- data/doc/rdoc/classes/PhusionPassenger/Application.html +0 -283
- data/doc/rdoc/classes/PhusionPassenger/ConsoleTextTemplate.html +0 -172
- data/doc/rdoc/classes/PhusionPassenger/FrameworkInitError.html +0 -145
- data/doc/rdoc/classes/PhusionPassenger/HTMLTemplate.html +0 -175
- data/doc/rdoc/classes/PhusionPassenger/InitializationError.html +0 -141
- data/doc/rdoc/classes/PhusionPassenger/InvalidPath.html +0 -92
- data/doc/rdoc/classes/PhusionPassenger/MessageChannel.html +0 -489
- data/doc/rdoc/classes/PhusionPassenger/NativeSupport.html +0 -350
- data/doc/rdoc/classes/PhusionPassenger/Rack.html +0 -91
- data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner.html +0 -185
- data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +0 -184
- data/doc/rdoc/classes/PhusionPassenger/Railz.html +0 -95
- data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner.html +0 -419
- data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner/Error.html +0 -98
- data/doc/rdoc/classes/PhusionPassenger/Railz/CGIFixed.html +0 -200
- data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner.html +0 -443
- data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner/Error.html +0 -98
- data/doc/rdoc/classes/PhusionPassenger/Railz/RequestHandler.html +0 -154
- data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +0 -402
- data/doc/rdoc/classes/PhusionPassenger/UnknownError.html +0 -125
- data/doc/rdoc/classes/PhusionPassenger/Utils.html +0 -694
- data/doc/rdoc/classes/PhusionPassenger/VersionNotFound.html +0 -140
- data/doc/rdoc/classes/PhusionPassenger/WSGI.html +0 -89
- data/doc/rdoc/classes/PhusionPassenger/WSGI/ApplicationSpawner.html +0 -188
- data/doc/rdoc/classes/PlatformInfo.html +0 -831
- data/doc/rdoc/classes/RakeExtensions.html +0 -197
- data/doc/rdoc/classes/Signal.html +0 -134
- data/doc/rdoc/created.rid +0 -1
- data/doc/rdoc/files/DEVELOPERS_TXT.html +0 -240
- data/doc/rdoc/files/README.html +0 -157
- data/doc/rdoc/files/ext/phusion_passenger/native_support_c.html +0 -92
- data/doc/rdoc/files/lib/phusion_passenger/abstract_installer_rb.html +0 -129
- data/doc/rdoc/files/lib/phusion_passenger/abstract_request_handler_rb.html +0 -131
- data/doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/abstract_server_rb.html +0 -130
- data/doc/rdoc/files/lib/phusion_passenger/admin_tools/control_process_rb.html +0 -129
- data/doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/application_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/console_text_template_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/constants_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/dependencies_rb.html +0 -134
- data/doc/rdoc/files/lib/phusion_passenger/events_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/exceptions_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/html_template_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/message_channel_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/packaging_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/platform_info_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +0 -133
- data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/railz/application_spawner_rb.html +0 -143
- data/doc/rdoc/files/lib/phusion_passenger/railz/cgi_fixed_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/railz/framework_spawner_rb.html +0 -145
- data/doc/rdoc/files/lib/phusion_passenger/railz/request_handler_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/simple_benchmarking_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/spawn_manager_rb.html +0 -161
- data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +0 -175
- data/doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html +0 -129
- data/doc/rdoc/files/misc/rake/extensions_rb.html +0 -130
- data/doc/rdoc/fr_class_index.html +0 -90
- data/doc/rdoc/fr_file_index.html +0 -76
- data/doc/rdoc/fr_method_index.html +0 -195
- data/doc/rdoc/index.html +0 -26
- data/doc/rdoc/rdoc-style.css +0 -187
- data/vendor/rack-0.9.1/AUTHORS +0 -8
- data/vendor/rack-0.9.1/ChangeLog +0 -1423
- data/vendor/rack-0.9.1/Rakefile +0 -188
- data/vendor/rack-0.9.1/SPEC +0 -129
- data/vendor/rack-0.9.1/lib/rack/auth/abstract/handler.rb +0 -28
- data/vendor/rack-0.9.1/lib/rack/auth/openid.rb +0 -438
- data/vendor/rack-0.9.1/lib/rack/deflater.rb +0 -87
- data/vendor/rack-0.9.1/lib/rack/reloader.rb +0 -64
- data/vendor/rack-0.9.1/lib/rack/session/abstract/id.rb +0 -153
- data/vendor/rack-0.9.1/lib/rack/session/memcache.rb +0 -97
- data/vendor/rack-0.9.1/lib/rack/session/pool.rb +0 -73
data/doc/Users guide Nginx.html
CHANGED
@@ -1243,25 +1243,15 @@ by about 33%. And it’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 <integer></h4>
|
1246
|
-
<div class="paragraph"><p>The maximum number of
|
1247
|
-
|
1248
|
-
|
1249
|
-
<div class="paragraph"><p>
|
1250
|
-
|
1251
|
-
|
1252
|
-
|
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’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’re on a non-shared host that’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>
|
1254
|
+
The default value is <em>0</em>.</p></div>
|
1265
1255
|
<h4 id="PassengerPoolIdleTime">5.8.3. passenger_pool_idle_time <integer></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’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-
|
2262
|
+
Last updated 2009-04-25 13:32:58 CEST
|
2273
2263
|
</div>
|
2274
2264
|
</div>
|
2275
2265
|
</body>
|
data/doc/Users guide Nginx.txt
CHANGED
@@ -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
|
607
|
-
|
608
|
-
|
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
|
-
|
621
|
-
|
622
|
-
|
623
|
-
|
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 '
|
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
|
73
|
+
<hr size="1"><address style="text-align: right;"><small>Generated on Sun Apr 26 13:02:37 2009 for Passenger by
|
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
|
69
|
-
<a name="l00048"></a>00048 <span class="
|
70
|
-
<a name="l00049"></a
|
71
|
-
<a name="l00050"></a>00050 <span class="preprocessor"
|
72
|
-
<a name="l00051"></a>00051
|
73
|
-
<a name="l00052"></a>00052
|
74
|
-
<a name="l00053"></a>00053
|
75
|
-
<a name="l00054"></a>00054
|
76
|
-
<a name="l00055"></a>00055
|
77
|
-
<a name="l00056"></a>00056
|
78
|
-
<a name="l00057"></a>00057
|
79
|
-
<a name="l00058"></a>00058
|
80
|
-
<a name="l00059"></a>00059 <span class="comment">
|
81
|
-
<a name="l00060"></a>00060 <span class="comment"> *
|
82
|
-
<a name="l00061"></a>00061 <span class="comment">
|
83
|
-
<a name="l00062"></a>00062
|
84
|
-
<a name="l00063"></a>00063
|
85
|
-
<a name="l00064"></a>00064
|
86
|
-
<a name="l00065"></a>00065
|
87
|
-
<a name="l00066"></a>00066
|
88
|
-
<a name="l00067"></a>00067
|
89
|
-
<a name="l00068"></a>00068
|
90
|
-
<a name="l00069"></a>00069
|
91
|
-
<a name="l00070"></a>00070
|
92
|
-
<a name="l00071"></a>00071
|
93
|
-
<a name="l00072"></a>00072
|
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 <set></span>
|
71
|
+
<a name="l00050"></a>00050 <span class="preprocessor"> #include <string></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<std::string> railsBaseURIs;
|
90
|
+
<a name="l00069"></a>00069 std::set<std::string> 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
|
96
|
-
<a name="l00075"></a>00075 Threeway
|
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
|
99
|
-
<a name="l00078"></a>00078 Threeway
|
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
|
102
|
-
<a name="l00081"></a>00081 Threeway
|
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"> /**
|
105
|
-
<a name="l00084"></a>00084
|
106
|
-
<a name="l00085"></a>00085 <span class="
|
107
|
-
<a name="l00086"></a>00086
|
108
|
-
<a name="l00087"></a>00087 <span class="comment">
|
109
|
-
<a name="l00088"></a>00088
|
110
|
-
<a name="l00089"></a>00089
|
111
|
-
<a name="l00090"></a>00090 <span class="comment">
|
112
|
-
<a name="l00091"></a>00091 <span class="comment">
|
113
|
-
<a name="l00092"></a>00092
|
114
|
-
<a name="l00093"></a>00093
|
115
|
-
<a name="l00094"></a>00094 <span class="comment">
|
116
|
-
<a name="l00095"></a>00095
|
117
|
-
<a name="l00096"></a>00096 <span class="
|
118
|
-
<a name="l00097"></a>00097
|
119
|
-
<a name="l00098"></a>00098 <span class="comment">
|
120
|
-
<a name="l00099"></a>00099
|
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">
|
123
|
-
<a name="l00102"></a>00102
|
124
|
-
<a name="l00103"></a>00103
|
125
|
-
<a name="l00104"></a>00104 <span class="comment">
|
126
|
-
<a name="l00105"></a>00105 <span class="comment">
|
127
|
-
<a name="l00106"></a>00106
|
128
|
-
<a name="l00107"></a>00107
|
129
|
-
<a name="l00108"></a>00108 <span class="comment">
|
130
|
-
<a name="l00109"></a>00109
|
131
|
-
<a name="l00110"></a>00110
|
132
|
-
<a name="l00111"></a>00111 <span class="comment">
|
133
|
-
<a name="l00112"></a>00112 <span class="comment">
|
134
|
-
<a name="l00113"></a>00113
|
135
|
-
<a name="l00114"></a>00114
|
136
|
-
<a name="l00115"></a>00115 <span class="comment">
|
137
|
-
<a name="l00116"></a>00116
|
138
|
-
<a name="l00117"></a>00117
|
139
|
-
<a name="l00118"></a>00118 <span class="comment">
|
140
|
-
<a name="l00119"></a>00119
|
141
|
-
<a name="l00120"></a>00120
|
142
|
-
<a name="l00121"></a>00121 <span class="comment">
|
143
|
-
<a name="l00122"></a>00122
|
144
|
-
<a name="l00123"></a>00123 <span class="
|
145
|
-
<a name="l00124"></a>00124
|
146
|
-
<a name="l00125"></a>00125 <span class="comment">
|
147
|
-
<a name="l00126"></a>00126
|
148
|
-
<a name="l00127"></a>00127
|
149
|
-
<a name="l00128"></a>00128 <span class="comment">
|
150
|
-
<a name="l00129"></a>00129
|
151
|
-
<a name="l00130"></a>00130
|
152
|
-
<a name="l00131"></a>00131 <span class="comment">
|
153
|
-
<a name="l00132"></a>00132
|
154
|
-
<a name="l00133"></a>00133 <span class="
|
155
|
-
<a name="l00134"></a>00134
|
156
|
-
<a name="l00135"></a>00135
|
157
|
-
<a name="l00136"></a>00136 <span class="
|
158
|
-
<a name="l00137"></a>00137
|
159
|
-
<a name="l00138"></a>00138 Threeway
|
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">
|
162
|
-
<a name="l00141"></a>00141
|
163
|
-
<a name="l00142"></a>00142
|
164
|
-
<a name="l00143"></a>00143 <span class="comment">
|
165
|
-
<a name="l00144"></a>00144
|
166
|
-
<a name="l00145"></a>00145
|
167
|
-
<a name="l00146"></a>00146 <span class="comment">
|
168
|
-
<a name="l00147"></a>00147
|
169
|
-
<a name="l00148"></a>00148 <span class="
|
170
|
-
<a name="l00149"></a>00149
|
171
|
-
<a name="l00150"></a>00150 <span class="comment">
|
172
|
-
<a name="l00151"></a>00151
|
173
|
-
<a name="l00152"></a>00152
|
174
|
-
<a name="l00153"></a>00153 <span class="comment">
|
175
|
-
<a name="l00154"></a>00154
|
176
|
-
<a name="l00155"></a>00155
|
177
|
-
<a name="l00156"></a>00156
|
178
|
-
<a name="l00157"></a>00157
|
179
|
-
<a name="l00158"></a>00158
|
180
|
-
<a name="l00159"></a>00159
|
181
|
-
<a name="l00160"></a>00160
|
182
|
-
<a name="l00161"></a>00161
|
183
|
-
<a name="l00162"></a>00162
|
184
|
-
<a name="l00163"></a>00163
|
185
|
-
<a name="l00164"></a>00164
|
186
|
-
<a name="l00165"></a>00165
|
187
|
-
<a name="l00166"></a>00166
|
188
|
-
<a name="l00167"></a>00167
|
189
|
-
<a name="l00168"></a>00168
|
190
|
-
<a name="l00169"></a>00169
|
191
|
-
<a name="l00170"></a>00170
|
192
|
-
<a name="l00171"></a>00171
|
193
|
-
<a name="l00172"></a>00172
|
194
|
-
<a name="l00173"></a>00173
|
195
|
-
<a name="l00174"></a>00174
|
196
|
-
<a name="l00175"></a>00175
|
197
|
-
<a name="l00176"></a>00176
|
198
|
-
<a name="l00177"></a>00177
|
199
|
-
<a name="l00178"></a>00178
|
200
|
-
<a name="l00179"></a>00179
|
201
|
-
<a name="l00180"></a>00180
|
202
|
-
<a name="l00181"></a>00181
|
203
|
-
<a name="l00182"></a>00182
|
204
|
-
<a name="l00183"></a>00183
|
205
|
-
<a name="l00184"></a>00184
|
206
|
-
<a name="l00185"></a>00185
|
207
|
-
<a name="l00186"></a>00186
|
208
|
-
<a name="l00187"></a>00187
|
209
|
-
<a name="l00188"></a>00188
|
210
|
-
<a name="l00189"></a>00189
|
211
|
-
<a name="l00190"></a>00190
|
212
|
-
<a name="l00191"></a>00191
|
213
|
-
<a name="l00192"></a>00192
|
214
|
-
<a name="l00193"></a>00193
|
215
|
-
<a name="l00194"></a>00194
|
216
|
-
<a name="l00195"></a>00195
|
217
|
-
<a name="l00196"></a>00196
|
218
|
-
<a name="l00197"></a>00197
|
219
|
-
<a name="l00198"></a>00198 <span class="keywordflow">
|
220
|
-
<a name="l00199"></a>00199
|
221
|
-
<a name="l00200"></a>00200
|
222
|
-
<a name="l00201"></a>00201
|
223
|
-
<a name="l00202"></a>00202
|
224
|
-
<a name="l00203"></a>00203
|
225
|
-
<a name="l00204"></a>00204
|
226
|
-
<a name="l00205"></a>00205
|
227
|
-
<a name="l00206"></a>00206
|
228
|
-
<a name="l00207"></a>00207
|
229
|
-
<a name="l00208"></a>00208
|
230
|
-
<a name="l00209"></a>00209
|
231
|
-
<a name="l00210"></a>00210
|
232
|
-
<a name="l00211"></a>00211
|
233
|
-
<a name="l00212"></a>00212
|
234
|
-
<a name="l00213"></a>00213
|
235
|
-
<a name="l00214"></a>00214
|
236
|
-
<a name="l00215"></a>00215
|
237
|
-
<a name="l00216"></a>00216
|
238
|
-
<a name="l00217"></a>00217
|
239
|
-
<a name="l00218"></a>00218
|
240
|
-
<a name="l00219"></a>00219
|
241
|
-
<a name="l00220"></a>00220
|
242
|
-
<a name="l00221"></a>00221
|
243
|
-
<a name="l00222"></a>00222
|
244
|
-
<a name="l00223"></a>00223
|
245
|
-
<a name="l00224"></a>00224
|
246
|
-
<a name="l00225"></a>00225
|
247
|
-
<a name="l00226"></a>00226
|
248
|
-
<a name="l00227"></a>00227
|
249
|
-
<a name="l00228"></a>00228
|
250
|
-
<a name="l00229"></a>00229
|
251
|
-
<a name="l00230"></a>00230
|
252
|
-
<a name="l00231"></a>00231
|
253
|
-
<a name="l00232"></a>00232
|
254
|
-
<a name="l00233"></a>00233
|
255
|
-
<a name="l00234"></a>00234
|
256
|
-
<a name="l00235"></a>00235
|
257
|
-
<a name="l00236"></a>00236
|
258
|
-
<a name="l00237"></a>00237
|
259
|
-
<a name="l00238"></a>00238
|
260
|
-
<a name="l00239"></a>00239
|
261
|
-
<a name="l00240"></a>00240
|
262
|
-
<a name="l00241"></a>00241
|
263
|
-
<a name="l00242"></a>00242
|
264
|
-
<a name="l00243"></a>00243
|
265
|
-
<a name="l00244"></a>00244
|
266
|
-
<a name="l00245"></a>00245
|
267
|
-
<a name="l00246"></a>00246
|
268
|
-
<a name="l00247"></a>00247
|
269
|
-
<a name="l00248"></a>00248
|
270
|
-
<a name="l00249"></a>00249
|
271
|
-
<a name="l00250"></a>00250
|
272
|
-
<a name="l00251"></a>00251
|
273
|
-
<a name="l00252"></a>00252
|
274
|
-
<a name="l00253"></a>00253 <span class="comment">
|
275
|
-
<a name="l00254"></a>00254 <span class="comment"> *
|
276
|
-
<a name="l00255"></a>00255 <span class="comment">
|
277
|
-
<a name="l00256"></a>00256
|
278
|
-
<a name="l00257"></a>00257 <span class="comment">
|
279
|
-
<a name="l00258"></a>00258 <span class="
|
280
|
-
<a name="l00259"></a>00259
|
281
|
-
<a name="l00260"></a>00260 <span class="comment"> /** The
|
282
|
-
<a name="l00261"></a>00261 <span class="keyword">const</span> <span class="keywordtype">char</span> *
|
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> &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
|
285
|
-
<a name="l00264"></a>00264 <span class="
|
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
|
288
|
-
<a name="l00267"></a>00267
|
289
|
-
<a name="l00268"></a>00268 <span class="
|
290
|
-
<a name="l00269"></a>00269
|
291
|
-
<a name="l00270"></a>00270 <span class="comment">
|
292
|
-
<a name="l00271"></a>00271
|
293
|
-
<a name="l00272"></a>00272 <span class="
|
294
|
-
<a name="l00273"></a>00273
|
295
|
-
<a name="l00274"></a>00274 <span class="comment">
|
296
|
-
<a name="l00275"></a>00275
|
297
|
-
<a name="l00276"></a>00276 <span class="
|
298
|
-
<a name="l00277"></a>00277
|
299
|
-
<a name="l00278"></a>00278 <span class="comment">
|
300
|
-
<a name="l00279"></a>00279
|
301
|
-
<a name="l00280"></a>00280 <span class="
|
302
|
-
<a name="l00281"></a>00281
|
303
|
-
<a name="l00282"></a>00282 <span class="comment">
|
304
|
-
<a name="l00283"></a>00283
|
305
|
-
<a name="l00284"></a>00284 <span class="
|
306
|
-
<a name="l00285"></a>00285
|
307
|
-
<a name="l00286"></a>00286 <span class="comment">
|
308
|
-
<a name="l00287"></a>00287
|
309
|
-
<a name="l00288"></a>00288 <span class="
|
310
|
-
<a name="l00289"></a>00289
|
311
|
-
<a name="l00290"></a>00290 <span class="comment">
|
312
|
-
<a name="l00291"></a>00291 <span class="keywordtype">bool</span>
|
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
|
315
|
-
<a name="l00294"></a>00294
|
316
|
-
<a name="l00295"></a>00295 <span class="
|
317
|
-
<a name="l00296"></a>00296 <span class="comment"
|
318
|
-
<a name="l00297"></a>00297 <span class="comment">
|
319
|
-
<a name="l00298"></a>00298
|
320
|
-
<a name="l00299"></a>00299 <span class="comment"
|
321
|
-
<a name="l00300"></a>00300
|
322
|
-
<a name="l00301"></a>00301
|
323
|
-
<a name="l00302"></a>00302 <span class="comment">
|
324
|
-
<a name="l00303"></a>00303
|
325
|
-
<a name="l00304"></a>00304
|
326
|
-
<a name="l00305"></a>00305
|
327
|
-
<a name="l00306"></a>00306
|
328
|
-
<a name="l00307"></a>00307 <span class="
|
329
|
-
<a name="l00308"></a>00308
|
330
|
-
<a name="l00309"></a>00309
|
331
|
-
<a name="l00310"></a>00310
|
332
|
-
<a name="l00311"></a>00311
|
333
|
-
<a name="l00312"></a>00312
|
334
|
-
<a name="l00313"></a>00313
|
335
|
-
<a name="l00314"></a>00314
|
336
|
-
<a name="l00315"></a>00315
|
337
|
-
<a name="l00316"></a>00316
|
338
|
-
<a name="l00317"></a>00317
|
339
|
-
<a name="l00318"></a>00318
|
340
|
-
<a name="l00319"></a>00319
|
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
|
347
|
-
<a name="l00326"></a>00326
|
348
|
-
<a name="l00327"></a>00327
|
349
|
-
<a name="l00328"></a>00328
|
350
|
-
<a name="l00329"></a>00329 <span class="
|
351
|
-
<a name="l00330"></a>00330 <span class="
|
352
|
-
<a name="l00331"></a>00331 <span class="comment">/** Configuration hook for per-directory configuration structure
|
353
|
-
<a name="l00332"></a>00332 <span class="keywordtype">void</span> *<a class="code" href="group__Configuration.html#
|
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-
|
356
|
-
<a name="l00335"></a>00335 <span class="keywordtype">void</span> *<a class="code" href="group__Configuration.html#
|
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
|
359
|
-
<a name="l00338"></a>00338 <span class="keywordtype">void</span> *<a class="code" href="group__Configuration.html#
|
360
|
-
<a name="l00339"></a>00339
|
361
|
-
<a name="l00340"></a>00340 <span class="
|
362
|
-
<a name="l00341"></a>00341 <span class="
|
363
|
-
<a name="l00342"></a>00342
|
364
|
-
<a name="l00343"></a>00343 <span class="
|
365
|
-
<a name="l00344"></a>00344
|
366
|
-
<a name="l00345"></a>00345 <span class="
|
367
|
-
<a name="l00346"></a>00346 <span class="
|
368
|
-
<a name="l00347"></a>00347
|
369
|
-
<a name="l00348"></a>00348 <span class="preprocessor"
|
370
|
-
<a name="l00349"></a>00349 <span class="
|
371
|
-
<a name="l00350"></a>00350 <span class="
|
372
|
-
<a name="l00351"></a>00351 <span class="
|
373
|
-
<a name="l00352"></a>00352
|
374
|
-
<a name="l00353"></a>00353 <span class="comment"
|
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
|
376
|
+
<hr size="1"><address style="text-align: right;"><small>Generated on Sun Apr 26 13:02:37 2009 for Passenger by
|
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>
|