TSIOBufferBlockReadStart() could'nt return the corresponding chunk data length 
when original server using the "Transfer Encoding: chunked" http header !
--------------------------------------------------------------------------------------------------------------------------------------------------------

                 Key: TS-921
                 URL: https://issues.apache.org/jira/browse/TS-921
             Project: Traffic Server
          Issue Type: Bug
          Components: TS API
    Affects Versions: 3.0.1
         Environment: OS: Ubuntu 10.10 32bit, Traffic Server version:.3.0.1, 
Web Browser:firefox 6.0,CPU: Intel core i3-2100 3.10GHz, Memory: 2G, HardDisk: 
500G
            Reporter: taoyunxing
             Fix For: 3.0.2


Recently I meet with a strange proble when I manage to get the server response 
body in the "Transfer Encoding: chunked" mode: 
I couldn't get the corresponding chunk length in hexdecimal ! The details as 
follows:

I use the "null-transform" plugin modified to just output the server response 
body, when the web server uses  the "Transfer Encoding: chunked" header
to transfer chunked data to user agent, eg, I request the web page: 
"http://www.qq.com/";, I just get the chunk body data, but get no chunk length 
in 
the hexdecimal format "383cb\r\n" before the chunk body data. the chunk body 
data is uncompressed and like as "<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 
Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>\r\n......."

In addition, I capture the data packet using the Wireshark software, I sure 
that I see the chunk length  "383cb\r\n" before the chunk body data  "<!DOCTYPE 
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>\r\n.......", it is a 
complete chunk response !

I continue to check the code of null-transform.c, set a breakpoint at the 
function TSIOBufferBlockReadStart(), run ATS and debug it, when ATS stop at the 
breakpoint TSIOBufferBlockReadStart(),  I print the return string of 
TSIOBufferBlockReadStart(), there is no chunk data length at the head of output 
string, which implies the api TSIOBufferBlockReadStart() has bug! 


Breakpoint 1, TSIOBufferBlockReadStart (blockp=0x89d6570, readerp=0x89d5330, 
avail=0xb6c8e288) at InkIOCoreAPI.cc:659
659     {
(gdb) s
660       sdk_assert(sdk_sanity_check_iocore_structure(blockp) == TS_SUCCESS);
(gdb) n
667       p = blk->start();
(gdb) 
668       if (avail)
(gdb) p p
$3 = 0xb1312000 "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 
Transitional//EN\" 
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\";>\r\n<html 
xmlns=\"http://www.w3.org/1999/xhtml\";>\r\n<head>\r\n<meta 
http-equiv=\"Conten"...
(gdb)


--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to