passenger 3.0.4 → 3.0.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 (571) hide show
  1. data/NEWS +27 -0
  2. data/build/common_library.rb +4 -0
  3. data/doc/ApplicationPool algorithm.txt +1 -1
  4. data/doc/cxxapi/AbstractSpawnManager_8h_source.html +141 -0
  5. data/doc/cxxapi/Account_8h_source.html +206 -0
  6. data/doc/cxxapi/AccountsDatabase_8h_source.html +161 -0
  7. data/doc/cxxapi/AgentBase_8h_source.html +70 -0
  8. data/doc/cxxapi/AgentsStarter_8h_source.html +112 -0
  9. data/doc/cxxapi/BCrypt_8h_source.html +104 -0
  10. data/doc/cxxapi/Blowfish_8h_source.html +134 -0
  11. data/doc/cxxapi/Bucket_8h_source.html +118 -0
  12. data/doc/cxxapi/Constants_8h_source.html +79 -0
  13. data/doc/cxxapi/ContentHandler_8h_source.html +95 -0
  14. data/doc/cxxapi/DirectoryMapper_8h_source.html +311 -0
  15. data/doc/cxxapi/EventedClient_8h_source.html +733 -0
  16. data/doc/cxxapi/EventedMessageServer_8h_source.html +358 -0
  17. data/doc/cxxapi/EventedServer_8h_source.html +326 -0
  18. data/doc/cxxapi/Exceptions_8h_source.html +393 -0
  19. data/doc/cxxapi/FileDescriptor_8h_source.html +324 -0
  20. data/doc/cxxapi/Hooks_8h_source.html +76 -0
  21. data/doc/cxxapi/HttpStatusExtractor_8h_source.html +382 -0
  22. data/doc/cxxapi/IniFile_8h_source.html +527 -0
  23. data/doc/cxxapi/Logging_8h_source.html +796 -0
  24. data/doc/cxxapi/MessageChannel_8h_source.html +776 -0
  25. data/doc/cxxapi/MessageClient_8h_source.html +328 -0
  26. data/doc/cxxapi/MessageReadersWriters_8h_source.html +539 -0
  27. data/doc/cxxapi/MessageServer_8h_source.html +612 -0
  28. data/doc/cxxapi/PoolOptions_8h_source.html +549 -0
  29. data/doc/cxxapi/Process_8h_source.html +286 -0
  30. data/doc/cxxapi/RandomGenerator_8h_source.html +191 -0
  31. data/doc/cxxapi/ResourceLocator_8h_source.html +166 -0
  32. data/doc/cxxapi/SafeLibev_8h_source.html +180 -0
  33. data/doc/cxxapi/ScgiRequestParser_8h_source.html +406 -0
  34. data/doc/cxxapi/ServerInstanceDir_8h_source.html +378 -0
  35. data/doc/cxxapi/Session_8h_source.html +501 -0
  36. data/doc/cxxapi/SpawnManager_8h_source.html +647 -0
  37. data/doc/cxxapi/StaticContentHandler_8h_source.html +68 -0
  38. data/doc/cxxapi/StaticString_8h_source.html +329 -0
  39. data/doc/cxxapi/StringListCreator_8h_source.html +114 -0
  40. data/doc/cxxapi/Utils_8h_source.html +459 -0
  41. data/doc/cxxapi/annotated.html +87 -0
  42. data/doc/cxxapi/apache2_2Configuration_8h_source.html +82 -0
  43. data/doc/cxxapi/classAgentWatcher-members.html +54 -0
  44. data/doc/cxxapi/classAgentWatcher.html +419 -0
  45. data/doc/cxxapi/classClient-members.html +38 -0
  46. data/doc/cxxapi/classClient.html +123 -0
  47. data/doc/cxxapi/classHooks-members.html +40 -0
  48. data/doc/cxxapi/classHooks.html +153 -0
  49. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager-members.html +40 -0
  50. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager.html +187 -0
  51. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager__inherit__graph.map +3 -0
  52. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager__inherit__graph.md5 +1 -0
  53. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager__inherit__graph.png +0 -0
  54. data/doc/cxxapi/classPassenger_1_1ArgumentException-members.html +36 -0
  55. data/doc/cxxapi/classPassenger_1_1ArgumentException.html +56 -0
  56. data/doc/cxxapi/classPassenger_1_1ArrayMessage-members.html +37 -0
  57. data/doc/cxxapi/classPassenger_1_1ArrayMessage.html +113 -0
  58. data/doc/cxxapi/classPassenger_1_1BufferedUpload-members.html +38 -0
  59. data/doc/cxxapi/classPassenger_1_1BufferedUpload.html +112 -0
  60. data/doc/cxxapi/classPassenger_1_1BusyException-members.html +36 -0
  61. data/doc/cxxapi/classPassenger_1_1BusyException.html +54 -0
  62. data/doc/cxxapi/classPassenger_1_1ConfigurationException-members.html +36 -0
  63. data/doc/cxxapi/classPassenger_1_1ConfigurationException.html +51 -0
  64. data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +41 -0
  65. data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +223 -0
  66. data/doc/cxxapi/classPassenger_1_1EOFException-members.html +36 -0
  67. data/doc/cxxapi/classPassenger_1_1EOFException.html +61 -0
  68. data/doc/cxxapi/classPassenger_1_1EOFException__inherit__graph.map +3 -0
  69. data/doc/cxxapi/classPassenger_1_1EOFException__inherit__graph.md5 +1 -0
  70. data/doc/cxxapi/classPassenger_1_1EOFException__inherit__graph.png +0 -0
  71. data/doc/cxxapi/classPassenger_1_1EventFd-members.html +36 -0
  72. data/doc/cxxapi/classPassenger_1_1EventFd.html +52 -0
  73. data/doc/cxxapi/classPassenger_1_1EventedClient-members.html +59 -0
  74. data/doc/cxxapi/classPassenger_1_1EventedClient.html +531 -0
  75. data/doc/cxxapi/classPassenger_1_1EventedMessageServer-members.html +37 -0
  76. data/doc/cxxapi/classPassenger_1_1EventedMessageServer.html +59 -0
  77. data/doc/cxxapi/classPassenger_1_1EventedMessageServer__inherit__graph.map +3 -0
  78. data/doc/cxxapi/classPassenger_1_1EventedMessageServer__inherit__graph.md5 +1 -0
  79. data/doc/cxxapi/classPassenger_1_1EventedMessageServer__inherit__graph.png +0 -0
  80. data/doc/cxxapi/classPassenger_1_1EventedServer-members.html +37 -0
  81. data/doc/cxxapi/classPassenger_1_1EventedServer.html +93 -0
  82. data/doc/cxxapi/classPassenger_1_1EventedServer__inherit__graph.map +3 -0
  83. data/doc/cxxapi/classPassenger_1_1EventedServer__inherit__graph.md5 +1 -0
  84. data/doc/cxxapi/classPassenger_1_1EventedServer__inherit__graph.png +0 -0
  85. data/doc/cxxapi/classPassenger_1_1FileDescriptor-members.html +41 -0
  86. data/doc/cxxapi/classPassenger_1_1FileDescriptor.html +178 -0
  87. data/doc/cxxapi/classPassenger_1_1FileDescriptorPair-members.html +36 -0
  88. data/doc/cxxapi/classPassenger_1_1FileDescriptorPair.html +52 -0
  89. data/doc/cxxapi/classPassenger_1_1FileNotFoundException-members.html +36 -0
  90. data/doc/cxxapi/classPassenger_1_1FileNotFoundException.html +58 -0
  91. data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.map +3 -0
  92. data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.md5 +1 -0
  93. data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.png +0 -0
  94. data/doc/cxxapi/classPassenger_1_1FileSystemException-members.html +41 -0
  95. data/doc/cxxapi/classPassenger_1_1FileSystemException.html +66 -0
  96. data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.map +3 -0
  97. data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.md5 +1 -0
  98. data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.png +0 -0
  99. data/doc/cxxapi/classPassenger_1_1HttpStatusExtractor-members.html +39 -0
  100. data/doc/cxxapi/classPassenger_1_1HttpStatusExtractor.html +128 -0
  101. data/doc/cxxapi/classPassenger_1_1IOException-members.html +36 -0
  102. data/doc/cxxapi/classPassenger_1_1IOException.html +61 -0
  103. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.map +4 -0
  104. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.md5 +1 -0
  105. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.png +0 -0
  106. data/doc/cxxapi/classPassenger_1_1MessageChannel-members.html +57 -0
  107. data/doc/cxxapi/classPassenger_1_1MessageChannel.html +839 -0
  108. data/doc/cxxapi/classPassenger_1_1MessageServer-members.html +49 -0
  109. data/doc/cxxapi/classPassenger_1_1MessageServer.html +407 -0
  110. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext-members.html +36 -0
  111. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext.html +58 -0
  112. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.map +3 -0
  113. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.md5 +1 -0
  114. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.png +0 -0
  115. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext-members.html +41 -0
  116. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext.html +165 -0
  117. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.map +3 -0
  118. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.md5 +1 -0
  119. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.png +0 -0
  120. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler-members.html +39 -0
  121. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler.html +173 -0
  122. data/doc/cxxapi/classPassenger_1_1Process-members.html +44 -0
  123. data/doc/cxxapi/classPassenger_1_1Process.html +290 -0
  124. data/doc/cxxapi/classPassenger_1_1RandomGenerator-members.html +37 -0
  125. data/doc/cxxapi/classPassenger_1_1RandomGenerator.html +79 -0
  126. data/doc/cxxapi/classPassenger_1_1ResourceLocator-members.html +36 -0
  127. data/doc/cxxapi/classPassenger_1_1ResourceLocator.html +51 -0
  128. data/doc/cxxapi/classPassenger_1_1RuntimeException-members.html +36 -0
  129. data/doc/cxxapi/classPassenger_1_1RuntimeException.html +54 -0
  130. data/doc/cxxapi/classPassenger_1_1SafeLibev-members.html +36 -0
  131. data/doc/cxxapi/classPassenger_1_1SafeLibev.html +51 -0
  132. data/doc/cxxapi/classPassenger_1_1ScalarMessage-members.html +37 -0
  133. data/doc/cxxapi/classPassenger_1_1ScalarMessage.html +76 -0
  134. data/doc/cxxapi/classPassenger_1_1ScgiRequestParser-members.html +50 -0
  135. data/doc/cxxapi/classPassenger_1_1ScgiRequestParser.html +285 -0
  136. data/doc/cxxapi/classPassenger_1_1SecurityException-members.html +36 -0
  137. data/doc/cxxapi/classPassenger_1_1SecurityException.html +56 -0
  138. data/doc/cxxapi/classPassenger_1_1Session-members.html +53 -0
  139. data/doc/cxxapi/classPassenger_1_1Session.html +556 -0
  140. data/doc/cxxapi/classPassenger_1_1Session__inherit__graph.map +3 -0
  141. data/doc/cxxapi/classPassenger_1_1Session__inherit__graph.md5 +1 -0
  142. data/doc/cxxapi/classPassenger_1_1Session__inherit__graph.png +0 -0
  143. data/doc/cxxapi/classPassenger_1_1SpawnException-members.html +39 -0
  144. data/doc/cxxapi/classPassenger_1_1SpawnException.html +101 -0
  145. data/doc/cxxapi/classPassenger_1_1SpawnManager-members.html +42 -0
  146. data/doc/cxxapi/classPassenger_1_1SpawnManager.html +292 -0
  147. data/doc/cxxapi/classPassenger_1_1SpawnManager__inherit__graph.map +3 -0
  148. data/doc/cxxapi/classPassenger_1_1SpawnManager__inherit__graph.md5 +1 -0
  149. data/doc/cxxapi/classPassenger_1_1SpawnManager__inherit__graph.png +0 -0
  150. data/doc/cxxapi/classPassenger_1_1StandardSession-members.html +54 -0
  151. data/doc/cxxapi/classPassenger_1_1StandardSession.html +394 -0
  152. data/doc/cxxapi/classPassenger_1_1StandardSession__inherit__graph.map +3 -0
  153. data/doc/cxxapi/classPassenger_1_1StandardSession__inherit__graph.md5 +1 -0
  154. data/doc/cxxapi/classPassenger_1_1StandardSession__inherit__graph.png +0 -0
  155. data/doc/cxxapi/classPassenger_1_1StaticString-members.html +36 -0
  156. data/doc/cxxapi/classPassenger_1_1StaticString.html +56 -0
  157. data/doc/cxxapi/classPassenger_1_1SyntaxError-members.html +36 -0
  158. data/doc/cxxapi/classPassenger_1_1SyntaxError.html +54 -0
  159. data/doc/cxxapi/classPassenger_1_1SystemException-members.html +40 -0
  160. data/doc/cxxapi/classPassenger_1_1SystemException.html +155 -0
  161. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.map +4 -0
  162. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.md5 +1 -0
  163. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.png +0 -0
  164. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException-members.html +40 -0
  165. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException.html +61 -0
  166. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException__inherit__graph.map +3 -0
  167. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException__inherit__graph.md5 +1 -0
  168. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException__inherit__graph.png +0 -0
  169. data/doc/cxxapi/classPassenger_1_1TimeoutException-members.html +36 -0
  170. data/doc/cxxapi/classPassenger_1_1TimeoutException.html +54 -0
  171. data/doc/cxxapi/classPassenger_1_1Uint16Message-members.html +36 -0
  172. data/doc/cxxapi/classPassenger_1_1Uint16Message.html +51 -0
  173. data/doc/cxxapi/classPassenger_1_1Uint32Message-members.html +36 -0
  174. data/doc/cxxapi/classPassenger_1_1Uint32Message.html +51 -0
  175. data/doc/cxxapi/classServer-members.html +36 -0
  176. data/doc/cxxapi/classServer.html +49 -0
  177. data/doc/cxxapi/classServerInstanceDirToucher-members.html +36 -0
  178. data/doc/cxxapi/classServerInstanceDirToucher.html +47 -0
  179. data/doc/cxxapi/classes.html +52 -0
  180. data/doc/cxxapi/definitions_8h_source.html +36 -0
  181. data/doc/cxxapi/doxygen.css +532 -0
  182. data/doc/cxxapi/doxygen.png +0 -0
  183. data/doc/cxxapi/files.html +76 -0
  184. data/doc/cxxapi/ftv2blank.png +0 -0
  185. data/doc/cxxapi/ftv2doc.png +0 -0
  186. data/doc/cxxapi/ftv2folderclosed.png +0 -0
  187. data/doc/cxxapi/ftv2folderopen.png +0 -0
  188. data/doc/cxxapi/ftv2lastnode.png +0 -0
  189. data/doc/cxxapi/ftv2link.png +0 -0
  190. data/doc/cxxapi/ftv2mlastnode.png +0 -0
  191. data/doc/cxxapi/ftv2mnode.png +0 -0
  192. data/doc/cxxapi/ftv2node.png +0 -0
  193. data/doc/cxxapi/ftv2plastnode.png +0 -0
  194. data/doc/cxxapi/ftv2pnode.png +0 -0
  195. data/doc/cxxapi/ftv2vertline.png +0 -0
  196. data/doc/cxxapi/functions.html +103 -0
  197. data/doc/cxxapi/functions_0x62.html +82 -0
  198. data/doc/cxxapi/functions_0x63.html +102 -0
  199. data/doc/cxxapi/functions_0x64.html +102 -0
  200. data/doc/cxxapi/functions_0x65.html +88 -0
  201. data/doc/cxxapi/functions_0x66.html +100 -0
  202. data/doc/cxxapi/functions_0x67.html +167 -0
  203. data/doc/cxxapi/functions_0x68.html +88 -0
  204. data/doc/cxxapi/functions_0x69.html +96 -0
  205. data/doc/cxxapi/functions_0x6b.html +80 -0
  206. data/doc/cxxapi/functions_0x6c.html +88 -0
  207. data/doc/cxxapi/functions_0x6d.html +88 -0
  208. data/doc/cxxapi/functions_0x6e.html +86 -0
  209. data/doc/cxxapi/functions_0x6f.html +94 -0
  210. data/doc/cxxapi/functions_0x70.html +94 -0
  211. data/doc/cxxapi/functions_0x72.html +110 -0
  212. data/doc/cxxapi/functions_0x73.html +171 -0
  213. data/doc/cxxapi/functions_0x74.html +85 -0
  214. data/doc/cxxapi/functions_0x75.html +85 -0
  215. data/doc/cxxapi/functions_0x77.html +92 -0
  216. data/doc/cxxapi/functions_0x7e.html +79 -0
  217. data/doc/cxxapi/functions_enum.html +49 -0
  218. data/doc/cxxapi/functions_eval.html +67 -0
  219. data/doc/cxxapi/functions_func.html +531 -0
  220. data/doc/cxxapi/functions_vars.html +278 -0
  221. data/doc/cxxapi/graph_legend.dot +22 -0
  222. data/doc/cxxapi/graph_legend.html +92 -0
  223. data/doc/cxxapi/graph_legend.png +0 -0
  224. data/doc/cxxapi/group__Core.html +46 -0
  225. data/doc/cxxapi/group__Core.map +3 -0
  226. data/doc/cxxapi/group__Core.png +0 -0
  227. data/doc/cxxapi/group__Exceptions.html +53 -0
  228. data/doc/cxxapi/group__Hooks.html +42 -0
  229. data/doc/cxxapi/group__Hooks.map +3 -0
  230. data/doc/cxxapi/group__Hooks.png +0 -0
  231. data/doc/cxxapi/group__Support.html +538 -0
  232. data/doc/cxxapi/hierarchy.html +101 -0
  233. data/doc/cxxapi/index.html +16 -0
  234. data/doc/cxxapi/inherit__graph__0.map +3 -0
  235. data/doc/cxxapi/inherit__graph__0.md5 +1 -0
  236. data/doc/cxxapi/inherit__graph__0.png +0 -0
  237. data/doc/cxxapi/inherit__graph__1.map +3 -0
  238. data/doc/cxxapi/inherit__graph__1.md5 +1 -0
  239. data/doc/cxxapi/inherit__graph__1.png +0 -0
  240. data/doc/cxxapi/inherit__graph__10.map +3 -0
  241. data/doc/cxxapi/inherit__graph__10.md5 +1 -0
  242. data/doc/cxxapi/inherit__graph__10.png +0 -0
  243. data/doc/cxxapi/inherit__graph__11.map +4 -0
  244. data/doc/cxxapi/inherit__graph__11.md5 +1 -0
  245. data/doc/cxxapi/inherit__graph__11.png +0 -0
  246. data/doc/cxxapi/inherit__graph__12.map +3 -0
  247. data/doc/cxxapi/inherit__graph__12.md5 +1 -0
  248. data/doc/cxxapi/inherit__graph__12.png +0 -0
  249. data/doc/cxxapi/inherit__graph__13.map +3 -0
  250. data/doc/cxxapi/inherit__graph__13.md5 +1 -0
  251. data/doc/cxxapi/inherit__graph__13.png +0 -0
  252. data/doc/cxxapi/inherit__graph__14.map +3 -0
  253. data/doc/cxxapi/inherit__graph__14.md5 +1 -0
  254. data/doc/cxxapi/inherit__graph__14.png +0 -0
  255. data/doc/cxxapi/inherit__graph__15.map +3 -0
  256. data/doc/cxxapi/inherit__graph__15.md5 +1 -0
  257. data/doc/cxxapi/inherit__graph__15.png +0 -0
  258. data/doc/cxxapi/inherit__graph__16.map +5 -0
  259. data/doc/cxxapi/inherit__graph__16.md5 +1 -0
  260. data/doc/cxxapi/inherit__graph__16.png +0 -0
  261. data/doc/cxxapi/inherit__graph__17.map +3 -0
  262. data/doc/cxxapi/inherit__graph__17.md5 +1 -0
  263. data/doc/cxxapi/inherit__graph__17.png +0 -0
  264. data/doc/cxxapi/inherit__graph__18.map +3 -0
  265. data/doc/cxxapi/inherit__graph__18.md5 +1 -0
  266. data/doc/cxxapi/inherit__graph__18.png +0 -0
  267. data/doc/cxxapi/inherit__graph__19.map +4 -0
  268. data/doc/cxxapi/inherit__graph__19.md5 +1 -0
  269. data/doc/cxxapi/inherit__graph__19.png +0 -0
  270. data/doc/cxxapi/inherit__graph__2.map +3 -0
  271. data/doc/cxxapi/inherit__graph__2.md5 +1 -0
  272. data/doc/cxxapi/inherit__graph__2.png +0 -0
  273. data/doc/cxxapi/inherit__graph__20.map +3 -0
  274. data/doc/cxxapi/inherit__graph__20.md5 +1 -0
  275. data/doc/cxxapi/inherit__graph__20.png +0 -0
  276. data/doc/cxxapi/inherit__graph__21.map +3 -0
  277. data/doc/cxxapi/inherit__graph__21.md5 +1 -0
  278. data/doc/cxxapi/inherit__graph__21.png +0 -0
  279. data/doc/cxxapi/inherit__graph__22.map +3 -0
  280. data/doc/cxxapi/inherit__graph__22.md5 +1 -0
  281. data/doc/cxxapi/inherit__graph__22.png +0 -0
  282. data/doc/cxxapi/inherit__graph__23.map +3 -0
  283. data/doc/cxxapi/inherit__graph__23.md5 +1 -0
  284. data/doc/cxxapi/inherit__graph__23.png +0 -0
  285. data/doc/cxxapi/inherit__graph__24.map +3 -0
  286. data/doc/cxxapi/inherit__graph__24.md5 +1 -0
  287. data/doc/cxxapi/inherit__graph__24.png +0 -0
  288. data/doc/cxxapi/inherit__graph__25.map +3 -0
  289. data/doc/cxxapi/inherit__graph__25.md5 +1 -0
  290. data/doc/cxxapi/inherit__graph__25.png +0 -0
  291. data/doc/cxxapi/inherit__graph__26.map +3 -0
  292. data/doc/cxxapi/inherit__graph__26.md5 +1 -0
  293. data/doc/cxxapi/inherit__graph__26.png +0 -0
  294. data/doc/cxxapi/inherit__graph__27.map +3 -0
  295. data/doc/cxxapi/inherit__graph__27.md5 +1 -0
  296. data/doc/cxxapi/inherit__graph__27.png +0 -0
  297. data/doc/cxxapi/inherit__graph__28.map +3 -0
  298. data/doc/cxxapi/inherit__graph__28.md5 +1 -0
  299. data/doc/cxxapi/inherit__graph__28.png +0 -0
  300. data/doc/cxxapi/inherit__graph__29.map +3 -0
  301. data/doc/cxxapi/inherit__graph__29.md5 +1 -0
  302. data/doc/cxxapi/inherit__graph__29.png +0 -0
  303. data/doc/cxxapi/inherit__graph__3.map +4 -0
  304. data/doc/cxxapi/inherit__graph__3.md5 +1 -0
  305. data/doc/cxxapi/inherit__graph__3.png +0 -0
  306. data/doc/cxxapi/inherit__graph__30.map +3 -0
  307. data/doc/cxxapi/inherit__graph__30.md5 +1 -0
  308. data/doc/cxxapi/inherit__graph__30.png +0 -0
  309. data/doc/cxxapi/inherit__graph__31.map +4 -0
  310. data/doc/cxxapi/inherit__graph__31.md5 +1 -0
  311. data/doc/cxxapi/inherit__graph__31.png +0 -0
  312. data/doc/cxxapi/inherit__graph__32.map +3 -0
  313. data/doc/cxxapi/inherit__graph__32.md5 +1 -0
  314. data/doc/cxxapi/inherit__graph__32.png +0 -0
  315. data/doc/cxxapi/inherit__graph__33.map +3 -0
  316. data/doc/cxxapi/inherit__graph__33.md5 +1 -0
  317. data/doc/cxxapi/inherit__graph__33.png +0 -0
  318. data/doc/cxxapi/inherit__graph__34.map +3 -0
  319. data/doc/cxxapi/inherit__graph__34.md5 +1 -0
  320. data/doc/cxxapi/inherit__graph__34.png +0 -0
  321. data/doc/cxxapi/inherit__graph__35.map +3 -0
  322. data/doc/cxxapi/inherit__graph__35.md5 +1 -0
  323. data/doc/cxxapi/inherit__graph__35.png +0 -0
  324. data/doc/cxxapi/inherit__graph__36.map +5 -0
  325. data/doc/cxxapi/inherit__graph__36.md5 +1 -0
  326. data/doc/cxxapi/inherit__graph__36.png +0 -0
  327. data/doc/cxxapi/inherit__graph__37.map +3 -0
  328. data/doc/cxxapi/inherit__graph__37.md5 +1 -0
  329. data/doc/cxxapi/inherit__graph__37.png +0 -0
  330. data/doc/cxxapi/inherit__graph__38.map +3 -0
  331. data/doc/cxxapi/inherit__graph__38.md5 +1 -0
  332. data/doc/cxxapi/inherit__graph__38.png +0 -0
  333. data/doc/cxxapi/inherit__graph__39.map +3 -0
  334. data/doc/cxxapi/inherit__graph__39.md5 +1 -0
  335. data/doc/cxxapi/inherit__graph__39.png +0 -0
  336. data/doc/cxxapi/inherit__graph__4.map +3 -0
  337. data/doc/cxxapi/inherit__graph__4.md5 +1 -0
  338. data/doc/cxxapi/inherit__graph__4.png +0 -0
  339. data/doc/cxxapi/inherit__graph__40.map +3 -0
  340. data/doc/cxxapi/inherit__graph__40.md5 +1 -0
  341. data/doc/cxxapi/inherit__graph__40.png +0 -0
  342. data/doc/cxxapi/inherit__graph__41.map +3 -0
  343. data/doc/cxxapi/inherit__graph__41.md5 +1 -0
  344. data/doc/cxxapi/inherit__graph__41.png +0 -0
  345. data/doc/cxxapi/inherit__graph__5.map +3 -0
  346. data/doc/cxxapi/inherit__graph__5.md5 +1 -0
  347. data/doc/cxxapi/inherit__graph__5.png +0 -0
  348. data/doc/cxxapi/inherit__graph__6.map +3 -0
  349. data/doc/cxxapi/inherit__graph__6.md5 +1 -0
  350. data/doc/cxxapi/inherit__graph__6.png +0 -0
  351. data/doc/cxxapi/inherit__graph__7.map +3 -0
  352. data/doc/cxxapi/inherit__graph__7.md5 +1 -0
  353. data/doc/cxxapi/inherit__graph__7.png +0 -0
  354. data/doc/cxxapi/inherit__graph__8.map +3 -0
  355. data/doc/cxxapi/inherit__graph__8.md5 +1 -0
  356. data/doc/cxxapi/inherit__graph__8.png +0 -0
  357. data/doc/cxxapi/inherit__graph__9.map +3 -0
  358. data/doc/cxxapi/inherit__graph__9.md5 +1 -0
  359. data/doc/cxxapi/inherit__graph__9.png +0 -0
  360. data/doc/cxxapi/inherits.html +165 -0
  361. data/doc/cxxapi/main.html +28 -0
  362. data/doc/cxxapi/modules.html +36 -0
  363. data/doc/cxxapi/namespacePassenger.html +553 -0
  364. data/doc/cxxapi/namespacemembers.html +135 -0
  365. data/doc/cxxapi/namespacemembers_enum.html +48 -0
  366. data/doc/cxxapi/namespacemembers_eval.html +57 -0
  367. data/doc/cxxapi/namespacemembers_func.html +111 -0
  368. data/doc/cxxapi/namespacemembers_type.html +54 -0
  369. data/doc/cxxapi/namespaces.html +37 -0
  370. data/doc/cxxapi/nginx_2Configuration_8h_source.html +126 -0
  371. data/doc/cxxapi/ngx__http__passenger__module_8h_source.html +94 -0
  372. data/doc/cxxapi/structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard-members.html +36 -0
  373. data/doc/cxxapi/structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard.html +51 -0
  374. data/doc/cxxapi/structPassenger_1_1PoolOptions-members.html +67 -0
  375. data/doc/cxxapi/structPassenger_1_1PoolOptions.html +647 -0
  376. data/doc/cxxapi/structPassenger_1_1StaticString_1_1Hash-members.html +36 -0
  377. data/doc/cxxapi/structPassenger_1_1StaticString_1_1Hash.html +51 -0
  378. data/doc/cxxapi/tab_b.gif +0 -0
  379. data/doc/cxxapi/tab_l.gif +0 -0
  380. data/doc/cxxapi/tab_r.gif +0 -0
  381. data/doc/cxxapi/tabs.css +105 -0
  382. data/doc/cxxapi/tree.html +249 -0
  383. data/doc/rdoc/classes/ConditionVariable.html +215 -0
  384. data/doc/rdoc/classes/Exception.html +120 -0
  385. data/doc/rdoc/classes/GC.html +113 -0
  386. data/doc/rdoc/classes/IO.html +221 -0
  387. data/doc/rdoc/classes/PhusionPassenger.html +397 -0
  388. data/doc/rdoc/classes/PhusionPassenger/AbstractInstaller.html +180 -0
  389. data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +647 -0
  390. data/doc/rdoc/classes/PhusionPassenger/AbstractServer.html +654 -0
  391. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/InvalidPassword.html +92 -0
  392. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerAlreadyStarted.html +97 -0
  393. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerError.html +96 -0
  394. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerNotStarted.html +97 -0
  395. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/UnknownMessage.html +96 -0
  396. data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +619 -0
  397. data/doc/rdoc/classes/PhusionPassenger/AdminTools.html +142 -0
  398. data/doc/rdoc/classes/PhusionPassenger/AdminTools/MemoryStats.html +368 -0
  399. data/doc/rdoc/classes/PhusionPassenger/AdminTools/MemoryStats/Process.html +231 -0
  400. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance.html +588 -0
  401. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/CorruptedDirectoryError.html +92 -0
  402. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/GenerationsAbsentError.html +92 -0
  403. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/Group.html +147 -0
  404. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/Process.html +279 -0
  405. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/RoleDeniedError.html +92 -0
  406. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/StaleDirectoryError.html +92 -0
  407. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/Stats.html +123 -0
  408. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/UnsupportedGenerationStructureVersionError.html +92 -0
  409. data/doc/rdoc/classes/PhusionPassenger/AnalyticsLogger.html +368 -0
  410. data/doc/rdoc/classes/PhusionPassenger/AnalyticsLogger/Lock.html +194 -0
  411. data/doc/rdoc/classes/PhusionPassenger/AnalyticsLogger/Log.html +299 -0
  412. data/doc/rdoc/classes/PhusionPassenger/AnalyticsLogger/SharedData.html +206 -0
  413. data/doc/rdoc/classes/PhusionPassenger/AppInitError.html +155 -0
  414. data/doc/rdoc/classes/PhusionPassenger/AppProcess.html +367 -0
  415. data/doc/rdoc/classes/PhusionPassenger/ClassicRails.html +95 -0
  416. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/ApplicationSpawner.html +351 -0
  417. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/ApplicationSpawner/Error.html +98 -0
  418. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/CGIFixed.html +200 -0
  419. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/FrameworkSpawner.html +410 -0
  420. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/FrameworkSpawner/Error.html +98 -0
  421. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/RequestHandler.html +156 -0
  422. data/doc/rdoc/classes/PhusionPassenger/ClassicRailsExtensions.html +115 -0
  423. data/doc/rdoc/classes/PhusionPassenger/ClassicRailsExtensions/AnalyticsLogging.html +202 -0
  424. data/doc/rdoc/classes/PhusionPassenger/ConsoleTextTemplate.html +172 -0
  425. data/doc/rdoc/classes/PhusionPassenger/DebugLogging.html +273 -0
  426. data/doc/rdoc/classes/PhusionPassenger/FrameworkInitError.html +145 -0
  427. data/doc/rdoc/classes/PhusionPassenger/HTMLTemplate.html +162 -0
  428. data/doc/rdoc/classes/PhusionPassenger/InitializationError.html +141 -0
  429. data/doc/rdoc/classes/PhusionPassenger/InvalidPath.html +92 -0
  430. data/doc/rdoc/classes/PhusionPassenger/MessageChannel.html +673 -0
  431. data/doc/rdoc/classes/PhusionPassenger/MessageChannel/InvalidHashError.html +92 -0
  432. data/doc/rdoc/classes/PhusionPassenger/MessageClient.html +415 -0
  433. data/doc/rdoc/classes/PhusionPassenger/NativeSupportLoader.html +134 -0
  434. data/doc/rdoc/classes/PhusionPassenger/Packaging.html +129 -0
  435. data/doc/rdoc/classes/PhusionPassenger/PlatformInfo.html +1972 -0
  436. data/doc/rdoc/classes/PhusionPassenger/Plugin.html +237 -0
  437. data/doc/rdoc/classes/PhusionPassenger/Rack.html +91 -0
  438. data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner.html +312 -0
  439. data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner/Error.html +98 -0
  440. data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +218 -0
  441. data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions.html +114 -0
  442. data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging.html +259 -0
  443. data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging/ACExtension.html +139 -0
  444. data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging/ASBenchmarkableExtension.html +118 -0
  445. data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging/ExceptionLogger.html +135 -0
  446. data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +378 -0
  447. data/doc/rdoc/classes/PhusionPassenger/Standalone.html +111 -0
  448. data/doc/rdoc/classes/PhusionPassenger/Standalone/AppFinder.html +252 -0
  449. data/doc/rdoc/classes/PhusionPassenger/Standalone/Command.html +161 -0
  450. data/doc/rdoc/classes/PhusionPassenger/Standalone/ConfigFile.html +368 -0
  451. data/doc/rdoc/classes/PhusionPassenger/Standalone/ConfigFile/DisallowedContextError.html +132 -0
  452. data/doc/rdoc/classes/PhusionPassenger/Standalone/HelpCommand.html +151 -0
  453. data/doc/rdoc/classes/PhusionPassenger/Standalone/Main.html +189 -0
  454. data/doc/rdoc/classes/PhusionPassenger/Standalone/PackageRuntimeCommand.html +177 -0
  455. data/doc/rdoc/classes/PhusionPassenger/Standalone/RuntimeInstaller.html +341 -0
  456. data/doc/rdoc/classes/PhusionPassenger/Standalone/StartCommand.html +203 -0
  457. data/doc/rdoc/classes/PhusionPassenger/Standalone/StatusCommand.html +156 -0
  458. data/doc/rdoc/classes/PhusionPassenger/Standalone/StopCommand.html +168 -0
  459. data/doc/rdoc/classes/PhusionPassenger/Standalone/Utils.html +86 -0
  460. data/doc/rdoc/classes/PhusionPassenger/Standalone/VersionCommand.html +135 -0
  461. data/doc/rdoc/classes/PhusionPassenger/UnknownError.html +125 -0
  462. data/doc/rdoc/classes/PhusionPassenger/Utils.html +1543 -0
  463. data/doc/rdoc/classes/PhusionPassenger/Utils/FileSystemWatcher.html +204 -0
  464. data/doc/rdoc/classes/PhusionPassenger/Utils/FileSystemWatcher/DirInfo.html +171 -0
  465. data/doc/rdoc/classes/PhusionPassenger/Utils/FileSystemWatcher/FileInfo.html +140 -0
  466. data/doc/rdoc/classes/PhusionPassenger/Utils/HostsFileParser.html +260 -0
  467. data/doc/rdoc/classes/PhusionPassenger/Utils/PseudoIO.html +194 -0
  468. data/doc/rdoc/classes/PhusionPassenger/Utils/RewindableInput.html +265 -0
  469. data/doc/rdoc/classes/PhusionPassenger/Utils/RewindableInput/Tempfile.html +120 -0
  470. data/doc/rdoc/classes/PhusionPassenger/Utils/UnseekableSocket.html +561 -0
  471. data/doc/rdoc/classes/PhusionPassenger/VersionNotFound.html +140 -0
  472. data/doc/rdoc/classes/PhusionPassenger/WSGI.html +89 -0
  473. data/doc/rdoc/classes/PhusionPassenger/WSGI/ApplicationSpawner.html +182 -0
  474. data/doc/rdoc/classes/Process.html +115 -0
  475. data/doc/rdoc/classes/Signal.html +139 -0
  476. data/doc/rdoc/created.rid +1 -0
  477. data/doc/rdoc/files/DEVELOPERS_TXT.html +280 -0
  478. data/doc/rdoc/files/README.html +157 -0
  479. data/doc/rdoc/files/lib/phusion_passenger/abstract_installer_rb.html +130 -0
  480. data/doc/rdoc/files/lib/phusion_passenger/abstract_request_handler_rb.html +135 -0
  481. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html +126 -0
  482. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_rb.html +128 -0
  483. data/doc/rdoc/files/lib/phusion_passenger/admin_tools/memory_stats_rb.html +126 -0
  484. data/doc/rdoc/files/lib/phusion_passenger/admin_tools/server_instance_rb.html +132 -0
  485. data/doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html +122 -0
  486. data/doc/rdoc/files/lib/phusion_passenger/analytics_logger_rb.html +129 -0
  487. data/doc/rdoc/files/lib/phusion_passenger/app_process_rb.html +127 -0
  488. data/doc/rdoc/files/lib/phusion_passenger/classic_rails/application_spawner_rb.html +141 -0
  489. data/doc/rdoc/files/lib/phusion_passenger/classic_rails/cgi_fixed_rb.html +126 -0
  490. data/doc/rdoc/files/lib/phusion_passenger/classic_rails/framework_spawner_rb.html +146 -0
  491. data/doc/rdoc/files/lib/phusion_passenger/classic_rails/request_handler_rb.html +125 -0
  492. data/doc/rdoc/files/lib/phusion_passenger/classic_rails_extensions/init_rb.html +132 -0
  493. data/doc/rdoc/files/lib/phusion_passenger/console_text_template_rb.html +126 -0
  494. data/doc/rdoc/files/lib/phusion_passenger/constants_rb.html +122 -0
  495. data/doc/rdoc/files/lib/phusion_passenger/debug_logging_rb.html +122 -0
  496. data/doc/rdoc/files/lib/phusion_passenger/dependencies_rb.html +147 -0
  497. data/doc/rdoc/files/lib/phusion_passenger/exceptions_rb.html +122 -0
  498. data/doc/rdoc/files/lib/phusion_passenger/html_template_rb.html +127 -0
  499. data/doc/rdoc/files/lib/phusion_passenger/message_channel_rb.html +120 -0
  500. data/doc/rdoc/files/lib/phusion_passenger/message_client_rb.html +127 -0
  501. data/doc/rdoc/files/lib/phusion_passenger/native_support_rb.html +132 -0
  502. data/doc/rdoc/files/lib/phusion_passenger/packaging_rb.html +122 -0
  503. data/doc/rdoc/files/lib/phusion_passenger/platform_info/apache_rb.html +127 -0
  504. data/doc/rdoc/files/lib/phusion_passenger/platform_info/binary_compatibility_rb.html +129 -0
  505. data/doc/rdoc/files/lib/phusion_passenger/platform_info/compiler_rb.html +127 -0
  506. data/doc/rdoc/files/lib/phusion_passenger/platform_info/curl_rb.html +126 -0
  507. data/doc/rdoc/files/lib/phusion_passenger/platform_info/documentation_tools_rb.html +126 -0
  508. data/doc/rdoc/files/lib/phusion_passenger/platform_info/linux_rb.html +126 -0
  509. data/doc/rdoc/files/lib/phusion_passenger/platform_info/operating_system_rb.html +127 -0
  510. data/doc/rdoc/files/lib/phusion_passenger/platform_info/ruby_rb.html +128 -0
  511. data/doc/rdoc/files/lib/phusion_passenger/platform_info/zlib_rb.html +126 -0
  512. data/doc/rdoc/files/lib/phusion_passenger/platform_info_rb.html +122 -0
  513. data/doc/rdoc/files/lib/phusion_passenger/plugin_rb.html +127 -0
  514. data/doc/rdoc/files/lib/phusion_passenger/public_api_rb.html +127 -0
  515. data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +137 -0
  516. data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +125 -0
  517. data/doc/rdoc/files/lib/phusion_passenger/rails3_extensions/init_rb.html +127 -0
  518. data/doc/rdoc/files/lib/phusion_passenger/simple_benchmarking_rb.html +122 -0
  519. data/doc/rdoc/files/lib/phusion_passenger/spawn_manager_rb.html +160 -0
  520. data/doc/rdoc/files/lib/phusion_passenger/standalone/app_finder_rb.html +127 -0
  521. data/doc/rdoc/files/lib/phusion_passenger/standalone/command_rb.html +136 -0
  522. data/doc/rdoc/files/lib/phusion_passenger/standalone/config_file_rb.html +126 -0
  523. data/doc/rdoc/files/lib/phusion_passenger/standalone/help_command_rb.html +126 -0
  524. data/doc/rdoc/files/lib/phusion_passenger/standalone/main_rb.html +126 -0
  525. data/doc/rdoc/files/lib/phusion_passenger/standalone/package_runtime_command_rb.html +127 -0
  526. data/doc/rdoc/files/lib/phusion_passenger/standalone/runtime_installer_rb.html +133 -0
  527. data/doc/rdoc/files/lib/phusion_passenger/standalone/start_command_rb.html +136 -0
  528. data/doc/rdoc/files/lib/phusion_passenger/standalone/status_command_rb.html +126 -0
  529. data/doc/rdoc/files/lib/phusion_passenger/standalone/stop_command_rb.html +126 -0
  530. data/doc/rdoc/files/lib/phusion_passenger/standalone/utils_rb.html +126 -0
  531. data/doc/rdoc/files/lib/phusion_passenger/standalone/version_command_rb.html +127 -0
  532. data/doc/rdoc/files/lib/phusion_passenger/utils/file_system_watcher_rb.html +126 -0
  533. data/doc/rdoc/files/lib/phusion_passenger/utils/hosts_file_parser_rb.html +120 -0
  534. data/doc/rdoc/files/lib/phusion_passenger/utils/rewindable_input_rb.html +100 -0
  535. data/doc/rdoc/files/lib/phusion_passenger/utils/tmpdir_rb.html +122 -0
  536. data/doc/rdoc/files/lib/phusion_passenger/utils/unseekable_socket_rb.html +126 -0
  537. data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +179 -0
  538. data/doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html +132 -0
  539. data/doc/rdoc/fr_class_index.html +139 -0
  540. data/doc/rdoc/fr_file_index.html +108 -0
  541. data/doc/rdoc/fr_method_index.html +439 -0
  542. data/doc/rdoc/index.html +26 -0
  543. data/doc/rdoc/rdoc-style.css +187 -0
  544. data/ext/apache2/Configuration.cpp +6 -6
  545. data/ext/apache2/Configuration.hpp +3 -3
  546. data/ext/apache2/HelperAgent.cpp +1 -1
  547. data/ext/apache2/Hooks.cpp +3 -3
  548. data/ext/common/ApplicationPool/Pool.h +1 -1
  549. data/ext/common/ApplicationPool/Server.h +5 -2
  550. data/ext/common/Constants.h +1 -1
  551. data/ext/common/LoggingAgent/FilterSupport.cpp +66 -0
  552. data/ext/common/LoggingAgent/FilterSupport.h +262 -73
  553. data/ext/common/LoggingAgent/RemoteSender.h +13 -4
  554. data/ext/common/Utils/CachedFileStat.cpp +6 -12
  555. data/ext/common/Utils/CachedFileStat.h +4 -4
  556. data/ext/common/libboost_oxt/aggregate.cpp +10 -0
  557. data/ext/common/libpassenger_common/aggregate.cpp +16 -0
  558. data/ext/nginx/Configuration.c +77 -4
  559. data/ext/nginx/Configuration.h +2 -1
  560. data/ext/nginx/ContentHandler.c +32 -4
  561. data/ext/nginx/HelperAgent.cpp +5 -4
  562. data/ext/nginx/ngx_http_passenger_module.c +6 -6
  563. data/ext/nginx/ngx_http_passenger_module.h +5 -5
  564. data/lib/phusion_passenger.rb +1 -1
  565. data/lib/phusion_passenger/abstract_request_handler.rb +4 -1
  566. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_base_extension.rb +3 -1
  567. data/lib/phusion_passenger/standalone/runtime_installer.rb +1 -1
  568. data/lib/phusion_passenger/standalone/start_command.rb +6 -0
  569. data/lib/phusion_passenger/templates/standalone/config.erb +1 -1
  570. data/test/cxx/FilterSupportTest.cpp +135 -5
  571. metadata +547 -4
@@ -79,6 +79,9 @@ private:
79
79
  string hostHeader;
80
80
  string responseBody;
81
81
 
82
+ string pingURL;
83
+ string sinkURL;
84
+
82
85
  void resetConnection() {
83
86
  if (curl != NULL) {
84
87
  #ifdef HAS_CURL_EASY_RESET
@@ -112,8 +115,7 @@ private:
112
115
  responseBody.clear();
113
116
  }
114
117
 
115
- void prepareRequest(const string &uri) {
116
- string url = string("https://") + ip + ":" + toString(port) + uri;
118
+ void prepareRequest(const string &url) {
117
119
  curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
118
120
  responseBody.clear();
119
121
  }
@@ -137,6 +139,13 @@ private:
137
139
  throw IOException("Unable to create a CURL linked list");
138
140
  }
139
141
 
142
+ // Older libcurl versions didn't strdup() any option
143
+ // strings so we need to keep these in memory.
144
+ pingURL = string("https://") + ip + ":" + toString(port) +
145
+ "/ping";
146
+ sinkURL = string("https://") + ip + ":" + toString(port) +
147
+ "/sink";
148
+
140
149
  curl = NULL;
141
150
  resetConnection();
142
151
  }
@@ -151,7 +160,7 @@ private:
151
160
  bool ping() {
152
161
  P_DEBUG("Pinging Union Station gateway " << ip << ":" << port);
153
162
  ScopeGuard guard(boost::bind(&Server::resetConnection, this));
154
- prepareRequest("/ping");
163
+ prepareRequest(pingURL);
155
164
 
156
165
  curl_easy_setopt(curl, CURLOPT_HTTPGET, 1);
157
166
  if (curl_easy_perform(curl) != 0) {
@@ -172,7 +181,7 @@ private:
172
181
 
173
182
  bool send(const Item &item) {
174
183
  ScopeGuard guard(boost::bind(&Server::resetConnection, this));
175
- prepareRequest("/sink");
184
+ prepareRequest(sinkURL);
176
185
 
177
186
  struct curl_httppost *post = NULL;
178
187
  struct curl_httppost *last = NULL;
@@ -27,29 +27,23 @@
27
27
 
28
28
  extern "C" {
29
29
 
30
- struct CachedFileStat {
31
- Passenger::CachedFileStat cfs;
32
-
33
- CachedFileStat(unsigned int maxSize): cfs(maxSize) { }
34
- };
35
-
36
- CachedFileStat *
30
+ PassengerCachedFileStat *
37
31
  cached_file_stat_new(unsigned int max_size) {
38
- return new CachedFileStat(max_size);
32
+ return (PassengerCachedFileStat *) new Passenger::CachedFileStat(max_size);
39
33
  }
40
34
 
41
35
  void
42
- cached_file_stat_free(CachedFileStat *cstat) {
43
- delete cstat;
36
+ cached_file_stat_free(PassengerCachedFileStat *cstat) {
37
+ delete (Passenger::CachedFileStat *) cstat;
44
38
  }
45
39
 
46
40
  int
47
- cached_file_stat_perform(CachedFileStat *cstat,
41
+ cached_file_stat_perform(PassengerCachedFileStat *cstat,
48
42
  const char *filename,
49
43
  struct stat *buf,
50
44
  unsigned int throttle_rate) {
51
45
  try {
52
- return cstat->cfs.stat(filename, buf, throttle_rate);
46
+ return ((Passenger::CachedFileStat *) cstat)->stat(filename, buf, throttle_rate);
53
47
  } catch (const Passenger::TimeRetrievalException &e) {
54
48
  errno = e.code();
55
49
  return -1;
@@ -34,11 +34,11 @@ extern "C" {
34
34
 
35
35
  /** C bindings for Passenger::CachedFileStat. */
36
36
 
37
- typedef struct CachedFileStat CachedFileStat;
37
+ typedef void PassengerCachedFileStat;
38
38
 
39
- CachedFileStat *cached_file_stat_new(unsigned int max_size);
40
- void cached_file_stat_free(CachedFileStat *cstat);
41
- int cached_file_stat_perform(CachedFileStat *cstat,
39
+ PassengerCachedFileStat *cached_file_stat_new(unsigned int max_size);
40
+ void cached_file_stat_free(PassengerCachedFileStat *cstat);
41
+ int cached_file_stat_perform(PassengerCachedFileStat *cstat,
42
42
  const char *filename,
43
43
  struct stat *buf,
44
44
  unsigned int throttle_rate);
@@ -0,0 +1,10 @@
1
+
2
+ #ifndef _GNU_SOURCE
3
+ #define _GNU_SOURCE
4
+ #endif
5
+ #include "boost/src/pthread/once.cpp"
6
+ #include "boost/src/pthread/thread.cpp"
7
+ #include "oxt/backtrace.cpp"
8
+ #include "oxt/system_calls.cpp"
9
+ #include "oxt/thread.cpp"
10
+ #include "oxt/tracable_exception.cpp"
@@ -0,0 +1,16 @@
1
+
2
+ #ifndef _GNU_SOURCE
3
+ #define _GNU_SOURCE
4
+ #endif
5
+ #include "common/AccountsDatabase.cpp"
6
+ #include "common/AgentBase.cpp"
7
+ #include "common/AgentsStarter.cpp"
8
+ #include "common/Logging.cpp"
9
+ #include "common/LoggingAgent/FilterSupport.cpp"
10
+ #include "common/Utils.cpp"
11
+ #include "common/Utils/Base64.cpp"
12
+ #include "common/Utils/CachedFileStat.cpp"
13
+ #include "common/Utils/IOUtils.cpp"
14
+ #include "common/Utils/MD5.cpp"
15
+ #include "common/Utils/StrIntUtils.cpp"
16
+ #include "common/Utils/SystemTime.cpp"
@@ -36,6 +36,7 @@
36
36
  #include "Configuration.h"
37
37
  #include "ContentHandler.h"
38
38
  #include "../common/Constants.h"
39
+ #include "../common/LoggingAgent/FilterSupport.h"
39
40
 
40
41
 
41
42
  static ngx_str_t headers_to_hide[] = {
@@ -268,7 +269,7 @@ passenger_create_loc_conf(ngx_conf_t *cf)
268
269
  conf->enabled = NGX_CONF_UNSET;
269
270
  conf->use_global_queue = NGX_CONF_UNSET;
270
271
  conf->friendly_error_pages = NGX_CONF_UNSET;
271
- conf->analytics = NGX_CONF_UNSET;
272
+ conf->union_station_support = NGX_CONF_UNSET;
272
273
  conf->debugger = NGX_CONF_UNSET;
273
274
  conf->show_version_in_header = NGX_CONF_UNSET;
274
275
  conf->environment.data = NULL;
@@ -286,6 +287,7 @@ passenger_create_loc_conf(ngx_conf_t *cf)
286
287
  conf->app_rights.data = NULL;
287
288
  conf->app_rights.len = 0;
288
289
  conf->base_uris = NGX_CONF_UNSET_PTR;
290
+ conf->union_station_filters = NGX_CONF_UNSET_PTR;
289
291
  conf->min_instances = NGX_CONF_UNSET;
290
292
  conf->framework_spawner_idle_time = NGX_CONF_UNSET;
291
293
  conf->app_spawner_idle_time = NGX_CONF_UNSET;
@@ -357,6 +359,7 @@ passenger_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
357
359
  ngx_uint_t i, j;
358
360
  ngx_array_t hide_headers;
359
361
  ngx_str_t *prev_base_uris, *base_uri;
362
+ ngx_str_t *prev_union_station_filters, *union_station_filter;
360
363
  ngx_keyval_t *src;
361
364
  ngx_hash_key_t *hk;
362
365
  ngx_hash_init_t hash;
@@ -366,7 +369,7 @@ passenger_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
366
369
  ngx_conf_merge_value(conf->enabled, prev->enabled, 0);
367
370
  ngx_conf_merge_value(conf->use_global_queue, prev->use_global_queue, 1);
368
371
  ngx_conf_merge_value(conf->friendly_error_pages, prev->friendly_error_pages, 1);
369
- ngx_conf_merge_value(conf->analytics, prev->analytics, 0);
372
+ ngx_conf_merge_value(conf->union_station_support, prev->union_station_support, 0);
370
373
  ngx_conf_merge_value(conf->debugger, prev->debugger, 0);
371
374
  ngx_conf_merge_value(conf->show_version_in_header, prev->show_version_in_header, 1);
372
375
  ngx_conf_merge_str_value(conf->environment, prev->environment, "production");
@@ -397,6 +400,24 @@ passenger_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
397
400
  *base_uri = prev_base_uris[i];
398
401
  }
399
402
  }
403
+
404
+ if (prev->union_station_filters != NGX_CONF_UNSET_PTR) {
405
+ if (conf->union_station_filters == NGX_CONF_UNSET_PTR) {
406
+ conf->union_station_filters = ngx_array_create(cf->pool, 4, sizeof(ngx_str_t));
407
+ if (conf->union_station_filters == NULL) {
408
+ return NGX_CONF_ERROR;
409
+ }
410
+ }
411
+
412
+ prev_union_station_filters = (ngx_str_t *) prev->union_station_filters->elts;
413
+ for (i = 0; i < prev->union_station_filters->nelts; i++) {
414
+ union_station_filter = (ngx_str_t *) ngx_array_push(conf->union_station_filters);
415
+ if (union_station_filter == NULL) {
416
+ return NGX_CONF_ERROR;
417
+ }
418
+ *union_station_filter = prev_union_station_filters[i];
419
+ }
420
+ }
400
421
 
401
422
  /******************************/
402
423
  /******************************/
@@ -840,6 +861,51 @@ passenger_enabled(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
840
861
  return NGX_CONF_OK;
841
862
  }
842
863
 
864
+ char *
865
+ union_station_filter(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
866
+ {
867
+ char *p = conf;
868
+
869
+ ngx_str_t *value, *s;
870
+ ngx_array_t **a;
871
+ ngx_conf_post_t *post;
872
+ char *message;
873
+
874
+ a = (ngx_array_t **) (p + cmd->offset);
875
+
876
+ if (*a == NGX_CONF_UNSET_PTR) {
877
+ *a = ngx_array_create(cf->pool, 4, sizeof(ngx_str_t));
878
+ if (*a == NULL) {
879
+ return NGX_CONF_ERROR;
880
+ }
881
+ }
882
+
883
+ s = ngx_array_push(*a);
884
+ if (s == NULL) {
885
+ return NGX_CONF_ERROR;
886
+ }
887
+
888
+ value = cf->args->elts;
889
+
890
+ *s = value[1];
891
+
892
+ if (cmd->post) {
893
+ post = cmd->post;
894
+ return post->post_handler(cf, post, s);
895
+ }
896
+
897
+ message = passenger_filter_validate((const char *) value[1].data, value[1].len);
898
+ if (message != NULL) {
899
+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
900
+ "Union Station filter syntax error: %s; ",
901
+ message);
902
+ free(message);
903
+ return NGX_CONF_ERROR;
904
+ }
905
+
906
+ return NGX_CONF_OK;
907
+ }
908
+
843
909
  static char *
844
910
  set_null_terminated_keyval_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
845
911
  {
@@ -1153,11 +1219,11 @@ const ngx_command_t passenger_commands[] = {
1153
1219
  offsetof(passenger_loc_conf_t, app_rights),
1154
1220
  NULL },
1155
1221
 
1156
- { ngx_string("passenger_analytics"),
1222
+ { ngx_string("union_station_support"),
1157
1223
  NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_FLAG,
1158
1224
  ngx_conf_set_flag_slot,
1159
1225
  NGX_HTTP_LOC_CONF_OFFSET,
1160
- offsetof(passenger_loc_conf_t, analytics),
1226
+ offsetof(passenger_loc_conf_t, union_station_support),
1161
1227
  NULL },
1162
1228
 
1163
1229
  { ngx_string("passenger_analytics_log_dir"),
@@ -1209,6 +1275,13 @@ const ngx_command_t passenger_commands[] = {
1209
1275
  offsetof(passenger_main_conf_t, union_station_gateway_cert),
1210
1276
  NULL },
1211
1277
 
1278
+ { ngx_string("union_station_filter"),
1279
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
1280
+ union_station_filter,
1281
+ NGX_HTTP_LOC_CONF_OFFSET,
1282
+ offsetof(passenger_loc_conf_t, union_station_filters),
1283
+ NULL },
1284
+
1212
1285
  { ngx_string("passenger_debugger"),
1213
1286
  NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_FLAG,
1214
1287
  ngx_conf_set_flag_slot,
@@ -42,7 +42,7 @@ typedef struct {
42
42
  ngx_flag_t enabled;
43
43
  ngx_flag_t use_global_queue;
44
44
  ngx_flag_t friendly_error_pages;
45
- ngx_flag_t analytics;
45
+ ngx_flag_t union_station_support;
46
46
  ngx_flag_t debugger;
47
47
  ngx_flag_t show_version_in_header;
48
48
  ngx_str_t environment;
@@ -56,6 +56,7 @@ typedef struct {
56
56
  ngx_int_t app_spawner_idle_time;
57
57
  ngx_str_t union_station_key;
58
58
  ngx_array_t *base_uris;
59
+ ngx_array_t *union_station_filters;
59
60
 
60
61
  /************************************/
61
62
  } passenger_loc_conf_t;
@@ -322,6 +322,7 @@ create_request(ngx_http_request_t *r)
322
322
  const u_char *app_type_string;
323
323
  size_t app_type_string_len;
324
324
  ngx_str_t escaped_uri;
325
+ ngx_str_t *union_station_filters = NULL;
325
326
  u_char min_instances_string[12];
326
327
  u_char framework_spawner_idle_time_string[12];
327
328
  u_char app_spawner_idle_time_string[12];
@@ -429,8 +430,8 @@ create_request(ngx_http_request_t *r)
429
430
  slcf, use_global_queue);
430
431
  ANALYZE_BOOLEAN_CONFIG_LENGTH("PASSENGER_FRIENDLY_ERROR_PAGES",
431
432
  slcf, friendly_error_pages);
432
- ANALYZE_BOOLEAN_CONFIG_LENGTH("PASSENGER_ANALYTICS",
433
- slcf, analytics);
433
+ ANALYZE_BOOLEAN_CONFIG_LENGTH("UNION_STATION_SUPPORT",
434
+ slcf, union_station_support);
434
435
  ANALYZE_BOOLEAN_CONFIG_LENGTH("PASSENGER_DEBUGGER",
435
436
  slcf, debugger);
436
437
  ANALYZE_BOOLEAN_CONFIG_LENGTH("PASSENGER_SHOW_VERSION_IN_HEADER",
@@ -469,6 +470,19 @@ create_request(ngx_http_request_t *r)
469
470
  *end = '\0';
470
471
  len += sizeof("PASSENGER_APP_SPAWNER_IDLE_TIME") +
471
472
  ngx_strlen(app_spawner_idle_time_string) + 1;
473
+
474
+ if (slcf->union_station_filters != NGX_CONF_UNSET_PTR && slcf->union_station_filters->nelts > 0) {
475
+ len += sizeof("UNION_STATION_FILTERS");
476
+
477
+ union_station_filters = (ngx_str_t *) slcf->union_station_filters->elts;
478
+ for (i = 0; i < slcf->union_station_filters->nelts; i++) {
479
+ if (i != 0) {
480
+ len++;
481
+ }
482
+ len += union_station_filters[i].len;
483
+ }
484
+ len++;
485
+ }
472
486
 
473
487
 
474
488
  /***********************/
@@ -646,8 +660,8 @@ create_request(ngx_http_request_t *r)
646
660
  slcf, use_global_queue);
647
661
  SERIALIZE_BOOLEAN_CONFIG_DATA("PASSENGER_FRIENDLY_ERROR_PAGES",
648
662
  slcf, friendly_error_pages);
649
- SERIALIZE_BOOLEAN_CONFIG_DATA("PASSENGER_ANALYTICS",
650
- slcf, analytics);
663
+ SERIALIZE_BOOLEAN_CONFIG_DATA("UNION_STATION_SUPPORT",
664
+ slcf, union_station_support);
651
665
  SERIALIZE_BOOLEAN_CONFIG_DATA("PASSENGER_DEBUGGER",
652
666
  slcf, debugger);
653
667
  SERIALIZE_BOOLEAN_CONFIG_DATA("PASSENGER_SHOW_VERSION_IN_HEADER",
@@ -693,6 +707,20 @@ create_request(ngx_http_request_t *r)
693
707
  b->last = ngx_copy(b->last, app_spawner_idle_time_string,
694
708
  ngx_strlen(app_spawner_idle_time_string) + 1);
695
709
 
710
+ if (slcf->union_station_filters != NGX_CONF_UNSET_PTR && slcf->union_station_filters->nelts > 0) {
711
+ b->last = ngx_copy(b->last, "UNION_STATION_FILTERS",
712
+ sizeof("UNION_STATION_FILTERS"));
713
+
714
+ for (i = 0; i < slcf->union_station_filters->nelts; i++) {
715
+ if (i != 0) {
716
+ b->last = ngx_copy(b->last, "\1", 1);
717
+ }
718
+ b->last = ngx_copy(b->last, union_station_filters[i].data,
719
+ union_station_filters[i].len);
720
+ }
721
+ b->last = ngx_copy(b->last, "\0", 1);
722
+ }
723
+
696
724
  /***********************/
697
725
  /***********************/
698
726
 
@@ -437,7 +437,7 @@ private:
437
437
  }
438
438
 
439
439
  try {
440
- bool enableAnalytics = parser.getHeader("PASSENGER_ANALYTICS") == "true";
440
+ bool useUnionStation = parser.getHeader("UNION_STATION_SUPPORT") == "true";
441
441
  StaticString appGroupName = parser.getHeader("PASSENGER_APP_GROUP_NAME");
442
442
  PoolOptions options;
443
443
 
@@ -471,11 +471,12 @@ private:
471
471
 
472
472
  UPDATE_TRACE_POINT();
473
473
  AnalyticsLogPtr log;
474
- if (enableAnalytics) {
474
+ if (useUnionStation) {
475
475
  log = analyticsLogger->newTransaction(
476
476
  options.getAppGroupName(),
477
477
  "requests",
478
- parser.getHeader("PASSENGER_UNION_STATION_KEY"));
478
+ parser.getHeader("PASSENGER_UNION_STATION_KEY"),
479
+ parser.getHeader("UNION_STATION_FILTERS"));
479
480
  options.analytics = true;
480
481
  options.log = log;
481
482
  } else {
@@ -521,7 +522,7 @@ private:
521
522
  session->getConnectPassword().size() + 1);
522
523
  end += session->getConnectPassword().size() + 1;
523
524
 
524
- if (enableAnalytics) {
525
+ if (useUnionStation) {
525
526
  memcpy(end, "PASSENGER_GROUP_NAME", sizeof("PASSENGER_GROUP_NAME"));
526
527
  end += sizeof("PASSENGER_GROUP_NAME");
527
528
 
@@ -49,12 +49,12 @@
49
49
  #define HELPER_SERVER_PASSWORD_SIZE 64
50
50
 
51
51
 
52
- static int first_start = 1;
53
- ngx_str_t passenger_schema_string;
54
- ngx_str_t passenger_placeholder_upstream_address;
55
- CachedFileStat *passenger_stat_cache;
56
- AgentsStarter *passenger_agents_starter = NULL;
57
- ngx_cycle_t *passenger_current_cycle;
52
+ static int first_start = 1;
53
+ ngx_str_t passenger_schema_string;
54
+ ngx_str_t passenger_placeholder_upstream_address;
55
+ PassengerCachedFileStat *passenger_stat_cache;
56
+ AgentsStarter *passenger_agents_starter = NULL;
57
+ ngx_cycle_t *passenger_current_cycle;
58
58
 
59
59
 
60
60
  /*
@@ -46,18 +46,18 @@ extern ngx_module_t ngx_http_passenger_module;
46
46
  /**
47
47
  * A static schema string to be assigned to Nginx 'upstream' strctures.
48
48
  */
49
- extern ngx_str_t passenger_schema_string;
49
+ extern ngx_str_t passenger_schema_string;
50
50
 
51
- extern ngx_str_t passenger_placeholder_upstream_address;
51
+ extern ngx_str_t passenger_placeholder_upstream_address;
52
52
 
53
53
  /**
54
54
  * A CachedFileStat object used for caching stat() calls.
55
55
  */
56
- extern CachedFileStat *passenger_stat_cache;
56
+ extern PassengerCachedFileStat *passenger_stat_cache;
57
57
 
58
- extern AgentsStarter *passenger_agents_starter;
58
+ extern AgentsStarter *passenger_agents_starter;
59
59
 
60
- extern ngx_cycle_t *passenger_current_cycle;
60
+ extern ngx_cycle_t *passenger_current_cycle;
61
61
 
62
62
  #endif /* _PASSENGER_NGINX_MODULE_H_ */
63
63
 
@@ -25,7 +25,7 @@ module PhusionPassenger
25
25
  ###### Version numbers ######
26
26
 
27
27
  # Phusion Passenger version number. Don't forget to edit ext/common/Constants.h too.
28
- VERSION_STRING = '3.0.4'
28
+ VERSION_STRING = '3.0.5'
29
29
 
30
30
  PREFERRED_NGINX_VERSION = '0.8.54'
31
31
  PREFERRED_PCRE_VERSION = '8.10'