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
data/NEWS CHANGED
@@ -1,3 +1,30 @@
1
+ Release 3.0.8
2
+ -------------
3
+
4
+ * [Nginx] Upgraded preferred Nginx version to 1.0.5.
5
+ * [Nginx] Fixed various compilation problems on various platforms.
6
+ * [Nginx] We now ensure that SERVER_NAME is equal to HTTP_HOST without the port part.
7
+ This is needed for Rack compliance. By default Nginx sets SERVER_NAME to
8
+ whatever is specified in the server_name directive, but that's not necessarily
9
+ the correct value. This fixes, for example, the use of the 'map' statement
10
+ in config.ru.
11
+ * [Nginx] Added the options passenger_buffer_size, passenger_buffers and passenger_busy_buffers_size.
12
+ These options are similar to proxy_module's similarly named options. You can
13
+ use these to e.g. increase the maximum header size limit.
14
+ * [Nginx] passenger_pre_start now supports virtual hosts that listen on Unix domain sockets.
15
+ * [Apache] Fixed the pcre.h compilation problem.
16
+ * [Standalone] Fixed 'passenger stop'.
17
+ It didn't work properly because it kept waiting for 'tail' to exit.
18
+ We now properly terminate 'tail' as well.
19
+ * Fixed compatibility with Rake 0.9.
20
+ * Fixed various Ruby 1.9 compatibility issues.
21
+ * Various documentation improvements.
22
+ * New Union Station filter language features.
23
+ It now supports status codes and response times.
24
+ Please refer to https://engage.unionstationapp.com/help#filtering
25
+ for more information.
26
+
27
+
1
28
  Release 3.0.7
2
29
  -------------
3
30
 
data/README CHANGED
@@ -32,7 +32,7 @@ our website.
32
32
  You may also first generate a .gem file, and then install that.
33
33
  First, make sure that you have the following software installed:
34
34
  - Doxygen: http://www.stack.nl/~dimitri/doxygen/
35
- - Asciidoc: http://www.methods.co.nz/asciidoc/
35
+ - Asciidoc >= 8.6.5: http://www.methods.co.nz/asciidoc/
36
36
 
37
37
  Next, run:
38
38
 
@@ -390,7 +390,9 @@ private
390
390
  end
391
391
 
392
392
  def build_nginx_configure_command(prefix, extra_configure_flags = nil)
393
- command = "sh ./configure --prefix='#{prefix}' --with-http_ssl_module "
393
+ command = "sh ./configure --prefix='#{prefix}' "
394
+ command << "--with-http_ssl_module "
395
+ command << "--with-cc-opt='-Wno-error' "
394
396
  if @pcre_source_dir
395
397
  command << "--with-pcre='#{@pcre_source_dir}' "
396
398
  elsif !pcre_is_installed?
@@ -24,6 +24,7 @@
24
24
  OPTIMIZE = boolean_option("OPTIMIZE")
25
25
  CC = string_option("CC", "gcc")
26
26
  CXX = string_option("CXX", "g++")
27
+ # TODO: consider -fcommon
27
28
  if OPTIMIZE
28
29
  OPTIMIZATION_FLAGS = "#{PlatformInfo.debugging_cflags} -O2 -DBOOST_DISABLE_ASSERTS".strip
29
30
  else
@@ -32,7 +33,7 @@ end
32
33
 
33
34
  # Extra compiler flags that should always be passed to the C/C++ compiler.
34
35
  # Should be included last in the command string, even after PlatformInfo.portability_cflags.
35
- EXTRA_CXXFLAGS = "-Wall #{OPTIMIZATION_FLAGS}".strip
36
+ EXTRA_CXXFLAGS = "-Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wno-long-long #{OPTIMIZATION_FLAGS}".strip
36
37
 
37
38
  # Extra linker flags that should always be passed to the linker.
38
39
  # Should be included last in the command string, even after PlatformInfo.portability_ldflags.
@@ -125,9 +125,13 @@ TEST_CXX_OBJECTS = {
125
125
  test/cxx/ScgiRequestParserTest.cpp
126
126
  ext/nginx/ScgiRequestParser.h
127
127
  ext/common/StaticString.h),
128
- 'test/cxx/HttpStatusExtractorTest.o' => %w(
129
- test/cxx/HttpStatusExtractorTest.cpp
130
- ext/nginx/HttpStatusExtractor.h),
128
+ 'test/cxx/DechunkerTest.o' => %w(
129
+ test/cxx/DechunkerTest.cpp
130
+ ext/common/Utils/Dechunker.h),
131
+ 'test/cxx/HttpHeaderBuffererTest.o' => %w(
132
+ test/cxx/HttpHeaderBuffererTest.cpp
133
+ ext/common/Utils/HttpHeaderBufferer.h
134
+ ext/common/Utils/StreamBoyerMooreHorspool.h),
131
135
  'test/cxx/LoggingTest.o' => %w(
132
136
  test/cxx/LoggingTest.cpp
133
137
  ext/common/LoggingAgent/LoggingServer.h
@@ -21,16 +21,9 @@
21
21
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
22
  # THE SOFTWARE.
23
23
 
24
- ASCIIDOC_FLAGS = "-a toc -a numbered -a toclevels=3 -a icons"
25
- DOXYGEN = 'doxygen'
24
+ ASCIIDOC_FLAGS = "-b html5 -a toc -a theme=flask -a numbered -a toclevels=3 -a icons"
26
25
 
27
26
  desc "Generate all documentation"
28
- task :doc => [:rdoc]
29
-
30
- if PlatformInfo.find_command(DOXYGEN)
31
- task :doc => :doxygen
32
- end
33
-
34
27
  task :doc => Packaging::ASCII_DOCS
35
28
 
36
29
  Packaging::ASCII_DOCS.each do |target|
@@ -49,36 +42,8 @@ Packaging::ASCII_DOCS.each do |target|
49
42
  sh "echo 'asciidoc required to build docs' > '#{target}'"
50
43
  end
51
44
  end
52
- end
53
-
54
- task :clobber => [:'doxygen:clobber'] do
55
- sh "rm -f *.html"
56
- end
57
-
58
- desc "Generate Doxygen C++ API documentation if necessary"
59
- task :doxygen => ['doc/cxxapi']
60
- file 'doc/cxxapi' => Dir['ext/apache2/*.{h,c,cpp}'] do
61
- sh "cd doc && doxygen"
62
- end
63
-
64
- desc "Force generation of Doxygen C++ API documentation"
65
- task :'doxygen:force' do
66
- sh "cd doc && doxygen"
67
- end
68
-
69
- desc "Remove generated Doxygen C++ API documentation"
70
- task :'doxygen:clobber' do
71
- sh "rm -rf doc/cxxapi"
72
- end
73
-
74
- Rake::RDocTask.new(:clobber_rdoc => "rdoc:clobber", :rerdoc => "rdoc:force") do |rd|
75
- rd.main = "README"
76
- rd.rdoc_dir = "doc/rdoc"
77
- rd.rdoc_files.include("README", "DEVELOPERS.TXT",
78
- "lib/phusion_passenger/*.rb",
79
- "lib/phusion_passenger/*/*.rb",
80
- "ext/phusion_passenger/*.c")
81
- rd.template = "./doc/template/horo"
82
- rd.title = "Passenger Ruby API"
83
- rd.options << "-S" << "-N" << "-p" << "-H"
45
+
46
+ task :clean do
47
+ sh "rm -f '#{target}'"
48
+ end
84
49
  end
@@ -32,7 +32,6 @@ task :nginx => [
32
32
  dependencies = [
33
33
  'ext/nginx/HelperAgent.cpp',
34
34
  'ext/nginx/ScgiRequestParser.h',
35
- 'ext/nginx/HttpStatusExtractor.h',
36
35
  'ext/common/StaticString.h',
37
36
  'ext/common/Account.h',
38
37
  'ext/common/AccountsDatabase.h',
@@ -46,12 +46,6 @@ spec = Gem::Specification.new do |s|
46
46
  s.add_dependency 'rack'
47
47
  s.files = FileList[*Packaging::GLOB] - FileList[*Packaging::EXCLUDE_GLOB]
48
48
  s.executables = Packaging::USER_EXECUTABLES + Packaging::SUPER_USER_EXECUTABLES
49
- s.has_rdoc = true
50
- s.extra_rdoc_files = ['README']
51
- s.rdoc_options <<
52
- "-S" << "-N" << "-p" << "-H" <<
53
- '--main' << 'README' <<
54
- '--title' << 'Passenger Ruby API'
55
49
  s.description = "Easy and robust Ruby web application deployment."
56
50
  end
57
51
 
@@ -104,6 +104,11 @@ def subdir(dir, &block)
104
104
  end
105
105
 
106
106
  class Subdir # :nodoc:
107
+ # Rake 0.9 compatibility since methods like <tt>task<tt> and <tt>desc</tt>
108
+ # aren't available in Object anymore.
109
+ # See: https://github.com/jimweirich/rake/issues/33#issuecomment-1213705
110
+ include Rake::DSL if defined?(Rake::DSL)
111
+
107
112
  def initialize(dir)
108
113
  @dir = dir
109
114
  @toplevel_dir = Pathname.getwd
@@ -1,16 +1,35 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
2
- "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
1
+ <!DOCTYPE html>
2
+ <html lang="en">
4
3
  <head>
5
- <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
6
- <meta name="generator" content="AsciiDoc 8.6.1" />
4
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5
+ <meta name="generator" content="AsciiDoc 8.6.5">
7
6
  <title>Passenger architectural overview</title>
8
7
  <style type="text/css">
9
- /* Debug borders */
10
- p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
11
8
  /*
12
- border: 1px solid red;
13
- */
9
+ * AsciiDoc 'flask' theme for xhtml11 and html5 backends. A shameless knock-off
10
+ * of the Flask website styling (http://flask.pocoo.org/docs/).
11
+ *
12
+ * The implementation is straight-forward, consisting of the asciidoc.css file
13
+ * followed by theme specific overrides.
14
+ *
15
+ * */
16
+
17
+
18
+ /* Shared CSS for AsciiDoc xhtml11 and html5 backends */
19
+
20
+ /* Default font. */
21
+ body {
22
+ font-family: Georgia,serif;
23
+ }
24
+
25
+ /* Title font. */
26
+ h1, h2, h3, h4, h5, h6,
27
+ div.title, caption.title,
28
+ thead, p.table.header,
29
+ #toctitle,
30
+ #author, #revnumber, #revdate, #revremark,
31
+ #footer {
32
+ font-family: Arial,Helvetica,sans-serif;
14
33
  }
15
34
 
16
35
  body {
@@ -35,13 +54,8 @@ strong {
35
54
  color: #083194;
36
55
  }
37
56
 
38
- tt {
39
- color: navy;
40
- }
41
-
42
57
  h1, h2, h3, h4, h5, h6 {
43
58
  color: #527bbd;
44
- font-family: sans-serif;
45
59
  margin-top: 1.2em;
46
60
  margin-bottom: 0.5em;
47
61
  line-height: 1.3;
@@ -59,9 +73,11 @@ h3 {
59
73
  h3 + * {
60
74
  clear: left;
61
75
  }
76
+ h5 {
77
+ font-size: 1.0em;
78
+ }
62
79
 
63
80
  div.sectionbody {
64
- font-family: serif;
65
81
  margin-left: 0;
66
82
  }
67
83
 
@@ -77,45 +93,44 @@ p {
77
93
  ul, ol, li > p {
78
94
  margin-top: 0;
79
95
  }
96
+ ul > li { color: #aaa; }
97
+ ul > li > * { color: black; }
80
98
 
81
99
  pre {
82
100
  padding: 0;
83
101
  margin: 0;
84
102
  }
85
103
 
86
- span#author {
104
+ #author {
87
105
  color: #527bbd;
88
- font-family: sans-serif;
89
106
  font-weight: bold;
90
107
  font-size: 1.1em;
91
108
  }
92
- span#email {
109
+ #email {
93
110
  }
94
- span#revnumber, span#revdate, span#revremark {
95
- font-family: sans-serif;
111
+ #revnumber, #revdate, #revremark {
96
112
  }
97
113
 
98
- div#footer {
99
- font-family: sans-serif;
114
+ #footer {
100
115
  font-size: small;
101
116
  border-top: 2px solid silver;
102
117
  padding-top: 0.5em;
103
118
  margin-top: 4.0em;
104
119
  }
105
- div#footer-text {
120
+ #footer-text {
106
121
  float: left;
107
122
  padding-bottom: 0.5em;
108
123
  }
109
- div#footer-badges {
124
+ #footer-badges {
110
125
  float: right;
111
126
  padding-bottom: 0.5em;
112
127
  }
113
128
 
114
- div#preamble {
129
+ #preamble {
115
130
  margin-top: 1.5em;
116
131
  margin-bottom: 1.5em;
117
132
  }
118
- div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
133
+ div.imageblock, div.exampleblock, div.verseblock,
119
134
  div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
120
135
  div.admonitionblock {
121
136
  margin-top: 1.0em;
@@ -135,7 +150,6 @@ div.content { /* Block element content. */
135
150
  /* Block element titles. */
136
151
  div.title, caption.title {
137
152
  color: #527bbd;
138
- font-family: sans-serif;
139
153
  font-weight: bold;
140
154
  text-align: left;
141
155
  margin-top: 1.0em;
@@ -157,13 +171,15 @@ div.content + div.title {
157
171
 
158
172
  div.sidebarblock > div.content {
159
173
  background: #ffffee;
160
- border: 1px solid silver;
174
+ border: 1px solid #dddddd;
175
+ border-left: 4px solid #f0f0f0;
161
176
  padding: 0.5em;
162
177
  }
163
178
 
164
179
  div.listingblock > div.content {
165
- border: 1px solid silver;
166
- background: #f4f4f4;
180
+ border: 1px solid #dddddd;
181
+ border-left: 5px solid #f0f0f0;
182
+ background: #f8f8f8;
167
183
  padding: 0.5em;
168
184
  }
169
185
 
@@ -171,7 +187,7 @@ div.quoteblock, div.verseblock {
171
187
  padding-left: 1.0em;
172
188
  margin-left: 1.0em;
173
189
  margin-right: 10%;
174
- border-left: 5px solid #dddddd;
190
+ border-left: 5px solid #f0f0f0;
175
191
  color: #777777;
176
192
  }
177
193
 
@@ -182,6 +198,7 @@ div.quoteblock > div.attribution {
182
198
 
183
199
  div.verseblock > pre.content {
184
200
  font-family: inherit;
201
+ font-size: inherit;
185
202
  }
186
203
  div.verseblock > div.attribution {
187
204
  padding-top: 0.75em;
@@ -254,36 +271,12 @@ div.compact div, div.compact div {
254
271
  margin-bottom: 0.1em;
255
272
  }
256
273
 
257
- div.tableblock > table {
258
- border: 3px solid #527bbd;
259
- }
260
- thead, p.table.header {
261
- font-family: sans-serif;
262
- font-weight: bold;
263
- color: #527bbd;
264
- }
265
274
  tfoot {
266
275
  font-weight: bold;
267
276
  }
268
277
  td > div.verse {
269
278
  white-space: pre;
270
279
  }
271
- p.table {
272
- margin-top: 0;
273
- }
274
- /* Because the table frame attribute is overriden by CSS in most browsers. */
275
- div.tableblock > table[frame="void"] {
276
- border-style: none;
277
- }
278
- div.tableblock > table[frame="hsides"] {
279
- border-left-style: none;
280
- border-right-style: none;
281
- }
282
- div.tableblock > table[frame="vsides"] {
283
- border-top-style: none;
284
- border-bottom-style: none;
285
- }
286
-
287
280
 
288
281
  div.hdlist {
289
282
  margin-top: 0.8em;
@@ -350,16 +343,15 @@ div.colist td img {
350
343
  }
351
344
 
352
345
  @media print {
353
- div#footer-badges { display: none; }
346
+ #footer-badges { display: none; }
354
347
  }
355
348
 
356
- div#toc {
349
+ #toc {
357
350
  margin-bottom: 2.5em;
358
351
  }
359
352
 
360
- div#toctitle {
353
+ #toctitle {
361
354
  color: #527bbd;
362
- font-family: sans-serif;
363
355
  font-size: 1.1em;
364
356
  font-weight: bold;
365
357
  margin-top: 1.0em;
@@ -383,10 +375,223 @@ div.toclevel4 {
383
375
  font-size: 0.9em;
384
376
  }
385
377
 
378
+ span.aqua { color: aqua; }
379
+ span.black { color: black; }
380
+ span.blue { color: blue; }
381
+ span.fuchsia { color: fuchsia; }
382
+ span.gray { color: gray; }
383
+ span.green { color: green; }
384
+ span.lime { color: lime; }
385
+ span.maroon { color: maroon; }
386
+ span.navy { color: navy; }
387
+ span.olive { color: olive; }
388
+ span.purple { color: purple; }
389
+ span.red { color: red; }
390
+ span.silver { color: silver; }
391
+ span.teal { color: teal; }
392
+ span.white { color: white; }
393
+ span.yellow { color: yellow; }
394
+
395
+ span.aqua-background { background: aqua; }
396
+ span.black-background { background: black; }
397
+ span.blue-background { background: blue; }
398
+ span.fuchsia-background { background: fuchsia; }
399
+ span.gray-background { background: gray; }
400
+ span.green-background { background: green; }
401
+ span.lime-background { background: lime; }
402
+ span.maroon-background { background: maroon; }
403
+ span.navy-background { background: navy; }
404
+ span.olive-background { background: olive; }
405
+ span.purple-background { background: purple; }
406
+ span.red-background { background: red; }
407
+ span.silver-background { background: silver; }
408
+ span.teal-background { background: teal; }
409
+ span.white-background { background: white; }
410
+ span.yellow-background { background: yellow; }
411
+
412
+ span.big { font-size: 2em; }
413
+ span.small { font-size: 0.6em; }
414
+
415
+ span.underline { text-decoration: underline; }
416
+ span.overline { text-decoration: overline; }
417
+ span.line-through { text-decoration: line-through; }
418
+
419
+
420
+ /*
421
+ * xhtml11 specific
422
+ *
423
+ * */
424
+
425
+ tt {
426
+ font-family: monospace;
427
+ font-size: inherit;
428
+ color: navy;
429
+ }
430
+
431
+ div.tableblock {
432
+ margin-top: 1.0em;
433
+ margin-bottom: 1.5em;
434
+ }
435
+ div.tableblock > table {
436
+ border: 3px solid #527bbd;
437
+ }
438
+ thead, p.table.header {
439
+ font-weight: bold;
440
+ color: #527bbd;
441
+ }
442
+ p.table {
443
+ margin-top: 0;
444
+ }
445
+ /* Because the table frame attribute is overriden by CSS in most browsers. */
446
+ div.tableblock > table[frame="void"] {
447
+ border-style: none;
448
+ }
449
+ div.tableblock > table[frame="hsides"] {
450
+ border-left-style: none;
451
+ border-right-style: none;
452
+ }
453
+ div.tableblock > table[frame="vsides"] {
454
+ border-top-style: none;
455
+ border-bottom-style: none;
456
+ }
457
+
458
+
459
+ /*
460
+ * html5 specific
461
+ *
462
+ * */
463
+
464
+ .monospaced {
465
+ font-family: monospace;
466
+ font-size: inherit;
467
+ color: navy;
468
+ }
469
+
470
+ table.tableblock {
471
+ margin-top: 1.0em;
472
+ margin-bottom: 1.5em;
473
+ }
474
+ thead, p.tableblock.header {
475
+ font-weight: bold;
476
+ color: #527bbd;
477
+ }
478
+ p.tableblock {
479
+ margin-top: 0;
480
+ }
481
+ table.tableblock {
482
+ border-width: 3px;
483
+ border-spacing: 0px;
484
+ border-style: solid;
485
+ border-color: #527bbd;
486
+ border-collapse: collapse;
487
+ }
488
+ th.tableblock, td.tableblock {
489
+ border-width: 1px;
490
+ padding: 4px;
491
+ border-style: solid;
492
+ border-color: #527bbd;
493
+ }
494
+
495
+ table.tableblock.frame-topbot {
496
+ border-left-style: hidden;
497
+ border-right-style: hidden;
498
+ }
499
+ table.tableblock.frame-sides {
500
+ border-top-style: hidden;
501
+ border-bottom-style: hidden;
502
+ }
503
+ table.tableblock.frame-none {
504
+ border-style: hidden;
505
+ }
506
+
507
+ th.tableblock.halign-left, td.tableblock.halign-left {
508
+ text-align: left;
509
+ }
510
+ th.tableblock.halign-center, td.tableblock.halign-center {
511
+ text-align: center;
512
+ }
513
+ th.tableblock.halign-right, td.tableblock.halign-right {
514
+ text-align: right;
515
+ }
516
+
517
+ th.tableblock.valign-top, td.tableblock.valign-top {
518
+ vertical-align: top;
519
+ }
520
+ th.tableblock.valign-middle, td.tableblock.valign-middle {
521
+ vertical-align: middle;
522
+ }
523
+ th.tableblock.valign-bottom, td.tableblock.valign-bottom {
524
+ vertical-align: bottom;
525
+ }
526
+
527
+
528
+ /*
529
+ * Theme specific overrides of the preceding (asciidoc.css) CSS.
530
+ *
531
+ */
532
+ body {
533
+ font-family: Garamond, Georgia, serif;
534
+ font-size: 17px;
535
+ color: #3E4349;
536
+ line-height: 1.3em;
537
+ }
538
+ h1, h2, h3, h4, h5, h6,
539
+ div.title, caption.title,
540
+ thead, p.table.header,
541
+ #toctitle,
542
+ #author, #revnumber, #revdate, #revremark,
543
+ #footer {
544
+ font-family: Garmond, Georgia, serif;
545
+ font-weight: normal;
546
+ border-bottom-width: 0;
547
+ color: #3E4349;
548
+ }
549
+ div.title, caption.title { color: #596673; font-weight: bold; }
550
+ h1 { font-size: 240%; }
551
+ h2 { font-size: 180%; }
552
+ h3 { font-size: 150%; }
553
+ h4 { font-size: 130%; }
554
+ h5 { font-size: 100%; }
555
+ h6 { font-size: 100%; }
556
+ #header h1 { margin-top: 0; }
557
+ #toc {
558
+ color: #444444;
559
+ line-height: 1.5;
560
+ padding-top: 1.5em;
561
+ }
562
+ #toctitle {
563
+ font-size: 20px;
564
+ }
565
+ #toc a {
566
+ border-bottom: 1px dotted #999999;
567
+ color: #444444 !important;
568
+ text-decoration: none !important;
569
+ }
570
+ #toc a:hover {
571
+ border-bottom: 1px solid #6D4100;
572
+ color: #6D4100 !important;
573
+ text-decoration: none !important;
574
+ }
575
+ div.toclevel1 { margin-top: 0.2em; font-size: 16px; }
576
+ div.toclevel2 { margin-top: 0.15em; font-size: 14px; }
577
+ em, dt, td.hdlist1 { color: black; }
578
+ strong { color: #3E4349; }
579
+ a { color: #004B6B; text-decoration: none; border-bottom: 1px dotted #004B6B; }
580
+ a:visited { color: #615FA0; border-bottom: 1px dotted #615FA0; }
581
+ a:hover { color: #6D4100; border-bottom: 1px solid #6D4100; }
582
+ div.tableblock > table, table.tableblock { border: 3px solid #E8E8E8; }
583
+ th.tableblock, td.tableblock { border: 1px solid #E8E8E8; }
584
+ ul > li > * { color: #3E4349; }
585
+ pre, tt, .monospaced { font-family: Consolas,Menlo,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace; }
586
+ tt, .monospaced { font-size: 0.9em; color: black;
587
+ }
588
+ div.exampleblock > div.content, div.sidebarblock > div.content, div.listingblock > div.content { border-width: 0 0 0 3px; border-color: #E8E8E8; }
589
+ div.verseblock { border-left-width: 0; margin-left: 3em; }
590
+ div.quoteblock { border-left-width: 3px; margin-left: 0; margin-right: 0;}
591
+ div.admonitionblock td.content { border-left: 3px solid #E8E8E8; }
386
592
  </style>
387
593
  <script type="text/javascript">
388
594
  /*<![CDATA[*/
389
- window.onload = function(){asciidoc.footnotes(); asciidoc.toc(3);}
390
595
  var asciidoc = { // Namespace.
391
596
 
392
597
  /////////////////////////////////////////////////////////////////////
@@ -448,6 +653,25 @@ toc: function (toclevels) {
448
653
  }
449
654
 
450
655
  var toc = document.getElementById("toc");
656
+ if (!toc) {
657
+ return;
658
+ }
659
+
660
+ // Delete existing TOC entries in case we're reloading the TOC.
661
+ var tocEntriesToRemove = [];
662
+ var i;
663
+ for (i = 0; i < toc.childNodes.length; i++) {
664
+ var entry = toc.childNodes[i];
665
+ if (entry.nodeName == 'DIV'
666
+ && entry.getAttribute("class")
667
+ && entry.getAttribute("class").match(/^toclevel/))
668
+ tocEntriesToRemove.push(entry);
669
+ }
670
+ for (i = 0; i < tocEntriesToRemove.length; i++) {
671
+ toc.removeChild(tocEntriesToRemove[i]);
672
+ }
673
+
674
+ // Rebuild TOC entries.
451
675
  var entries = tocEntries(document.getElementById("content"), toclevels);
452
676
  for (var i = 0; i < entries.length; ++i) {
453
677
  var entry = entries[i];
@@ -475,24 +699,44 @@ toc: function (toclevels) {
475
699
  */
476
700
 
477
701
  footnotes: function () {
478
- var cont = document.getElementById("content");
702
+ // Delete existing footnote entries in case we're reloading the footnodes.
703
+ var i;
479
704
  var noteholder = document.getElementById("footnotes");
705
+ if (!noteholder) {
706
+ return;
707
+ }
708
+ var entriesToRemove = [];
709
+ for (i = 0; i < noteholder.childNodes.length; i++) {
710
+ var entry = noteholder.childNodes[i];
711
+ if (entry.nodeName == 'DIV' && entry.getAttribute("class") == "footnote")
712
+ entriesToRemove.push(entry);
713
+ }
714
+ for (i = 0; i < entriesToRemove.length; i++) {
715
+ noteholder.removeChild(entriesToRemove[i]);
716
+ }
717
+
718
+ // Rebuild footnote entries.
719
+ var cont = document.getElementById("content");
480
720
  var spans = cont.getElementsByTagName("span");
481
721
  var refs = {};
482
722
  var n = 0;
483
723
  for (i=0; i<spans.length; i++) {
484
724
  if (spans[i].className == "footnote") {
485
725
  n++;
486
- // Use [\s\S] in place of . so multi-line matches work.
487
- // Because JavaScript has no s (dotall) regex flag.
488
- note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
726
+ var note = spans[i].getAttribute("data-note");
727
+ if (!note) {
728
+ // Use [\s\S] in place of . so multi-line matches work.
729
+ // Because JavaScript has no s (dotall) regex flag.
730
+ note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
731
+ spans[i].innerHTML =
732
+ "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
733
+ "' title='View footnote' class='footnote'>" + n + "</a>]";
734
+ spans[i].setAttribute("data-note", note);
735
+ }
489
736
  noteholder.innerHTML +=
490
737
  "<div class='footnote' id='_footnote_" + n + "'>" +
491
738
  "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
492
739
  n + "</a>. " + note + "</div>";
493
- spans[i].innerHTML =
494
- "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
495
- "' title='View footnote' class='footnote'>" + n + "</a>]";
496
740
  var id =spans[i].getAttribute("id");
497
741
  if (id != null) refs["#"+id] = n;
498
742
  }
@@ -512,9 +756,32 @@ footnotes: function () {
512
756
  }
513
757
  }
514
758
  }
759
+ },
760
+
761
+ install: function(toclevels) {
762
+ var timerId;
763
+
764
+ function reinstall() {
765
+ asciidoc.footnotes();
766
+ if (toclevels) {
767
+ asciidoc.toc(toclevels);
768
+ }
769
+ }
770
+
771
+ function reinstallAndRemoveTimer() {
772
+ clearInterval(timerId);
773
+ reinstall();
774
+ }
775
+
776
+ timerId = setInterval(reinstall, 500);
777
+ if (document.addEventListener)
778
+ document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
779
+ else
780
+ window.onload = reinstallAndRemoveTimer;
515
781
  }
516
782
 
517
783
  }
784
+ asciidoc.install(3);
518
785
  /*]]>*/
519
786
  </script>
520
787
  </head>
@@ -550,7 +817,7 @@ to exit. This does not necessarily mean that the web application speaks HTTP
550
817
  directly: it just means that the web application accepts some kind of
551
818
  representation of an HTTP request.</p></div>
552
819
  <div class="paragraph"><p><span class="image">
553
- <img src="images/typical_isolated_web_application.png" alt="Architecture of a typical web application in isolation" />
820
+ <img src="images/typical_isolated_web_application.png" alt="Architecture of a typical web application in isolation">
554
821
  </span></p></div>
555
822
  <div class="paragraph"><p>Few web applications are accessible directly by HTTP clients. Common setups
556
823
  are:</p></div>
@@ -605,8 +872,8 @@ considered to be a single entity; a black box if you will.</p></div>
605
872
  <div class="paragraph"><p>It should also be noted that these setups do not enforce any particular
606
873
  I/O processing implementation. The web servers, application servers, web
607
874
  applications, etc. could process I/O serially (i.e. one request at a time),
608
- could multiplex I/O with a single thread (e.g. by using <tt>select(2)</tt> or
609
- <tt>poll(2)</tt>) or it could process I/O with multiple threads and/or multiple
875
+ could multiplex I/O with a single thread (e.g. by using <span class="monospaced">select(2)</span> or
876
+ <span class="monospaced">poll(2)</span>) or it could process I/O with multiple threads and/or multiple
610
877
  processes.</p></div>
611
878
  <div class="paragraph"><p>Of course, there are many variations possible. For example, load balancers
612
879
  could be used. But that is outside the scope of this document.</p></div>
@@ -656,7 +923,7 @@ The next section contains a diagram which shows the prefork MPM&#8217;s architec
656
923
  Passenger extends Apache and allows it to act like an application server.
657
924
  Passenger&#8217;s architecture&#8201;&#8212;&#8201;assuming Apache 2 with the prefork MPM is used&#8201;&#8212;&#8201;is shown in the following diagram:</p></div>
658
925
  <div class="paragraph"><p><span class="image">
659
- <img src="images/passenger_architecture.png" alt="Passenger&#8217;s architecture" />
926
+ <img src="images/passenger_architecture.png" alt="Passenger&#8217;s architecture">
660
927
  </span></p></div>
661
928
  <div class="paragraph"><p>Passenger consists of an Apache module, <em>mod_passenger</em>. This is written in
662
929
  C++, and can be found in the directory <em>ext/apache2</em>. The module is active in
@@ -737,8 +1004,8 @@ worker process will communicate directly with the Rails application.</p></div>
737
1004
  <div class="paragraph"><p>The application pool is implemented inside <em>mod_passenger</em>. One can find
738
1005
  detailed documentation about it in
739
1006
  <a href="cxxapi/index.html">the C++ API documentation</a>,
740
- in particular the documentation about the <tt>ApplicationPool</tt>,
741
- <tt>StandardApplicationPool</tt> and <tt>ApplicationPoolServer</tt> classes.</p></div>
1007
+ in particular the documentation about the <span class="monospaced">ApplicationPool</span>,
1008
+ <span class="monospaced">StandardApplicationPool</span> and <span class="monospaced">ApplicationPoolServer</span> classes.</p></div>
742
1009
  <div class="paragraph"><p>The application pool is responsible for spawning applications, caching
743
1010
  spawned applications' handles, and cleaning up applications which have been
744
1011
  idle for an extended period of time.</p></div>
@@ -780,7 +1047,7 @@ implementation in detail.</p></div>
780
1047
  </li>
781
1048
  </ol></div>
782
1049
  <div class="paragraph"><p><span class="image">
783
- <img src="images/spawn_server_architecture.png" alt="The spawn server&#8217;s architecture" />
1050
+ <img src="images/spawn_server_architecture.png" alt="The spawn server&#8217;s architecture">
784
1051
  </span></p></div>
785
1052
  <div class="paragraph"><p>As you can see, we have two layers of code caching: when the spawn server
786
1053
  receives a request to spawn a new application instance, it will forward the
@@ -815,7 +1082,7 @@ memory usage.</p></div>
815
1082
  <div class="admonitionblock">
816
1083
  <table><tr>
817
1084
  <td class="icon">
818
- <img src="./images/icons/note.png" alt="Note" />
1085
+ <img src="./images/icons/note.png" alt="Note">
819
1086
  </td>
820
1087
  <td class="content">
821
1088
  <div class="paragraph"><p>Sharing memory only works if <a href="http://www.rubyenterpriseedition.com/">Ruby
@@ -876,13 +1143,13 @@ algorithm, which is non-trivial. The algorithm is documented in detail in
876
1143
  Attribution-Share Alike 3.0 Unported License</a>.</p></div>
877
1144
  <div class="paragraph"><p><span class="image">
878
1145
  <a class="image" href="link:http://creativecommons.org/licenses/by-sa/3.0/">
879
- <img src="images/by_sa.png" alt="images/by_sa.png" />
1146
+ <img src="images/by_sa.png" alt="images/by_sa.png">
880
1147
  </a>
881
1148
  </span></p></div>
882
1149
  </div>
883
1150
  </div>
884
1151
  </div>
885
- <div id="footnotes"><hr /></div>
1152
+ <div id="footnotes"><hr></div>
886
1153
  <div id="footer">
887
1154
  <div id="footer-text">
888
1155
  Last updated 2010-09-25 20:09:08 CEST