passenger 2.2.9 → 2.2.10

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 (435) hide show
  1. data/NEWS +10 -0
  2. data/doc/Architectural overview.html +202 -65
  3. data/doc/Security of user switching support.html +200 -63
  4. data/doc/Users guide Apache.html +266 -129
  5. data/doc/Users guide Nginx.html +234 -97
  6. data/doc/cxxapi/AbstractSpawnManager_8h-source.html +138 -0
  7. data/doc/cxxapi/Account_8h-source.html +202 -0
  8. data/doc/cxxapi/AccountsDatabase_8h-source.html +158 -0
  9. data/doc/cxxapi/AgentsStarter_8h-source.html +79 -0
  10. data/doc/cxxapi/BCrypt_8h-source.html +101 -0
  11. data/doc/cxxapi/BacktracesServer_8h-source.html +87 -0
  12. data/doc/cxxapi/Base64_8h-source.html +85 -0
  13. data/doc/cxxapi/Blowfish_8h-source.html +131 -0
  14. data/doc/cxxapi/Bucket_8h-source.html +1 -1
  15. data/doc/cxxapi/CachedFileStat_8h-source.html +49 -157
  16. data/doc/cxxapi/Configuration_8h-source.html +1 -1
  17. data/doc/cxxapi/Constants_8h-source.html +71 -0
  18. data/doc/cxxapi/ContentHandler_8h-source.html +92 -0
  19. data/doc/cxxapi/DirectoryMapper_8h-source.html +1 -1
  20. data/doc/cxxapi/Exceptions_8h-source.html +332 -236
  21. data/doc/cxxapi/FileChangeChecker_8h-source.html +237 -0
  22. data/doc/cxxapi/FileDescriptor_8h-source.html +206 -0
  23. data/doc/cxxapi/Hooks_8h-source.html +1 -1
  24. data/doc/cxxapi/HttpStatusExtractor_8h-source.html +378 -0
  25. data/doc/cxxapi/LoggingServer_8h-source.html +165 -0
  26. data/doc/cxxapi/Logging_8h-source.html +580 -112
  27. data/doc/cxxapi/MessageChannel_8h-source.html +789 -599
  28. data/doc/cxxapi/MessageClient_8h-source.html +297 -0
  29. data/doc/cxxapi/MessageServer_8h-source.html +607 -0
  30. data/doc/cxxapi/PoolOptions_8h-source.html +471 -278
  31. data/doc/cxxapi/Process_8h-source.html +272 -0
  32. data/doc/cxxapi/RandomGenerator_8h-source.html +156 -0
  33. data/doc/cxxapi/ResourceLocator_8h-source.html +104 -0
  34. data/doc/cxxapi/ScgiRequestParser_8h-source.html +399 -0
  35. data/doc/cxxapi/ServerInstanceDir_8h-source.html +356 -0
  36. data/doc/cxxapi/Session_8h-source.html +483 -0
  37. data/doc/cxxapi/SpawnManager_8h-source.html +590 -546
  38. data/doc/cxxapi/StaticContentHandler_8h-source.html +65 -0
  39. data/doc/cxxapi/StaticString_8h-source.html +214 -0
  40. data/doc/cxxapi/StringListCreator_8h-source.html +111 -0
  41. data/doc/cxxapi/SystemTime_8h-source.html +191 -78
  42. data/doc/cxxapi/Timer_8h-source.html +157 -0
  43. data/doc/cxxapi/Utils_8h-source.html +621 -434
  44. data/doc/cxxapi/Version_8h-source.html +59 -0
  45. data/doc/cxxapi/annotated.html +1 -1
  46. data/doc/cxxapi/apache2_2Configuration_8h-source.html +79 -0
  47. data/doc/cxxapi/classAgentWatcher-members.html +50 -0
  48. data/doc/cxxapi/classAgentWatcher.html +445 -0
  49. data/doc/cxxapi/classClient-members.html +4 -3
  50. data/doc/cxxapi/classClient.html +50 -46
  51. data/doc/cxxapi/classHooks-members.html +1 -1
  52. data/doc/cxxapi/classHooks.html +1 -1
  53. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager-members.html +37 -0
  54. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager.html +191 -0
  55. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager__inherit__graph.map +1 -0
  56. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager__inherit__graph.md5 +1 -0
  57. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager__inherit__graph.png +0 -0
  58. data/doc/cxxapi/{classPassenger_1_1DummySpawnManager-members.html → classPassenger_1_1ArgumentException-members.html} +3 -2
  59. data/doc/cxxapi/classPassenger_1_1ArgumentException.html +52 -0
  60. data/doc/cxxapi/classPassenger_1_1BacktracesServer-members.html +36 -0
  61. data/doc/cxxapi/classPassenger_1_1BacktracesServer.html +107 -0
  62. data/doc/cxxapi/classPassenger_1_1BacktracesServer__inherit__graph.map +1 -0
  63. data/doc/cxxapi/classPassenger_1_1BacktracesServer__inherit__graph.md5 +1 -0
  64. data/doc/cxxapi/classPassenger_1_1BacktracesServer__inherit__graph.png +0 -0
  65. data/doc/cxxapi/classPassenger_1_1BufferedUpload-members.html +3 -3
  66. data/doc/cxxapi/classPassenger_1_1BufferedUpload.html +18 -34
  67. data/doc/cxxapi/classPassenger_1_1BusyException-members.html +2 -1
  68. data/doc/cxxapi/classPassenger_1_1BusyException.html +3 -2
  69. data/doc/cxxapi/classPassenger_1_1ConfigurationException-members.html +2 -1
  70. data/doc/cxxapi/classPassenger_1_1ConfigurationException.html +3 -2
  71. data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +1 -1
  72. data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +1 -1
  73. data/doc/cxxapi/{classPassenger_1_1FileChecker-members.html → classPassenger_1_1EOFException-members.html} +3 -4
  74. data/doc/cxxapi/classPassenger_1_1EOFException.html +57 -0
  75. data/doc/cxxapi/classPassenger_1_1EOFException__inherit__graph.map +1 -0
  76. data/doc/cxxapi/classPassenger_1_1EOFException__inherit__graph.md5 +1 -0
  77. data/doc/cxxapi/classPassenger_1_1EOFException__inherit__graph.png +0 -0
  78. data/doc/cxxapi/classPassenger_1_1EventFd-members.html +33 -0
  79. data/doc/cxxapi/classPassenger_1_1EventFd.html +49 -0
  80. data/doc/cxxapi/classPassenger_1_1FileChangeChecker-members.html +37 -0
  81. data/doc/cxxapi/classPassenger_1_1FileChangeChecker.html +166 -0
  82. data/doc/cxxapi/classPassenger_1_1FileDescriptor-members.html +37 -0
  83. data/doc/cxxapi/classPassenger_1_1FileDescriptor.html +159 -0
  84. data/doc/cxxapi/classPassenger_1_1FileNotFoundException-members.html +2 -1
  85. data/doc/cxxapi/classPassenger_1_1FileNotFoundException.html +3 -2
  86. data/doc/cxxapi/classPassenger_1_1FileSystemException-members.html +2 -1
  87. data/doc/cxxapi/classPassenger_1_1FileSystemException.html +3 -2
  88. data/doc/cxxapi/{classPassenger_1_1ApplicationPoolServer-members.html → classPassenger_1_1HttpStatusExtractor-members.html} +6 -5
  89. data/doc/cxxapi/classPassenger_1_1HttpStatusExtractor.html +128 -0
  90. data/doc/cxxapi/classPassenger_1_1IOException-members.html +2 -1
  91. data/doc/cxxapi/classPassenger_1_1IOException.html +4 -3
  92. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.map +2 -1
  93. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.md5 +1 -1
  94. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.png +0 -0
  95. data/doc/cxxapi/classPassenger_1_1MemZeroGuard-members.html +36 -0
  96. data/doc/cxxapi/classPassenger_1_1MemZeroGuard.html +147 -0
  97. data/doc/cxxapi/classPassenger_1_1MessageChannel-members.html +12 -5
  98. data/doc/cxxapi/classPassenger_1_1MessageChannel.html +267 -34
  99. data/doc/cxxapi/classPassenger_1_1MessageServer-members.html +46 -0
  100. data/doc/cxxapi/classPassenger_1_1MessageServer.html +438 -0
  101. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext-members.html +33 -0
  102. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext.html +56 -0
  103. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.map +1 -0
  104. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.md5 +1 -0
  105. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.png +0 -0
  106. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext-members.html +38 -0
  107. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext.html +175 -0
  108. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.map +1 -0
  109. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.md5 +1 -0
  110. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.png +0 -0
  111. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler-members.html +36 -0
  112. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler.html +176 -0
  113. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler__inherit__graph.map +1 -0
  114. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler__inherit__graph.md5 +1 -0
  115. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler__inherit__graph.png +0 -0
  116. data/doc/cxxapi/classPassenger_1_1Process-members.html +40 -0
  117. data/doc/cxxapi/classPassenger_1_1Process.html +266 -0
  118. data/doc/cxxapi/classPassenger_1_1RandomGenerator-members.html +33 -0
  119. data/doc/cxxapi/classPassenger_1_1RandomGenerator.html +51 -0
  120. data/doc/cxxapi/classPassenger_1_1RuntimeException-members.html +2 -1
  121. data/doc/cxxapi/classPassenger_1_1RuntimeException.html +3 -2
  122. data/doc/cxxapi/classPassenger_1_1ScgiRequestParser-members.html +47 -0
  123. data/doc/cxxapi/classPassenger_1_1ScgiRequestParser.html +302 -0
  124. data/doc/cxxapi/classPassenger_1_1SecurityException-members.html +33 -0
  125. data/doc/cxxapi/classPassenger_1_1SecurityException.html +52 -0
  126. data/doc/cxxapi/classPassenger_1_1Session-members.html +50 -0
  127. data/doc/cxxapi/classPassenger_1_1Session.html +577 -0
  128. data/doc/cxxapi/classPassenger_1_1Session__inherit__graph.map +1 -0
  129. data/doc/cxxapi/classPassenger_1_1Session__inherit__graph.md5 +1 -0
  130. data/doc/cxxapi/classPassenger_1_1Session__inherit__graph.png +0 -0
  131. data/doc/cxxapi/classPassenger_1_1SpawnException-members.html +2 -1
  132. data/doc/cxxapi/classPassenger_1_1SpawnException.html +5 -4
  133. data/doc/cxxapi/classPassenger_1_1SpawnManager-members.html +8 -5
  134. data/doc/cxxapi/classPassenger_1_1SpawnManager.html +127 -45
  135. data/doc/cxxapi/classPassenger_1_1SpawnManager__inherit__graph.map +1 -0
  136. data/doc/cxxapi/classPassenger_1_1SpawnManager__inherit__graph.md5 +1 -0
  137. data/doc/cxxapi/classPassenger_1_1SpawnManager__inherit__graph.png +0 -0
  138. data/doc/cxxapi/classPassenger_1_1StandardSession-members.html +51 -0
  139. data/doc/cxxapi/classPassenger_1_1StandardSession.html +415 -0
  140. data/doc/cxxapi/classPassenger_1_1StandardSession__inherit__graph.map +1 -0
  141. data/doc/cxxapi/classPassenger_1_1StandardSession__inherit__graph.md5 +1 -0
  142. data/doc/cxxapi/classPassenger_1_1StandardSession__inherit__graph.png +0 -0
  143. data/doc/cxxapi/classPassenger_1_1StaticString-members.html +33 -0
  144. data/doc/cxxapi/classPassenger_1_1StaticString.html +54 -0
  145. data/doc/cxxapi/classPassenger_1_1SystemException-members.html +2 -1
  146. data/doc/cxxapi/classPassenger_1_1SystemException.html +4 -3
  147. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.map +1 -0
  148. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.md5 +1 -1
  149. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.png +0 -0
  150. data/doc/cxxapi/classPassenger_1_1SystemTime-members.html +9 -1
  151. data/doc/cxxapi/classPassenger_1_1SystemTime.html +92 -8
  152. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException-members.html +37 -0
  153. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException.html +57 -0
  154. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException__inherit__graph.map +1 -0
  155. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException__inherit__graph.md5 +1 -0
  156. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException__inherit__graph.png +0 -0
  157. data/doc/cxxapi/classPassenger_1_1TimeoutException-members.html +33 -0
  158. data/doc/cxxapi/classPassenger_1_1TimeoutException.html +50 -0
  159. data/doc/cxxapi/{classPassenger_1_1Application-members.html → classPassenger_1_1Timer-members.html} +8 -7
  160. data/doc/cxxapi/classPassenger_1_1Timer.html +163 -0
  161. data/doc/cxxapi/classServer-members.html +33 -0
  162. data/doc/cxxapi/classServer.html +46 -0
  163. data/doc/cxxapi/classServerInstanceDirToucher-members.html +33 -0
  164. data/doc/cxxapi/classServerInstanceDirToucher.html +43 -0
  165. data/doc/cxxapi/classes.html +1 -1
  166. data/doc/cxxapi/definitions_8h-source.html +1 -1
  167. data/doc/cxxapi/files.html +1 -1
  168. data/doc/cxxapi/functions.html +1 -1
  169. data/doc/cxxapi/{functions_type.html → functions_enum.html} +7 -5
  170. data/doc/cxxapi/functions_eval.html +55 -0
  171. data/doc/cxxapi/functions_func.html +1 -1
  172. data/doc/cxxapi/functions_vars.html +106 -9
  173. data/doc/cxxapi/graph_legend.html +1 -1
  174. data/doc/cxxapi/group__Configuration.html +1 -1
  175. data/doc/cxxapi/group__Core.html +1 -1
  176. data/doc/cxxapi/group__Exceptions.html +17 -1
  177. data/doc/cxxapi/group__Hooks.html +1 -1
  178. data/doc/cxxapi/group__Support.html +1 -1
  179. data/doc/cxxapi/hierarchy.html +34 -12
  180. data/doc/cxxapi/inherit__graph__0.map +1 -1
  181. data/doc/cxxapi/inherit__graph__0.md5 +1 -1
  182. data/doc/cxxapi/inherit__graph__0.png +0 -0
  183. data/doc/cxxapi/inherit__graph__1.map +1 -1
  184. data/doc/cxxapi/inherit__graph__1.md5 +1 -1
  185. data/doc/cxxapi/inherit__graph__1.png +0 -0
  186. data/doc/cxxapi/inherit__graph__10.map +1 -1
  187. data/doc/cxxapi/inherit__graph__10.md5 +1 -1
  188. data/doc/cxxapi/inherit__graph__10.png +0 -0
  189. data/doc/cxxapi/inherit__graph__11.map +1 -1
  190. data/doc/cxxapi/inherit__graph__11.md5 +1 -1
  191. data/doc/cxxapi/inherit__graph__11.png +0 -0
  192. data/doc/cxxapi/inherit__graph__12.map +1 -1
  193. data/doc/cxxapi/inherit__graph__12.md5 +1 -1
  194. data/doc/cxxapi/inherit__graph__12.png +0 -0
  195. data/doc/cxxapi/inherit__graph__13.map +1 -1
  196. data/doc/cxxapi/inherit__graph__13.md5 +1 -1
  197. data/doc/cxxapi/inherit__graph__13.png +0 -0
  198. data/doc/cxxapi/inherit__graph__14.map +3 -2
  199. data/doc/cxxapi/inherit__graph__14.md5 +1 -1
  200. data/doc/cxxapi/inherit__graph__14.png +0 -0
  201. data/doc/cxxapi/inherit__graph__15.map +1 -1
  202. data/doc/cxxapi/inherit__graph__15.md5 +1 -1
  203. data/doc/cxxapi/inherit__graph__15.png +0 -0
  204. data/doc/cxxapi/inherit__graph__16.map +1 -1
  205. data/doc/cxxapi/inherit__graph__16.md5 +1 -1
  206. data/doc/cxxapi/inherit__graph__16.png +0 -0
  207. data/doc/cxxapi/inherit__graph__17.map +1 -1
  208. data/doc/cxxapi/inherit__graph__17.md5 +1 -1
  209. data/doc/cxxapi/inherit__graph__17.png +0 -0
  210. data/doc/cxxapi/inherit__graph__18.map +2 -1
  211. data/doc/cxxapi/inherit__graph__18.md5 +1 -1
  212. data/doc/cxxapi/inherit__graph__18.png +0 -0
  213. data/doc/cxxapi/inherit__graph__19.map +1 -1
  214. data/doc/cxxapi/inherit__graph__19.md5 +1 -1
  215. data/doc/cxxapi/inherit__graph__19.png +0 -0
  216. data/doc/cxxapi/inherit__graph__2.map +1 -1
  217. data/doc/cxxapi/inherit__graph__2.md5 +1 -1
  218. data/doc/cxxapi/inherit__graph__2.png +0 -0
  219. data/doc/cxxapi/inherit__graph__20.map +1 -2
  220. data/doc/cxxapi/inherit__graph__20.md5 +1 -1
  221. data/doc/cxxapi/inherit__graph__20.png +0 -0
  222. data/doc/cxxapi/inherit__graph__21.map +1 -1
  223. data/doc/cxxapi/inherit__graph__21.md5 +1 -1
  224. data/doc/cxxapi/inherit__graph__21.png +0 -0
  225. data/doc/cxxapi/inherit__graph__22.map +1 -0
  226. data/doc/cxxapi/inherit__graph__22.md5 +1 -0
  227. data/doc/cxxapi/inherit__graph__22.png +0 -0
  228. data/doc/cxxapi/inherit__graph__23.map +1 -0
  229. data/doc/cxxapi/inherit__graph__23.md5 +1 -0
  230. data/doc/cxxapi/inherit__graph__23.png +0 -0
  231. data/doc/cxxapi/inherit__graph__24.map +1 -0
  232. data/doc/cxxapi/inherit__graph__24.md5 +1 -0
  233. data/doc/cxxapi/inherit__graph__24.png +0 -0
  234. data/doc/cxxapi/inherit__graph__25.map +1 -0
  235. data/doc/cxxapi/inherit__graph__25.md5 +1 -0
  236. data/doc/cxxapi/inherit__graph__25.png +0 -0
  237. data/doc/cxxapi/inherit__graph__26.map +1 -0
  238. data/doc/cxxapi/inherit__graph__26.md5 +1 -0
  239. data/doc/cxxapi/inherit__graph__26.png +0 -0
  240. data/doc/cxxapi/inherit__graph__27.map +2 -0
  241. data/doc/cxxapi/inherit__graph__27.md5 +1 -0
  242. data/doc/cxxapi/inherit__graph__27.png +0 -0
  243. data/doc/cxxapi/inherit__graph__28.map +1 -0
  244. data/doc/cxxapi/inherit__graph__28.md5 +1 -0
  245. data/doc/cxxapi/inherit__graph__28.png +0 -0
  246. data/doc/cxxapi/inherit__graph__29.map +1 -0
  247. data/doc/cxxapi/inherit__graph__29.md5 +1 -0
  248. data/doc/cxxapi/inherit__graph__29.png +0 -0
  249. data/doc/cxxapi/inherit__graph__3.map +2 -1
  250. data/doc/cxxapi/inherit__graph__3.md5 +1 -1
  251. data/doc/cxxapi/inherit__graph__3.png +0 -0
  252. data/doc/cxxapi/inherit__graph__30.map +1 -0
  253. data/doc/cxxapi/inherit__graph__30.md5 +1 -0
  254. data/doc/cxxapi/inherit__graph__30.png +0 -0
  255. data/doc/cxxapi/inherit__graph__31.map +3 -0
  256. data/doc/cxxapi/inherit__graph__31.md5 +1 -0
  257. data/doc/cxxapi/inherit__graph__31.png +0 -0
  258. data/doc/cxxapi/inherit__graph__32.map +1 -0
  259. data/doc/cxxapi/inherit__graph__32.md5 +1 -0
  260. data/doc/cxxapi/inherit__graph__32.png +0 -0
  261. data/doc/cxxapi/inherit__graph__33.map +1 -0
  262. data/doc/cxxapi/inherit__graph__33.md5 +1 -0
  263. data/doc/cxxapi/inherit__graph__33.png +0 -0
  264. data/doc/cxxapi/inherit__graph__34.map +1 -0
  265. data/doc/cxxapi/inherit__graph__34.md5 +1 -0
  266. data/doc/cxxapi/inherit__graph__34.png +0 -0
  267. data/doc/cxxapi/inherit__graph__35.map +1 -0
  268. data/doc/cxxapi/inherit__graph__35.md5 +1 -0
  269. data/doc/cxxapi/inherit__graph__35.png +0 -0
  270. data/doc/cxxapi/inherit__graph__36.map +1 -0
  271. data/doc/cxxapi/inherit__graph__36.md5 +1 -0
  272. data/doc/cxxapi/inherit__graph__36.png +0 -0
  273. data/doc/cxxapi/inherit__graph__4.map +1 -1
  274. data/doc/cxxapi/inherit__graph__4.md5 +1 -1
  275. data/doc/cxxapi/inherit__graph__4.png +0 -0
  276. data/doc/cxxapi/inherit__graph__5.map +1 -1
  277. data/doc/cxxapi/inherit__graph__5.md5 +1 -1
  278. data/doc/cxxapi/inherit__graph__5.png +0 -0
  279. data/doc/cxxapi/inherit__graph__6.map +1 -2
  280. data/doc/cxxapi/inherit__graph__6.md5 +1 -1
  281. data/doc/cxxapi/inherit__graph__6.png +0 -0
  282. data/doc/cxxapi/inherit__graph__7.map +1 -1
  283. data/doc/cxxapi/inherit__graph__7.md5 +1 -1
  284. data/doc/cxxapi/inherit__graph__7.png +0 -0
  285. data/doc/cxxapi/inherit__graph__8.map +1 -1
  286. data/doc/cxxapi/inherit__graph__8.md5 +1 -1
  287. data/doc/cxxapi/inherit__graph__8.png +0 -0
  288. data/doc/cxxapi/inherit__graph__9.map +1 -1
  289. data/doc/cxxapi/inherit__graph__9.md5 +1 -1
  290. data/doc/cxxapi/inherit__graph__9.png +0 -0
  291. data/doc/cxxapi/inherits.html +81 -41
  292. data/doc/cxxapi/main.html +1 -1
  293. data/doc/cxxapi/md5_8h-source.html +121 -0
  294. data/doc/cxxapi/modules.html +1 -1
  295. data/doc/cxxapi/namespacePassenger.html +651 -0
  296. data/doc/cxxapi/namespacemembers.html +155 -0
  297. data/doc/cxxapi/namespacemembers_enum.html +46 -0
  298. data/doc/cxxapi/namespacemembers_eval.html +52 -0
  299. data/doc/cxxapi/namespacemembers_func.html +139 -0
  300. data/doc/cxxapi/namespacemembers_type.html +50 -0
  301. data/doc/cxxapi/namespaces.html +34 -0
  302. data/doc/cxxapi/nginx_2Configuration_8h-source.html +114 -0
  303. data/doc/cxxapi/ngx__http__passenger__module_8h-source.html +91 -0
  304. data/doc/cxxapi/structPassenger_1_1AnythingToString-members.html +2 -1
  305. data/doc/cxxapi/structPassenger_1_1AnythingToString.html +3 -2
  306. data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4-members.html +2 -1
  307. data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html +3 -2
  308. data/doc/cxxapi/structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard-members.html +33 -0
  309. data/doc/cxxapi/structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard.html +49 -0
  310. data/doc/cxxapi/structPassenger_1_1PoolOptions-members.html +19 -7
  311. data/doc/cxxapi/structPassenger_1_1PoolOptions.html +323 -53
  312. data/doc/cxxapi/structPassenger_1_1StaticString_1_1Hash-members.html +33 -0
  313. data/doc/cxxapi/structPassenger_1_1StaticString_1_1Hash.html +49 -0
  314. data/ext/common/MessageChannel.h +48 -4
  315. data/ext/common/Version.h +1 -1
  316. data/ext/nginx/HttpStatusExtractor.h +1 -0
  317. data/ext/nginx/ScgiRequestParser.h +1 -0
  318. data/ext/phusion_passenger/native_support.c +5 -1
  319. data/lib/phusion_passenger/constants.rb +1 -1
  320. data/lib/phusion_passenger/message_channel.rb +45 -3
  321. data/lib/phusion_passenger/rack/application_spawner.rb +4 -0
  322. data/lib/phusion_passenger/railz/application_spawner.rb +19 -1
  323. data/lib/phusion_passenger/utils.rb +3 -3
  324. data/lib/phusion_passenger/utils/rewindable_input.rb +5 -0
  325. data/test/MessageChannelTest.cpp +9 -1
  326. data/test/stub/message_channel.rb +1 -1
  327. data/test/stub/message_channel_2.rb +1 -1
  328. data/test/stub/message_channel_3.rb +2 -2
  329. metadata +173 -113
  330. data/doc/cxxapi/ApplicationPoolServer_8h-source.html +0 -833
  331. data/doc/cxxapi/ApplicationPool_8h-source.html +0 -226
  332. data/doc/cxxapi/Application_8h-source.html +0 -553
  333. data/doc/cxxapi/DummySpawnManager_8h-source.html +0 -130
  334. data/doc/cxxapi/FileChecker_8h-source.html +0 -134
  335. data/doc/cxxapi/StandardApplicationPool_8h-source.html +0 -842
  336. data/doc/cxxapi/classPassenger_1_1Application.html +0 -231
  337. data/doc/cxxapi/classPassenger_1_1ApplicationPool-members.html +0 -41
  338. data/doc/cxxapi/classPassenger_1_1ApplicationPool.html +0 -323
  339. data/doc/cxxapi/classPassenger_1_1ApplicationPoolServer.html +0 -227
  340. data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.map +0 -1
  341. data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.md5 +0 -1
  342. data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.png +0 -0
  343. data/doc/cxxapi/classPassenger_1_1Application_1_1Session-members.html +0 -44
  344. data/doc/cxxapi/classPassenger_1_1Application_1_1Session.html +0 -403
  345. data/doc/cxxapi/classPassenger_1_1DummySpawnManager.html +0 -53
  346. data/doc/cxxapi/classPassenger_1_1FileChecker.html +0 -124
  347. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool-members.html +0 -44
  348. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool.html +0 -342
  349. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.map +0 -1
  350. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.md5 +0 -1
  351. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.png +0 -0
  352. data/doc/rdoc/classes/ConditionVariable.html +0 -194
  353. data/doc/rdoc/classes/Exception.html +0 -120
  354. data/doc/rdoc/classes/GC.html +0 -113
  355. data/doc/rdoc/classes/IO.html +0 -169
  356. data/doc/rdoc/classes/PhusionPassenger.html +0 -239
  357. data/doc/rdoc/classes/PhusionPassenger/AbstractInstaller.html +0 -153
  358. data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +0 -517
  359. data/doc/rdoc/classes/PhusionPassenger/AbstractServer.html +0 -719
  360. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerAlreadyStarted.html +0 -97
  361. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerError.html +0 -96
  362. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerNotStarted.html +0 -97
  363. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/UnknownMessage.html +0 -96
  364. data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +0 -598
  365. data/doc/rdoc/classes/PhusionPassenger/AdminTools.html +0 -140
  366. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess.html +0 -317
  367. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess/Instance.html +0 -138
  368. data/doc/rdoc/classes/PhusionPassenger/AppInitError.html +0 -154
  369. data/doc/rdoc/classes/PhusionPassenger/Application.html +0 -283
  370. data/doc/rdoc/classes/PhusionPassenger/ConsoleTextTemplate.html +0 -172
  371. data/doc/rdoc/classes/PhusionPassenger/FrameworkInitError.html +0 -145
  372. data/doc/rdoc/classes/PhusionPassenger/HTMLTemplate.html +0 -175
  373. data/doc/rdoc/classes/PhusionPassenger/InitializationError.html +0 -141
  374. data/doc/rdoc/classes/PhusionPassenger/InvalidPath.html +0 -92
  375. data/doc/rdoc/classes/PhusionPassenger/MessageChannel.html +0 -489
  376. data/doc/rdoc/classes/PhusionPassenger/NativeSupport.html +0 -350
  377. data/doc/rdoc/classes/PhusionPassenger/Rack.html +0 -91
  378. data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner.html +0 -188
  379. data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +0 -199
  380. data/doc/rdoc/classes/PhusionPassenger/Railz.html +0 -95
  381. data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner.html +0 -438
  382. data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner/Error.html +0 -98
  383. data/doc/rdoc/classes/PhusionPassenger/Railz/CGIFixed.html +0 -200
  384. data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner.html +0 -436
  385. data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner/Error.html +0 -98
  386. data/doc/rdoc/classes/PhusionPassenger/Railz/RequestHandler.html +0 -155
  387. data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +0 -402
  388. data/doc/rdoc/classes/PhusionPassenger/UnknownError.html +0 -125
  389. data/doc/rdoc/classes/PhusionPassenger/Utils.html +0 -805
  390. data/doc/rdoc/classes/PhusionPassenger/Utils/PseudoIO.html +0 -169
  391. data/doc/rdoc/classes/PhusionPassenger/Utils/RewindableInput.html +0 -247
  392. data/doc/rdoc/classes/PhusionPassenger/Utils/RewindableInput/Tempfile.html +0 -120
  393. data/doc/rdoc/classes/PhusionPassenger/VersionNotFound.html +0 -140
  394. data/doc/rdoc/classes/PhusionPassenger/WSGI.html +0 -89
  395. data/doc/rdoc/classes/PhusionPassenger/WSGI/ApplicationSpawner.html +0 -188
  396. data/doc/rdoc/classes/PlatformInfo.html +0 -866
  397. data/doc/rdoc/classes/RakeExtensions.html +0 -197
  398. data/doc/rdoc/classes/Signal.html +0 -139
  399. data/doc/rdoc/created.rid +0 -1
  400. data/doc/rdoc/files/DEVELOPERS_TXT.html +0 -255
  401. data/doc/rdoc/files/README.html +0 -157
  402. data/doc/rdoc/files/ext/phusion_passenger/native_support_c.html +0 -92
  403. data/doc/rdoc/files/lib/phusion_passenger/abstract_installer_rb.html +0 -129
  404. data/doc/rdoc/files/lib/phusion_passenger/abstract_request_handler_rb.html +0 -129
  405. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html +0 -126
  406. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_rb.html +0 -128
  407. data/doc/rdoc/files/lib/phusion_passenger/admin_tools/control_process_rb.html +0 -130
  408. data/doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html +0 -122
  409. data/doc/rdoc/files/lib/phusion_passenger/application_rb.html +0 -127
  410. data/doc/rdoc/files/lib/phusion_passenger/console_text_template_rb.html +0 -126
  411. data/doc/rdoc/files/lib/phusion_passenger/constants_rb.html +0 -122
  412. data/doc/rdoc/files/lib/phusion_passenger/dependencies_rb.html +0 -134
  413. data/doc/rdoc/files/lib/phusion_passenger/events_rb.html +0 -122
  414. data/doc/rdoc/files/lib/phusion_passenger/exceptions_rb.html +0 -122
  415. data/doc/rdoc/files/lib/phusion_passenger/html_template_rb.html +0 -126
  416. data/doc/rdoc/files/lib/phusion_passenger/message_channel_rb.html +0 -120
  417. data/doc/rdoc/files/lib/phusion_passenger/packaging_rb.html +0 -122
  418. data/doc/rdoc/files/lib/phusion_passenger/platform_info_rb.html +0 -127
  419. data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +0 -133
  420. data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +0 -125
  421. data/doc/rdoc/files/lib/phusion_passenger/railz/application_spawner_rb.html +0 -140
  422. data/doc/rdoc/files/lib/phusion_passenger/railz/cgi_fixed_rb.html +0 -126
  423. data/doc/rdoc/files/lib/phusion_passenger/railz/framework_spawner_rb.html +0 -145
  424. data/doc/rdoc/files/lib/phusion_passenger/railz/request_handler_rb.html +0 -125
  425. data/doc/rdoc/files/lib/phusion_passenger/simple_benchmarking_rb.html +0 -122
  426. data/doc/rdoc/files/lib/phusion_passenger/spawn_manager_rb.html +0 -159
  427. data/doc/rdoc/files/lib/phusion_passenger/utils/rewindable_input_rb.html +0 -100
  428. data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +0 -174
  429. data/doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html +0 -129
  430. data/doc/rdoc/files/misc/rake/extensions_rb.html +0 -130
  431. data/doc/rdoc/fr_class_index.html +0 -93
  432. data/doc/rdoc/fr_file_index.html +0 -77
  433. data/doc/rdoc/fr_method_index.html +0 -212
  434. data/doc/rdoc/index.html +0 -26
  435. data/doc/rdoc/rdoc-style.css +0 -187
@@ -0,0 +1,33 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
+ <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
+ <title>Passenger: Member List</title>
4
+ <link href="tabs.css" rel="stylesheet" type="text/css">
5
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
6
+ </head><body>
7
+ <!-- Generated by Doxygen 1.5.8 -->
8
+ <div class="navigation" id="top">
9
+ <div class="tabs">
10
+ <ul>
11
+ <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
+ <li><a href="modules.html"><span>Modules</span></a></li>
13
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
15
+ <li><a href="files.html"><span>Files</span></a></li>
16
+ </ul>
17
+ </div>
18
+ <div class="tabs">
19
+ <ul>
20
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
21
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
22
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
23
+ </ul>
24
+ </div>
25
+ </div>
26
+ <div class="contents">
27
+ <h1>Passenger::StaticString::StaticString::Hash Member List</h1>This is the complete list of members for <a class="el" href="structPassenger_1_1StaticString_1_1Hash.html">Passenger::StaticString::StaticString::Hash</a>, including all inherited members.<p><table>
28
+ </table></div>
29
+ <hr size="1"><address style="text-align: right;"><small>Generated on Sun Feb 21 12:22:48 2010 for Passenger by&nbsp;
30
+ <a href="http://www.doxygen.org/index.html">
31
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
32
+ </body>
33
+ </html>
@@ -0,0 +1,49 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
+ <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
+ <title>Passenger: Passenger::StaticString::StaticString::Hash Struct Reference</title>
4
+ <link href="tabs.css" rel="stylesheet" type="text/css">
5
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
6
+ </head><body>
7
+ <!-- Generated by Doxygen 1.5.8 -->
8
+ <div class="navigation" id="top">
9
+ <div class="tabs">
10
+ <ul>
11
+ <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
+ <li><a href="modules.html"><span>Modules</span></a></li>
13
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
15
+ <li><a href="files.html"><span>Files</span></a></li>
16
+ </ul>
17
+ </div>
18
+ <div class="tabs">
19
+ <ul>
20
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
21
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
22
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
23
+ </ul>
24
+ </div>
25
+ <div class="navpath"><a class="el" href="namespacePassenger.html">Passenger</a>::<a class="el" href="classPassenger_1_1StaticString.html">StaticString</a>::<a class="el" href="structPassenger_1_1StaticString_1_1Hash.html">Hash</a>
26
+ </div>
27
+ </div>
28
+ <div class="contents">
29
+ <h1>Passenger::StaticString::StaticString::Hash Struct Reference</h1><!-- doxytag: class="Passenger::StaticString::Hash" -->A hash function object for <a class="el" href="classPassenger_1_1StaticString.html" title="An immutable, static byte buffer.">StaticString</a>.
30
+ <a href="#_details">More...</a>
31
+ <p>
32
+ <code>#include &lt;<a class="el" href="StaticString_8h-source.html">StaticString.h</a>&gt;</code>
33
+ <p>
34
+
35
+ <p>
36
+ <a href="structPassenger_1_1StaticString_1_1Hash-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
37
+ <tr><td></td></tr>
38
+ </table>
39
+ <hr><a name="_details"></a><h2>Detailed Description</h2>
40
+ A hash function object for <a class="el" href="classPassenger_1_1StaticString.html" title="An immutable, static byte buffer.">StaticString</a>.
41
+ <p>
42
+ <hr>The documentation for this struct was generated from the following file:<ul>
43
+ <li><a class="el" href="StaticString_8h-source.html">StaticString.h</a></ul>
44
+ </div>
45
+ <hr size="1"><address style="text-align: right;"><small>Generated on Sun Feb 21 12:22:48 2010 for Passenger by&nbsp;
46
+ <a href="http://www.doxygen.org/index.html">
47
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
48
+ </body>
49
+ </html>
@@ -319,12 +319,24 @@ public:
319
319
  * descriptor is a Unix socket.
320
320
  *
321
321
  * @param fileDescriptor The file descriptor to pass.
322
+ * @param negotiate See Ruby's MessageChannel#send_io method's comments.
322
323
  * @throws SystemException Something went wrong during file descriptor passing.
323
324
  * @throws boost::thread_interrupted
324
325
  * @pre <tt>fileDescriptor >= 0</tt>
325
326
  * @see readFileDescriptor()
326
327
  */
327
- void writeFileDescriptor(int fileDescriptor) {
328
+ void writeFileDescriptor(int fileDescriptor, bool negotiate = true) {
329
+ // See message_channel.rb for more info about negotiation.
330
+ if (negotiate) {
331
+ vector<string> args;
332
+
333
+ if (!read(args)) {
334
+ throw IOException("Unexpected end of stream encountered while pre-negotiating a file descriptor");
335
+ } else if (args.size() != 1 || args[0] != "pass IO") {
336
+ throw IOException("FD passing pre-negotiation message expected.");
337
+ }
338
+ }
339
+
328
340
  struct msghdr msg;
329
341
  struct iovec vec;
330
342
  char dummy[1];
@@ -368,6 +380,16 @@ public:
368
380
  if (ret == -1) {
369
381
  throw SystemException("Cannot send file descriptor with sendmsg()", errno);
370
382
  }
383
+
384
+ if (negotiate) {
385
+ vector<string> args;
386
+
387
+ if (!read(args)) {
388
+ throw IOException("Unexpected end of stream encountered while post-negotiating a file descriptor");
389
+ } else if (args.size() != 1 || args[0] != "got IO") {
390
+ throw IOException("FD passing post-negotiation message expected.");
391
+ }
392
+ }
371
393
  }
372
394
 
373
395
  /**
@@ -492,6 +514,7 @@ public:
492
514
  * Receive a file descriptor, which had been passed over the underlying
493
515
  * file descriptor.
494
516
  *
517
+ * @param negotiate See Ruby's MessageChannel#send_io method's comments.
495
518
  * @return The passed file descriptor.
496
519
  * @throws SystemException If something went wrong during the
497
520
  * receiving of a file descriptor. Perhaps the underlying
@@ -500,7 +523,12 @@ public:
500
523
  * file descriptor.
501
524
  * @throws boost::thread_interrupted
502
525
  */
503
- int readFileDescriptor() {
526
+ int readFileDescriptor(bool negotiate = true) {
527
+ // See message_channel.rb for more info about negotiation.
528
+ if (negotiate) {
529
+ write("pass IO", NULL);
530
+ }
531
+
504
532
  struct msghdr msg;
505
533
  struct iovec vec;
506
534
  char dummy[1];
@@ -538,16 +566,32 @@ public:
538
566
  }
539
567
 
540
568
  control_header = CMSG_FIRSTHDR(&msg);
569
+ if (control_header == NULL) {
570
+ throw IOException("No valid file descriptor received.");
571
+ }
541
572
  if (control_header->cmsg_len != EXPECTED_CMSG_LEN
542
573
  || control_header->cmsg_level != SOL_SOCKET
543
574
  || control_header->cmsg_type != SCM_RIGHTS) {
544
575
  throw IOException("No valid file descriptor received.");
545
576
  }
577
+
546
578
  #if defined(__APPLE__) || defined(__SOLARIS__) || defined(__arm__)
547
- return control_data.fd;
579
+ int fd = control_data.fd;
548
580
  #else
549
- return *((int *) CMSG_DATA(control_header));
581
+ int fd = *((int *) CMSG_DATA(control_header));
550
582
  #endif
583
+
584
+ if (negotiate) {
585
+ try {
586
+ write("got IO", NULL);
587
+ } catch (...) {
588
+ this_thread::disable_syscall_interruption dsi;
589
+ syscalls::close(fd);
590
+ throw;
591
+ }
592
+ }
593
+
594
+ return fd;
551
595
  }
552
596
 
553
597
  /**
@@ -26,6 +26,6 @@
26
26
  #define _PASSENGER_VERSION_H_
27
27
 
28
28
  /* Don't forget to update lib/phusion_passenger/constants.rb too. */
29
- #define PASSENGER_VERSION "2.2.9"
29
+ #define PASSENGER_VERSION "2.2.10"
30
30
 
31
31
  #endif /* _PASSENGER_VERSION_H */
@@ -26,6 +26,7 @@
26
26
  #include <string>
27
27
  #include <cstdio>
28
28
  #include <cstdlib>
29
+ #include <cstring>
29
30
 
30
31
  namespace Passenger {
31
32
 
@@ -25,6 +25,7 @@
25
25
 
26
26
  #include <string>
27
27
  #include <map>
28
+ #include <cstdlib>
28
29
 
29
30
  #include "StaticString.h"
30
31
 
@@ -158,10 +158,14 @@ recv_fd(VALUE self, VALUE socket_fd) {
158
158
  }
159
159
 
160
160
  control_header = CMSG_FIRSTHDR(&msg);
161
+ if (control_header == NULL) {
162
+ rb_raise(rb_eIOError, "No valid file descriptor received.");
163
+ return Qnil;
164
+ }
161
165
  if (control_header->cmsg_len != EXPECTED_CMSG_LEN
162
166
  || control_header->cmsg_level != SOL_SOCKET
163
167
  || control_header->cmsg_type != SCM_RIGHTS) {
164
- rb_sys_fail("No valid file descriptor received.");
168
+ rb_raise(rb_eIOError, "No valid file descriptor received.");
165
169
  return Qnil;
166
170
  }
167
171
  #if defined(__APPLE__) || defined(__SOLARIS__) || defined(__arm__)
@@ -24,7 +24,7 @@
24
24
  module PhusionPassenger
25
25
  # Phusion Passenger version number.
26
26
  # Don't forget to edit ext/common/Version.h too.
27
- VERSION_STRING = '2.2.9'
27
+ VERSION_STRING = '2.2.10'
28
28
 
29
29
  DEFAULT_FRAMEWORK_SPAWNER_MAX_IDLE_TIME = 30 * 60
30
30
  DEFAULT_APP_SPAWNER_MAX_IDLE_TIME = 10 * 60
@@ -193,8 +193,11 @@ class MessageChannel
193
193
  #
194
194
  # Might raise SystemCallError, IOError or SocketError when something
195
195
  # goes wrong.
196
- def recv_io
197
- return @io.recv_io
196
+ def recv_io(klass = IO, negotiate = true)
197
+ write("pass IO") if negotiate
198
+ io = @io.recv_io(klass)
199
+ write("got IO") if negotiate
200
+ return io
198
201
  end
199
202
 
200
203
  # Send an IO object (a file descriptor) over the channel. The other
@@ -204,7 +207,46 @@ class MessageChannel
204
207
  # Might raise SystemCallError, IOError or SocketError when something
205
208
  # goes wrong.
206
209
  def send_io(io)
207
- @io.send_io(io)
210
+ # We read a message before actually calling #send_io
211
+ # in order to prevent the other side from accidentally
212
+ # read()ing past the normal data and reading our file
213
+ # descriptor too.
214
+ #
215
+ # For example suppose that side A looks like this:
216
+ #
217
+ # read(fd, buf, 1024)
218
+ # read_io(fd)
219
+ #
220
+ # and side B:
221
+ #
222
+ # write(fd, buf, 100)
223
+ # send_io(fd_to_pass)
224
+ #
225
+ # If B completes both write() and send_io(), then A's read() call
226
+ # reads past the 100 bytes that B sent. On some platforms, like
227
+ # Linux, this will cause read_io() to fail. And it just so happens
228
+ # that Ruby's IO#read method slurps more than just the given amount
229
+ # of bytes.
230
+ result = read
231
+ if !result
232
+ raise EOFError, "End of stream"
233
+ elsif result != ["pass IO"]
234
+ raise IOError, "IO passing pre-negotiation header expected"
235
+ else
236
+ @io.send_io(io)
237
+ # Once you've sent the IO you expect to be able to close it on the
238
+ # sender's side, even if the other side hasn't read the IO yet.
239
+ # Not so: on some operating systems (I'm looking at you OS X) this
240
+ # can cause the receiving side to receive a bad file descriptor.
241
+ # The post negotiation protocol ensures that we block until the
242
+ # other side has really received the IO.
243
+ result = read
244
+ if !result
245
+ raise EOFError, "End of stream"
246
+ elsif result != ["got IO"]
247
+ raise IOError, "IO passing post-negotiation header expected"
248
+ end
249
+ end
208
250
  end
209
251
 
210
252
  # Return the file descriptor of the underlying IO object.
@@ -97,6 +97,10 @@ private
97
97
  if options["lower_privilege"]
98
98
  lower_privilege('config.ru', options["lowest_user"])
99
99
  end
100
+ # Make sure RubyGems uses any new environment variable values
101
+ # that have been set now (e.g. $HOME, $GEM_HOME, etc) and that
102
+ # it is able to detect newly installed gems.
103
+ Gem.clear_paths
100
104
  app = load_rack_app
101
105
  end
102
106
 
@@ -169,6 +169,10 @@ class ApplicationSpawner < AbstractServer
169
169
  if @lower_privilege
170
170
  lower_privilege('config/environment.rb', @lowest_user)
171
171
  end
172
+ # Make sure RubyGems uses any new environment variable values
173
+ # that have been set now (e.g. $HOME, $GEM_HOME, etc) and that
174
+ # it is able to detect newly installed gems.
175
+ Gem.clear_paths
172
176
 
173
177
  require File.expand_path('config/environment')
174
178
  require 'dispatcher'
@@ -346,9 +350,12 @@ private
346
350
  end
347
351
 
348
352
  def handle_spawn_application
353
+ a, b = UNIXSocket.pair
349
354
  safe_fork('application', true) do
350
355
  begin
351
- start_request_handler(client, true)
356
+ a.close
357
+ client.close
358
+ start_request_handler(MessageChannel.new(b), true)
352
359
  rescue SignalException => e
353
360
  if e.message != AbstractRequestHandler::HARD_TERMINATION_SIGNAL &&
354
361
  e.message != AbstractRequestHandler::SOFT_TERMINATION_SIGNAL
@@ -356,6 +363,17 @@ private
356
363
  end
357
364
  end
358
365
  end
366
+
367
+ b.close
368
+ worker_channel = MessageChannel.new(a)
369
+ info = worker_channel.read
370
+ owner_pipe = worker_channel.recv_io
371
+ client.write(*info)
372
+ client.send_io(owner_pipe)
373
+ ensure
374
+ a.close if a
375
+ b.close if b && !b.closed?
376
+ owner_pipe.close if owner_pipe
359
377
  end
360
378
 
361
379
  # Initialize the request handler and enter its main loop.
@@ -538,8 +538,8 @@ class IO
538
538
  # This only works if this IO channel is a Unix socket.
539
539
  #
540
540
  # Raises SystemCallError if something went wrong.
541
- def recv_io
542
- return IO.new(PhusionPassenger::NativeSupport.recv_fd(self.fileno))
541
+ def recv_io(klass = IO)
542
+ return klass.for_fd(PhusionPassenger::NativeSupport.recv_fd(self.fileno))
543
543
  end
544
544
  end
545
545
 
@@ -590,7 +590,7 @@ end
590
590
  if RUBY_PLATFORM =~ /freebsd/ || RUBY_PLATFORM =~ /openbsd/ || (RUBY_PLATFORM =~ /darwin/ && RUBY_PLATFORM !~ /universal/)
591
591
  require 'socket'
592
592
  UNIXSocket.class_eval do
593
- def recv_io
593
+ def recv_io(klass = IO)
594
594
  super
595
595
  end
596
596
 
@@ -41,6 +41,11 @@ module Utils
41
41
  @rewindable_io.rewind
42
42
  end
43
43
 
44
+ def size
45
+ make_rewindable unless @rewindable_io
46
+ @rewindable_io.size
47
+ end
48
+
44
49
  # Closes this RewindableInput object without closing the originally
45
50
  # wrapped IO oject. Cleans up any temporary resources that this RewindableInput
46
51
  # has created.
@@ -1,6 +1,8 @@
1
1
  #include "tut.h"
2
2
  #include "MessageChannel.h"
3
3
 
4
+ #include <boost/bind.hpp>
5
+ #include <boost/thread.hpp>
4
6
  #include <cstring>
5
7
  #include <cstdio>
6
8
 
@@ -144,8 +146,14 @@ namespace tut {
144
146
  MessageChannel channel2(s[1]);
145
147
 
146
148
  pipe(my_pipe);
147
- channel1.writeFileDescriptor(my_pipe[1]);
149
+ boost::thread thr(boost::bind(
150
+ &MessageChannel::writeFileDescriptor,
151
+ &channel1,
152
+ my_pipe[1],
153
+ true
154
+ ));
148
155
  fd = channel2.readFileDescriptor();
156
+ thr.join();
149
157
 
150
158
  char buf[5];
151
159
  write(fd, "hello", 5);
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
- $LOAD_PATH << "#{File.dirname(__FILE__)}/../../lib"
2
+ $LOAD_PATH.unshift("#{File.dirname(__FILE__)}/../../lib")
3
3
  require 'phusion_passenger/message_channel'
4
4
 
5
5
  include PhusionPassenger
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
- $LOAD_PATH << "#{File.dirname(__FILE__)}/../../lib"
2
+ $LOAD_PATH.unshift("#{File.dirname(__FILE__)}/../../lib")
3
3
  require 'phusion_passenger/message_channel'
4
4
 
5
5
  include PhusionPassenger
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
- $LOAD_PATH << "#{File.dirname(__FILE__)}/../../lib"
3
- $LOAD_PATH << "#{File.dirname(__FILE__)}/../../ext"
2
+ $LOAD_PATH.unshift("#{File.dirname(__FILE__)}/../../lib")
3
+ $LOAD_PATH.unshift("#{File.dirname(__FILE__)}/../../ext")
4
4
  require 'phusion_passenger/message_channel'
5
5
  require 'phusion_passenger/utils'
6
6
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: passenger
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.9
4
+ version: 2.2.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Phusion - http://www.phusion.nl/
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-08 00:00:00 +01:00
12
+ date: 2010-02-22 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -141,28 +141,37 @@ files:
141
141
  - doc/Users guide Apache.txt
142
142
  - doc/Users guide Nginx.html
143
143
  - doc/Users guide Nginx.txt
144
+ - doc/cxxapi/AbstractSpawnManager_8h-source.html
145
+ - doc/cxxapi/Account_8h-source.html
146
+ - doc/cxxapi/AccountsDatabase_8h-source.html
147
+ - doc/cxxapi/AgentsStarter_8h-source.html
144
148
  - doc/cxxapi/annotated.html
145
- - doc/cxxapi/Application_8h-source.html
146
- - doc/cxxapi/ApplicationPool_8h-source.html
147
- - doc/cxxapi/ApplicationPoolServer_8h-source.html
149
+ - doc/cxxapi/apache2_2Configuration_8h-source.html
150
+ - doc/cxxapi/BacktracesServer_8h-source.html
151
+ - doc/cxxapi/Base64_8h-source.html
152
+ - doc/cxxapi/BCrypt_8h-source.html
153
+ - doc/cxxapi/Blowfish_8h-source.html
148
154
  - doc/cxxapi/Bucket_8h-source.html
149
155
  - doc/cxxapi/CachedFileStat_8h-source.html
156
+ - doc/cxxapi/classAgentWatcher-members.html
157
+ - doc/cxxapi/classAgentWatcher.html
150
158
  - doc/cxxapi/classClient-members.html
151
159
  - doc/cxxapi/classClient.html
152
160
  - doc/cxxapi/classes.html
153
161
  - doc/cxxapi/classHooks-members.html
154
162
  - doc/cxxapi/classHooks.html
155
- - doc/cxxapi/classPassenger_1_1Application-members.html
156
- - doc/cxxapi/classPassenger_1_1Application.html
157
- - doc/cxxapi/classPassenger_1_1Application_1_1Session-members.html
158
- - doc/cxxapi/classPassenger_1_1Application_1_1Session.html
159
- - doc/cxxapi/classPassenger_1_1ApplicationPool-members.html
160
- - doc/cxxapi/classPassenger_1_1ApplicationPool.html
161
- - doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.map
162
- - doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.md5
163
- - doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.png
164
- - doc/cxxapi/classPassenger_1_1ApplicationPoolServer-members.html
165
- - doc/cxxapi/classPassenger_1_1ApplicationPoolServer.html
163
+ - doc/cxxapi/classPassenger_1_1AbstractSpawnManager-members.html
164
+ - doc/cxxapi/classPassenger_1_1AbstractSpawnManager.html
165
+ - doc/cxxapi/classPassenger_1_1AbstractSpawnManager__inherit__graph.map
166
+ - doc/cxxapi/classPassenger_1_1AbstractSpawnManager__inherit__graph.md5
167
+ - doc/cxxapi/classPassenger_1_1AbstractSpawnManager__inherit__graph.png
168
+ - doc/cxxapi/classPassenger_1_1ArgumentException-members.html
169
+ - doc/cxxapi/classPassenger_1_1ArgumentException.html
170
+ - doc/cxxapi/classPassenger_1_1BacktracesServer-members.html
171
+ - doc/cxxapi/classPassenger_1_1BacktracesServer.html
172
+ - doc/cxxapi/classPassenger_1_1BacktracesServer__inherit__graph.map
173
+ - doc/cxxapi/classPassenger_1_1BacktracesServer__inherit__graph.md5
174
+ - doc/cxxapi/classPassenger_1_1BacktracesServer__inherit__graph.png
166
175
  - doc/cxxapi/classPassenger_1_1BufferedUpload-members.html
167
176
  - doc/cxxapi/classPassenger_1_1BufferedUpload.html
168
177
  - doc/cxxapi/classPassenger_1_1BusyException-members.html
@@ -171,10 +180,17 @@ files:
171
180
  - doc/cxxapi/classPassenger_1_1ConfigurationException.html
172
181
  - doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html
173
182
  - doc/cxxapi/classPassenger_1_1DirectoryMapper.html
174
- - doc/cxxapi/classPassenger_1_1DummySpawnManager-members.html
175
- - doc/cxxapi/classPassenger_1_1DummySpawnManager.html
176
- - doc/cxxapi/classPassenger_1_1FileChecker-members.html
177
- - doc/cxxapi/classPassenger_1_1FileChecker.html
183
+ - doc/cxxapi/classPassenger_1_1EOFException-members.html
184
+ - doc/cxxapi/classPassenger_1_1EOFException.html
185
+ - doc/cxxapi/classPassenger_1_1EOFException__inherit__graph.map
186
+ - doc/cxxapi/classPassenger_1_1EOFException__inherit__graph.md5
187
+ - doc/cxxapi/classPassenger_1_1EOFException__inherit__graph.png
188
+ - doc/cxxapi/classPassenger_1_1EventFd-members.html
189
+ - doc/cxxapi/classPassenger_1_1EventFd.html
190
+ - doc/cxxapi/classPassenger_1_1FileChangeChecker-members.html
191
+ - doc/cxxapi/classPassenger_1_1FileChangeChecker.html
192
+ - doc/cxxapi/classPassenger_1_1FileDescriptor-members.html
193
+ - doc/cxxapi/classPassenger_1_1FileDescriptor.html
178
194
  - doc/cxxapi/classPassenger_1_1FileNotFoundException-members.html
179
195
  - doc/cxxapi/classPassenger_1_1FileNotFoundException.html
180
196
  - doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.map
@@ -185,24 +201,63 @@ files:
185
201
  - doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.map
186
202
  - doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.md5
187
203
  - doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.png
204
+ - doc/cxxapi/classPassenger_1_1HttpStatusExtractor-members.html
205
+ - doc/cxxapi/classPassenger_1_1HttpStatusExtractor.html
188
206
  - doc/cxxapi/classPassenger_1_1IOException-members.html
189
207
  - doc/cxxapi/classPassenger_1_1IOException.html
190
208
  - doc/cxxapi/classPassenger_1_1IOException__inherit__graph.map
191
209
  - doc/cxxapi/classPassenger_1_1IOException__inherit__graph.md5
192
210
  - doc/cxxapi/classPassenger_1_1IOException__inherit__graph.png
211
+ - doc/cxxapi/classPassenger_1_1MemZeroGuard-members.html
212
+ - doc/cxxapi/classPassenger_1_1MemZeroGuard.html
193
213
  - doc/cxxapi/classPassenger_1_1MessageChannel-members.html
194
214
  - doc/cxxapi/classPassenger_1_1MessageChannel.html
215
+ - doc/cxxapi/classPassenger_1_1MessageServer-members.html
216
+ - doc/cxxapi/classPassenger_1_1MessageServer.html
217
+ - doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext-members.html
218
+ - doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext.html
219
+ - doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.map
220
+ - doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.md5
221
+ - doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.png
222
+ - doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext-members.html
223
+ - doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext.html
224
+ - doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.map
225
+ - doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.md5
226
+ - doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.png
227
+ - doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler-members.html
228
+ - doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler.html
229
+ - doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler__inherit__graph.map
230
+ - doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler__inherit__graph.md5
231
+ - doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler__inherit__graph.png
232
+ - doc/cxxapi/classPassenger_1_1Process-members.html
233
+ - doc/cxxapi/classPassenger_1_1Process.html
234
+ - doc/cxxapi/classPassenger_1_1RandomGenerator-members.html
235
+ - doc/cxxapi/classPassenger_1_1RandomGenerator.html
195
236
  - doc/cxxapi/classPassenger_1_1RuntimeException-members.html
196
237
  - doc/cxxapi/classPassenger_1_1RuntimeException.html
238
+ - doc/cxxapi/classPassenger_1_1ScgiRequestParser-members.html
239
+ - doc/cxxapi/classPassenger_1_1ScgiRequestParser.html
240
+ - doc/cxxapi/classPassenger_1_1SecurityException-members.html
241
+ - doc/cxxapi/classPassenger_1_1SecurityException.html
242
+ - doc/cxxapi/classPassenger_1_1Session-members.html
243
+ - doc/cxxapi/classPassenger_1_1Session.html
244
+ - doc/cxxapi/classPassenger_1_1Session__inherit__graph.map
245
+ - doc/cxxapi/classPassenger_1_1Session__inherit__graph.md5
246
+ - doc/cxxapi/classPassenger_1_1Session__inherit__graph.png
197
247
  - doc/cxxapi/classPassenger_1_1SpawnException-members.html
198
248
  - doc/cxxapi/classPassenger_1_1SpawnException.html
199
249
  - doc/cxxapi/classPassenger_1_1SpawnManager-members.html
200
250
  - doc/cxxapi/classPassenger_1_1SpawnManager.html
201
- - doc/cxxapi/classPassenger_1_1StandardApplicationPool-members.html
202
- - doc/cxxapi/classPassenger_1_1StandardApplicationPool.html
203
- - doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.map
204
- - doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.md5
205
- - doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.png
251
+ - doc/cxxapi/classPassenger_1_1SpawnManager__inherit__graph.map
252
+ - doc/cxxapi/classPassenger_1_1SpawnManager__inherit__graph.md5
253
+ - doc/cxxapi/classPassenger_1_1SpawnManager__inherit__graph.png
254
+ - doc/cxxapi/classPassenger_1_1StandardSession-members.html
255
+ - doc/cxxapi/classPassenger_1_1StandardSession.html
256
+ - doc/cxxapi/classPassenger_1_1StandardSession__inherit__graph.map
257
+ - doc/cxxapi/classPassenger_1_1StandardSession__inherit__graph.md5
258
+ - doc/cxxapi/classPassenger_1_1StandardSession__inherit__graph.png
259
+ - doc/cxxapi/classPassenger_1_1StaticString-members.html
260
+ - doc/cxxapi/classPassenger_1_1StaticString.html
206
261
  - doc/cxxapi/classPassenger_1_1SystemException-members.html
207
262
  - doc/cxxapi/classPassenger_1_1SystemException.html
208
263
  - doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.map
@@ -210,14 +265,29 @@ files:
210
265
  - doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.png
211
266
  - doc/cxxapi/classPassenger_1_1SystemTime-members.html
212
267
  - doc/cxxapi/classPassenger_1_1SystemTime.html
268
+ - doc/cxxapi/classPassenger_1_1TimeoutException-members.html
269
+ - doc/cxxapi/classPassenger_1_1TimeoutException.html
270
+ - doc/cxxapi/classPassenger_1_1Timer-members.html
271
+ - doc/cxxapi/classPassenger_1_1Timer.html
272
+ - doc/cxxapi/classPassenger_1_1TimeRetrievalException-members.html
273
+ - doc/cxxapi/classPassenger_1_1TimeRetrievalException.html
274
+ - doc/cxxapi/classPassenger_1_1TimeRetrievalException__inherit__graph.map
275
+ - doc/cxxapi/classPassenger_1_1TimeRetrievalException__inherit__graph.md5
276
+ - doc/cxxapi/classPassenger_1_1TimeRetrievalException__inherit__graph.png
277
+ - doc/cxxapi/classServer-members.html
278
+ - doc/cxxapi/classServer.html
279
+ - doc/cxxapi/classServerInstanceDirToucher-members.html
280
+ - doc/cxxapi/classServerInstanceDirToucher.html
213
281
  - doc/cxxapi/Configuration_8h-source.html
282
+ - doc/cxxapi/Constants_8h-source.html
283
+ - doc/cxxapi/ContentHandler_8h-source.html
214
284
  - doc/cxxapi/definitions_8h-source.html
215
285
  - doc/cxxapi/DirectoryMapper_8h-source.html
216
286
  - doc/cxxapi/doxygen.css
217
287
  - doc/cxxapi/doxygen.png
218
- - doc/cxxapi/DummySpawnManager_8h-source.html
219
288
  - doc/cxxapi/Exceptions_8h-source.html
220
- - doc/cxxapi/FileChecker_8h-source.html
289
+ - doc/cxxapi/FileChangeChecker_8h-source.html
290
+ - doc/cxxapi/FileDescriptor_8h-source.html
221
291
  - doc/cxxapi/files.html
222
292
  - doc/cxxapi/ftv2blank.png
223
293
  - doc/cxxapi/ftv2doc.png
@@ -232,8 +302,9 @@ files:
232
302
  - doc/cxxapi/ftv2pnode.png
233
303
  - doc/cxxapi/ftv2vertline.png
234
304
  - doc/cxxapi/functions.html
305
+ - doc/cxxapi/functions_enum.html
306
+ - doc/cxxapi/functions_eval.html
235
307
  - doc/cxxapi/functions_func.html
236
- - doc/cxxapi/functions_type.html
237
308
  - doc/cxxapi/functions_vars.html
238
309
  - doc/cxxapi/graph_legend.dot
239
310
  - doc/cxxapi/graph_legend.html
@@ -248,6 +319,7 @@ files:
248
319
  - doc/cxxapi/group__Support.html
249
320
  - doc/cxxapi/hierarchy.html
250
321
  - doc/cxxapi/Hooks_8h-source.html
322
+ - doc/cxxapi/HttpStatusExtractor_8h-source.html
251
323
  - doc/cxxapi/index.html
252
324
  - doc/cxxapi/inherit__graph__0.map
253
325
  - doc/cxxapi/inherit__graph__0.md5
@@ -294,9 +366,54 @@ files:
294
366
  - doc/cxxapi/inherit__graph__21.map
295
367
  - doc/cxxapi/inherit__graph__21.md5
296
368
  - doc/cxxapi/inherit__graph__21.png
369
+ - doc/cxxapi/inherit__graph__22.map
370
+ - doc/cxxapi/inherit__graph__22.md5
371
+ - doc/cxxapi/inherit__graph__22.png
372
+ - doc/cxxapi/inherit__graph__23.map
373
+ - doc/cxxapi/inherit__graph__23.md5
374
+ - doc/cxxapi/inherit__graph__23.png
375
+ - doc/cxxapi/inherit__graph__24.map
376
+ - doc/cxxapi/inherit__graph__24.md5
377
+ - doc/cxxapi/inherit__graph__24.png
378
+ - doc/cxxapi/inherit__graph__25.map
379
+ - doc/cxxapi/inherit__graph__25.md5
380
+ - doc/cxxapi/inherit__graph__25.png
381
+ - doc/cxxapi/inherit__graph__26.map
382
+ - doc/cxxapi/inherit__graph__26.md5
383
+ - doc/cxxapi/inherit__graph__26.png
384
+ - doc/cxxapi/inherit__graph__27.map
385
+ - doc/cxxapi/inherit__graph__27.md5
386
+ - doc/cxxapi/inherit__graph__27.png
387
+ - doc/cxxapi/inherit__graph__28.map
388
+ - doc/cxxapi/inherit__graph__28.md5
389
+ - doc/cxxapi/inherit__graph__28.png
390
+ - doc/cxxapi/inherit__graph__29.map
391
+ - doc/cxxapi/inherit__graph__29.md5
392
+ - doc/cxxapi/inherit__graph__29.png
297
393
  - doc/cxxapi/inherit__graph__3.map
298
394
  - doc/cxxapi/inherit__graph__3.md5
299
395
  - doc/cxxapi/inherit__graph__3.png
396
+ - doc/cxxapi/inherit__graph__30.map
397
+ - doc/cxxapi/inherit__graph__30.md5
398
+ - doc/cxxapi/inherit__graph__30.png
399
+ - doc/cxxapi/inherit__graph__31.map
400
+ - doc/cxxapi/inherit__graph__31.md5
401
+ - doc/cxxapi/inherit__graph__31.png
402
+ - doc/cxxapi/inherit__graph__32.map
403
+ - doc/cxxapi/inherit__graph__32.md5
404
+ - doc/cxxapi/inherit__graph__32.png
405
+ - doc/cxxapi/inherit__graph__33.map
406
+ - doc/cxxapi/inherit__graph__33.md5
407
+ - doc/cxxapi/inherit__graph__33.png
408
+ - doc/cxxapi/inherit__graph__34.map
409
+ - doc/cxxapi/inherit__graph__34.md5
410
+ - doc/cxxapi/inherit__graph__34.png
411
+ - doc/cxxapi/inherit__graph__35.map
412
+ - doc/cxxapi/inherit__graph__35.md5
413
+ - doc/cxxapi/inherit__graph__35.png
414
+ - doc/cxxapi/inherit__graph__36.map
415
+ - doc/cxxapi/inherit__graph__36.md5
416
+ - doc/cxxapi/inherit__graph__36.png
300
417
  - doc/cxxapi/inherit__graph__4.map
301
418
  - doc/cxxapi/inherit__graph__4.md5
302
419
  - doc/cxxapi/inherit__graph__4.png
@@ -317,25 +434,52 @@ files:
317
434
  - doc/cxxapi/inherit__graph__9.png
318
435
  - doc/cxxapi/inherits.html
319
436
  - doc/cxxapi/Logging_8h-source.html
437
+ - doc/cxxapi/LoggingServer_8h-source.html
320
438
  - doc/cxxapi/main.html
439
+ - doc/cxxapi/md5_8h-source.html
321
440
  - doc/cxxapi/MessageChannel_8h-source.html
441
+ - doc/cxxapi/MessageClient_8h-source.html
442
+ - doc/cxxapi/MessageServer_8h-source.html
322
443
  - doc/cxxapi/modules.html
444
+ - doc/cxxapi/namespacemembers.html
445
+ - doc/cxxapi/namespacemembers_enum.html
446
+ - doc/cxxapi/namespacemembers_eval.html
447
+ - doc/cxxapi/namespacemembers_func.html
448
+ - doc/cxxapi/namespacemembers_type.html
449
+ - doc/cxxapi/namespacePassenger.html
450
+ - doc/cxxapi/namespaces.html
451
+ - doc/cxxapi/nginx_2Configuration_8h-source.html
452
+ - doc/cxxapi/ngx__http__passenger__module_8h-source.html
323
453
  - doc/cxxapi/PoolOptions_8h-source.html
454
+ - doc/cxxapi/Process_8h-source.html
455
+ - doc/cxxapi/RandomGenerator_8h-source.html
456
+ - doc/cxxapi/ResourceLocator_8h-source.html
457
+ - doc/cxxapi/ScgiRequestParser_8h-source.html
458
+ - doc/cxxapi/ServerInstanceDir_8h-source.html
459
+ - doc/cxxapi/Session_8h-source.html
324
460
  - doc/cxxapi/SpawnManager_8h-source.html
325
- - doc/cxxapi/StandardApplicationPool_8h-source.html
461
+ - doc/cxxapi/StaticContentHandler_8h-source.html
462
+ - doc/cxxapi/StaticString_8h-source.html
463
+ - doc/cxxapi/StringListCreator_8h-source.html
326
464
  - doc/cxxapi/structPassenger_1_1AnythingToString-members.html
327
465
  - doc/cxxapi/structPassenger_1_1AnythingToString.html
328
466
  - doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4-members.html
329
467
  - doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html
468
+ - doc/cxxapi/structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard-members.html
469
+ - doc/cxxapi/structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard.html
330
470
  - doc/cxxapi/structPassenger_1_1PoolOptions-members.html
331
471
  - doc/cxxapi/structPassenger_1_1PoolOptions.html
472
+ - doc/cxxapi/structPassenger_1_1StaticString_1_1Hash-members.html
473
+ - doc/cxxapi/structPassenger_1_1StaticString_1_1Hash.html
332
474
  - doc/cxxapi/SystemTime_8h-source.html
333
475
  - doc/cxxapi/tab_b.gif
334
476
  - doc/cxxapi/tab_l.gif
335
477
  - doc/cxxapi/tab_r.gif
336
478
  - doc/cxxapi/tabs.css
479
+ - doc/cxxapi/Timer_8h-source.html
337
480
  - doc/cxxapi/tree.html
338
481
  - doc/cxxapi/Utils_8h-source.html
482
+ - doc/cxxapi/Version_8h-source.html
339
483
  - doc/images/by_sa.png
340
484
  - doc/images/conservative_spawning.png
341
485
  - doc/images/conservative_spawning.svg
@@ -348,12 +492,6 @@ files:
348
492
  - doc/images/spawn_server_architecture.svg
349
493
  - doc/images/typical_isolated_web_application.png
350
494
  - doc/images/typical_isolated_web_application.svg
351
- - doc/rdoc/created.rid
352
- - doc/rdoc/fr_class_index.html
353
- - doc/rdoc/fr_file_index.html
354
- - doc/rdoc/fr_method_index.html
355
- - doc/rdoc/index.html
356
- - doc/rdoc/rdoc-style.css
357
495
  - doc/template/horo.rb
358
496
  - doc/users_guide_snippets/analysis_and_system_maintenance_tools.txt
359
497
  - doc/users_guide_snippets/appendix_a_about.txt
@@ -374,16 +512,6 @@ files:
374
512
  - doc/images/icons/tip.png
375
513
  - doc/images/icons/up.png
376
514
  - doc/images/icons/warning.png
377
- - doc/rdoc/classes/ConditionVariable.html
378
- - doc/rdoc/classes/Exception.html
379
- - doc/rdoc/classes/GC.html
380
- - doc/rdoc/classes/IO.html
381
- - doc/rdoc/classes/PhusionPassenger.html
382
- - doc/rdoc/classes/PlatformInfo.html
383
- - doc/rdoc/classes/RakeExtensions.html
384
- - doc/rdoc/classes/Signal.html
385
- - doc/rdoc/files/DEVELOPERS_TXT.html
386
- - doc/rdoc/files/README.html
387
515
  - doc/images/icons/callouts/1.png
388
516
  - doc/images/icons/callouts/10.png
389
517
  - doc/images/icons/callouts/11.png
@@ -399,74 +527,6 @@ files:
399
527
  - doc/images/icons/callouts/7.png
400
528
  - doc/images/icons/callouts/8.png
401
529
  - doc/images/icons/callouts/9.png
402
- - doc/rdoc/classes/PhusionPassenger/AbstractInstaller.html
403
- - doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html
404
- - doc/rdoc/classes/PhusionPassenger/AbstractServer.html
405
- - doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html
406
- - doc/rdoc/classes/PhusionPassenger/AdminTools.html
407
- - doc/rdoc/classes/PhusionPassenger/AppInitError.html
408
- - doc/rdoc/classes/PhusionPassenger/Application.html
409
- - doc/rdoc/classes/PhusionPassenger/ConsoleTextTemplate.html
410
- - doc/rdoc/classes/PhusionPassenger/FrameworkInitError.html
411
- - doc/rdoc/classes/PhusionPassenger/HTMLTemplate.html
412
- - doc/rdoc/classes/PhusionPassenger/InitializationError.html
413
- - doc/rdoc/classes/PhusionPassenger/InvalidPath.html
414
- - doc/rdoc/classes/PhusionPassenger/MessageChannel.html
415
- - doc/rdoc/classes/PhusionPassenger/NativeSupport.html
416
- - doc/rdoc/classes/PhusionPassenger/Rack.html
417
- - doc/rdoc/classes/PhusionPassenger/Railz.html
418
- - doc/rdoc/classes/PhusionPassenger/SpawnManager.html
419
- - doc/rdoc/classes/PhusionPassenger/UnknownError.html
420
- - doc/rdoc/classes/PhusionPassenger/Utils.html
421
- - doc/rdoc/classes/PhusionPassenger/VersionNotFound.html
422
- - doc/rdoc/classes/PhusionPassenger/WSGI.html
423
- - doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerAlreadyStarted.html
424
- - doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerError.html
425
- - doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerNotStarted.html
426
- - doc/rdoc/classes/PhusionPassenger/AbstractServer/UnknownMessage.html
427
- - doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess.html
428
- - doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner.html
429
- - doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html
430
- - doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner.html
431
- - doc/rdoc/classes/PhusionPassenger/Railz/CGIFixed.html
432
- - doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner.html
433
- - doc/rdoc/classes/PhusionPassenger/Railz/RequestHandler.html
434
- - doc/rdoc/classes/PhusionPassenger/Utils/PseudoIO.html
435
- - doc/rdoc/classes/PhusionPassenger/Utils/RewindableInput.html
436
- - doc/rdoc/classes/PhusionPassenger/WSGI/ApplicationSpawner.html
437
- - doc/rdoc/files/ext/phusion_passenger/native_support_c.html
438
- - doc/rdoc/files/lib/phusion_passenger/abstract_installer_rb.html
439
- - doc/rdoc/files/lib/phusion_passenger/abstract_request_handler_rb.html
440
- - doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html
441
- - doc/rdoc/files/lib/phusion_passenger/abstract_server_rb.html
442
- - doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html
443
- - doc/rdoc/files/lib/phusion_passenger/application_rb.html
444
- - doc/rdoc/files/lib/phusion_passenger/console_text_template_rb.html
445
- - doc/rdoc/files/lib/phusion_passenger/constants_rb.html
446
- - doc/rdoc/files/lib/phusion_passenger/dependencies_rb.html
447
- - doc/rdoc/files/lib/phusion_passenger/events_rb.html
448
- - doc/rdoc/files/lib/phusion_passenger/exceptions_rb.html
449
- - doc/rdoc/files/lib/phusion_passenger/html_template_rb.html
450
- - doc/rdoc/files/lib/phusion_passenger/message_channel_rb.html
451
- - doc/rdoc/files/lib/phusion_passenger/packaging_rb.html
452
- - doc/rdoc/files/lib/phusion_passenger/platform_info_rb.html
453
- - doc/rdoc/files/lib/phusion_passenger/simple_benchmarking_rb.html
454
- - doc/rdoc/files/lib/phusion_passenger/spawn_manager_rb.html
455
- - doc/rdoc/files/lib/phusion_passenger/utils_rb.html
456
- - doc/rdoc/files/misc/rake/extensions_rb.html
457
- - doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess/Instance.html
458
- - doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner/Error.html
459
- - doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner/Error.html
460
- - doc/rdoc/classes/PhusionPassenger/Utils/RewindableInput/Tempfile.html
461
- - doc/rdoc/files/lib/phusion_passenger/admin_tools/control_process_rb.html
462
- - doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html
463
- - doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html
464
- - doc/rdoc/files/lib/phusion_passenger/railz/application_spawner_rb.html
465
- - doc/rdoc/files/lib/phusion_passenger/railz/cgi_fixed_rb.html
466
- - doc/rdoc/files/lib/phusion_passenger/railz/framework_spawner_rb.html
467
- - doc/rdoc/files/lib/phusion_passenger/railz/request_handler_rb.html
468
- - doc/rdoc/files/lib/phusion_passenger/utils/rewindable_input_rb.html
469
- - doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html
470
530
  - man/passenger-config.1
471
531
  - man/passenger-make-enterprisey.8
472
532
  - man/passenger-memory-stats.8