passenger 2.2.4 → 2.2.5

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

Potentially problematic release.


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

Files changed (105) hide show
  1. data/NEWS +137 -0
  2. data/Rakefile +101 -19
  3. data/bin/passenger-install-nginx-module +10 -3
  4. data/bin/passenger-make-enterprisey +1 -1
  5. data/doc/Users guide Apache.html +227 -92
  6. data/doc/Users guide Apache.txt +169 -75
  7. data/doc/Users guide Nginx.html +1 -1
  8. data/doc/cxxapi/Bucket_8h-source.html +1 -1
  9. data/doc/cxxapi/Configuration_8h-source.html +373 -338
  10. data/doc/cxxapi/DirectoryMapper_8h-source.html +1 -1
  11. data/doc/cxxapi/Hooks_8h-source.html +1 -1
  12. data/doc/cxxapi/annotated.html +1 -1
  13. data/doc/cxxapi/classHooks-members.html +1 -1
  14. data/doc/cxxapi/classHooks.html +2 -2
  15. data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +1 -1
  16. data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +1 -1
  17. data/doc/cxxapi/classes.html +1 -1
  18. data/doc/cxxapi/definitions_8h-source.html +1 -1
  19. data/doc/cxxapi/files.html +1 -1
  20. data/doc/cxxapi/functions.html +1 -1
  21. data/doc/cxxapi/functions_func.html +1 -1
  22. data/doc/cxxapi/graph_legend.html +1 -1
  23. data/doc/cxxapi/group__Configuration.html +1 -1
  24. data/doc/cxxapi/group__Core.html +1 -1
  25. data/doc/cxxapi/group__Hooks.html +1 -1
  26. data/doc/cxxapi/group__Support.html +1 -1
  27. data/doc/cxxapi/main.html +1 -1
  28. data/doc/cxxapi/modules.html +1 -1
  29. data/doc/rdoc/classes/ConditionVariable.html +59 -59
  30. data/doc/rdoc/classes/Exception.html +11 -11
  31. data/doc/rdoc/classes/GC.html +4 -4
  32. data/doc/rdoc/classes/IO.html +14 -14
  33. data/doc/rdoc/classes/PhusionPassenger.html +1 -1
  34. data/doc/rdoc/classes/PhusionPassenger/AbstractInstaller.html +8 -8
  35. data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +136 -136
  36. data/doc/rdoc/classes/PhusionPassenger/AbstractServer.html +254 -254
  37. data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +61 -61
  38. data/doc/rdoc/classes/PhusionPassenger/AppInitError.html +4 -4
  39. data/doc/rdoc/classes/PhusionPassenger/Application.html +14 -14
  40. data/doc/rdoc/classes/PhusionPassenger/ConsoleTextTemplate.html +12 -12
  41. data/doc/rdoc/classes/PhusionPassenger/FrameworkInitError.html +4 -4
  42. data/doc/rdoc/classes/PhusionPassenger/HTMLTemplate.html +12 -12
  43. data/doc/rdoc/classes/PhusionPassenger/InitializationError.html +5 -5
  44. data/doc/rdoc/classes/PhusionPassenger/MessageChannel.html +139 -139
  45. data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +61 -56
  46. data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner.html +3 -3
  47. data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner.html +7 -7
  48. data/doc/rdoc/classes/PhusionPassenger/Railz/RequestHandler.html +15 -15
  49. data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +119 -119
  50. data/doc/rdoc/classes/PhusionPassenger/UnknownError.html +4 -4
  51. data/doc/rdoc/classes/PhusionPassenger/Utils.html +310 -312
  52. data/doc/rdoc/classes/PhusionPassenger/Utils/PseudoIO.html +169 -0
  53. data/doc/rdoc/classes/PhusionPassenger/VersionNotFound.html +4 -4
  54. data/doc/rdoc/classes/PlatformInfo.html +165 -164
  55. data/doc/rdoc/classes/Signal.html +23 -23
  56. data/doc/rdoc/created.rid +1 -1
  57. data/doc/rdoc/files/ext/phusion_passenger/native_support_c.html +1 -1
  58. data/doc/rdoc/files/lib/phusion_passenger/abstract_request_handler_rb.html +26 -28
  59. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_rb.html +26 -28
  60. data/doc/rdoc/files/lib/phusion_passenger/admin_tools/control_process_rb.html +1 -1
  61. data/doc/rdoc/files/lib/phusion_passenger/constants_rb.html +1 -1
  62. data/doc/rdoc/files/lib/phusion_passenger/message_channel_rb.html +26 -28
  63. data/doc/rdoc/files/lib/phusion_passenger/platform_info_rb.html +1 -1
  64. data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +1 -1
  65. data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +26 -28
  66. data/doc/rdoc/files/lib/phusion_passenger/railz/application_spawner_rb.html +1 -2
  67. data/doc/rdoc/files/lib/phusion_passenger/railz/framework_spawner_rb.html +1 -1
  68. data/doc/rdoc/files/lib/phusion_passenger/railz/request_handler_rb.html +26 -28
  69. data/doc/rdoc/files/lib/phusion_passenger/spawn_manager_rb.html +26 -28
  70. data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +34 -36
  71. data/doc/rdoc/fr_class_index.html +1 -0
  72. data/doc/rdoc/fr_method_index.html +72 -68
  73. data/ext/apache2/Configuration.cpp +69 -15
  74. data/ext/apache2/Configuration.h +37 -2
  75. data/ext/apache2/Hooks.cpp +167 -59
  76. data/ext/common/ApplicationPoolServerExecutable.cpp +1 -1
  77. data/ext/common/MessageChannel.h +4 -4
  78. data/ext/common/StandardApplicationPool.h +1 -1
  79. data/ext/common/Timer.h +2 -0
  80. data/ext/common/Version.h +1 -1
  81. data/ext/nginx/Configuration.c +3 -3
  82. data/ext/nginx/ContentHandler.c +16 -4
  83. data/ext/nginx/HelperServer.cpp +1 -1
  84. data/ext/oxt/system_calls.cpp +6 -1
  85. data/ext/oxt/thread.hpp +17 -2
  86. data/ext/phusion_passenger/native_support.c +4 -4
  87. data/lib/phusion_passenger/abstract_request_handler.rb +3 -3
  88. data/lib/phusion_passenger/abstract_server.rb +1 -0
  89. data/lib/phusion_passenger/constants.rb +1 -1
  90. data/lib/phusion_passenger/message_channel.rb +1 -0
  91. data/lib/phusion_passenger/platform_info.rb +3 -2
  92. data/lib/phusion_passenger/rack/request_handler.rb +11 -7
  93. data/lib/phusion_passenger/railz/application_spawner.rb +7 -4
  94. data/lib/phusion_passenger/railz/request_handler.rb +1 -0
  95. data/lib/phusion_passenger/spawn_manager.rb +1 -0
  96. data/lib/phusion_passenger/utils.rb +38 -20
  97. data/test/integration_tests/apache2_tests.rb +162 -100
  98. data/test/integration_tests/mycook_spec.rb +63 -62
  99. data/test/integration_tests/nginx_tests.rb +12 -5
  100. data/test/ruby/utils_spec.rb +98 -14
  101. data/test/stub/apache2/httpd.conf.erb +2 -1
  102. data/test/stub/rails_apps/mycook/app/controllers/welcome_controller.rb +8 -0
  103. data/test/support/apache2_controller.rb +5 -1
  104. data/test/support/test_helper.rb +42 -13
  105. metadata +7 -137
@@ -316,7 +316,7 @@
316
316
  <a name="l00295"></a>00295 <span class="preprocessor">#endif </span><span class="comment">/* _PASSENGER_DIRECTORY_MAPPER_H_ */</span>
317
317
  <a name="l00296"></a>00296
318
318
  </pre></div></div>
319
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Jun 21 10:41:31 2009 for Passenger by&nbsp;
319
+ <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 1 11:23:09 2009 for Passenger by&nbsp;
320
320
  <a href="http://www.doxygen.org/index.html">
321
321
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
322
322
  </body>
@@ -65,7 +65,7 @@
65
65
  <a name="l00044"></a>00044 <span class="preprocessor"></span>
66
66
  <a name="l00045"></a>00045 <span class="preprocessor">#endif </span><span class="comment">/* _PASSENGER_HOOKS_H_ */</span>
67
67
  </pre></div></div>
68
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Jun 21 10:41:31 2009 for Passenger by&nbsp;
68
+ <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 1 11:23:09 2009 for Passenger by&nbsp;
69
69
  <a href="http://www.doxygen.org/index.html">
70
70
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
71
71
  </body>
@@ -27,7 +27,7 @@
27
27
  <tr><td class="indexkey"><a class="el" href="classHooks.html">Hooks</a></td><td class="indexvalue">Apache hook functions, wrapped in a class </td></tr>
28
28
  </table>
29
29
  </div>
30
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Jun 21 10:41:31 2009 for Passenger by&nbsp;
30
+ <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 1 11:23:10 2009 for Passenger by&nbsp;
31
31
  <a href="http://www.doxygen.org/index.html">
32
32
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
33
33
  </body>
@@ -28,7 +28,7 @@
28
28
  <tr class="memlist"><td><a class="el" href="classHooks.html#d6cca64be8a9075b4b92efdb4d9020a5">startBlockingModAutoIndex</a>(request_rec *r)</td><td><a class="el" href="classHooks.html">Hooks</a></td><td><code> [inline]</code></td></tr>
29
29
  <tr class="memlist"><td><a class="el" href="classHooks.html#e3091c57c95b2f8269f566099802f0ec">startBlockingModDir</a>(request_rec *r)</td><td><a class="el" href="classHooks.html">Hooks</a></td><td><code> [inline]</code></td></tr>
30
30
  </table></div>
31
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Jun 21 10:41:31 2009 for Passenger by&nbsp;
31
+ <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 1 11:23:10 2009 for Passenger by&nbsp;
32
32
  <a href="http://www.doxygen.org/index.html">
33
33
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
34
34
  </body>
@@ -70,7 +70,7 @@ This is the hook method for the map_to_storage hook.
70
70
  Apache's final map_to_storage hook method (defined in core.c) will do the following:<p>
71
71
  If r-&gt;filename doesn't exist, then it will change the filename to the following form:<p>
72
72
  A/B<p>
73
- A is top-most directory that exists. B is the first filename piece that normally follows A. For example, suppose that a website's DocumentRoot is /website, on server <a href="http://test.com/.">http://test.com/.</a> Suppose that there's also a directory /website/images.<p>
73
+ A is top-most directory that exists. B is the first filename piece that normally follows A. For example, suppose that a website's DocumentRoot is /website, on server <a href="http://test.com/.">http://test.com/.</a> Suppose that there's also a directory /website/images. No other files or directories exist in /website.<p>
74
74
  If we access: then r-&gt;filename will be: <a href="http://test.com/foo/bar">http://test.com/foo/bar</a> /website/foo <a href="http://test.com/foo/bar/baz">http://test.com/foo/bar/baz</a> /website/foo <a href="http://test.com/images/foo/bar">http://test.com/images/foo/bar</a> /website/images/foo<p>
75
75
  We obviously don't want this to happen because it'll interfere with our page cache file search code. So here we save the original value of r-&gt;filename so that we can use it later.
76
76
  </div>
@@ -148,7 +148,7 @@ So in <a class="el" href="classHooks.html#e3091c57c95b2f8269f566099802f0ec" titl
148
148
  <hr>The documentation for this class was generated from the following file:<ul>
149
149
  <li>Hooks.cpp</ul>
150
150
  </div>
151
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Jun 21 10:41:31 2009 for Passenger by&nbsp;
151
+ <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 1 11:23:10 2009 for Passenger by&nbsp;
152
152
  <a href="http://www.doxygen.org/index.html">
153
153
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
154
154
  </body>
@@ -30,7 +30,7 @@
30
30
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1DirectoryMapper.html#f5091e3cef3878e160e5d3b2181d82fb">getEnvironment</a>()</td><td><a class="el" href="classPassenger_1_1DirectoryMapper.html">Passenger::DirectoryMapper</a></td><td><code> [inline]</code></td></tr>
31
31
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1DirectoryMapper.html#ef969f27622fb215990a870076648aa1">getPublicDirectory</a>()</td><td><a class="el" href="classPassenger_1_1DirectoryMapper.html">Passenger::DirectoryMapper</a></td><td><code> [inline]</code></td></tr>
32
32
  </table></div>
33
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Jun 21 10:41:31 2009 for Passenger by&nbsp;
33
+ <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 1 11:23:10 2009 for Passenger by&nbsp;
34
34
  <a href="http://www.doxygen.org/index.html">
35
35
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
36
36
  </body>
@@ -251,7 +251,7 @@ Returns an empty string if the document root of the HTTP request cannot be deter
251
251
  <hr>The documentation for this class was generated from the following file:<ul>
252
252
  <li><a class="el" href="DirectoryMapper_8h-source.html">DirectoryMapper.h</a></ul>
253
253
  </div>
254
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Jun 21 10:41:31 2009 for Passenger by&nbsp;
254
+ <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 1 11:23:10 2009 for Passenger by&nbsp;
255
255
  <a href="http://www.doxygen.org/index.html">
256
256
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
257
257
  </body>
@@ -28,7 +28,7 @@
28
28
  </td><td><a class="el" href="classPassenger_1_1DirectoryMapper.html">DirectoryMapper</a> (Passenger)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_H"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;H&nbsp;&nbsp;</div></td></tr></table>
29
29
  </td><td><a class="el" href="classHooks.html">Hooks</a>&nbsp;&nbsp;&nbsp;</td></tr></table><p><div class="qindex"><a class="qindex" href="#letter_D">D</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_H">H</a></div><p>
30
30
  </div>
31
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Jun 21 10:41:31 2009 for Passenger by&nbsp;
31
+ <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 1 11:23:10 2009 for Passenger by&nbsp;
32
32
  <a href="http://www.doxygen.org/index.html">
33
33
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
34
34
  </body>
@@ -25,7 +25,7 @@
25
25
  <a name="l00004"></a>00004 <span class="comment">@defgroup Support Apache-independent support classes and function</span>
26
26
  <a name="l00005"></a>00005 <span class="comment">*/</span>
27
27
  </pre></div></div>
28
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Jun 21 10:41:31 2009 for Passenger by&nbsp;
28
+ <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 1 11:23:09 2009 for Passenger by&nbsp;
29
29
  <a href="http://www.doxygen.org/index.html">
30
30
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
31
31
  </body>
@@ -29,7 +29,7 @@
29
29
  <tr><td class="indexkey"><b>Hooks.h</b> <a href="Hooks_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
30
30
  </table>
31
31
  </div>
32
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Jun 21 10:41:31 2009 for Passenger by&nbsp;
32
+ <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 1 11:23:10 2009 for Passenger by&nbsp;
33
33
  <a href="http://www.doxygen.org/index.html">
34
34
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
35
35
  </body>
@@ -53,7 +53,7 @@ Here is a list of all documented class members with links to the class documenta
53
53
  : <a class="el" href="classHooks.html#e3091c57c95b2f8269f566099802f0ec">Hooks</a>
54
54
  </ul>
55
55
  </div>
56
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Jun 21 10:41:31 2009 for Passenger by&nbsp;
56
+ <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 1 11:23:10 2009 for Passenger by&nbsp;
57
57
  <a href="http://www.doxygen.org/index.html">
58
58
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
59
59
  </body>
@@ -53,7 +53,7 @@
53
53
  : <a class="el" href="classHooks.html#e3091c57c95b2f8269f566099802f0ec">Hooks</a>
54
54
  </ul>
55
55
  </div>
56
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Jun 21 10:41:31 2009 for Passenger by&nbsp;
56
+ <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 1 11:23:10 2009 for Passenger by&nbsp;
57
57
  <a href="http://www.doxygen.org/index.html">
58
58
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
59
59
  </body>
@@ -79,7 +79,7 @@ A purple dashed arrow is used if a class is contained or used by another class.
79
79
  A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </li>
80
80
  </ul>
81
81
  </div>
82
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Jun 21 10:41:31 2009 for Passenger by&nbsp;
82
+ <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 1 11:23:10 2009 for Passenger by&nbsp;
83
83
  <a href="http://www.doxygen.org/index.html">
84
84
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
85
85
  </body>
@@ -204,7 +204,7 @@ Apache module commands array.
204
204
  </div>
205
205
  </div><p>
206
206
  </div>
207
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Jun 21 10:41:31 2009 for Passenger by&nbsp;
207
+ <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 1 11:23:09 2009 for Passenger by&nbsp;
208
208
  <a href="http://www.doxygen.org/index.html">
209
209
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
210
210
  </body>
@@ -41,7 +41,7 @@ Collaboration diagram for Core Apache-related classes and functions:</div>
41
41
 
42
42
  </table>
43
43
  </div>
44
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Jun 21 10:41:31 2009 for Passenger by&nbsp;
44
+ <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 1 11:23:09 2009 for Passenger by&nbsp;
45
45
  <a href="http://www.doxygen.org/index.html">
46
46
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
47
47
  </body>
@@ -32,7 +32,7 @@ Collaboration diagram for Apache hooks:</div>
32
32
  <tr><td></td></tr>
33
33
  </table>
34
34
  </div>
35
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Jun 21 10:41:31 2009 for Passenger by&nbsp;
35
+ <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 1 11:23:10 2009 for Passenger by&nbsp;
36
36
  <a href="http://www.doxygen.org/index.html">
37
37
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
38
38
  </body>
@@ -20,7 +20,7 @@
20
20
  <tr><td></td></tr>
21
21
  </table>
22
22
  </div>
23
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Jun 21 10:41:31 2009 for Passenger by&nbsp;
23
+ <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 1 11:23:09 2009 for Passenger by&nbsp;
24
24
  <a href="http://www.doxygen.org/index.html">
25
25
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
26
26
  </body>
@@ -19,7 +19,7 @@
19
19
  <h1>Passenger Documentation</h1>
20
20
  <p>
21
21
  </div>
22
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Jun 21 10:41:31 2009 for Passenger by&nbsp;
22
+ <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 1 11:23:09 2009 for Passenger by&nbsp;
23
23
  <a href="http://www.doxygen.org/index.html">
24
24
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
25
25
  </body>
@@ -25,7 +25,7 @@
25
25
  <li><a class="el" href="group__Support.html">Apache-independent support classes and function</a>
26
26
  </ul>
27
27
  </div>
28
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Jun 21 10:41:31 2009 for Passenger by&nbsp;
28
+ <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 1 11:23:10 2009 for Passenger by&nbsp;
29
29
  <a href="http://www.doxygen.org/index.html">
30
30
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
31
31
  </body>
@@ -105,39 +105,39 @@ timeout occurred.
105
105
  <p class="source-link">[ <a href="javascript:toggleSource('M000003_source')" id="l_M000003_source">show source</a> ]</p>
106
106
  <div id="M000003_source" class="dyn-source">
107
107
  <pre>
108
- <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 446</span>
109
- 446: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">timed_wait</span>(<span class="ruby-identifier">mutex</span>, <span class="ruby-identifier">secs</span>)
110
- 447: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">secs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">100000000</span>
111
- 448: <span class="ruby-comment cmt"># NOTE: If one calls timeout() on FreeBSD 5 with an</span>
112
- 449: <span class="ruby-comment cmt"># argument of more than 100000000, then MRI will become</span>
113
- 450: <span class="ruby-comment cmt"># stuck in an infite loop, blocking all threads. It seems</span>
114
- 451: <span class="ruby-comment cmt"># that MRI uses select() to implement sleeping.</span>
115
- 452: <span class="ruby-comment cmt"># I think that a value of more than 100000000 overflows</span>
116
- 453: <span class="ruby-comment cmt"># select()'s data structures, causing it to behave incorrectly.</span>
117
- 454: <span class="ruby-comment cmt"># So we just make sure we can't sleep more than 100000000</span>
118
- 455: <span class="ruby-comment cmt"># seconds.</span>
119
- 456: <span class="ruby-identifier">secs</span> = <span class="ruby-value">100000000</span>
120
- 457: <span class="ruby-keyword kw">end</span>
121
- 458: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">defined?</span>(<span class="ruby-constant">RUBY_ENGINE</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-constant">RUBY_ENGINE</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;jruby&quot;</span>
122
- 459: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">secs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
123
- 460: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>, <span class="ruby-identifier">secs</span>)
124
- 461: <span class="ruby-keyword kw">else</span>
125
- 462: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>)
126
- 463: <span class="ruby-keyword kw">end</span>
127
- 464: <span class="ruby-keyword kw">else</span>
128
- 465: <span class="ruby-identifier">require</span> <span class="ruby-value str">'timeout'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-keyword kw">defined?</span>(<span class="ruby-constant">Timeout</span>)
129
- 466: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">secs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
130
- 467: <span class="ruby-constant">Timeout</span>.<span class="ruby-identifier">timeout</span>(<span class="ruby-identifier">secs</span>) <span class="ruby-keyword kw">do</span>
131
- 468: <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>)
132
- 469: <span class="ruby-keyword kw">end</span>
133
- 470: <span class="ruby-keyword kw">else</span>
134
- 471: <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>)
135
- 472: <span class="ruby-keyword kw">end</span>
136
- 473: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
137
- 474: <span class="ruby-keyword kw">end</span>
138
- 475: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-constant">Error</span>
139
- 476: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
140
- 477: <span class="ruby-keyword kw">end</span>
108
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 464</span>
109
+ 464: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">timed_wait</span>(<span class="ruby-identifier">mutex</span>, <span class="ruby-identifier">secs</span>)
110
+ 465: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">secs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">100000000</span>
111
+ 466: <span class="ruby-comment cmt"># NOTE: If one calls timeout() on FreeBSD 5 with an</span>
112
+ 467: <span class="ruby-comment cmt"># argument of more than 100000000, then MRI will become</span>
113
+ 468: <span class="ruby-comment cmt"># stuck in an infite loop, blocking all threads. It seems</span>
114
+ 469: <span class="ruby-comment cmt"># that MRI uses select() to implement sleeping.</span>
115
+ 470: <span class="ruby-comment cmt"># I think that a value of more than 100000000 overflows</span>
116
+ 471: <span class="ruby-comment cmt"># select()'s data structures, causing it to behave incorrectly.</span>
117
+ 472: <span class="ruby-comment cmt"># So we just make sure we can't sleep more than 100000000</span>
118
+ 473: <span class="ruby-comment cmt"># seconds.</span>
119
+ 474: <span class="ruby-identifier">secs</span> = <span class="ruby-value">100000000</span>
120
+ 475: <span class="ruby-keyword kw">end</span>
121
+ 476: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">defined?</span>(<span class="ruby-constant">RUBY_ENGINE</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-constant">RUBY_ENGINE</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;jruby&quot;</span>
122
+ 477: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">secs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
123
+ 478: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>, <span class="ruby-identifier">secs</span>)
124
+ 479: <span class="ruby-keyword kw">else</span>
125
+ 480: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>)
126
+ 481: <span class="ruby-keyword kw">end</span>
127
+ 482: <span class="ruby-keyword kw">else</span>
128
+ 483: <span class="ruby-identifier">require</span> <span class="ruby-value str">'timeout'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-keyword kw">defined?</span>(<span class="ruby-constant">Timeout</span>)
129
+ 484: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">secs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
130
+ 485: <span class="ruby-constant">Timeout</span>.<span class="ruby-identifier">timeout</span>(<span class="ruby-identifier">secs</span>) <span class="ruby-keyword kw">do</span>
131
+ 486: <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>)
132
+ 487: <span class="ruby-keyword kw">end</span>
133
+ 488: <span class="ruby-keyword kw">else</span>
134
+ 489: <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>)
135
+ 490: <span class="ruby-keyword kw">end</span>
136
+ 491: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
137
+ 492: <span class="ruby-keyword kw">end</span>
138
+ 493: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-constant">Error</span>
139
+ 494: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
140
+ 495: <span class="ruby-keyword kw">end</span>
141
141
  </pre>
142
142
  </div>
143
143
  </div>
@@ -156,32 +156,32 @@ amount of time. Raises Timeout::Error if the timeout has elapsed.
156
156
  <p class="source-link">[ <a href="javascript:toggleSource('M000004_source')" id="l_M000004_source">show source</a> ]</p>
157
157
  <div id="M000004_source" class="dyn-source">
158
158
  <pre>
159
- <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 481</span>
160
- 481: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">timed_wait!</span>(<span class="ruby-identifier">mutex</span>, <span class="ruby-identifier">secs</span>)
161
- 482: <span class="ruby-identifier">require</span> <span class="ruby-value str">'timeout'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-keyword kw">defined?</span>(<span class="ruby-constant">Timeout</span>)
162
- 483: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">secs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">100000000</span>
163
- 484: <span class="ruby-comment cmt"># See the corresponding note for timed_wait().</span>
164
- 485: <span class="ruby-identifier">secs</span> = <span class="ruby-value">100000000</span>
165
- 486: <span class="ruby-keyword kw">end</span>
166
- 487: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">defined?</span>(<span class="ruby-constant">RUBY_ENGINE</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-constant">RUBY_ENGINE</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;jruby&quot;</span>
167
- 488: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">secs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
168
- 489: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>, <span class="ruby-identifier">secs</span>)
169
- 490: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-constant">Error</span>, <span class="ruby-value str">&quot;Timeout&quot;</span>
170
- 491: <span class="ruby-keyword kw">end</span>
171
- 492: <span class="ruby-keyword kw">else</span>
172
- 493: <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>)
173
- 494: <span class="ruby-keyword kw">end</span>
174
- 495: <span class="ruby-keyword kw">else</span>
175
- 496: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">secs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
176
- 497: <span class="ruby-constant">Timeout</span>.<span class="ruby-identifier">timeout</span>(<span class="ruby-identifier">secs</span>) <span class="ruby-keyword kw">do</span>
177
- 498: <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>)
178
- 499: <span class="ruby-keyword kw">end</span>
179
- 500: <span class="ruby-keyword kw">else</span>
180
- 501: <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>)
181
- 502: <span class="ruby-keyword kw">end</span>
182
- 503: <span class="ruby-keyword kw">end</span>
183
- 504: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
184
- 505: <span class="ruby-keyword kw">end</span>
159
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 499</span>
160
+ 499: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">timed_wait!</span>(<span class="ruby-identifier">mutex</span>, <span class="ruby-identifier">secs</span>)
161
+ 500: <span class="ruby-identifier">require</span> <span class="ruby-value str">'timeout'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-keyword kw">defined?</span>(<span class="ruby-constant">Timeout</span>)
162
+ 501: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">secs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">100000000</span>
163
+ 502: <span class="ruby-comment cmt"># See the corresponding note for timed_wait().</span>
164
+ 503: <span class="ruby-identifier">secs</span> = <span class="ruby-value">100000000</span>
165
+ 504: <span class="ruby-keyword kw">end</span>
166
+ 505: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">defined?</span>(<span class="ruby-constant">RUBY_ENGINE</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-constant">RUBY_ENGINE</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;jruby&quot;</span>
167
+ 506: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">secs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
168
+ 507: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>, <span class="ruby-identifier">secs</span>)
169
+ 508: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-constant">Error</span>, <span class="ruby-value str">&quot;Timeout&quot;</span>
170
+ 509: <span class="ruby-keyword kw">end</span>
171
+ 510: <span class="ruby-keyword kw">else</span>
172
+ 511: <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>)
173
+ 512: <span class="ruby-keyword kw">end</span>
174
+ 513: <span class="ruby-keyword kw">else</span>
175
+ 514: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">secs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
176
+ 515: <span class="ruby-constant">Timeout</span>.<span class="ruby-identifier">timeout</span>(<span class="ruby-identifier">secs</span>) <span class="ruby-keyword kw">do</span>
177
+ 516: <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>)
178
+ 517: <span class="ruby-keyword kw">end</span>
179
+ 518: <span class="ruby-keyword kw">else</span>
180
+ 519: <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>)
181
+ 520: <span class="ruby-keyword kw">end</span>
182
+ 521: <span class="ruby-keyword kw">end</span>
183
+ 522: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
184
+ 523: <span class="ruby-keyword kw">end</span>
185
185
  </pre>
186
186
  </div>
187
187
  </div>
@@ -97,17 +97,17 @@ Object
97
97
  <p class="source-link">[ <a href="javascript:toggleSource('M000008_source')" id="l_M000008_source">show source</a> ]</p>
98
98
  <div id="M000008_source" class="dyn-source">
99
99
  <pre>
100
- <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 430</span>
101
- 430: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">backtrace_string</span>(<span class="ruby-identifier">current_location</span> = <span class="ruby-keyword kw">nil</span>)
102
- 431: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">current_location</span>.<span class="ruby-identifier">nil?</span>
103
- 432: <span class="ruby-identifier">location</span> = <span class="ruby-keyword kw">nil</span>
104
- 433: <span class="ruby-keyword kw">else</span>
105
- 434: <span class="ruby-identifier">location</span> = <span class="ruby-node">&quot;in #{current_location} &quot;</span>
106
- 435: <span class="ruby-keyword kw">end</span>
107
- 436: <span class="ruby-keyword kw">return</span> <span class="ruby-node">&quot;*** Exception #{self.class} #{location}&quot;</span> <span class="ruby-operator">&lt;&lt;</span>
108
- 437: <span class="ruby-node">&quot;(#{self}) (process #{$$}):\n&quot;</span> <span class="ruby-operator">&lt;&lt;</span>
109
- 438: <span class="ruby-value str">&quot;\tfrom &quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">backtrace</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot;\n\tfrom &quot;</span>)
110
- 439: <span class="ruby-keyword kw">end</span>
100
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 448</span>
101
+ 448: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">backtrace_string</span>(<span class="ruby-identifier">current_location</span> = <span class="ruby-keyword kw">nil</span>)
102
+ 449: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">current_location</span>.<span class="ruby-identifier">nil?</span>
103
+ 450: <span class="ruby-identifier">location</span> = <span class="ruby-keyword kw">nil</span>
104
+ 451: <span class="ruby-keyword kw">else</span>
105
+ 452: <span class="ruby-identifier">location</span> = <span class="ruby-node">&quot;in #{current_location} &quot;</span>
106
+ 453: <span class="ruby-keyword kw">end</span>
107
+ 454: <span class="ruby-keyword kw">return</span> <span class="ruby-node">&quot;*** Exception #{self.class} #{location}&quot;</span> <span class="ruby-operator">&lt;&lt;</span>
108
+ 455: <span class="ruby-node">&quot;(#{self}) (process #{$$}):\n&quot;</span> <span class="ruby-operator">&lt;&lt;</span>
109
+ 456: <span class="ruby-value str">&quot;\tfrom &quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">backtrace</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot;\n\tfrom &quot;</span>)
110
+ 457: <span class="ruby-keyword kw">end</span>
111
111
  </pre>
112
112
  </div>
113
113
  </div>
@@ -97,10 +97,10 @@ copy-on-write friendly.
97
97
  <p class="source-link">[ <a href="javascript:toggleSource('M000033_source')" id="l_M000033_source">show source</a> ]</p>
98
98
  <div id="M000033_source" class="dyn-source">
99
99
  <pre>
100
- <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 580</span>
101
- 580: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">copy_on_write_friendly?</span>
102
- 581: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
103
- 582: <span class="ruby-keyword kw">end</span>
100
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 598</span>
101
+ 598: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">copy_on_write_friendly?</span>
102
+ 599: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
103
+ 600: <span class="ruby-keyword kw">end</span>
104
104
  </pre>
105
105
  </div>
106
106
  </div>
@@ -99,12 +99,12 @@ Object
99
99
  <p class="source-link">[ <a href="javascript:toggleSource('M000007_source')" id="l_M000007_source">show source</a> ]</p>
100
100
  <div id="M000007_source" class="dyn-source">
101
101
  <pre>
102
- <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 527</span>
103
- 527: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">close_on_exec!</span>
104
- 528: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">defined?</span>(<span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">F_SETFD</span>)
105
- 529: <span class="ruby-identifier">fcntl</span>(<span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">F_SETFD</span>, <span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">FD_CLOEXEC</span>)
106
- 530: <span class="ruby-keyword kw">end</span>
107
- 531: <span class="ruby-keyword kw">end</span>
102
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 545</span>
103
+ 545: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">close_on_exec!</span>
104
+ 546: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">defined?</span>(<span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">F_SETFD</span>)
105
+ 547: <span class="ruby-identifier">fcntl</span>(<span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">F_SETFD</span>, <span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">FD_CLOEXEC</span>)
106
+ 548: <span class="ruby-keyword kw">end</span>
107
+ 549: <span class="ruby-keyword kw">end</span>
108
108
  </pre>
109
109
  </div>
110
110
  </div>
@@ -127,10 +127,10 @@ Raises SystemCallError if something went wrong.
127
127
  <p class="source-link">[ <a href="javascript:toggleSource('M000006_source')" id="l_M000006_source">show source</a> ]</p>
128
128
  <div id="M000006_source" class="dyn-source">
129
129
  <pre>
130
- <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 522</span>
131
- 522: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">recv_io</span>
132
- 523: <span class="ruby-keyword kw">return</span> <span class="ruby-constant">IO</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">PhusionPassenger</span><span class="ruby-operator">::</span><span class="ruby-constant">NativeSupport</span>.<span class="ruby-identifier">recv_fd</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">fileno</span>))
133
- 524: <span class="ruby-keyword kw">end</span>
130
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 540</span>
131
+ 540: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">recv_io</span>
132
+ 541: <span class="ruby-keyword kw">return</span> <span class="ruby-constant">IO</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">PhusionPassenger</span><span class="ruby-operator">::</span><span class="ruby-constant">NativeSupport</span>.<span class="ruby-identifier">recv_fd</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">fileno</span>))
133
+ 542: <span class="ruby-keyword kw">end</span>
134
134
  </pre>
135
135
  </div>
136
136
  </div>
@@ -153,10 +153,10 @@ Raises SystemCallError if something went wrong.
153
153
  <p class="source-link">[ <a href="javascript:toggleSource('M000005_source')" id="l_M000005_source">show source</a> ]</p>
154
154
  <div id="M000005_source" class="dyn-source">
155
155
  <pre>
156
- <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 514</span>
157
- 514: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">send_io</span>(<span class="ruby-identifier">io</span>)
158
- 515: <span class="ruby-constant">PhusionPassenger</span><span class="ruby-operator">::</span><span class="ruby-constant">NativeSupport</span>.<span class="ruby-identifier">send_fd</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">fileno</span>, <span class="ruby-identifier">io</span>.<span class="ruby-identifier">fileno</span>)
159
- 516: <span class="ruby-keyword kw">end</span>
156
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 532</span>
157
+ 532: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">send_io</span>(<span class="ruby-identifier">io</span>)
158
+ 533: <span class="ruby-constant">PhusionPassenger</span><span class="ruby-operator">::</span><span class="ruby-constant">NativeSupport</span>.<span class="ruby-identifier">send_fd</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">fileno</span>, <span class="ruby-identifier">io</span>.<span class="ruby-identifier">fileno</span>)
159
+ 534: <span class="ruby-keyword kw">end</span>
160
160
  </pre>
161
161
  </div>
162
162
  </div>
@@ -134,7 +134,7 @@ Class <a href="PhusionPassenger/VersionNotFound.html" class="link">PhusionPassen
134
134
  <tr valign='top'>
135
135
  <td class="attr-name">VERSION_STRING</td>
136
136
  <td>=</td>
137
- <td class="attr-value">'2.2.4'</td>
137
+ <td class="attr-value">'2.2.5'</td>
138
138
  </tr>
139
139
  <tr valign='top'>
140
140
  <td>&nbsp;</td>
@@ -85,8 +85,8 @@ passenger-install-apache2-module and passenger-install-nginx-module.
85
85
 
86
86
  <div class="sectiontitle">Methods</div>
87
87
  <ul>
88
- <li><a href="#M000153">new</a></li>
89
- <li><a href="#M000154">start</a></li>
88
+ <li><a href="#M000157">new</a></li>
89
+ <li><a href="#M000158">start</a></li>
90
90
  </ul>
91
91
 
92
92
 
@@ -110,11 +110,11 @@ passenger-install-apache2-module and passenger-install-nginx-module.
110
110
  <div class="sectiontitle">Public Class methods</div>
111
111
  <div class="method">
112
112
  <div class="title">
113
- <a name="M000153"></a><b>new</b>(options = {})
113
+ <a name="M000157"></a><b>new</b>(options = {})
114
114
  </div>
115
115
  <div class="sourcecode">
116
- <p class="source-link">[ <a href="javascript:toggleSource('M000153_source')" id="l_M000153_source">show source</a> ]</p>
117
- <div id="M000153_source" class="dyn-source">
116
+ <p class="source-link">[ <a href="javascript:toggleSource('M000157_source')" id="l_M000157_source">show source</a> ]</p>
117
+ <div id="M000157_source" class="dyn-source">
118
118
  <pre>
119
119
  <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_installer.rb, line 36</span>
120
120
  36: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">options</span> = {})
@@ -129,11 +129,11 @@ passenger-install-apache2-module and passenger-install-nginx-module.
129
129
  <div class="sectiontitle">Public Instance methods</div>
130
130
  <div class="method">
131
131
  <div class="title">
132
- <a name="M000154"></a><b>start</b>()
132
+ <a name="M000158"></a><b>start</b>()
133
133
  </div>
134
134
  <div class="sourcecode">
135
- <p class="source-link">[ <a href="javascript:toggleSource('M000154_source')" id="l_M000154_source">show source</a> ]</p>
136
- <div id="M000154_source" class="dyn-source">
135
+ <p class="source-link">[ <a href="javascript:toggleSource('M000158_source')" id="l_M000158_source">show source</a> ]</p>
136
+ <div id="M000158_source" class="dyn-source">
137
137
  <pre>
138
138
  <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_installer.rb, line 42</span>
139
139
  42: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">start</span>