Hi, below is the use case for a transformation plugin I'm writing:

1) TSVConnWrite w/ INT64_MAX because I'm not sure exactly how much
data my transformation plugin will generate.
2) As the transformation plugin generates data it copies to the buffer
(TSIOBufferWrite) and calls TSVIOReenable to tell the downstream VIO
that there is more data to read.
3) When the transformation plugin is done generating data it calls
TSVIONBytesSet with the total bytes that were written to the
downstream VIO.

In my records.config I have CONFIG proxy.config.http.chunking_enabled
INT 1. However, it appears that chunking is not enabled. If I
purposely do three independent TSIOBufferWrite and TSVIOReenable you
would expect that the output would be flushed immediately and as
chunked encoding. This is not the case, it actually appears that ATS
is holding the data completely until I do TSVIONBytesSet, the reason I
suspect this is because the Content-Length header is set in the final
response, here are the headers:

GET /page HTTP/1.1
Host: localhost:8000
Connection: keep-alive
Cache-Control: max-age=0
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML,
like Gecko) Chrome/14.0.835.163 Safari/535.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: visit=G

HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: text/html charset=UTF-8
Content-Encoding: identity
Date: Mon, 17 Oct 2011 20:27:13 GMT
Content-Length: 80777
Age: 0
Connection: keep-alive
Server: ATS/3.0.1


Do I need to do anything special to force ATS to flush and
chunk-encode the response?

Thanks in advance.
Brian

Reply via email to