passenger 3.0.7 → 3.0.8

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 (439) hide show
  1. data/NEWS +27 -0
  2. data/README +1 -1
  3. data/bin/passenger-install-nginx-module +3 -1
  4. data/build/config.rb +2 -1
  5. data/build/cxx_tests.rb +7 -3
  6. data/build/documentation.rb +5 -40
  7. data/build/nginx.rb +0 -1
  8. data/build/packaging.rb +0 -6
  9. data/build/rake_extensions.rb +5 -0
  10. data/doc/Architectural overview.html +344 -77
  11. data/doc/Security of user switching support.html +338 -71
  12. data/doc/Users guide Apache with comments.html +4830 -0
  13. data/doc/Users guide Apache.html +695 -428
  14. data/doc/Users guide Apache.idmap.txt +80 -0
  15. data/doc/Users guide Apache.txt +5 -5
  16. data/doc/Users guide Nginx.html +591 -313
  17. data/doc/Users guide Nginx.txt +9 -3
  18. data/doc/Users guide Standalone.html +344 -77
  19. data/ext/boost/src/pthread/thread.cpp +1 -1
  20. data/ext/common/AccountsDatabase.h +1 -1
  21. data/ext/common/Constants.h +2 -2
  22. data/ext/common/Logging.h +2 -1
  23. data/ext/common/LoggingAgent/FilterSupport.h +107 -3
  24. data/ext/common/Session.h +1 -1
  25. data/ext/common/Utils.cpp +2 -0
  26. data/ext/common/Utils/Dechunker.h +232 -0
  27. data/ext/common/Utils/HttpHeaderBufferer.h +165 -0
  28. data/ext/common/Utils/StrIntUtils.cpp +51 -15
  29. data/ext/common/Utils/StrIntUtils.h +3 -0
  30. data/ext/common/Utils/StreamBoyerMooreHorspool.h +506 -0
  31. data/ext/nginx/Configuration.c +36 -282
  32. data/ext/nginx/ContentHandler.c +17 -0
  33. data/ext/nginx/HelperAgent.cpp +397 -39
  34. data/ext/oxt/tracable_exception.cpp +3 -1
  35. data/ext/ruby/extconf.rb +1 -0
  36. data/ext/ruby/passenger_native_support.c +3 -0
  37. data/helper-scripts/prespawn +113 -31
  38. data/lib/phusion_passenger.rb +2 -2
  39. data/lib/phusion_passenger/standalone/runtime_installer.rb +3 -2
  40. data/lib/phusion_passenger/standalone/start_command.rb +12 -12
  41. data/test/cxx/DechunkerTest.cpp +216 -0
  42. data/test/cxx/FilterSupportTest.cpp +31 -4
  43. data/test/cxx/HttpHeaderBuffererTest.cpp +203 -0
  44. data/test/cxx/UtilsTest.cpp +46 -3
  45. data/test/integration_tests/hello_world_rack_spec.rb +7 -0
  46. data/test/stub/rack/config.ru +6 -1
  47. data/test/stub/rails_apps/1.2/empty/public/dispatch.cgi +1 -1
  48. data/test/stub/rails_apps/1.2/empty/public/dispatch.fcgi +1 -1
  49. data/test/stub/rails_apps/1.2/empty/public/dispatch.rb +1 -1
  50. data/test/stub/rails_apps/2.0/empty/public/dispatch.cgi +1 -1
  51. data/test/stub/rails_apps/2.0/empty/public/dispatch.fcgi +1 -1
  52. data/test/stub/rails_apps/2.0/empty/public/dispatch.rb +1 -1
  53. data/test/stub/rails_apps/2.2/empty/public/dispatch.cgi +1 -1
  54. data/test/stub/rails_apps/2.2/empty/public/dispatch.fcgi +1 -1
  55. data/test/stub/rails_apps/2.2/empty/public/dispatch.rb +1 -1
  56. metadata +20 -403
  57. data/doc/Doxyfile +0 -241
  58. data/doc/cxxapi/AbstractSpawnManager_8h_source.html +0 -141
  59. data/doc/cxxapi/Account_8h_source.html +0 -206
  60. data/doc/cxxapi/AccountsDatabase_8h_source.html +0 -161
  61. data/doc/cxxapi/AgentBase_8h_source.html +0 -70
  62. data/doc/cxxapi/AgentsStarter_8h_source.html +0 -112
  63. data/doc/cxxapi/BCrypt_8h_source.html +0 -104
  64. data/doc/cxxapi/Blowfish_8h_source.html +0 -134
  65. data/doc/cxxapi/Bucket_8h_source.html +0 -118
  66. data/doc/cxxapi/Constants_8h_source.html +0 -79
  67. data/doc/cxxapi/ContentHandler_8h_source.html +0 -95
  68. data/doc/cxxapi/DirectoryMapper_8h_source.html +0 -311
  69. data/doc/cxxapi/EventedClient_8h_source.html +0 -733
  70. data/doc/cxxapi/EventedMessageServer_8h_source.html +0 -358
  71. data/doc/cxxapi/EventedServer_8h_source.html +0 -326
  72. data/doc/cxxapi/Exceptions_8h_source.html +0 -393
  73. data/doc/cxxapi/FileDescriptor_8h_source.html +0 -324
  74. data/doc/cxxapi/Hooks_8h_source.html +0 -76
  75. data/doc/cxxapi/HttpStatusExtractor_8h_source.html +0 -382
  76. data/doc/cxxapi/IniFile_8h_source.html +0 -527
  77. data/doc/cxxapi/Logging_8h_source.html +0 -796
  78. data/doc/cxxapi/MessageChannel_8h_source.html +0 -776
  79. data/doc/cxxapi/MessageClient_8h_source.html +0 -328
  80. data/doc/cxxapi/MessageReadersWriters_8h_source.html +0 -539
  81. data/doc/cxxapi/MessageServer_8h_source.html +0 -612
  82. data/doc/cxxapi/PoolOptions_8h_source.html +0 -549
  83. data/doc/cxxapi/Process_8h_source.html +0 -286
  84. data/doc/cxxapi/RandomGenerator_8h_source.html +0 -191
  85. data/doc/cxxapi/ResourceLocator_8h_source.html +0 -166
  86. data/doc/cxxapi/SafeLibev_8h_source.html +0 -180
  87. data/doc/cxxapi/ScgiRequestParser_8h_source.html +0 -406
  88. data/doc/cxxapi/ServerInstanceDir_8h_source.html +0 -378
  89. data/doc/cxxapi/Session_8h_source.html +0 -501
  90. data/doc/cxxapi/SpawnManager_8h_source.html +0 -647
  91. data/doc/cxxapi/StaticContentHandler_8h_source.html +0 -69
  92. data/doc/cxxapi/StaticString_8h_source.html +0 -329
  93. data/doc/cxxapi/StringListCreator_8h_source.html +0 -114
  94. data/doc/cxxapi/Utils_8h_source.html +0 -469
  95. data/doc/cxxapi/annotated.html +0 -87
  96. data/doc/cxxapi/apache2_2Configuration_8h_source.html +0 -82
  97. data/doc/cxxapi/classAgentWatcher-members.html +0 -54
  98. data/doc/cxxapi/classAgentWatcher.html +0 -419
  99. data/doc/cxxapi/classClient-members.html +0 -38
  100. data/doc/cxxapi/classClient.html +0 -123
  101. data/doc/cxxapi/classHooks-members.html +0 -40
  102. data/doc/cxxapi/classHooks.html +0 -153
  103. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager-members.html +0 -40
  104. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager.html +0 -187
  105. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager__inherit__graph.map +0 -3
  106. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager__inherit__graph.md5 +0 -1
  107. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager__inherit__graph.png +0 -0
  108. data/doc/cxxapi/classPassenger_1_1ArgumentException-members.html +0 -36
  109. data/doc/cxxapi/classPassenger_1_1ArgumentException.html +0 -56
  110. data/doc/cxxapi/classPassenger_1_1ArrayMessage-members.html +0 -37
  111. data/doc/cxxapi/classPassenger_1_1ArrayMessage.html +0 -113
  112. data/doc/cxxapi/classPassenger_1_1BufferedUpload-members.html +0 -38
  113. data/doc/cxxapi/classPassenger_1_1BufferedUpload.html +0 -112
  114. data/doc/cxxapi/classPassenger_1_1BusyException-members.html +0 -36
  115. data/doc/cxxapi/classPassenger_1_1BusyException.html +0 -54
  116. data/doc/cxxapi/classPassenger_1_1ConfigurationException-members.html +0 -36
  117. data/doc/cxxapi/classPassenger_1_1ConfigurationException.html +0 -51
  118. data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +0 -41
  119. data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +0 -223
  120. data/doc/cxxapi/classPassenger_1_1EOFException-members.html +0 -36
  121. data/doc/cxxapi/classPassenger_1_1EOFException.html +0 -61
  122. data/doc/cxxapi/classPassenger_1_1EOFException__inherit__graph.map +0 -3
  123. data/doc/cxxapi/classPassenger_1_1EOFException__inherit__graph.md5 +0 -1
  124. data/doc/cxxapi/classPassenger_1_1EOFException__inherit__graph.png +0 -0
  125. data/doc/cxxapi/classPassenger_1_1EventFd-members.html +0 -36
  126. data/doc/cxxapi/classPassenger_1_1EventFd.html +0 -52
  127. data/doc/cxxapi/classPassenger_1_1EventedClient-members.html +0 -59
  128. data/doc/cxxapi/classPassenger_1_1EventedClient.html +0 -531
  129. data/doc/cxxapi/classPassenger_1_1EventedMessageServer-members.html +0 -37
  130. data/doc/cxxapi/classPassenger_1_1EventedMessageServer.html +0 -59
  131. data/doc/cxxapi/classPassenger_1_1EventedMessageServer__inherit__graph.map +0 -3
  132. data/doc/cxxapi/classPassenger_1_1EventedMessageServer__inherit__graph.md5 +0 -1
  133. data/doc/cxxapi/classPassenger_1_1EventedMessageServer__inherit__graph.png +0 -0
  134. data/doc/cxxapi/classPassenger_1_1EventedServer-members.html +0 -37
  135. data/doc/cxxapi/classPassenger_1_1EventedServer.html +0 -93
  136. data/doc/cxxapi/classPassenger_1_1EventedServer__inherit__graph.map +0 -3
  137. data/doc/cxxapi/classPassenger_1_1EventedServer__inherit__graph.md5 +0 -1
  138. data/doc/cxxapi/classPassenger_1_1EventedServer__inherit__graph.png +0 -0
  139. data/doc/cxxapi/classPassenger_1_1FileDescriptor-members.html +0 -41
  140. data/doc/cxxapi/classPassenger_1_1FileDescriptor.html +0 -178
  141. data/doc/cxxapi/classPassenger_1_1FileDescriptorPair-members.html +0 -36
  142. data/doc/cxxapi/classPassenger_1_1FileDescriptorPair.html +0 -52
  143. data/doc/cxxapi/classPassenger_1_1FileNotFoundException-members.html +0 -36
  144. data/doc/cxxapi/classPassenger_1_1FileNotFoundException.html +0 -58
  145. data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.map +0 -3
  146. data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.md5 +0 -1
  147. data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.png +0 -0
  148. data/doc/cxxapi/classPassenger_1_1FileSystemException-members.html +0 -41
  149. data/doc/cxxapi/classPassenger_1_1FileSystemException.html +0 -66
  150. data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.map +0 -3
  151. data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.md5 +0 -1
  152. data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.png +0 -0
  153. data/doc/cxxapi/classPassenger_1_1HttpStatusExtractor-members.html +0 -39
  154. data/doc/cxxapi/classPassenger_1_1HttpStatusExtractor.html +0 -128
  155. data/doc/cxxapi/classPassenger_1_1IOException-members.html +0 -36
  156. data/doc/cxxapi/classPassenger_1_1IOException.html +0 -61
  157. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.map +0 -4
  158. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.md5 +0 -1
  159. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.png +0 -0
  160. data/doc/cxxapi/classPassenger_1_1MessageChannel-members.html +0 -57
  161. data/doc/cxxapi/classPassenger_1_1MessageChannel.html +0 -839
  162. data/doc/cxxapi/classPassenger_1_1MessageServer-members.html +0 -49
  163. data/doc/cxxapi/classPassenger_1_1MessageServer.html +0 -407
  164. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext-members.html +0 -36
  165. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext.html +0 -58
  166. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.map +0 -3
  167. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.md5 +0 -1
  168. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.png +0 -0
  169. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext-members.html +0 -41
  170. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext.html +0 -165
  171. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.map +0 -3
  172. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.md5 +0 -1
  173. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.png +0 -0
  174. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler-members.html +0 -39
  175. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler.html +0 -173
  176. data/doc/cxxapi/classPassenger_1_1Process-members.html +0 -44
  177. data/doc/cxxapi/classPassenger_1_1Process.html +0 -290
  178. data/doc/cxxapi/classPassenger_1_1RandomGenerator-members.html +0 -37
  179. data/doc/cxxapi/classPassenger_1_1RandomGenerator.html +0 -79
  180. data/doc/cxxapi/classPassenger_1_1ResourceLocator-members.html +0 -36
  181. data/doc/cxxapi/classPassenger_1_1ResourceLocator.html +0 -51
  182. data/doc/cxxapi/classPassenger_1_1RuntimeException-members.html +0 -36
  183. data/doc/cxxapi/classPassenger_1_1RuntimeException.html +0 -54
  184. data/doc/cxxapi/classPassenger_1_1SafeLibev-members.html +0 -36
  185. data/doc/cxxapi/classPassenger_1_1SafeLibev.html +0 -51
  186. data/doc/cxxapi/classPassenger_1_1ScalarMessage-members.html +0 -37
  187. data/doc/cxxapi/classPassenger_1_1ScalarMessage.html +0 -76
  188. data/doc/cxxapi/classPassenger_1_1ScgiRequestParser-members.html +0 -50
  189. data/doc/cxxapi/classPassenger_1_1ScgiRequestParser.html +0 -285
  190. data/doc/cxxapi/classPassenger_1_1SecurityException-members.html +0 -36
  191. data/doc/cxxapi/classPassenger_1_1SecurityException.html +0 -56
  192. data/doc/cxxapi/classPassenger_1_1Session-members.html +0 -53
  193. data/doc/cxxapi/classPassenger_1_1Session.html +0 -556
  194. data/doc/cxxapi/classPassenger_1_1Session__inherit__graph.map +0 -3
  195. data/doc/cxxapi/classPassenger_1_1Session__inherit__graph.md5 +0 -1
  196. data/doc/cxxapi/classPassenger_1_1Session__inherit__graph.png +0 -0
  197. data/doc/cxxapi/classPassenger_1_1SpawnException-members.html +0 -39
  198. data/doc/cxxapi/classPassenger_1_1SpawnException.html +0 -101
  199. data/doc/cxxapi/classPassenger_1_1SpawnManager-members.html +0 -42
  200. data/doc/cxxapi/classPassenger_1_1SpawnManager.html +0 -292
  201. data/doc/cxxapi/classPassenger_1_1SpawnManager__inherit__graph.map +0 -3
  202. data/doc/cxxapi/classPassenger_1_1SpawnManager__inherit__graph.md5 +0 -1
  203. data/doc/cxxapi/classPassenger_1_1SpawnManager__inherit__graph.png +0 -0
  204. data/doc/cxxapi/classPassenger_1_1StandardSession-members.html +0 -54
  205. data/doc/cxxapi/classPassenger_1_1StandardSession.html +0 -394
  206. data/doc/cxxapi/classPassenger_1_1StandardSession__inherit__graph.map +0 -3
  207. data/doc/cxxapi/classPassenger_1_1StandardSession__inherit__graph.md5 +0 -1
  208. data/doc/cxxapi/classPassenger_1_1StandardSession__inherit__graph.png +0 -0
  209. data/doc/cxxapi/classPassenger_1_1StaticString-members.html +0 -36
  210. data/doc/cxxapi/classPassenger_1_1StaticString.html +0 -56
  211. data/doc/cxxapi/classPassenger_1_1SyntaxError-members.html +0 -36
  212. data/doc/cxxapi/classPassenger_1_1SyntaxError.html +0 -54
  213. data/doc/cxxapi/classPassenger_1_1SystemException-members.html +0 -40
  214. data/doc/cxxapi/classPassenger_1_1SystemException.html +0 -155
  215. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.map +0 -4
  216. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.md5 +0 -1
  217. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.png +0 -0
  218. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException-members.html +0 -40
  219. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException.html +0 -61
  220. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException__inherit__graph.map +0 -3
  221. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException__inherit__graph.md5 +0 -1
  222. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException__inherit__graph.png +0 -0
  223. data/doc/cxxapi/classPassenger_1_1TimeoutException-members.html +0 -36
  224. data/doc/cxxapi/classPassenger_1_1TimeoutException.html +0 -54
  225. data/doc/cxxapi/classPassenger_1_1Uint16Message-members.html +0 -36
  226. data/doc/cxxapi/classPassenger_1_1Uint16Message.html +0 -51
  227. data/doc/cxxapi/classPassenger_1_1Uint32Message-members.html +0 -36
  228. data/doc/cxxapi/classPassenger_1_1Uint32Message.html +0 -51
  229. data/doc/cxxapi/classServer-members.html +0 -36
  230. data/doc/cxxapi/classServer.html +0 -49
  231. data/doc/cxxapi/classServerInstanceDirToucher-members.html +0 -36
  232. data/doc/cxxapi/classServerInstanceDirToucher.html +0 -47
  233. data/doc/cxxapi/classes.html +0 -52
  234. data/doc/cxxapi/definitions_8h_source.html +0 -36
  235. data/doc/cxxapi/doxygen.css +0 -532
  236. data/doc/cxxapi/doxygen.png +0 -0
  237. data/doc/cxxapi/files.html +0 -76
  238. data/doc/cxxapi/ftv2blank.png +0 -0
  239. data/doc/cxxapi/ftv2doc.png +0 -0
  240. data/doc/cxxapi/ftv2folderclosed.png +0 -0
  241. data/doc/cxxapi/ftv2folderopen.png +0 -0
  242. data/doc/cxxapi/ftv2lastnode.png +0 -0
  243. data/doc/cxxapi/ftv2link.png +0 -0
  244. data/doc/cxxapi/ftv2mlastnode.png +0 -0
  245. data/doc/cxxapi/ftv2mnode.png +0 -0
  246. data/doc/cxxapi/ftv2node.png +0 -0
  247. data/doc/cxxapi/ftv2plastnode.png +0 -0
  248. data/doc/cxxapi/ftv2pnode.png +0 -0
  249. data/doc/cxxapi/ftv2vertline.png +0 -0
  250. data/doc/cxxapi/functions.html +0 -103
  251. data/doc/cxxapi/functions_0x62.html +0 -82
  252. data/doc/cxxapi/functions_0x63.html +0 -102
  253. data/doc/cxxapi/functions_0x64.html +0 -102
  254. data/doc/cxxapi/functions_0x65.html +0 -88
  255. data/doc/cxxapi/functions_0x66.html +0 -100
  256. data/doc/cxxapi/functions_0x67.html +0 -167
  257. data/doc/cxxapi/functions_0x68.html +0 -88
  258. data/doc/cxxapi/functions_0x69.html +0 -96
  259. data/doc/cxxapi/functions_0x6b.html +0 -80
  260. data/doc/cxxapi/functions_0x6c.html +0 -88
  261. data/doc/cxxapi/functions_0x6d.html +0 -88
  262. data/doc/cxxapi/functions_0x6e.html +0 -86
  263. data/doc/cxxapi/functions_0x6f.html +0 -94
  264. data/doc/cxxapi/functions_0x70.html +0 -94
  265. data/doc/cxxapi/functions_0x72.html +0 -110
  266. data/doc/cxxapi/functions_0x73.html +0 -171
  267. data/doc/cxxapi/functions_0x74.html +0 -85
  268. data/doc/cxxapi/functions_0x75.html +0 -85
  269. data/doc/cxxapi/functions_0x77.html +0 -92
  270. data/doc/cxxapi/functions_0x7e.html +0 -79
  271. data/doc/cxxapi/functions_enum.html +0 -49
  272. data/doc/cxxapi/functions_eval.html +0 -67
  273. data/doc/cxxapi/functions_func.html +0 -531
  274. data/doc/cxxapi/functions_vars.html +0 -278
  275. data/doc/cxxapi/graph_legend.dot +0 -22
  276. data/doc/cxxapi/graph_legend.html +0 -92
  277. data/doc/cxxapi/graph_legend.png +0 -0
  278. data/doc/cxxapi/group__Core.html +0 -46
  279. data/doc/cxxapi/group__Core.map +0 -3
  280. data/doc/cxxapi/group__Core.png +0 -0
  281. data/doc/cxxapi/group__Exceptions.html +0 -53
  282. data/doc/cxxapi/group__Hooks.html +0 -42
  283. data/doc/cxxapi/group__Hooks.map +0 -3
  284. data/doc/cxxapi/group__Hooks.png +0 -0
  285. data/doc/cxxapi/group__Support.html +0 -538
  286. data/doc/cxxapi/hierarchy.html +0 -101
  287. data/doc/cxxapi/index.html +0 -16
  288. data/doc/cxxapi/inherit__graph__0.map +0 -3
  289. data/doc/cxxapi/inherit__graph__0.md5 +0 -1
  290. data/doc/cxxapi/inherit__graph__0.png +0 -0
  291. data/doc/cxxapi/inherit__graph__1.map +0 -3
  292. data/doc/cxxapi/inherit__graph__1.md5 +0 -1
  293. data/doc/cxxapi/inherit__graph__1.png +0 -0
  294. data/doc/cxxapi/inherit__graph__10.map +0 -3
  295. data/doc/cxxapi/inherit__graph__10.md5 +0 -1
  296. data/doc/cxxapi/inherit__graph__10.png +0 -0
  297. data/doc/cxxapi/inherit__graph__11.map +0 -4
  298. data/doc/cxxapi/inherit__graph__11.md5 +0 -1
  299. data/doc/cxxapi/inherit__graph__11.png +0 -0
  300. data/doc/cxxapi/inherit__graph__12.map +0 -3
  301. data/doc/cxxapi/inherit__graph__12.md5 +0 -1
  302. data/doc/cxxapi/inherit__graph__12.png +0 -0
  303. data/doc/cxxapi/inherit__graph__13.map +0 -3
  304. data/doc/cxxapi/inherit__graph__13.md5 +0 -1
  305. data/doc/cxxapi/inherit__graph__13.png +0 -0
  306. data/doc/cxxapi/inherit__graph__14.map +0 -3
  307. data/doc/cxxapi/inherit__graph__14.md5 +0 -1
  308. data/doc/cxxapi/inherit__graph__14.png +0 -0
  309. data/doc/cxxapi/inherit__graph__15.map +0 -3
  310. data/doc/cxxapi/inherit__graph__15.md5 +0 -1
  311. data/doc/cxxapi/inherit__graph__15.png +0 -0
  312. data/doc/cxxapi/inherit__graph__16.map +0 -5
  313. data/doc/cxxapi/inherit__graph__16.md5 +0 -1
  314. data/doc/cxxapi/inherit__graph__16.png +0 -0
  315. data/doc/cxxapi/inherit__graph__17.map +0 -3
  316. data/doc/cxxapi/inherit__graph__17.md5 +0 -1
  317. data/doc/cxxapi/inherit__graph__17.png +0 -0
  318. data/doc/cxxapi/inherit__graph__18.map +0 -3
  319. data/doc/cxxapi/inherit__graph__18.md5 +0 -1
  320. data/doc/cxxapi/inherit__graph__18.png +0 -0
  321. data/doc/cxxapi/inherit__graph__19.map +0 -4
  322. data/doc/cxxapi/inherit__graph__19.md5 +0 -1
  323. data/doc/cxxapi/inherit__graph__19.png +0 -0
  324. data/doc/cxxapi/inherit__graph__2.map +0 -3
  325. data/doc/cxxapi/inherit__graph__2.md5 +0 -1
  326. data/doc/cxxapi/inherit__graph__2.png +0 -0
  327. data/doc/cxxapi/inherit__graph__20.map +0 -3
  328. data/doc/cxxapi/inherit__graph__20.md5 +0 -1
  329. data/doc/cxxapi/inherit__graph__20.png +0 -0
  330. data/doc/cxxapi/inherit__graph__21.map +0 -3
  331. data/doc/cxxapi/inherit__graph__21.md5 +0 -1
  332. data/doc/cxxapi/inherit__graph__21.png +0 -0
  333. data/doc/cxxapi/inherit__graph__22.map +0 -3
  334. data/doc/cxxapi/inherit__graph__22.md5 +0 -1
  335. data/doc/cxxapi/inherit__graph__22.png +0 -0
  336. data/doc/cxxapi/inherit__graph__23.map +0 -3
  337. data/doc/cxxapi/inherit__graph__23.md5 +0 -1
  338. data/doc/cxxapi/inherit__graph__23.png +0 -0
  339. data/doc/cxxapi/inherit__graph__24.map +0 -3
  340. data/doc/cxxapi/inherit__graph__24.md5 +0 -1
  341. data/doc/cxxapi/inherit__graph__24.png +0 -0
  342. data/doc/cxxapi/inherit__graph__25.map +0 -3
  343. data/doc/cxxapi/inherit__graph__25.md5 +0 -1
  344. data/doc/cxxapi/inherit__graph__25.png +0 -0
  345. data/doc/cxxapi/inherit__graph__26.map +0 -3
  346. data/doc/cxxapi/inherit__graph__26.md5 +0 -1
  347. data/doc/cxxapi/inherit__graph__26.png +0 -0
  348. data/doc/cxxapi/inherit__graph__27.map +0 -3
  349. data/doc/cxxapi/inherit__graph__27.md5 +0 -1
  350. data/doc/cxxapi/inherit__graph__27.png +0 -0
  351. data/doc/cxxapi/inherit__graph__28.map +0 -3
  352. data/doc/cxxapi/inherit__graph__28.md5 +0 -1
  353. data/doc/cxxapi/inherit__graph__28.png +0 -0
  354. data/doc/cxxapi/inherit__graph__29.map +0 -3
  355. data/doc/cxxapi/inherit__graph__29.md5 +0 -1
  356. data/doc/cxxapi/inherit__graph__29.png +0 -0
  357. data/doc/cxxapi/inherit__graph__3.map +0 -4
  358. data/doc/cxxapi/inherit__graph__3.md5 +0 -1
  359. data/doc/cxxapi/inherit__graph__3.png +0 -0
  360. data/doc/cxxapi/inherit__graph__30.map +0 -3
  361. data/doc/cxxapi/inherit__graph__30.md5 +0 -1
  362. data/doc/cxxapi/inherit__graph__30.png +0 -0
  363. data/doc/cxxapi/inherit__graph__31.map +0 -4
  364. data/doc/cxxapi/inherit__graph__31.md5 +0 -1
  365. data/doc/cxxapi/inherit__graph__31.png +0 -0
  366. data/doc/cxxapi/inherit__graph__32.map +0 -3
  367. data/doc/cxxapi/inherit__graph__32.md5 +0 -1
  368. data/doc/cxxapi/inherit__graph__32.png +0 -0
  369. data/doc/cxxapi/inherit__graph__33.map +0 -3
  370. data/doc/cxxapi/inherit__graph__33.md5 +0 -1
  371. data/doc/cxxapi/inherit__graph__33.png +0 -0
  372. data/doc/cxxapi/inherit__graph__34.map +0 -3
  373. data/doc/cxxapi/inherit__graph__34.md5 +0 -1
  374. data/doc/cxxapi/inherit__graph__34.png +0 -0
  375. data/doc/cxxapi/inherit__graph__35.map +0 -3
  376. data/doc/cxxapi/inherit__graph__35.md5 +0 -1
  377. data/doc/cxxapi/inherit__graph__35.png +0 -0
  378. data/doc/cxxapi/inherit__graph__36.map +0 -5
  379. data/doc/cxxapi/inherit__graph__36.md5 +0 -1
  380. data/doc/cxxapi/inherit__graph__36.png +0 -0
  381. data/doc/cxxapi/inherit__graph__37.map +0 -3
  382. data/doc/cxxapi/inherit__graph__37.md5 +0 -1
  383. data/doc/cxxapi/inherit__graph__37.png +0 -0
  384. data/doc/cxxapi/inherit__graph__38.map +0 -3
  385. data/doc/cxxapi/inherit__graph__38.md5 +0 -1
  386. data/doc/cxxapi/inherit__graph__38.png +0 -0
  387. data/doc/cxxapi/inherit__graph__39.map +0 -3
  388. data/doc/cxxapi/inherit__graph__39.md5 +0 -1
  389. data/doc/cxxapi/inherit__graph__39.png +0 -0
  390. data/doc/cxxapi/inherit__graph__4.map +0 -3
  391. data/doc/cxxapi/inherit__graph__4.md5 +0 -1
  392. data/doc/cxxapi/inherit__graph__4.png +0 -0
  393. data/doc/cxxapi/inherit__graph__40.map +0 -3
  394. data/doc/cxxapi/inherit__graph__40.md5 +0 -1
  395. data/doc/cxxapi/inherit__graph__40.png +0 -0
  396. data/doc/cxxapi/inherit__graph__41.map +0 -3
  397. data/doc/cxxapi/inherit__graph__41.md5 +0 -1
  398. data/doc/cxxapi/inherit__graph__41.png +0 -0
  399. data/doc/cxxapi/inherit__graph__5.map +0 -3
  400. data/doc/cxxapi/inherit__graph__5.md5 +0 -1
  401. data/doc/cxxapi/inherit__graph__5.png +0 -0
  402. data/doc/cxxapi/inherit__graph__6.map +0 -3
  403. data/doc/cxxapi/inherit__graph__6.md5 +0 -1
  404. data/doc/cxxapi/inherit__graph__6.png +0 -0
  405. data/doc/cxxapi/inherit__graph__7.map +0 -3
  406. data/doc/cxxapi/inherit__graph__7.md5 +0 -1
  407. data/doc/cxxapi/inherit__graph__7.png +0 -0
  408. data/doc/cxxapi/inherit__graph__8.map +0 -3
  409. data/doc/cxxapi/inherit__graph__8.md5 +0 -1
  410. data/doc/cxxapi/inherit__graph__8.png +0 -0
  411. data/doc/cxxapi/inherit__graph__9.map +0 -3
  412. data/doc/cxxapi/inherit__graph__9.md5 +0 -1
  413. data/doc/cxxapi/inherit__graph__9.png +0 -0
  414. data/doc/cxxapi/inherits.html +0 -165
  415. data/doc/cxxapi/main.html +0 -28
  416. data/doc/cxxapi/modules.html +0 -36
  417. data/doc/cxxapi/namespacePassenger.html +0 -585
  418. data/doc/cxxapi/namespacemembers.html +0 -190
  419. data/doc/cxxapi/namespacemembers_enum.html +0 -48
  420. data/doc/cxxapi/namespacemembers_eval.html +0 -57
  421. data/doc/cxxapi/namespacemembers_func.html +0 -114
  422. data/doc/cxxapi/namespacemembers_type.html +0 -54
  423. data/doc/cxxapi/namespaces.html +0 -37
  424. data/doc/cxxapi/nginx_2Configuration_8h_source.html +0 -126
  425. data/doc/cxxapi/ngx__http__passenger__module_8h_source.html +0 -95
  426. data/doc/cxxapi/structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard-members.html +0 -36
  427. data/doc/cxxapi/structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard.html +0 -51
  428. data/doc/cxxapi/structPassenger_1_1PoolOptions-members.html +0 -67
  429. data/doc/cxxapi/structPassenger_1_1PoolOptions.html +0 -647
  430. data/doc/cxxapi/structPassenger_1_1StaticString_1_1Hash-members.html +0 -36
  431. data/doc/cxxapi/structPassenger_1_1StaticString_1_1Hash.html +0 -51
  432. data/doc/cxxapi/tab_b.gif +0 -0
  433. data/doc/cxxapi/tab_l.gif +0 -0
  434. data/doc/cxxapi/tab_r.gif +0 -0
  435. data/doc/cxxapi/tabs.css +0 -105
  436. data/doc/cxxapi/tree.html +0 -249
  437. data/doc/template/horo.rb +0 -613
  438. data/ext/libev/config.h +0 -122
  439. data/ext/nginx/HttpStatusExtractor.h +0 -351
@@ -51,6 +51,24 @@ namespace tut {
51
51
  }
52
52
  }
53
53
 
54
+ TEST_METHOD(2) {
55
+ // Test support for various fields.
56
+ ctx.uri = "foo";
57
+ ctx.controller = "bar";
58
+ ctx.responseTime = 800;
59
+ ctx.status = "200 OK";
60
+ ctx.statusCode = 201;
61
+ ctx.gcTime = 30;
62
+ ensure(eval(
63
+ "uri == 'foo' "
64
+ " && response_time == 800"
65
+ " && response_time_without_gc == 770"
66
+ " && status == '200 OK'"
67
+ " && status_code == 201"
68
+ " && gc_time == 30"
69
+ ));
70
+ }
71
+
54
72
 
55
73
  /******** String and regexp tests *******/
56
74
 
@@ -376,11 +394,17 @@ namespace tut {
376
394
  "1234-abcd 1234 0 BEGIN: request processing (1235, 10, 10)\n"
377
395
  "1234-abcd 1240 1 URI: /foo\n"
378
396
  "1234-abcd 1241 2 Controller action: HomeController#index\n"
379
- "1234-abcd 2234 3 END: request processing (2234, 10, 10)\n"
397
+ "1234-abcd 1242 3 Status: 200 OK\n"
398
+ "1234-abcd 1243 4 Initial GC time: 1\n"
399
+ "1234-abcd 1244 5 Final GC time: 10\n"
400
+ "1234-abcd 2234 10 END: request processing (2234, 10, 10)\n"
380
401
  );
381
402
  ensure_equals(ctx.getURI(), "/foo");
382
403
  ensure_equals(ctx.getController(), "HomeController");
383
404
  ensure_equals(ctx.getResponseTime(), 46655);
405
+ ensure_equals(ctx.getStatus(), "200 OK");
406
+ ensure_equals(ctx.getStatusCode(), 200);
407
+ ensure_equals(ctx.getGcTime(), 9);
384
408
  }
385
409
 
386
410
  TEST_METHOD(51) {
@@ -397,10 +421,13 @@ namespace tut {
397
421
  }
398
422
 
399
423
  TEST_METHOD(52) {
400
- // It does only extracts the response time if both the begin and end events are available
424
+ // If the begin or end "request processing" event is not available
425
+ // then it derives the response time from the entire transaction.
401
426
  ContextFromLog ctx(
402
- "1234-abcd 1234 0 BEGIN: request processing (1235, 10, 10)\n"
427
+ "1234-abcd 1234 0 ATTACH\n"
428
+ "1234-abcd 1235 1 BEGIN: request processing (1235, 10, 10)\n"
429
+ "1234-abcd 1236 2 DETACH\n"
403
430
  );
404
- ensure_equals(ctx.getResponseTime(), 0);
431
+ ensure_equals(ctx.getResponseTime(), 2);
405
432
  }
406
433
  }
@@ -0,0 +1,203 @@
1
+ #include "TestSupport.h"
2
+ #include <string>
3
+ #include <algorithm>
4
+ #include <cstddef>
5
+ #include <Utils/HttpHeaderBufferer.h>
6
+
7
+ using namespace Passenger;
8
+ using namespace std;
9
+
10
+ namespace tut {
11
+ struct HttpHeaderBuffererTest {
12
+ HttpHeaderBufferer bufferer;
13
+ string input;
14
+
15
+ HttpHeaderBuffererTest() {
16
+ input = "HTTP/1.1 200 OK\r\n"
17
+ "Content-Type: text/plain\r\n"
18
+ "Connection: close\r\n"
19
+ "\r\n";
20
+ }
21
+ };
22
+
23
+ DEFINE_TEST_GROUP(HttpHeaderBuffererTest);
24
+
25
+ TEST_METHOD(1) {
26
+ // Test initial state.
27
+ ensure(bufferer.acceptingInput());
28
+ ensure(!bufferer.hasError());
29
+ }
30
+
31
+ TEST_METHOD(2) {
32
+ // Test feeding a complete stream everything in one go.
33
+ ensure_equals(bufferer.feed(input.data(), input.size()), input.size());
34
+ ensure(!bufferer.acceptingInput());
35
+ ensure(!bufferer.hasError());
36
+ ensure_equals("It does not copy any data",
37
+ bufferer.getData().data(), input.data());
38
+ ensure_equals(bufferer.getData().size(), input.size());
39
+ }
40
+
41
+ TEST_METHOD(3) {
42
+ // Test feeding a complete stream byte by byte.
43
+ const char *pos = input.data();
44
+ const char *end = input.data() + input.size();
45
+ while (pos < end) {
46
+ ensure(bufferer.acceptingInput());
47
+ ensure(!bufferer.hasError());
48
+ ensure_equals(bufferer.feed(pos, 1), 1u);
49
+ pos++;
50
+ }
51
+
52
+ ensure(!bufferer.acceptingInput());
53
+ ensure(!bufferer.hasError());
54
+ ensure("It copies the fed data into an internal buffer",
55
+ bufferer.getData().data() != input.data());
56
+ ensure_equals(bufferer.getData(), input);
57
+ }
58
+
59
+ TEST_METHOD(4) {
60
+ // Test feeding a complete stream in pieces of 2 bytes.
61
+ const char *pos = input.data();
62
+ const char *end = input.data() + input.size();
63
+ while (pos < end) {
64
+ ensure("(1)", bufferer.acceptingInput());
65
+ ensure("(2)", !bufferer.hasError());
66
+ size_t size = std::min<size_t>(2, end - pos);
67
+ ensure_equals(bufferer.feed(pos, size), size);
68
+ pos += 2;
69
+ }
70
+
71
+ ensure("(3)", !bufferer.acceptingInput());
72
+ ensure("(4)", !bufferer.hasError());
73
+ ensure("It copies the fed data into an internal buffer",
74
+ bufferer.getData().data() != input.data());
75
+ ensure_equals(bufferer.getData(), input);
76
+ }
77
+
78
+ TEST_METHOD(5) {
79
+ // Test feeding a complete stream in pieces of 3 bytes.
80
+ const char *pos = input.data();
81
+ const char *end = input.data() + input.size();
82
+ while (pos < end) {
83
+ ensure("(1)", bufferer.acceptingInput());
84
+ ensure("(2)", !bufferer.hasError());
85
+ size_t size = std::min<size_t>(3, end - pos);
86
+ ensure_equals(bufferer.feed(pos, size), size);
87
+ pos += 3;
88
+ }
89
+
90
+ ensure("(3)", !bufferer.acceptingInput());
91
+ ensure("(4)", !bufferer.hasError());
92
+ ensure("It copies the fed data into an internal buffer",
93
+ bufferer.getData().data() != input.data());
94
+ ensure_equals(bufferer.getData(), input);
95
+ }
96
+
97
+ TEST_METHOD(20) {
98
+ // It refuses to accept any more data after the header terminator until reset is called.
99
+ string input2 = input;
100
+ input2.append("hello world");
101
+
102
+ ensure_equals(bufferer.feed(input2.data(), input2.size()), input.size());
103
+ ensure(!bufferer.acceptingInput());
104
+ ensure(!bufferer.hasError());
105
+ ensure_equals(bufferer.getData().data(), input2.data());
106
+ ensure_equals(bufferer.getData(), input);
107
+
108
+ ensure_equals(bufferer.feed(input.data(), input.size()), 0u);
109
+
110
+ bufferer.reset();
111
+ ensure_equals(bufferer.feed(input2.data(), input2.size()), input.size());
112
+ ensure(!bufferer.acceptingInput());
113
+ ensure(!bufferer.hasError());
114
+ ensure_equals(bufferer.getData().data(), input2.data());
115
+ ensure_equals(bufferer.getData(), input);
116
+ }
117
+
118
+ TEST_METHOD(21) {
119
+ // Same test as above, except we feed byte-by-byte.
120
+ string input2 = input;
121
+ input2.append("hello world");
122
+ const char *pos;
123
+ const char *end;
124
+
125
+ pos = input2.data();
126
+ end = input2.data() + input.size();
127
+ while (pos < end) {
128
+ ensure_equals("(1)", bufferer.feed(pos, 1), 1u);
129
+ pos++;
130
+ }
131
+ ensure(!bufferer.acceptingInput());
132
+ ensure(!bufferer.hasError());
133
+
134
+ end = input2.data() + input2.size();
135
+ while (pos < end) {
136
+ ensure_equals("(2)", bufferer.feed(pos, 1), 0u);
137
+ pos++;
138
+ }
139
+ ensure(!bufferer.acceptingInput());
140
+ ensure(!bufferer.hasError());
141
+ ensure(bufferer.getData().data() != input2.data());
142
+ ensure_equals(bufferer.getData(), input);
143
+
144
+ bufferer.reset();
145
+ pos = input2.data();
146
+ end = input2.data() + input.size();
147
+ while (pos < end) {
148
+ ensure_equals("(3)", bufferer.feed(pos, 1), 1u);
149
+ pos++;
150
+ }
151
+ ensure(!bufferer.acceptingInput());
152
+ ensure(!bufferer.hasError());
153
+
154
+ end = input2.data() + input2.size();
155
+ while (pos < end) {
156
+ ensure_equals("(4)", bufferer.feed(pos, 1), 0u);
157
+ pos++;
158
+ }
159
+ ensure(!bufferer.acceptingInput());
160
+ ensure(!bufferer.hasError());
161
+ ensure(bufferer.getData().data() != input2.data());
162
+ ensure_equals(bufferer.getData(), input);
163
+ }
164
+
165
+ TEST_METHOD(22) {
166
+ // Test inputting data larger than the max size.
167
+ input.assign(1024, '\0');
168
+ bufferer.setMax(512);
169
+
170
+ ensure_equals(bufferer.feed(input.data(), input.size()), 512u);
171
+ ensure(!bufferer.acceptingInput());
172
+ ensure(bufferer.hasError());
173
+ }
174
+
175
+ TEST_METHOD(23) {
176
+ // Some as above, except we feed byte-by-byte.
177
+ unsigned int i;
178
+ bufferer.setMax(512);
179
+
180
+ for (i = 0; i < 512; i++) {
181
+ ensure_equals(bufferer.feed("\0", 1), 1u);
182
+ }
183
+ ensure(!bufferer.acceptingInput());
184
+ ensure(bufferer.hasError());
185
+
186
+ for (i = 0; i < 512; i++) {
187
+ ensure_equals(bufferer.feed("\0", 1), 0u);
188
+ }
189
+ ensure(!bufferer.acceptingInput());
190
+ ensure(bufferer.hasError());
191
+ }
192
+
193
+ TEST_METHOD(24) {
194
+ // Test garbage.
195
+ input.clear();
196
+ for (int i = 0; i < 256; i++) {
197
+ input.append(1, (char) i);
198
+ }
199
+ bufferer.feed(input.data(), input.size());
200
+ ensure(bufferer.acceptingInput());
201
+ ensure(!bufferer.hasError());
202
+ }
203
+ }
@@ -346,7 +346,7 @@ namespace tut {
346
346
  ensure_equals(buf.st_mode, buf2.st_mode);
347
347
  }
348
348
 
349
- /***** Test stringToULL() *****/
349
+ /***** Test stringToULL(), stringToUint *****/
350
350
 
351
351
  TEST_METHOD(47) {
352
352
  ensure_equals(stringToULL(""), 0ull);
@@ -360,6 +360,17 @@ namespace tut {
360
360
  ensure_equals(stringToULL("2937104"), 2937104ull);
361
361
  ensure_equals(stringToULL("18446744073709551615"), 18446744073709551615ull);
362
362
  ensure_equals(stringToULL(" 5abcdef1234"), 5ull);
363
+
364
+ ensure_equals(stringToUint(""), 0u);
365
+ ensure_equals(stringToUint("bla"), 0u);
366
+ ensure_equals(stringToUint("0"), 0u);
367
+ ensure_equals(stringToUint("000"), 0u);
368
+ ensure_equals(stringToUint("1"), 1u);
369
+ ensure_equals(stringToUint("9"), 9u);
370
+ ensure_equals(stringToUint("010"), 10u);
371
+ ensure_equals(stringToUint("928"), 928u);
372
+ ensure_equals(stringToUint("2937104"), 2937104u);
373
+ ensure_equals(stringToUint(" 5abcdef1234"), 5u);
363
374
  }
364
375
 
365
376
  /***** Test integerToHex() and integerToHexatri() *****/
@@ -408,7 +419,7 @@ namespace tut {
408
419
  ensure(strcmp(buf, "1ljj") == 0);
409
420
  }
410
421
 
411
- /***** Test hexToULL() and hexatriToULL() *****/
422
+ /***** Test hexToULL(), hexToUint() and hexatriToULL() *****/
412
423
 
413
424
  TEST_METHOD(49) {
414
425
  ensure_equals(hexToULL(""), 0ull);
@@ -426,6 +437,21 @@ namespace tut {
426
437
  ensure_equals(hexToULL("09a2s89"), 2466ull);
427
438
  ensure_equals(hexToULL(" 9a2s89"), 0ull);
428
439
 
440
+ ensure_equals(hexToUint(""), 0u);
441
+ ensure_equals(hexToUint(" "), 0u);
442
+ ensure_equals(hexToUint("1"), 1u);
443
+ ensure_equals(hexToUint("9"), 9u);
444
+ ensure_equals(hexToUint("a"), 10u);
445
+ ensure_equals(hexToUint("B"), 11u);
446
+ ensure_equals(hexToUint("1234"), 4660u);
447
+ ensure_equals(hexToUint("1a6b"), 6763u);
448
+ ensure_equals(hexToUint("1A6B"), 6763u);
449
+ ensure_equals(hexToUint("1a6B"), 6763u);
450
+ ensure_equals(hexToUint("deadbeef"), 3735928559u);
451
+ ensure_equals(hexToUint("dEaDbEeF"), 3735928559u);
452
+ ensure_equals(hexToUint("09a2s89"), 2466u);
453
+ ensure_equals(hexToUint(" 9a2s89"), 0u);
454
+
429
455
  ensure_equals(hexatriToULL(""), 0ull);
430
456
  ensure_equals(hexatriToULL(" "), 0ull);
431
457
  ensure_equals(hexatriToULL("1"), 1ull);
@@ -442,7 +468,7 @@ namespace tut {
442
468
  ensure_equals(hexatriToULL(" 9a2s89"), 0ull);
443
469
  }
444
470
 
445
- /***** Test stringToLL() *****/
471
+ /***** Test stringToLL(), stringToInt() *****/
446
472
 
447
473
  TEST_METHOD(50) {
448
474
  ensure_equals(stringToLL(""), 0ll);
@@ -463,6 +489,23 @@ namespace tut {
463
489
  ensure_equals(stringToLL("-9876"), -9876ll);
464
490
  ensure_equals(stringToLL("-9223372036854775807"), -9223372036854775807ll);
465
491
  ensure_equals(stringToLL(" -5abcdef1234"), -5ll);
492
+
493
+ ensure_equals(stringToInt(""), 0);
494
+ ensure_equals(stringToInt("bla"), 0);
495
+ ensure_equals(stringToInt("0"), 0);
496
+ ensure_equals(stringToInt("000"), 0);
497
+ ensure_equals(stringToInt("1"), 1);
498
+ ensure_equals(stringToInt("9"), 9);
499
+ ensure_equals(stringToInt("010"), 10);
500
+ ensure_equals(stringToInt("928"), 928);
501
+ ensure_equals(stringToInt("2937104"), 2937104);
502
+ ensure_equals(stringToInt(" 5abcdef1234"), 5);
503
+
504
+ ensure_equals(stringToInt("-0"), 0ll);
505
+ ensure_equals(stringToInt("-1"), -1ll);
506
+ ensure_equals(stringToInt("-010"), -10ll);
507
+ ensure_equals(stringToInt("-9876"), -9876);
508
+ ensure_equals(stringToInt(" -5abcdef1234"), -5);
466
509
  }
467
510
 
468
511
  /***** Test cEscapeString() *****/
@@ -7,6 +7,13 @@ shared_examples_for "HelloWorld Rack application" do
7
7
  get('/').should =~ /hello/
8
8
  end
9
9
 
10
+ it "supports responses with the 'chunked' transfer encoding" do
11
+ get('/chunked').should ==
12
+ "chunk1\n" +
13
+ "chunk2\n" +
14
+ "chunk3\n"
15
+ end
16
+
10
17
  it "supports restarting via restart.txt" do
11
18
  get('/').should =~ /hello/
12
19
  File.write("#{@stub.app_root}/config.ru", %q{
@@ -1,4 +1,9 @@
1
1
  app = lambda do |env|
2
- [200, { "Content-Type" => "text/html" }, ["hello <b>world</b>"]]
2
+ if env['PATH_INFO'] == '/chunked'
3
+ chunks = ["7\r\nchunk1\n\r\n", "7\r\nchunk2\n\r\n", "7\r\nchunk3\n\r\n", "0\r\n\r\n"]
4
+ [200, { "Content-Type" => "text/html", "Transfer-Encoding" => "chunked" }, chunks]
5
+ else
6
+ [200, { "Content-Type" => "text/html" }, ["hello <b>world</b>"]]
7
+ end
3
8
  end
4
9
  run app
@@ -1,4 +1,4 @@
1
- #!/opt/ruby-enterprise/bin/ruby
1
+ #!/usr/bin/ruby
2
2
 
3
3
  require File.dirname(__FILE__) + "/../config/environment" unless defined?(RAILS_ROOT)
4
4
 
@@ -1,4 +1,4 @@
1
- #!/opt/ruby-enterprise/bin/ruby
1
+ #!/usr/bin/ruby
2
2
  #
3
3
  # You may specify the path to the FastCGI crash log (a log of unhandled
4
4
  # exceptions which forced the FastCGI instance to exit, great for debugging)
@@ -1,4 +1,4 @@
1
- #!/opt/ruby-enterprise/bin/ruby
1
+ #!/usr/bin/ruby
2
2
 
3
3
  require File.dirname(__FILE__) + "/../config/environment" unless defined?(RAILS_ROOT)
4
4
 
@@ -1,4 +1,4 @@
1
- #!/opt/ruby-enterprise/bin/ruby
1
+ #!/usr/bin/ruby
2
2
 
3
3
  require File.dirname(__FILE__) + "/../config/environment" unless defined?(RAILS_ROOT)
4
4
 
@@ -1,4 +1,4 @@
1
- #!/opt/ruby-enterprise/bin/ruby
1
+ #!/usr/bin/ruby
2
2
  #
3
3
  # You may specify the path to the FastCGI crash log (a log of unhandled
4
4
  # exceptions which forced the FastCGI instance to exit, great for debugging)
@@ -1,4 +1,4 @@
1
- #!/opt/ruby-enterprise/bin/ruby
1
+ #!/usr/bin/ruby
2
2
 
3
3
  require File.dirname(__FILE__) + "/../config/environment" unless defined?(RAILS_ROOT)
4
4
 
@@ -1,4 +1,4 @@
1
- #!/opt/ruby-enterprise/bin/ruby
1
+ #!/usr/bin/ruby
2
2
 
3
3
  require File.dirname(__FILE__) + "/../config/environment" unless defined?(RAILS_ROOT)
4
4
 
@@ -1,4 +1,4 @@
1
- #!/opt/ruby-enterprise/bin/ruby
1
+ #!/usr/bin/ruby
2
2
  #
3
3
  # You may specify the path to the FastCGI crash log (a log of unhandled
4
4
  # exceptions which forced the FastCGI instance to exit, great for debugging)
@@ -1,4 +1,4 @@
1
- #!/opt/ruby-enterprise/bin/ruby
1
+ #!/usr/bin/ruby
2
2
 
3
3
  require File.dirname(__FILE__) + "/../config/environment" unless defined?(RAILS_ROOT)
4
4
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: passenger
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 3
8
8
  - 0
9
- - 7
10
- version: 3.0.7
9
+ - 8
10
+ version: 3.0.8
11
11
  platform: ruby
12
12
  authors:
13
13
  - Phusion - http://www.phusion.nl/
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-14 00:00:00 +02:00
18
+ date: 2011-08-03 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -92,8 +92,8 @@ executables:
92
92
  - passenger-make-enterprisey
93
93
  extensions: []
94
94
 
95
- extra_rdoc_files:
96
- - README
95
+ extra_rdoc_files: []
96
+
97
97
  files:
98
98
  - Rakefile
99
99
  - README
@@ -234,389 +234,8 @@ files:
234
234
  - bin/passenger-memory-stats
235
235
  - bin/passenger-status
236
236
  - doc/ApplicationPool algorithm.txt
237
- - doc/Architectural overview.html
238
237
  - doc/Architectural overview.txt
239
- - doc/cxxapi/AbstractSpawnManager_8h_source.html
240
- - doc/cxxapi/Account_8h_source.html
241
- - doc/cxxapi/AccountsDatabase_8h_source.html
242
- - doc/cxxapi/AgentBase_8h_source.html
243
- - doc/cxxapi/AgentsStarter_8h_source.html
244
- - doc/cxxapi/annotated.html
245
- - doc/cxxapi/apache2_2Configuration_8h_source.html
246
- - doc/cxxapi/BCrypt_8h_source.html
247
- - doc/cxxapi/Blowfish_8h_source.html
248
- - doc/cxxapi/Bucket_8h_source.html
249
- - doc/cxxapi/classAgentWatcher-members.html
250
- - doc/cxxapi/classAgentWatcher.html
251
- - doc/cxxapi/classClient-members.html
252
- - doc/cxxapi/classClient.html
253
- - doc/cxxapi/classes.html
254
- - doc/cxxapi/classHooks-members.html
255
- - doc/cxxapi/classHooks.html
256
- - doc/cxxapi/classPassenger_1_1AbstractSpawnManager-members.html
257
- - doc/cxxapi/classPassenger_1_1AbstractSpawnManager.html
258
- - doc/cxxapi/classPassenger_1_1AbstractSpawnManager__inherit__graph.map
259
- - doc/cxxapi/classPassenger_1_1AbstractSpawnManager__inherit__graph.md5
260
- - doc/cxxapi/classPassenger_1_1AbstractSpawnManager__inherit__graph.png
261
- - doc/cxxapi/classPassenger_1_1ArgumentException-members.html
262
- - doc/cxxapi/classPassenger_1_1ArgumentException.html
263
- - doc/cxxapi/classPassenger_1_1ArrayMessage-members.html
264
- - doc/cxxapi/classPassenger_1_1ArrayMessage.html
265
- - doc/cxxapi/classPassenger_1_1BufferedUpload-members.html
266
- - doc/cxxapi/classPassenger_1_1BufferedUpload.html
267
- - doc/cxxapi/classPassenger_1_1BusyException-members.html
268
- - doc/cxxapi/classPassenger_1_1BusyException.html
269
- - doc/cxxapi/classPassenger_1_1ConfigurationException-members.html
270
- - doc/cxxapi/classPassenger_1_1ConfigurationException.html
271
- - doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html
272
- - doc/cxxapi/classPassenger_1_1DirectoryMapper.html
273
- - doc/cxxapi/classPassenger_1_1EOFException-members.html
274
- - doc/cxxapi/classPassenger_1_1EOFException.html
275
- - doc/cxxapi/classPassenger_1_1EOFException__inherit__graph.map
276
- - doc/cxxapi/classPassenger_1_1EOFException__inherit__graph.md5
277
- - doc/cxxapi/classPassenger_1_1EOFException__inherit__graph.png
278
- - doc/cxxapi/classPassenger_1_1EventedClient-members.html
279
- - doc/cxxapi/classPassenger_1_1EventedClient.html
280
- - doc/cxxapi/classPassenger_1_1EventedMessageServer-members.html
281
- - doc/cxxapi/classPassenger_1_1EventedMessageServer.html
282
- - doc/cxxapi/classPassenger_1_1EventedMessageServer__inherit__graph.map
283
- - doc/cxxapi/classPassenger_1_1EventedMessageServer__inherit__graph.md5
284
- - doc/cxxapi/classPassenger_1_1EventedMessageServer__inherit__graph.png
285
- - doc/cxxapi/classPassenger_1_1EventedServer-members.html
286
- - doc/cxxapi/classPassenger_1_1EventedServer.html
287
- - doc/cxxapi/classPassenger_1_1EventedServer__inherit__graph.map
288
- - doc/cxxapi/classPassenger_1_1EventedServer__inherit__graph.md5
289
- - doc/cxxapi/classPassenger_1_1EventedServer__inherit__graph.png
290
- - doc/cxxapi/classPassenger_1_1EventFd-members.html
291
- - doc/cxxapi/classPassenger_1_1EventFd.html
292
- - doc/cxxapi/classPassenger_1_1FileDescriptor-members.html
293
- - doc/cxxapi/classPassenger_1_1FileDescriptor.html
294
- - doc/cxxapi/classPassenger_1_1FileDescriptorPair-members.html
295
- - doc/cxxapi/classPassenger_1_1FileDescriptorPair.html
296
- - doc/cxxapi/classPassenger_1_1FileNotFoundException-members.html
297
- - doc/cxxapi/classPassenger_1_1FileNotFoundException.html
298
- - doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.map
299
- - doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.md5
300
- - doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.png
301
- - doc/cxxapi/classPassenger_1_1FileSystemException-members.html
302
- - doc/cxxapi/classPassenger_1_1FileSystemException.html
303
- - doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.map
304
- - doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.md5
305
- - doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.png
306
- - doc/cxxapi/classPassenger_1_1HttpStatusExtractor-members.html
307
- - doc/cxxapi/classPassenger_1_1HttpStatusExtractor.html
308
- - doc/cxxapi/classPassenger_1_1IOException-members.html
309
- - doc/cxxapi/classPassenger_1_1IOException.html
310
- - doc/cxxapi/classPassenger_1_1IOException__inherit__graph.map
311
- - doc/cxxapi/classPassenger_1_1IOException__inherit__graph.md5
312
- - doc/cxxapi/classPassenger_1_1IOException__inherit__graph.png
313
- - doc/cxxapi/classPassenger_1_1MessageChannel-members.html
314
- - doc/cxxapi/classPassenger_1_1MessageChannel.html
315
- - doc/cxxapi/classPassenger_1_1MessageServer-members.html
316
- - doc/cxxapi/classPassenger_1_1MessageServer.html
317
- - doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext-members.html
318
- - doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext.html
319
- - doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.map
320
- - doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.md5
321
- - doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.png
322
- - doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext-members.html
323
- - doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext.html
324
- - doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.map
325
- - doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.md5
326
- - doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.png
327
- - doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler-members.html
328
- - doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler.html
329
- - doc/cxxapi/classPassenger_1_1Process-members.html
330
- - doc/cxxapi/classPassenger_1_1Process.html
331
- - doc/cxxapi/classPassenger_1_1RandomGenerator-members.html
332
- - doc/cxxapi/classPassenger_1_1RandomGenerator.html
333
- - doc/cxxapi/classPassenger_1_1ResourceLocator-members.html
334
- - doc/cxxapi/classPassenger_1_1ResourceLocator.html
335
- - doc/cxxapi/classPassenger_1_1RuntimeException-members.html
336
- - doc/cxxapi/classPassenger_1_1RuntimeException.html
337
- - doc/cxxapi/classPassenger_1_1SafeLibev-members.html
338
- - doc/cxxapi/classPassenger_1_1SafeLibev.html
339
- - doc/cxxapi/classPassenger_1_1ScalarMessage-members.html
340
- - doc/cxxapi/classPassenger_1_1ScalarMessage.html
341
- - doc/cxxapi/classPassenger_1_1ScgiRequestParser-members.html
342
- - doc/cxxapi/classPassenger_1_1ScgiRequestParser.html
343
- - doc/cxxapi/classPassenger_1_1SecurityException-members.html
344
- - doc/cxxapi/classPassenger_1_1SecurityException.html
345
- - doc/cxxapi/classPassenger_1_1Session-members.html
346
- - doc/cxxapi/classPassenger_1_1Session.html
347
- - doc/cxxapi/classPassenger_1_1Session__inherit__graph.map
348
- - doc/cxxapi/classPassenger_1_1Session__inherit__graph.md5
349
- - doc/cxxapi/classPassenger_1_1Session__inherit__graph.png
350
- - doc/cxxapi/classPassenger_1_1SpawnException-members.html
351
- - doc/cxxapi/classPassenger_1_1SpawnException.html
352
- - doc/cxxapi/classPassenger_1_1SpawnManager-members.html
353
- - doc/cxxapi/classPassenger_1_1SpawnManager.html
354
- - doc/cxxapi/classPassenger_1_1SpawnManager__inherit__graph.map
355
- - doc/cxxapi/classPassenger_1_1SpawnManager__inherit__graph.md5
356
- - doc/cxxapi/classPassenger_1_1SpawnManager__inherit__graph.png
357
- - doc/cxxapi/classPassenger_1_1StandardSession-members.html
358
- - doc/cxxapi/classPassenger_1_1StandardSession.html
359
- - doc/cxxapi/classPassenger_1_1StandardSession__inherit__graph.map
360
- - doc/cxxapi/classPassenger_1_1StandardSession__inherit__graph.md5
361
- - doc/cxxapi/classPassenger_1_1StandardSession__inherit__graph.png
362
- - doc/cxxapi/classPassenger_1_1StaticString-members.html
363
- - doc/cxxapi/classPassenger_1_1StaticString.html
364
- - doc/cxxapi/classPassenger_1_1SyntaxError-members.html
365
- - doc/cxxapi/classPassenger_1_1SyntaxError.html
366
- - doc/cxxapi/classPassenger_1_1SystemException-members.html
367
- - doc/cxxapi/classPassenger_1_1SystemException.html
368
- - doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.map
369
- - doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.md5
370
- - doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.png
371
- - doc/cxxapi/classPassenger_1_1TimeoutException-members.html
372
- - doc/cxxapi/classPassenger_1_1TimeoutException.html
373
- - doc/cxxapi/classPassenger_1_1TimeRetrievalException-members.html
374
- - doc/cxxapi/classPassenger_1_1TimeRetrievalException.html
375
- - doc/cxxapi/classPassenger_1_1TimeRetrievalException__inherit__graph.map
376
- - doc/cxxapi/classPassenger_1_1TimeRetrievalException__inherit__graph.md5
377
- - doc/cxxapi/classPassenger_1_1TimeRetrievalException__inherit__graph.png
378
- - doc/cxxapi/classPassenger_1_1Uint16Message-members.html
379
- - doc/cxxapi/classPassenger_1_1Uint16Message.html
380
- - doc/cxxapi/classPassenger_1_1Uint32Message-members.html
381
- - doc/cxxapi/classPassenger_1_1Uint32Message.html
382
- - doc/cxxapi/classServer-members.html
383
- - doc/cxxapi/classServer.html
384
- - doc/cxxapi/classServerInstanceDirToucher-members.html
385
- - doc/cxxapi/classServerInstanceDirToucher.html
386
- - doc/cxxapi/Constants_8h_source.html
387
- - doc/cxxapi/ContentHandler_8h_source.html
388
- - doc/cxxapi/definitions_8h_source.html
389
- - doc/cxxapi/DirectoryMapper_8h_source.html
390
- - doc/cxxapi/doxygen.css
391
- - doc/cxxapi/doxygen.png
392
- - doc/cxxapi/EventedClient_8h_source.html
393
- - doc/cxxapi/EventedMessageServer_8h_source.html
394
- - doc/cxxapi/EventedServer_8h_source.html
395
- - doc/cxxapi/Exceptions_8h_source.html
396
- - doc/cxxapi/FileDescriptor_8h_source.html
397
- - doc/cxxapi/files.html
398
- - doc/cxxapi/ftv2blank.png
399
- - doc/cxxapi/ftv2doc.png
400
- - doc/cxxapi/ftv2folderclosed.png
401
- - doc/cxxapi/ftv2folderopen.png
402
- - doc/cxxapi/ftv2lastnode.png
403
- - doc/cxxapi/ftv2link.png
404
- - doc/cxxapi/ftv2mlastnode.png
405
- - doc/cxxapi/ftv2mnode.png
406
- - doc/cxxapi/ftv2node.png
407
- - doc/cxxapi/ftv2plastnode.png
408
- - doc/cxxapi/ftv2pnode.png
409
- - doc/cxxapi/ftv2vertline.png
410
- - doc/cxxapi/functions.html
411
- - doc/cxxapi/functions_0x62.html
412
- - doc/cxxapi/functions_0x63.html
413
- - doc/cxxapi/functions_0x64.html
414
- - doc/cxxapi/functions_0x65.html
415
- - doc/cxxapi/functions_0x66.html
416
- - doc/cxxapi/functions_0x67.html
417
- - doc/cxxapi/functions_0x68.html
418
- - doc/cxxapi/functions_0x69.html
419
- - doc/cxxapi/functions_0x6b.html
420
- - doc/cxxapi/functions_0x6c.html
421
- - doc/cxxapi/functions_0x6d.html
422
- - doc/cxxapi/functions_0x6e.html
423
- - doc/cxxapi/functions_0x6f.html
424
- - doc/cxxapi/functions_0x70.html
425
- - doc/cxxapi/functions_0x72.html
426
- - doc/cxxapi/functions_0x73.html
427
- - doc/cxxapi/functions_0x74.html
428
- - doc/cxxapi/functions_0x75.html
429
- - doc/cxxapi/functions_0x77.html
430
- - doc/cxxapi/functions_0x7e.html
431
- - doc/cxxapi/functions_enum.html
432
- - doc/cxxapi/functions_eval.html
433
- - doc/cxxapi/functions_func.html
434
- - doc/cxxapi/functions_vars.html
435
- - doc/cxxapi/graph_legend.dot
436
- - doc/cxxapi/graph_legend.html
437
- - doc/cxxapi/graph_legend.png
438
- - doc/cxxapi/group__Core.html
439
- - doc/cxxapi/group__Core.map
440
- - doc/cxxapi/group__Core.png
441
- - doc/cxxapi/group__Exceptions.html
442
- - doc/cxxapi/group__Hooks.html
443
- - doc/cxxapi/group__Hooks.map
444
- - doc/cxxapi/group__Hooks.png
445
- - doc/cxxapi/group__Support.html
446
- - doc/cxxapi/hierarchy.html
447
- - doc/cxxapi/Hooks_8h_source.html
448
- - doc/cxxapi/HttpStatusExtractor_8h_source.html
449
- - doc/cxxapi/index.html
450
- - doc/cxxapi/inherit__graph__0.map
451
- - doc/cxxapi/inherit__graph__0.md5
452
- - doc/cxxapi/inherit__graph__0.png
453
- - doc/cxxapi/inherit__graph__1.map
454
- - doc/cxxapi/inherit__graph__1.md5
455
- - doc/cxxapi/inherit__graph__1.png
456
- - doc/cxxapi/inherit__graph__10.map
457
- - doc/cxxapi/inherit__graph__10.md5
458
- - doc/cxxapi/inherit__graph__10.png
459
- - doc/cxxapi/inherit__graph__11.map
460
- - doc/cxxapi/inherit__graph__11.md5
461
- - doc/cxxapi/inherit__graph__11.png
462
- - doc/cxxapi/inherit__graph__12.map
463
- - doc/cxxapi/inherit__graph__12.md5
464
- - doc/cxxapi/inherit__graph__12.png
465
- - doc/cxxapi/inherit__graph__13.map
466
- - doc/cxxapi/inherit__graph__13.md5
467
- - doc/cxxapi/inherit__graph__13.png
468
- - doc/cxxapi/inherit__graph__14.map
469
- - doc/cxxapi/inherit__graph__14.md5
470
- - doc/cxxapi/inherit__graph__14.png
471
- - doc/cxxapi/inherit__graph__15.map
472
- - doc/cxxapi/inherit__graph__15.md5
473
- - doc/cxxapi/inherit__graph__15.png
474
- - doc/cxxapi/inherit__graph__16.map
475
- - doc/cxxapi/inherit__graph__16.md5
476
- - doc/cxxapi/inherit__graph__16.png
477
- - doc/cxxapi/inherit__graph__17.map
478
- - doc/cxxapi/inherit__graph__17.md5
479
- - doc/cxxapi/inherit__graph__17.png
480
- - doc/cxxapi/inherit__graph__18.map
481
- - doc/cxxapi/inherit__graph__18.md5
482
- - doc/cxxapi/inherit__graph__18.png
483
- - doc/cxxapi/inherit__graph__19.map
484
- - doc/cxxapi/inherit__graph__19.md5
485
- - doc/cxxapi/inherit__graph__19.png
486
- - doc/cxxapi/inherit__graph__2.map
487
- - doc/cxxapi/inherit__graph__2.md5
488
- - doc/cxxapi/inherit__graph__2.png
489
- - doc/cxxapi/inherit__graph__20.map
490
- - doc/cxxapi/inherit__graph__20.md5
491
- - doc/cxxapi/inherit__graph__20.png
492
- - doc/cxxapi/inherit__graph__21.map
493
- - doc/cxxapi/inherit__graph__21.md5
494
- - doc/cxxapi/inherit__graph__21.png
495
- - doc/cxxapi/inherit__graph__22.map
496
- - doc/cxxapi/inherit__graph__22.md5
497
- - doc/cxxapi/inherit__graph__22.png
498
- - doc/cxxapi/inherit__graph__23.map
499
- - doc/cxxapi/inherit__graph__23.md5
500
- - doc/cxxapi/inherit__graph__23.png
501
- - doc/cxxapi/inherit__graph__24.map
502
- - doc/cxxapi/inherit__graph__24.md5
503
- - doc/cxxapi/inherit__graph__24.png
504
- - doc/cxxapi/inherit__graph__25.map
505
- - doc/cxxapi/inherit__graph__25.md5
506
- - doc/cxxapi/inherit__graph__25.png
507
- - doc/cxxapi/inherit__graph__26.map
508
- - doc/cxxapi/inherit__graph__26.md5
509
- - doc/cxxapi/inherit__graph__26.png
510
- - doc/cxxapi/inherit__graph__27.map
511
- - doc/cxxapi/inherit__graph__27.md5
512
- - doc/cxxapi/inherit__graph__27.png
513
- - doc/cxxapi/inherit__graph__28.map
514
- - doc/cxxapi/inherit__graph__28.md5
515
- - doc/cxxapi/inherit__graph__28.png
516
- - doc/cxxapi/inherit__graph__29.map
517
- - doc/cxxapi/inherit__graph__29.md5
518
- - doc/cxxapi/inherit__graph__29.png
519
- - doc/cxxapi/inherit__graph__3.map
520
- - doc/cxxapi/inherit__graph__3.md5
521
- - doc/cxxapi/inherit__graph__3.png
522
- - doc/cxxapi/inherit__graph__30.map
523
- - doc/cxxapi/inherit__graph__30.md5
524
- - doc/cxxapi/inherit__graph__30.png
525
- - doc/cxxapi/inherit__graph__31.map
526
- - doc/cxxapi/inherit__graph__31.md5
527
- - doc/cxxapi/inherit__graph__31.png
528
- - doc/cxxapi/inherit__graph__32.map
529
- - doc/cxxapi/inherit__graph__32.md5
530
- - doc/cxxapi/inherit__graph__32.png
531
- - doc/cxxapi/inherit__graph__33.map
532
- - doc/cxxapi/inherit__graph__33.md5
533
- - doc/cxxapi/inherit__graph__33.png
534
- - doc/cxxapi/inherit__graph__34.map
535
- - doc/cxxapi/inherit__graph__34.md5
536
- - doc/cxxapi/inherit__graph__34.png
537
- - doc/cxxapi/inherit__graph__35.map
538
- - doc/cxxapi/inherit__graph__35.md5
539
- - doc/cxxapi/inherit__graph__35.png
540
- - doc/cxxapi/inherit__graph__36.map
541
- - doc/cxxapi/inherit__graph__36.md5
542
- - doc/cxxapi/inherit__graph__36.png
543
- - doc/cxxapi/inherit__graph__37.map
544
- - doc/cxxapi/inherit__graph__37.md5
545
- - doc/cxxapi/inherit__graph__37.png
546
- - doc/cxxapi/inherit__graph__38.map
547
- - doc/cxxapi/inherit__graph__38.md5
548
- - doc/cxxapi/inherit__graph__38.png
549
- - doc/cxxapi/inherit__graph__39.map
550
- - doc/cxxapi/inherit__graph__39.md5
551
- - doc/cxxapi/inherit__graph__39.png
552
- - doc/cxxapi/inherit__graph__4.map
553
- - doc/cxxapi/inherit__graph__4.md5
554
- - doc/cxxapi/inherit__graph__4.png
555
- - doc/cxxapi/inherit__graph__40.map
556
- - doc/cxxapi/inherit__graph__40.md5
557
- - doc/cxxapi/inherit__graph__40.png
558
- - doc/cxxapi/inherit__graph__41.map
559
- - doc/cxxapi/inherit__graph__41.md5
560
- - doc/cxxapi/inherit__graph__41.png
561
- - doc/cxxapi/inherit__graph__5.map
562
- - doc/cxxapi/inherit__graph__5.md5
563
- - doc/cxxapi/inherit__graph__5.png
564
- - doc/cxxapi/inherit__graph__6.map
565
- - doc/cxxapi/inherit__graph__6.md5
566
- - doc/cxxapi/inherit__graph__6.png
567
- - doc/cxxapi/inherit__graph__7.map
568
- - doc/cxxapi/inherit__graph__7.md5
569
- - doc/cxxapi/inherit__graph__7.png
570
- - doc/cxxapi/inherit__graph__8.map
571
- - doc/cxxapi/inherit__graph__8.md5
572
- - doc/cxxapi/inherit__graph__8.png
573
- - doc/cxxapi/inherit__graph__9.map
574
- - doc/cxxapi/inherit__graph__9.md5
575
- - doc/cxxapi/inherit__graph__9.png
576
- - doc/cxxapi/inherits.html
577
- - doc/cxxapi/IniFile_8h_source.html
578
- - doc/cxxapi/Logging_8h_source.html
579
- - doc/cxxapi/main.html
580
- - doc/cxxapi/MessageChannel_8h_source.html
581
- - doc/cxxapi/MessageClient_8h_source.html
582
- - doc/cxxapi/MessageReadersWriters_8h_source.html
583
- - doc/cxxapi/MessageServer_8h_source.html
584
- - doc/cxxapi/modules.html
585
- - doc/cxxapi/namespacemembers.html
586
- - doc/cxxapi/namespacemembers_enum.html
587
- - doc/cxxapi/namespacemembers_eval.html
588
- - doc/cxxapi/namespacemembers_func.html
589
- - doc/cxxapi/namespacemembers_type.html
590
- - doc/cxxapi/namespacePassenger.html
591
- - doc/cxxapi/namespaces.html
592
- - doc/cxxapi/nginx_2Configuration_8h_source.html
593
- - doc/cxxapi/ngx__http__passenger__module_8h_source.html
594
- - doc/cxxapi/PoolOptions_8h_source.html
595
- - doc/cxxapi/Process_8h_source.html
596
- - doc/cxxapi/RandomGenerator_8h_source.html
597
- - doc/cxxapi/ResourceLocator_8h_source.html
598
- - doc/cxxapi/SafeLibev_8h_source.html
599
- - doc/cxxapi/ScgiRequestParser_8h_source.html
600
- - doc/cxxapi/ServerInstanceDir_8h_source.html
601
- - doc/cxxapi/Session_8h_source.html
602
- - doc/cxxapi/SpawnManager_8h_source.html
603
- - doc/cxxapi/StaticContentHandler_8h_source.html
604
- - doc/cxxapi/StaticString_8h_source.html
605
- - doc/cxxapi/StringListCreator_8h_source.html
606
- - doc/cxxapi/structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard-members.html
607
- - doc/cxxapi/structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard.html
608
- - doc/cxxapi/structPassenger_1_1PoolOptions-members.html
609
- - doc/cxxapi/structPassenger_1_1PoolOptions.html
610
- - doc/cxxapi/structPassenger_1_1StaticString_1_1Hash-members.html
611
- - doc/cxxapi/structPassenger_1_1StaticString_1_1Hash.html
612
- - doc/cxxapi/tab_b.gif
613
- - doc/cxxapi/tab_l.gif
614
- - doc/cxxapi/tab_r.gif
615
- - doc/cxxapi/tabs.css
616
- - doc/cxxapi/tree.html
617
- - doc/cxxapi/Utils_8h_source.html
618
238
  - doc/definitions.h
619
- - doc/Doxyfile
620
239
  - doc/images/by_sa.png
621
240
  - doc/images/conservative_spawning.png
622
241
  - doc/images/conservative_spawning.svg
@@ -655,14 +274,11 @@ files:
655
274
  - doc/images/spawn_server_architecture.svg
656
275
  - doc/images/typical_isolated_web_application.png
657
276
  - doc/images/typical_isolated_web_application.svg
658
- - doc/Security of user switching support.html
659
277
  - doc/Security of user switching support.txt
660
- - doc/template/horo.rb
661
- - doc/Users guide Apache.html
278
+ - doc/Users guide Apache with comments.html
279
+ - doc/Users guide Apache.idmap.txt
662
280
  - doc/Users guide Apache.txt
663
- - doc/Users guide Nginx.html
664
281
  - doc/Users guide Nginx.txt
665
- - doc/Users guide Standalone.html
666
282
  - doc/Users guide Standalone.txt
667
283
  - doc/users_guide_snippets/analysis_and_system_maintenance.txt
668
284
  - doc/users_guide_snippets/appendix_a_about.txt
@@ -752,12 +368,15 @@ files:
752
368
  - ext/common/Utils/BlockingQueue.h
753
369
  - ext/common/Utils/BufferedIO.h
754
370
  - ext/common/Utils/CachedFileStat.h
371
+ - ext/common/Utils/Dechunker.h
755
372
  - ext/common/Utils/FileChangeChecker.h
373
+ - ext/common/Utils/HttpHeaderBufferer.h
756
374
  - ext/common/Utils/IOUtils.h
757
375
  - ext/common/Utils/MD5.h
758
376
  - ext/common/Utils/MemZeroGuard.h
759
377
  - ext/common/Utils/ProcessMetricsCollector.h
760
378
  - ext/common/Utils/ScopeGuard.h
379
+ - ext/common/Utils/StreamBoyerMooreHorspool.h
761
380
  - ext/common/Utils/StringMap.h
762
381
  - ext/common/Utils/StrIntUtils.h
763
382
  - ext/common/Utils/SystemTime.h
@@ -787,7 +406,6 @@ files:
787
406
  - ext/nginx/HelperAgent.cpp
788
407
  - ext/nginx/Configuration.h
789
408
  - ext/nginx/ContentHandler.h
790
- - ext/nginx/HttpStatusExtractor.h
791
409
  - ext/nginx/ngx_http_passenger_module.h
792
410
  - ext/nginx/ScgiRequestParser.h
793
411
  - ext/nginx/StaticContentHandler.h
@@ -1453,7 +1071,6 @@ files:
1453
1071
  - ext/libev/ltmain.sh
1454
1072
  - ext/libev/missing
1455
1073
  - ext/libev/mkinstalldirs
1456
- - ext/libev/config.h
1457
1074
  - ext/libev/ev++.h
1458
1075
  - ext/libev/ev.h
1459
1076
  - ext/libev/ev_vars.h
@@ -1510,10 +1127,12 @@ files:
1510
1127
  - test/cxx/BufferedIOTest.cpp
1511
1128
  - test/cxx/CachedFileStatTest.cpp
1512
1129
  - test/cxx/CxxTestMain.cpp
1130
+ - test/cxx/DechunkerTest.cpp
1513
1131
  - test/cxx/EventedClientTest.cpp
1514
1132
  - test/cxx/FileChangeCheckerTest.cpp
1515
1133
  - test/cxx/FileDescriptorTest.cpp
1516
1134
  - test/cxx/FilterSupportTest.cpp
1135
+ - test/cxx/HttpHeaderBuffererTest.cpp
1517
1136
  - test/cxx/HttpStatusExtractorTest.cpp
1518
1137
  - test/cxx/IOUtilsTest.cpp
1519
1138
  - test/cxx/LoggingTest.cpp
@@ -1885,20 +1504,18 @@ files:
1885
1504
  - test/stub/zsfa/header.png
1886
1505
  - test/stub/zsfa/index.html
1887
1506
  - test/stub/zsfa/zsfa.png
1507
+ - doc/Users guide Apache.html
1508
+ - doc/Users guide Nginx.html
1509
+ - doc/Users guide Standalone.html
1510
+ - doc/Security of user switching support.html
1511
+ - doc/Architectural overview.html
1888
1512
  has_rdoc: true
1889
1513
  homepage: http://www.modrails.com/
1890
1514
  licenses: []
1891
1515
 
1892
1516
  post_install_message:
1893
- rdoc_options:
1894
- - -S
1895
- - -N
1896
- - -p
1897
- - -H
1898
- - --main
1899
- - README
1900
- - --title
1901
- - Passenger Ruby API
1517
+ rdoc_options: []
1518
+
1902
1519
  require_paths:
1903
1520
  - lib
1904
1521
  required_ruby_version: !ruby/object:Gem::Requirement