mongrel_esi 0.5.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +10 -9
- data/doc/rdoc/classes/ESI/Cache.html +10 -10
- data/doc/rdoc/classes/ESI/Cache.src/{M000085.html → M000087.html} +0 -0
- data/doc/rdoc/classes/ESI/Cache.src/{M000086.html → M000088.html} +0 -0
- data/doc/rdoc/classes/ESI/Config.html +43 -62
- data/doc/rdoc/classes/ESI/Config.src/M000049.html +18 -0
- data/doc/rdoc/classes/ESI/Config.src/{M000059.html → M000050.html} +5 -5
- data/doc/rdoc/classes/ESI/Config.src/M000051.html +35 -0
- data/doc/rdoc/classes/ESI/Config.src/M000052.html +27 -5
- data/doc/rdoc/classes/ESI/Config.src/M000053.html +10 -5
- data/doc/rdoc/classes/ESI/Config.src/M000054.html +5 -22
- data/doc/rdoc/classes/ESI/Config.src/M000055.html +7 -25
- data/doc/rdoc/classes/ESI/Config.src/M000056.html +11 -10
- data/doc/rdoc/classes/ESI/Config/CacheConfig.html +25 -25
- data/doc/rdoc/classes/ESI/Config/CacheConfig.src/{M000068.html → M000060.html} +6 -5
- data/doc/rdoc/classes/ESI/Config/CacheConfig.src/{M000065.html → M000061.html} +5 -5
- data/doc/rdoc/classes/ESI/Config/CacheConfig.src/{M000066.html → M000062.html} +4 -4
- data/doc/rdoc/classes/ESI/Config/CacheConfig.src/{M000067.html → M000063.html} +4 -4
- data/doc/rdoc/classes/ESI/Config/CacheConfig.src/M000064.html +5 -6
- data/doc/rdoc/classes/ESI/Config/ConfigRouter.html +15 -15
- data/doc/rdoc/classes/ESI/Config/ConfigRouter.src/{M000061.html → M000057.html} +5 -5
- data/doc/rdoc/classes/ESI/Config/ConfigRouter.src/{M000062.html → M000058.html} +7 -7
- data/doc/rdoc/classes/ESI/Config/ConfigRouter.src/{M000063.html → M000059.html} +7 -7
- data/doc/rdoc/classes/ESI/Dispatcher.html +17 -15
- data/doc/rdoc/classes/ESI/Dispatcher.src/{M000087.html → M000092.html} +4 -7
- data/doc/rdoc/classes/ESI/Dispatcher.src/M000093.html +27 -0
- data/doc/rdoc/classes/ESI/Fragment.html +15 -15
- data/doc/rdoc/classes/ESI/Fragment.src/{M000100.html → M000111.html} +0 -0
- data/doc/rdoc/classes/ESI/Fragment.src/{M000101.html → M000112.html} +0 -0
- data/doc/rdoc/classes/ESI/Fragment.src/{M000102.html → M000113.html} +0 -0
- data/doc/rdoc/classes/ESI/MemcachedCache.html +46 -46
- data/doc/rdoc/classes/ESI/MemcachedCache.src/M000037.html +24 -0
- data/doc/rdoc/classes/ESI/MemcachedCache.src/M000038.html +22 -0
- data/doc/rdoc/classes/ESI/MemcachedCache.src/M000039.html +19 -0
- data/doc/rdoc/classes/ESI/MemcachedCache.src/M000040.html +10 -11
- data/doc/rdoc/classes/ESI/MemcachedCache.src/M000041.html +5 -9
- data/doc/rdoc/classes/ESI/MemcachedCache.src/M000042.html +6 -6
- data/doc/rdoc/classes/ESI/MemcachedCache.src/M000043.html +5 -10
- data/doc/rdoc/classes/ESI/MemcachedCache.src/M000044.html +5 -5
- data/doc/rdoc/classes/ESI/MemcachedCache.src/M000045.html +4 -6
- data/doc/rdoc/classes/ESI/OutputAdapter.html +204 -0
- data/doc/rdoc/classes/ESI/OutputAdapter.src/M000094.html +37 -0
- data/doc/rdoc/classes/ESI/OutputAdapter.src/M000095.html +18 -0
- data/doc/rdoc/classes/ESI/OutputAdapter.src/M000096.html +18 -0
- data/doc/rdoc/classes/ESI/OutputAdapter.src/M000097.html +18 -0
- data/doc/rdoc/classes/ESI/Parser.html +15 -15
- data/doc/rdoc/classes/ESI/Parser.src/{M000049.html → M000065.html} +0 -0
- data/doc/rdoc/classes/ESI/Parser.src/{M000050.html → M000066.html} +0 -0
- data/doc/rdoc/classes/ESI/Parser.src/{M000051.html → M000067.html} +0 -0
- data/doc/rdoc/classes/ESI/Processor.html +15 -15
- data/doc/rdoc/classes/ESI/Processor.src/{M000037.html → M000046.html} +0 -0
- data/doc/rdoc/classes/ESI/Processor.src/{M000038.html → M000047.html} +1 -1
- data/doc/rdoc/classes/ESI/Processor.src/{M000039.html → M000048.html} +0 -0
- data/doc/rdoc/classes/ESI/Proxy.html +48 -48
- data/doc/rdoc/classes/ESI/Proxy.src/M000071.html +7 -40
- data/doc/rdoc/classes/ESI/Proxy.src/M000072.html +50 -12
- data/doc/rdoc/classes/ESI/Proxy.src/M000073.html +49 -6
- data/doc/rdoc/classes/ESI/Proxy.src/M000074.html +11 -14
- data/doc/rdoc/classes/ESI/Proxy.src/M000075.html +6 -5
- data/doc/rdoc/classes/ESI/Proxy.src/M000076.html +9 -15
- data/doc/rdoc/classes/ESI/Proxy.src/M000077.html +5 -16
- data/doc/rdoc/classes/ESI/Proxy.src/M000078.html +28 -0
- data/doc/rdoc/classes/ESI/Proxy.src/M000079.html +29 -0
- data/doc/rdoc/classes/ESI/RackAdapter.html +214 -0
- data/doc/rdoc/classes/ESI/RackAdapter.src/M000068.html +18 -0
- data/doc/rdoc/classes/ESI/RackAdapter.src/M000069.html +34 -0
- data/doc/rdoc/classes/ESI/{MemcachedCache.src/M000048.html → RackAdapter.src/M000070.html} +4 -4
- data/doc/rdoc/classes/ESI/RackConfig.html +173 -0
- data/doc/rdoc/classes/ESI/RackConfig.src/M000089.html +28 -0
- data/doc/rdoc/classes/ESI/RackConfig.src/M000090.html +18 -0
- data/doc/rdoc/classes/ESI/RackConfig.src/M000091.html +20 -0
- data/doc/rdoc/classes/ESI/Request.html +158 -0
- data/doc/rdoc/classes/ESI/{MemcachedCache.src/M000046.html → Request.src/M000098.html} +5 -5
- data/doc/rdoc/classes/ESI/Request.src/M000099.html +18 -0
- data/doc/rdoc/classes/ESI/Response.html +36 -36
- data/doc/rdoc/classes/ESI/Response.src/M000080.html +10 -8
- data/doc/rdoc/classes/ESI/Response.src/M000081.html +5 -7
- data/doc/rdoc/classes/ESI/Response.src/M000082.html +8 -12
- data/doc/rdoc/classes/ESI/Response.src/M000083.html +7 -5
- data/doc/rdoc/classes/ESI/Response.src/M000084.html +12 -20
- data/doc/rdoc/classes/ESI/Response.src/{M000079.html → M000085.html} +5 -5
- data/doc/rdoc/classes/ESI/Response.src/M000086.html +33 -0
- data/doc/rdoc/classes/ESI/Router.html +10 -10
- data/doc/rdoc/classes/ESI/Router.src/{M000098.html → M000109.html} +0 -0
- data/doc/rdoc/classes/ESI/Router.src/{M000099.html → M000110.html} +0 -0
- data/doc/rdoc/classes/ESI/RubyCache.html +45 -45
- data/doc/rdoc/classes/ESI/RubyCache.src/{M000089.html → M000100.html} +6 -6
- data/doc/rdoc/classes/ESI/RubyCache.src/{M000090.html → M000101.html} +6 -6
- data/doc/rdoc/classes/ESI/RubyCache.src/{M000091.html → M000102.html} +6 -6
- data/doc/rdoc/classes/ESI/RubyCache.src/{M000092.html → M000103.html} +8 -8
- data/doc/rdoc/classes/ESI/RubyCache.src/{M000093.html → M000104.html} +4 -4
- data/doc/rdoc/classes/ESI/RubyCache.src/{M000094.html → M000105.html} +8 -8
- data/doc/rdoc/classes/ESI/RubyCache.src/{M000095.html → M000106.html} +4 -4
- data/doc/rdoc/classes/ESI/RubyCache.src/{M000096.html → M000107.html} +4 -4
- data/doc/rdoc/classes/ESI/RubyCache.src/{M000097.html → M000108.html} +4 -4
- data/doc/rdoc/classes/ESI/Tag.html +8 -8
- data/doc/rdoc/created.rid +1 -1
- data/doc/rdoc/files/COPYING.html +1 -1
- data/doc/rdoc/files/LICENSE.html +1 -1
- data/doc/rdoc/files/README.html +12 -10
- data/doc/rdoc/files/ext/esi/common_rl.html +1 -1
- data/doc/rdoc/files/ext/esi/esi_parser_c.html +1 -1
- data/doc/rdoc/files/ext/esi/parser_c.html +1 -1
- data/doc/rdoc/files/ext/esi/parser_h.html +1 -1
- data/doc/rdoc/files/ext/esi/parser_rl.html +122 -82
- data/doc/rdoc/files/ext/esi/test/test_c.html +1 -1
- data/doc/rdoc/files/lib/esi/cache_rb.html +2 -1
- data/doc/rdoc/files/lib/esi/config_rb.html +2 -1
- data/doc/rdoc/files/lib/esi/dispatcher_rb.html +3 -1
- data/doc/rdoc/files/lib/esi/invalidator_rb.html +1 -1
- data/doc/rdoc/files/lib/esi/logger_rb.html +1 -1
- data/doc/rdoc/files/lib/esi/parser_rb.html +1 -1
- data/doc/rdoc/files/lib/esi/processor_rb.html +1 -1
- data/doc/rdoc/files/lib/esi/proxy_rb.html +2 -2
- data/doc/rdoc/files/{ext/esi/test/parser_c.html → lib/esi/rack_adapter_rb.html} +21 -5
- data/doc/rdoc/files/lib/esi/response_rb.html +1 -1
- data/doc/rdoc/files/lib/esi/router_rb.html +1 -1
- data/doc/rdoc/files/lib/esi/tag/attempt_rb.html +1 -1
- data/doc/rdoc/files/lib/esi/tag/base_rb.html +1 -1
- data/doc/rdoc/files/lib/esi/tag/container_rb.html +1 -1
- data/doc/rdoc/files/lib/esi/tag/except_rb.html +1 -1
- data/doc/rdoc/files/lib/esi/tag/include_rb.html +1 -1
- data/doc/rdoc/files/lib/esi/tag/invalidate_rb.html +1 -1
- data/doc/rdoc/files/lib/esi/tag/try_rb.html +1 -1
- data/doc/rdoc/files/lib/esi/version_rb.html +1 -1
- data/doc/rdoc/files/lib/multi_dirhandler_rb.html +1 -1
- data/doc/rdoc/fr_class_index.html +4 -0
- data/doc/rdoc/fr_file_index.html +1 -5
- data/doc/rdoc/fr_method_index.html +87 -76
- data/ext/esi/esi_parser.c +2 -2
- data/ext/esi/parser.c +133 -107
- data/ext/esi/parser.h +9 -4
- data/ext/esi/parser.rl +99 -73
- data/ext/esi/test/test.c +11 -6
- data/lib/esi/cache.rb +7 -3
- data/lib/esi/config.rb +4 -8
- data/lib/esi/dispatcher.rb +14 -5
- data/lib/esi/processor.rb +1 -1
- data/lib/esi/proxy.rb +58 -48
- data/lib/esi/rack_adapter.rb +97 -0
- data/lib/esi/response.rb +30 -1
- data/lib/esi/version.rb +1 -1
- data/test/bench-plot.rb +31 -0
- data/test/benchmarks/csv-perf-serial0.4 +101 -0
- data/test/benchmarks/csv-perf-trunk +101 -0
- data/test/benchmarks/perf-serial0.4-n1000-c1.csv +101 -0
- data/test/benchmarks/perf-serial0.4-n1000-c2.csv +101 -0
- data/test/benchmarks/perf-serial0.4-n1000-c3.csv +101 -0
- data/test/benchmarks/perf-serial0.4-n1000-c4.csv +101 -0
- data/test/benchmarks/perf-serial0.4-n1000-c5.csv +101 -0
- data/test/benchmarks/perf-serial0.4-n1000-c6.csv +101 -0
- data/test/benchmarks/perf-serial0.4-n1000-c7.csv +101 -0
- data/test/benchmarks/perf-trunk-n1000-c1.csv +101 -0
- data/test/benchmarks/perf-trunk-n1000-c2.csv +101 -0
- data/test/benchmarks/perf-trunk-n1000-c3.csv +101 -0
- data/test/benchmarks/perf-trunk-n1000-c4.csv +101 -0
- data/test/benchmarks/perf-trunk-n1000-c5.csv +101 -0
- data/test/benchmarks/perf-trunk-n1000-c6.csv +101 -0
- data/test/benchmarks/perf-trunk-n1000-c7.csv +101 -0
- data/test/load_test.rb +5 -2
- data/test/load_test_ab.rb +9 -4
- metadata +261 -227
- data/doc/rdoc/classes/ESI/Config.src/M000057.html +0 -18
- data/doc/rdoc/classes/ESI/Config.src/M000058.html +0 -20
- data/doc/rdoc/classes/ESI/Config.src/M000060.html +0 -24
- data/doc/rdoc/classes/ESI/Dispatcher.src/M000088.html +0 -18
- data/doc/rdoc/classes/ESI/MemcachedCache.src/M000047.html +0 -18
- data/doc/rdoc/classes/ESI/Proxy.src/M000069.html +0 -20
- data/doc/rdoc/classes/ESI/Proxy.src/M000070.html +0 -55
- data/doc/rdoc/classes/ESI/Response.src/M000078.html +0 -23
- data/doc/rdoc/files/ext/esi/test/common_rl.html +0 -160
- data/doc/rdoc/files/ext/esi/test/parser_h.html +0 -101
- data/doc/rdoc/files/ext/esi/test/parser_rl.html +0 -827
- data/doc/rdoc/files/ext/esi/test/sp_c.html +0 -101
- data/ext/esi/test/common.rl +0 -46
- data/ext/esi/test/parser.c +0 -1875
- data/ext/esi/test/parser.h +0 -120
- data/ext/esi/test/parser.rl +0 -585
- data/ext/esi/test/sp.c +0 -125
|
File without changes
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
47: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">"\n#{e.message}: #{e.backtrace.join("\n")}\n"</span>
|
|
39
39
|
48: <span class="ruby-keyword kw">ensure</span>
|
|
40
40
|
49: <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">write</span>( <span class="ruby-value str">"0\r\n\r\n"</span> )
|
|
41
|
-
50: <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">done</span> = <span class="ruby-keyword kw">true</span>
|
|
41
|
+
50: <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">done</span> = <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:done</span>)
|
|
42
42
|
51: <span class="ruby-keyword kw">end</span></pre>
|
|
43
43
|
</body>
|
|
44
44
|
</html>
|
|
File without changes
|
|
@@ -86,15 +86,15 @@
|
|
|
86
86
|
<h3 class="section-bar">Methods</h3>
|
|
87
87
|
|
|
88
88
|
<div class="name-list">
|
|
89
|
-
<a href="#
|
|
90
|
-
<a href="#
|
|
91
|
-
<a href="#
|
|
92
|
-
<a href="#
|
|
93
|
-
<a href="#
|
|
94
|
-
<a href="#
|
|
95
|
-
<a href="#
|
|
96
|
-
<a href="#
|
|
97
|
-
<a href="#
|
|
89
|
+
<a href="#M000079">copy_headers</a>
|
|
90
|
+
<a href="#M000078">http_params</a>
|
|
91
|
+
<a href="#M000071">new</a>
|
|
92
|
+
<a href="#M000072">process</a>
|
|
93
|
+
<a href="#M000074">proxy_direct</a>
|
|
94
|
+
<a href="#M000075">proxy_filter_esi</a>
|
|
95
|
+
<a href="#M000077">read_status</a>
|
|
96
|
+
<a href="#M000076">send_esi_buffered</a>
|
|
97
|
+
<a href="#M000073">send_response</a>
|
|
98
98
|
</div>
|
|
99
99
|
</div>
|
|
100
100
|
|
|
@@ -159,12 +159,12 @@
|
|
|
159
159
|
<div id="methods">
|
|
160
160
|
<h3 class="section-bar">Public Class methods</h3>
|
|
161
161
|
|
|
162
|
-
<div id="method-
|
|
163
|
-
<a name="
|
|
162
|
+
<div id="method-M000071" class="method-detail">
|
|
163
|
+
<a name="M000071"></a>
|
|
164
164
|
|
|
165
165
|
<div class="method-heading">
|
|
166
|
-
<a href="Proxy.src/
|
|
167
|
-
onclick="popupCode('Proxy.src/
|
|
166
|
+
<a href="Proxy.src/M000071.html" target="Code" class="method-signature"
|
|
167
|
+
onclick="popupCode('Proxy.src/M000071.html');return false;">
|
|
168
168
|
<span class="method-name">new</span><span class="method-args">( config )</span>
|
|
169
169
|
</a>
|
|
170
170
|
</div>
|
|
@@ -175,13 +175,13 @@
|
|
|
175
175
|
|
|
176
176
|
<h3 class="section-bar">Public Instance methods</h3>
|
|
177
177
|
|
|
178
|
-
<div id="method-
|
|
179
|
-
<a name="
|
|
178
|
+
<div id="method-M000072" class="method-detail">
|
|
179
|
+
<a name="M000072"></a>
|
|
180
180
|
|
|
181
181
|
<div class="method-heading">
|
|
182
|
-
<a href="Proxy.src/
|
|
183
|
-
onclick="popupCode('Proxy.src/
|
|
184
|
-
<span class="method-name">process</span><span class="method-args">(request, response)</span>
|
|
182
|
+
<a href="Proxy.src/M000072.html" target="Code" class="method-signature"
|
|
183
|
+
onclick="popupCode('Proxy.src/M000072.html');return false;">
|
|
184
|
+
<span class="method-name">process</span><span class="method-args">(url, request, response)</span>
|
|
185
185
|
</a>
|
|
186
186
|
</div>
|
|
187
187
|
|
|
@@ -191,12 +191,12 @@
|
|
|
191
191
|
|
|
192
192
|
<h3 class="section-bar">Protected Instance methods</h3>
|
|
193
193
|
|
|
194
|
-
<div id="method-
|
|
195
|
-
<a name="
|
|
194
|
+
<div id="method-M000079" class="method-detail">
|
|
195
|
+
<a name="M000079"></a>
|
|
196
196
|
|
|
197
197
|
<div class="method-heading">
|
|
198
|
-
<a href="Proxy.src/
|
|
199
|
-
onclick="popupCode('Proxy.src/
|
|
198
|
+
<a href="Proxy.src/M000079.html" target="Code" class="method-signature"
|
|
199
|
+
onclick="popupCode('Proxy.src/M000079.html');return false;">
|
|
200
200
|
<span class="method-name">copy_headers</span><span class="method-args">(response)</span>
|
|
201
201
|
</a>
|
|
202
202
|
</div>
|
|
@@ -205,12 +205,12 @@
|
|
|
205
205
|
</div>
|
|
206
206
|
</div>
|
|
207
207
|
|
|
208
|
-
<div id="method-
|
|
209
|
-
<a name="
|
|
208
|
+
<div id="method-M000078" class="method-detail">
|
|
209
|
+
<a name="M000078"></a>
|
|
210
210
|
|
|
211
211
|
<div class="method-heading">
|
|
212
|
-
<a href="Proxy.src/
|
|
213
|
-
onclick="popupCode('Proxy.src/
|
|
212
|
+
<a href="Proxy.src/M000078.html" target="Code" class="method-signature"
|
|
213
|
+
onclick="popupCode('Proxy.src/M000078.html');return false;">
|
|
214
214
|
<span class="method-name">http_params</span><span class="method-args">(params)</span>
|
|
215
215
|
</a>
|
|
216
216
|
</div>
|
|
@@ -219,13 +219,13 @@
|
|
|
219
219
|
</div>
|
|
220
220
|
</div>
|
|
221
221
|
|
|
222
|
-
<div id="method-
|
|
223
|
-
<a name="
|
|
222
|
+
<div id="method-M000074" class="method-detail">
|
|
223
|
+
<a name="M000074"></a>
|
|
224
224
|
|
|
225
225
|
<div class="method-heading">
|
|
226
|
-
<a href="Proxy.src/
|
|
227
|
-
onclick="popupCode('Proxy.src/
|
|
228
|
-
<span class="method-name">proxy_direct</span><span class="method-args">( http_response,
|
|
226
|
+
<a href="Proxy.src/M000074.html" target="Code" class="method-signature"
|
|
227
|
+
onclick="popupCode('Proxy.src/M000074.html');return false;">
|
|
228
|
+
<span class="method-name">proxy_direct</span><span class="method-args">( http_response, proxy_response )</span>
|
|
229
229
|
</a>
|
|
230
230
|
</div>
|
|
231
231
|
|
|
@@ -233,12 +233,12 @@
|
|
|
233
233
|
</div>
|
|
234
234
|
</div>
|
|
235
235
|
|
|
236
|
-
<div id="method-
|
|
237
|
-
<a name="
|
|
236
|
+
<div id="method-M000075" class="method-detail">
|
|
237
|
+
<a name="M000075"></a>
|
|
238
238
|
|
|
239
239
|
<div class="method-heading">
|
|
240
|
-
<a href="Proxy.src/
|
|
241
|
-
onclick="popupCode('Proxy.src/
|
|
240
|
+
<a href="Proxy.src/M000075.html" target="Code" class="method-signature"
|
|
241
|
+
onclick="popupCode('Proxy.src/M000075.html');return false;">
|
|
242
242
|
<span class="method-name">proxy_filter_esi</span><span class="method-args">( http_request, http_response, http_params, proxy_response )</span>
|
|
243
243
|
</a>
|
|
244
244
|
</div>
|
|
@@ -247,12 +247,12 @@
|
|
|
247
247
|
</div>
|
|
248
248
|
</div>
|
|
249
249
|
|
|
250
|
-
<div id="method-
|
|
251
|
-
<a name="
|
|
250
|
+
<div id="method-M000077" class="method-detail">
|
|
251
|
+
<a name="M000077"></a>
|
|
252
252
|
|
|
253
253
|
<div class="method-heading">
|
|
254
|
-
<a href="Proxy.src/
|
|
255
|
-
onclick="popupCode('Proxy.src/
|
|
254
|
+
<a href="Proxy.src/M000077.html" target="Code" class="method-signature"
|
|
255
|
+
onclick="popupCode('Proxy.src/M000077.html');return false;">
|
|
256
256
|
<span class="method-name">read_status</span><span class="method-args">(response)</span>
|
|
257
257
|
</a>
|
|
258
258
|
</div>
|
|
@@ -261,13 +261,13 @@
|
|
|
261
261
|
</div>
|
|
262
262
|
</div>
|
|
263
263
|
|
|
264
|
-
<div id="method-
|
|
265
|
-
<a name="
|
|
264
|
+
<div id="method-M000076" class="method-detail">
|
|
265
|
+
<a name="M000076"></a>
|
|
266
266
|
|
|
267
267
|
<div class="method-heading">
|
|
268
|
-
<a href="Proxy.src/
|
|
269
|
-
onclick="popupCode('Proxy.src/
|
|
270
|
-
<span class="method-name">send_esi_buffered</span><span class="method-args">(
|
|
268
|
+
<a href="Proxy.src/M000076.html" target="Code" class="method-signature"
|
|
269
|
+
onclick="popupCode('Proxy.src/M000076.html');return false;">
|
|
270
|
+
<span class="method-name">send_esi_buffered</span><span class="method-args">( response, request, http_params, buffer )</span>
|
|
271
271
|
</a>
|
|
272
272
|
</div>
|
|
273
273
|
|
|
@@ -275,12 +275,12 @@
|
|
|
275
275
|
</div>
|
|
276
276
|
</div>
|
|
277
277
|
|
|
278
|
-
<div id="method-
|
|
279
|
-
<a name="
|
|
278
|
+
<div id="method-M000073" class="method-detail">
|
|
279
|
+
<a name="M000073"></a>
|
|
280
280
|
|
|
281
281
|
<div class="method-heading">
|
|
282
|
-
<a href="Proxy.src/
|
|
283
|
-
onclick="popupCode('Proxy.src/
|
|
282
|
+
<a href="Proxy.src/M000073.html" target="Code" class="method-signature"
|
|
283
|
+
onclick="popupCode('Proxy.src/M000073.html');return false;">
|
|
284
284
|
<span class="method-name">send_response</span><span class="method-args">( http_request, http_response, http_params, proxy_response )</span>
|
|
285
285
|
</a>
|
|
286
286
|
</div>
|
|
@@ -5,49 +5,16 @@
|
|
|
5
5
|
|
|
6
6
|
<html>
|
|
7
7
|
<head>
|
|
8
|
-
<title>
|
|
8
|
+
<title>new (ESI::Proxy)</title>
|
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
10
|
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
11
|
</head>
|
|
12
12
|
<body class="standalone-code">
|
|
13
|
-
<pre>
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
74: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">proxy_response</span>.<span class="ruby-identifier">header</span>[<span class="ruby-value str">"Surrogate-Control"</span>]
|
|
20
|
-
75: <span class="ruby-ivar">@control</span> = {}
|
|
21
|
-
76: <span class="ruby-identifier">proxy_response</span>.<span class="ruby-identifier">header</span>[<span class="ruby-value str">"Surrogate-Control"</span>].<span class="ruby-identifier">split</span>(<span class="ruby-value str">','</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pair</span><span class="ruby-operator">|</span>
|
|
22
|
-
77: <span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span> = <span class="ruby-identifier">pair</span>.<span class="ruby-identifier">strip</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">'='</span>)
|
|
23
|
-
78: <span class="ruby-ivar">@control</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
|
|
24
|
-
79: <span class="ruby-keyword kw">end</span>
|
|
25
|
-
80: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@control</span>[<span class="ruby-value str">'max-age'</span>].<span class="ruby-identifier">to_i</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
26
|
-
81: <span class="ruby-ivar">@cache_buffer</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>
|
|
27
|
-
82: <span class="ruby-keyword kw">end</span>
|
|
28
|
-
83: <span class="ruby-keyword kw">end</span>
|
|
29
|
-
84:
|
|
30
|
-
85:
|
|
31
|
-
86: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">status</span> <span class="ruby-operator">>=</span> <span class="ruby-value">500</span> <span class="ruby-keyword kw">or</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@config</span>.<span class="ruby-identifier">enable_esi_processor?</span>( <span class="ruby-identifier">proxy_response</span> )
|
|
32
|
-
87: <span class="ruby-identifier">headers</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span><span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
|
|
33
|
-
88: <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">header</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
|
|
34
|
-
89: <span class="ruby-keyword kw">end</span>
|
|
35
|
-
90: <span class="ruby-identifier">proxy_direct</span>( <span class="ruby-identifier">http_response</span>, <span class="ruby-identifier">status</span>, <span class="ruby-identifier">proxy_response</span> )
|
|
36
|
-
91: <span class="ruby-keyword kw">else</span>
|
|
37
|
-
92: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">http_request</span>.<span class="ruby-identifier">params</span>[<span class="ruby-value str">"HTTP_VERSION"</span>].<span class="ruby-identifier">match</span>(<span class="ruby-regexp re">/1.0/</span>)
|
|
38
|
-
93: <span class="ruby-identifier">buffer</span> = <span class="ruby-identifier">proxy_response</span>.<span class="ruby-identifier">read_body</span>
|
|
39
|
-
94: <span class="ruby-identifier">bytes</span>=<span class="ruby-identifier">send_esi_buffered</span>( <span class="ruby-identifier">status</span>, <span class="ruby-identifier">http_response</span>, <span class="ruby-identifier">http_request</span>, <span class="ruby-identifier">http_params</span>, <span class="ruby-identifier">buffer</span> )
|
|
40
|
-
95: <span class="ruby-ivar">@cache_buffer</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">buffer</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@cache_buffer</span>
|
|
41
|
-
96: [<span class="ruby-value">0</span>,<span class="ruby-identifier">bytes</span>]
|
|
42
|
-
97: <span class="ruby-keyword kw">else</span>
|
|
43
|
-
98: <span class="ruby-identifier">header</span> = <span class="ruby-constant">Mongrel</span><span class="ruby-operator">::</span><span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">STATUS_FORMAT</span> <span class="ruby-operator">%</span> [<span class="ruby-identifier">status</span>, <span class="ruby-constant">Mongrel</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP_STATUS_CODES</span>[<span class="ruby-identifier">status</span>]]
|
|
44
|
-
99: <span class="ruby-identifier">headers</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-identifier">header</span> <span class="ruby-operator"><<</span> <span class="ruby-node">"#{k}: #{v}\r\n"</span> }
|
|
45
|
-
100: <span class="ruby-identifier">header</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">"Transfer-Encoding: chunked\r\n\r\n"</span>
|
|
46
|
-
101: <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">write</span>( <span class="ruby-identifier">header</span> )
|
|
47
|
-
102: <span class="ruby-identifier">proxy_filter_esi</span>( <span class="ruby-identifier">http_request</span>, <span class="ruby-identifier">http_response</span>, <span class="ruby-identifier">http_params</span>, <span class="ruby-identifier">proxy_response</span> )
|
|
48
|
-
103: <span class="ruby-keyword kw">end</span>
|
|
49
|
-
104: <span class="ruby-keyword kw">end</span>
|
|
50
|
-
105:
|
|
51
|
-
106: <span class="ruby-keyword kw">end</span></pre>
|
|
13
|
+
<pre> <span class="ruby-comment cmt"># File lib/esi/proxy.rb, line 21</span>
|
|
14
|
+
21: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>( <span class="ruby-identifier">config</span> )
|
|
15
|
+
22: <span class="ruby-ivar">@config</span> = <span class="ruby-identifier">config</span>
|
|
16
|
+
23: <span class="ruby-ivar">@router</span> = <span class="ruby-identifier">config</span>.<span class="ruby-identifier">router</span>
|
|
17
|
+
24: <span class="ruby-ivar">@cache_buffer</span> = <span class="ruby-keyword kw">nil</span>
|
|
18
|
+
25: <span class="ruby-keyword kw">end</span></pre>
|
|
52
19
|
</body>
|
|
53
20
|
</html>
|
|
@@ -5,21 +5,59 @@
|
|
|
5
5
|
|
|
6
6
|
<html>
|
|
7
7
|
<head>
|
|
8
|
-
<title>
|
|
8
|
+
<title>process (ESI::Proxy)</title>
|
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
10
|
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
11
|
</head>
|
|
12
12
|
<body class="standalone-code">
|
|
13
|
-
<pre>
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
13
|
+
<pre> <span class="ruby-comment cmt"># File lib/esi/proxy.rb, line 27</span>
|
|
14
|
+
27: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">process</span>(<span class="ruby-identifier">url</span>, <span class="ruby-identifier">request</span>, <span class="ruby-identifier">response</span>)
|
|
15
|
+
28:
|
|
16
|
+
29: <span class="ruby-identifier">status</span> = <span class="ruby-value">200</span>
|
|
17
|
+
30:
|
|
18
|
+
31: <span class="ruby-identifier">http_params</span> = <span class="ruby-identifier">http_params</span>(<span class="ruby-identifier">request</span>.<span class="ruby-identifier">params</span>)
|
|
19
|
+
32:
|
|
20
|
+
33: <span class="ruby-identifier">chunk_count</span> = <span class="ruby-value">0</span>
|
|
21
|
+
34: <span class="ruby-identifier">bytes_sent</span> = <span class="ruby-value">0</span>
|
|
22
|
+
35: <span class="ruby-identifier">sent_from_cache</span> = <span class="ruby-keyword kw">false</span>
|
|
23
|
+
36: <span class="ruby-identifier">uri</span> = <span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">url</span>)
|
|
24
|
+
37:
|
|
25
|
+
38: <span class="ruby-identifier">path_with_query</span> = <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">query</span> <span class="ruby-value">? </span><span class="ruby-node">"#{uri.path}?#{uri.query}"</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">path</span>
|
|
26
|
+
39:
|
|
27
|
+
40: <span class="ruby-comment cmt"># check if the origin is cached</span>
|
|
28
|
+
41: <span class="ruby-identifier">cached_page</span> = <span class="ruby-ivar">@config</span>.<span class="ruby-identifier">cache</span>.<span class="ruby-identifier">get</span>( <span class="ruby-identifier">path_with_query</span>, <span class="ruby-identifier">http_params</span> )
|
|
29
|
+
42: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">cached_page</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">cached_page</span>.<span class="ruby-identifier">valid?</span>
|
|
30
|
+
43: <span class="ruby-identifier">cache_buffer</span> = <span class="ruby-identifier">cached_page</span>.<span class="ruby-identifier">body</span>
|
|
31
|
+
44: <span class="ruby-identifier">head</span>, <span class="ruby-identifier">body</span> = <span class="ruby-identifier">cache_buffer</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">"\r\n\r\n"</span>)
|
|
32
|
+
45: <span class="ruby-identifier">buffer</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>
|
|
33
|
+
46: <span class="ruby-identifier">bytes_sent</span> = <span class="ruby-identifier">send_esi_buffered</span>( <span class="ruby-identifier">buffer</span>, <span class="ruby-identifier">request</span>, <span class="ruby-identifier">http_params</span>, <span class="ruby-identifier">body</span> )
|
|
34
|
+
47: <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">rewind</span>
|
|
35
|
+
48: <span class="ruby-identifier">bytes_sent</span> = <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">size</span>
|
|
36
|
+
49: <span class="ruby-comment cmt">#puts bytes_sent.inspect</span>
|
|
37
|
+
50: <span class="ruby-identifier">head</span> = <span class="ruby-identifier">head</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp re">/Content-Length:.*$/</span>,<span class="ruby-node">"Content-Length: #{bytes_sent}"</span>)
|
|
38
|
+
51: <span class="ruby-comment cmt">#puts head</span>
|
|
39
|
+
52: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">head</span>
|
|
40
|
+
53: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">write</span> <span class="ruby-value str">"\r\n\r\n"</span>
|
|
41
|
+
54: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">read</span>
|
|
42
|
+
55: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">done</span> = <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:done</span>)
|
|
43
|
+
56: <span class="ruby-identifier">sent_from_cache</span> = <span class="ruby-keyword kw">true</span>
|
|
44
|
+
57: <span class="ruby-keyword kw">else</span>
|
|
45
|
+
58: <span class="ruby-identifier">proxy_request</span> = (<span class="ruby-identifier">request</span>.<span class="ruby-identifier">params</span>[<span class="ruby-value str">"REQUEST_METHOD"</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">"POST"</span>) <span class="ruby-operator">?</span>
|
|
46
|
+
59: <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span><span class="ruby-operator">::</span><span class="ruby-constant">Post</span>.<span class="ruby-identifier">new</span>( <span class="ruby-identifier">path_with_query</span>, <span class="ruby-identifier">http_params</span> ) <span class="ruby-operator">:</span>
|
|
47
|
+
60: <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span><span class="ruby-operator">::</span><span class="ruby-constant">Get</span>.<span class="ruby-identifier">new</span>( <span class="ruby-identifier">path_with_query</span>, <span class="ruby-identifier">http_params</span> )
|
|
48
|
+
61:
|
|
49
|
+
62: <span class="ruby-comment cmt"># open the conneciton up so we can start to stream the connection</span>
|
|
50
|
+
63: <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>.<span class="ruby-identifier">start</span>(<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">host</span>, <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">port</span>).<span class="ruby-identifier">request</span>(<span class="ruby-identifier">proxy_request</span>,<span class="ruby-identifier">request</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">read</span>) <span class="ruby-keyword kw">do</span><span class="ruby-operator">|</span><span class="ruby-identifier">proxy_response</span><span class="ruby-operator">|</span>
|
|
51
|
+
64: <span class="ruby-identifier">chunk_count</span>,<span class="ruby-identifier">bytes_sent</span> = <span class="ruby-identifier">send_response</span>( <span class="ruby-identifier">request</span>, <span class="ruby-identifier">response</span>, <span class="ruby-identifier">http_params</span>, <span class="ruby-identifier">proxy_response</span> )
|
|
52
|
+
65: <span class="ruby-keyword kw">end</span> <span class="ruby-comment cmt"># end request</span>
|
|
53
|
+
66:
|
|
54
|
+
67: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@control</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-keyword kw">and</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@cache_buffer</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-keyword kw">and</span> <span class="ruby-ivar">@control</span>[<span class="ruby-value str">'max-age'</span>].<span class="ruby-identifier">to_i</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">and</span> <span class="ruby-ivar">@cache_buffer</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
55
|
+
68: <span class="ruby-ivar">@cache_buffer</span>.<span class="ruby-identifier">rewind</span>
|
|
56
|
+
69: <span class="ruby-ivar">@config</span>.<span class="ruby-identifier">cache</span>.<span class="ruby-identifier">put</span>(<span class="ruby-identifier">path_with_query</span>, <span class="ruby-identifier">http_params</span>, <span class="ruby-ivar">@control</span>[<span class="ruby-value str">'max-age'</span>].<span class="ruby-identifier">to_i</span>, <span class="ruby-ivar">@cache_buffer</span>.<span class="ruby-identifier">read</span> )
|
|
57
|
+
70: <span class="ruby-keyword kw">end</span>
|
|
58
|
+
71:
|
|
59
|
+
72: <span class="ruby-keyword kw">end</span>
|
|
60
|
+
73: [<span class="ruby-identifier">chunk_count</span>, <span class="ruby-identifier">bytes_sent</span>, <span class="ruby-identifier">status</span>, <span class="ruby-identifier">sent_from_cache</span>]
|
|
61
|
+
74: <span class="ruby-keyword kw">end</span></pre>
|
|
24
62
|
</body>
|
|
25
63
|
</html>
|
|
@@ -5,15 +5,58 @@
|
|
|
5
5
|
|
|
6
6
|
<html>
|
|
7
7
|
<head>
|
|
8
|
-
<title>
|
|
8
|
+
<title>send_response (ESI::Proxy)</title>
|
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
10
|
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
11
|
</head>
|
|
12
12
|
<body class="standalone-code">
|
|
13
|
-
<pre> <span class="ruby-comment cmt"># File lib/esi/proxy.rb, line
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
<pre> <span class="ruby-comment cmt"># File lib/esi/proxy.rb, line 77</span>
|
|
14
|
+
77: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">send_response</span>( <span class="ruby-identifier">http_request</span>, <span class="ruby-identifier">http_response</span>, <span class="ruby-identifier">http_params</span>, <span class="ruby-identifier">proxy_response</span> )
|
|
15
|
+
78: <span class="ruby-identifier">status</span> = <span class="ruby-identifier">read_status</span>( <span class="ruby-identifier">proxy_response</span> )
|
|
16
|
+
79:
|
|
17
|
+
80: <span class="ruby-identifier">headers</span> = <span class="ruby-identifier">copy_headers</span>( <span class="ruby-identifier">proxy_response</span> )
|
|
18
|
+
81:
|
|
19
|
+
82: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">proxy_response</span>.<span class="ruby-identifier">header</span>[<span class="ruby-value str">"Surrogate-Control"</span>]
|
|
20
|
+
83: <span class="ruby-ivar">@control</span> = {}
|
|
21
|
+
84: <span class="ruby-identifier">proxy_response</span>.<span class="ruby-identifier">header</span>[<span class="ruby-value str">"Surrogate-Control"</span>].<span class="ruby-identifier">split</span>(<span class="ruby-value str">','</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pair</span><span class="ruby-operator">|</span>
|
|
22
|
+
85: <span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span> = <span class="ruby-identifier">pair</span>.<span class="ruby-identifier">strip</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">'='</span>)
|
|
23
|
+
86: <span class="ruby-ivar">@control</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
|
|
24
|
+
87: <span class="ruby-keyword kw">end</span>
|
|
25
|
+
88: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@control</span>[<span class="ruby-value str">'max-age'</span>].<span class="ruby-identifier">to_i</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
26
|
+
89: <span class="ruby-ivar">@cache_buffer</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>
|
|
27
|
+
90: <span class="ruby-keyword kw">end</span>
|
|
28
|
+
91: <span class="ruby-keyword kw">end</span>
|
|
29
|
+
92:
|
|
30
|
+
93: <span class="ruby-comment cmt"># build the initial HTTP HEAD response</span>
|
|
31
|
+
94: <span class="ruby-identifier">header</span> = <span class="ruby-constant">Mongrel</span><span class="ruby-operator">::</span><span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">STATUS_FORMAT</span> <span class="ruby-operator">%</span> [<span class="ruby-identifier">status</span>, <span class="ruby-constant">Mongrel</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP_STATUS_CODES</span>[<span class="ruby-identifier">status</span>]]
|
|
32
|
+
95: <span class="ruby-identifier">headers</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-identifier">header</span> <span class="ruby-operator"><<</span> <span class="ruby-node">"#{k}: #{v}\r\n"</span> }
|
|
33
|
+
96:
|
|
34
|
+
97: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">status</span> <span class="ruby-operator">>=</span> <span class="ruby-value">500</span> <span class="ruby-keyword kw">or</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@config</span>.<span class="ruby-identifier">enable_esi_processor?</span>( <span class="ruby-identifier">proxy_response</span> )
|
|
35
|
+
98: <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">header</span>
|
|
36
|
+
99: <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">write</span> <span class="ruby-value str">"\r\n"</span>
|
|
37
|
+
100: <span class="ruby-identifier">proxy_direct</span>( <span class="ruby-identifier">http_response</span>, <span class="ruby-identifier">proxy_response</span> )
|
|
38
|
+
101: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">http_request</span>.<span class="ruby-identifier">params</span>[<span class="ruby-value str">"HTTP_VERSION"</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">"HTTP/1.0"</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">http_request</span>.<span class="ruby-identifier">params</span>[<span class="ruby-value str">"REQUEST_METHOD"</span>] <span class="ruby-operator">!=</span> <span class="ruby-value str">"HEAD"</span>
|
|
39
|
+
102: <span class="ruby-identifier">body</span> = <span class="ruby-identifier">proxy_response</span>.<span class="ruby-identifier">read_body</span>
|
|
40
|
+
103: <span class="ruby-identifier">buffer</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>
|
|
41
|
+
104: <span class="ruby-identifier">send_esi_buffered</span>( <span class="ruby-identifier">buffer</span>, <span class="ruby-identifier">http_request</span>, <span class="ruby-identifier">http_params</span>, <span class="ruby-identifier">body</span> )
|
|
42
|
+
105: <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">rewind</span>
|
|
43
|
+
106: <span class="ruby-identifier">header</span> <span class="ruby-operator"><<</span> <span class="ruby-node">"Content-Length: #{buffer.size}\r\n\r\n"</span>
|
|
44
|
+
107: <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">write</span>( <span class="ruby-identifier">header</span> )
|
|
45
|
+
108: <span class="ruby-identifier">buffer</span> = <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">read</span> <span class="ruby-comment cmt"># replace with in memory</span>
|
|
46
|
+
109: <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">write</span>( <span class="ruby-identifier">buffer</span> )
|
|
47
|
+
110: <span class="ruby-ivar">@cache_buffer</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">header</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@cache_buffer</span>
|
|
48
|
+
111: <span class="ruby-ivar">@cache_buffer</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">buffer</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@cache_buffer</span>
|
|
49
|
+
112: [<span class="ruby-value">0</span>,<span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">size</span>]
|
|
50
|
+
113: <span class="ruby-keyword kw">else</span>
|
|
51
|
+
114: <span class="ruby-comment cmt"># write current http header into the cache</span>
|
|
52
|
+
115: <span class="ruby-ivar">@cache_buffer</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">header</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@cache_buffer</span>
|
|
53
|
+
116: <span class="ruby-identifier">header</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">"Transfer-Encoding: chunked\r\n\r\n"</span> <span class="ruby-comment cmt"># don't save this to the cache</span>
|
|
54
|
+
117: <span class="ruby-comment cmt"># now we don't know the content-length yet, but we save a spot for it</span>
|
|
55
|
+
118: <span class="ruby-ivar">@cache_buffer</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">"Content-Length: \r\n\r\n"</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@cache_buffer</span>
|
|
56
|
+
119: <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">write</span>( <span class="ruby-identifier">header</span> )
|
|
57
|
+
120: <span class="ruby-keyword kw">return</span> [<span class="ruby-value">0</span>,<span class="ruby-value">0</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">http_request</span>.<span class="ruby-identifier">params</span>[<span class="ruby-value str">"REQUEST_METHOD"</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">"HEAD"</span>
|
|
58
|
+
121: <span class="ruby-identifier">proxy_filter_esi</span>( <span class="ruby-identifier">http_request</span>, <span class="ruby-identifier">http_response</span>, <span class="ruby-identifier">http_params</span>, <span class="ruby-identifier">proxy_response</span> )
|
|
59
|
+
122: <span class="ruby-keyword kw">end</span>
|
|
60
|
+
123: <span class="ruby-keyword kw">end</span></pre>
|
|
18
61
|
</body>
|
|
19
62
|
</html>
|
|
@@ -5,23 +5,20 @@
|
|
|
5
5
|
|
|
6
6
|
<html>
|
|
7
7
|
<head>
|
|
8
|
-
<title>
|
|
8
|
+
<title>proxy_direct (ESI::Proxy)</title>
|
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
10
|
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
11
|
</head>
|
|
12
12
|
<body class="standalone-code">
|
|
13
|
-
<pre> <span class="ruby-comment cmt"># File lib/esi/proxy.rb, line
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
133: <span class="ruby-keyword kw">end</span>
|
|
24
|
-
134: <span class="ruby-identifier">bytes</span>
|
|
25
|
-
135: <span class="ruby-keyword kw">end</span></pre>
|
|
13
|
+
<pre> <span class="ruby-comment cmt"># File lib/esi/proxy.rb, line 125</span>
|
|
14
|
+
125: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">proxy_direct</span>( <span class="ruby-identifier">http_response</span>, <span class="ruby-identifier">proxy_response</span> )
|
|
15
|
+
126: <span class="ruby-identifier">bytes_sent</span> = <span class="ruby-value">0</span>
|
|
16
|
+
127: <span class="ruby-identifier">proxy_response</span>.<span class="ruby-identifier">read_body</span> <span class="ruby-keyword kw">do</span><span class="ruby-operator">|</span><span class="ruby-identifier">fragment</span><span class="ruby-operator">|</span>
|
|
17
|
+
128: <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">fragment</span>
|
|
18
|
+
129: <span class="ruby-identifier">bytes_sent</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">fragment</span>.<span class="ruby-identifier">size</span>
|
|
19
|
+
130: <span class="ruby-keyword kw">end</span>
|
|
20
|
+
131: <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">done</span> = <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:done</span>)
|
|
21
|
+
132: <span class="ruby-keyword kw">return</span> [<span class="ruby-value">0</span>,<span class="ruby-identifier">bytes_sent</span>]
|
|
22
|
+
133: <span class="ruby-keyword kw">end</span></pre>
|
|
26
23
|
</body>
|
|
27
24
|
</html>
|
|
@@ -5,14 +5,15 @@
|
|
|
5
5
|
|
|
6
6
|
<html>
|
|
7
7
|
<head>
|
|
8
|
-
<title>
|
|
8
|
+
<title>proxy_filter_esi (ESI::Proxy)</title>
|
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
10
|
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
11
|
</head>
|
|
12
12
|
<body class="standalone-code">
|
|
13
|
-
<pre> <span class="ruby-comment cmt"># File lib/esi/proxy.rb, line
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
<pre> <span class="ruby-comment cmt"># File lib/esi/proxy.rb, line 135</span>
|
|
14
|
+
135: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">proxy_filter_esi</span>( <span class="ruby-identifier">http_request</span>, <span class="ruby-identifier">http_response</span>, <span class="ruby-identifier">http_params</span>, <span class="ruby-identifier">proxy_response</span> )
|
|
15
|
+
136: <span class="ruby-identifier">processor</span> = <span class="ruby-constant">Processor</span>.<span class="ruby-identifier">new</span>( <span class="ruby-ivar">@config</span>, <span class="ruby-ivar">@router</span>, <span class="ruby-ivar">@cache_buffer</span> )
|
|
16
|
+
137: <span class="ruby-identifier">processor</span>.<span class="ruby-identifier">send_body</span>( <span class="ruby-identifier">http_request</span>, <span class="ruby-identifier">http_params</span>, <span class="ruby-identifier">http_response</span>, <span class="ruby-identifier">proxy_response</span> )
|
|
17
|
+
138: <span class="ruby-keyword kw">end</span></pre>
|
|
17
18
|
</body>
|
|
18
19
|
</html>
|
|
@@ -5,24 +5,18 @@
|
|
|
5
5
|
|
|
6
6
|
<html>
|
|
7
7
|
<head>
|
|
8
|
-
<title>
|
|
8
|
+
<title>send_esi_buffered (ESI::Proxy)</title>
|
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
10
|
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
11
|
</head>
|
|
12
12
|
<body class="standalone-code">
|
|
13
|
-
<pre> <span class="ruby-comment cmt"># File lib/esi/proxy.rb, line
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
149: <span class="ruby-identifier">updated_params</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
|
|
22
|
-
150: <span class="ruby-keyword kw">end</span>
|
|
23
|
-
151: <span class="ruby-keyword kw">end</span>
|
|
24
|
-
152: <span class="ruby-keyword kw">end</span>
|
|
25
|
-
153: <span class="ruby-identifier">updated_params</span>
|
|
26
|
-
154: <span class="ruby-keyword kw">end</span></pre>
|
|
13
|
+
<pre> <span class="ruby-comment cmt"># File lib/esi/proxy.rb, line 140</span>
|
|
14
|
+
140: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">send_esi_buffered</span>( <span class="ruby-identifier">response</span>, <span class="ruby-identifier">request</span>, <span class="ruby-identifier">http_params</span>, <span class="ruby-identifier">buffer</span> )
|
|
15
|
+
141: <span class="ruby-identifier">parser</span> = <span class="ruby-constant">ESI</span><span class="ruby-operator">::</span><span class="ruby-constant">Parser</span>.<span class="ruby-identifier">new</span>( <span class="ruby-identifier">response</span>, <span class="ruby-ivar">@router</span>, <span class="ruby-ivar">@config</span>.<span class="ruby-identifier">cache</span>, <span class="ruby-value">3</span> )
|
|
16
|
+
142: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">prepare</span>( <span class="ruby-identifier">request</span>.<span class="ruby-identifier">params</span>, <span class="ruby-identifier">http_params</span> )
|
|
17
|
+
143: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">process</span> <span class="ruby-identifier">buffer</span>
|
|
18
|
+
144: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">finish</span>
|
|
19
|
+
145: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">done</span> = <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:done</span>)
|
|
20
|
+
146: <span class="ruby-keyword kw">end</span></pre>
|
|
27
21
|
</body>
|
|
28
22
|
</html>
|