mongrel_esi 0.5.1 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- 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>
|