RE: Zero-pad the chunk length which generated by tomcat automatically
Hi Chunk, I saw it, thank u very much! -Original Message- From: Caldarale, Charles R [mailto:[EMAIL PROTECTED] Sent: Friday, February 29, 2008 2:55 PM To: Tomcat Users List Subject: RE: Zero-pad the chunk length which generated by tomcat automatically > From: Hanks Wang (hanwan) [mailto:[EMAIL PROTECTED] > Subject: RE: Zero-pad the chunk length which generated by tomcat > automatically > > So all I want to know is whether I can use some way to zero-pad the > chunk-length which generated by tomcat. I don't see any way to do so via configuration, but changing the existing code would be simple. Look here: org/apache/coyote/http11/filters/ChunkedOutputFilter.java in the middle of the doWrite() method where it's filling in the chunkLength array. - Chuck THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY MATERIAL and is thus for use only by the intended recipient. If you received this in error, please contact the sender and delete the e-mail and its attachments from all computers. - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: Zero-pad the chunk length which generated by tomcat automatically
> From: Hanks Wang (hanwan) [mailto:[EMAIL PROTECTED] > Subject: RE: Zero-pad the chunk length which generated by > tomcat automatically > > So all I want to know is whether I can use some way to zero-pad the > chunk-length which generated by tomcat. I don't see any way to do so via configuration, but changing the existing code would be simple. Look here: org/apache/coyote/http11/filters/ChunkedOutputFilter.java in the middle of the doWrite() method where it's filling in the chunkLength array. - Chuck THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY MATERIAL and is thus for use only by the intended recipient. If you received this in error, please contact the sender and delete the e-mail and its attachments from all computers. - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: Zero-pad the chunk length which generated by tomcat automatically
Hi Chuck, Maybe I used a improper word here. I know the spec doesn't say the chunk-size has to be zero-pad to eight bytes. But unfortunately there is such a case indeed and the real device sends all chunk with chunk-size zero-filled. And I need simulate the device and send the same response as the real one. So all I want to know is whether I can use some way to zero-pad the chunk-length which generated by tomcat. Thanks Han -Original Message- From: Caldarale, Charles R [mailto:[EMAIL PROTECTED] Sent: Friday, February 29, 2008 2:29 PM To: Tomcat Users List Subject: RE: Zero-pad the chunk length which generated by tomcat automatically > From: Hanks Wang (hanwan) [mailto:[EMAIL PROTECTED] > Subject: Zero-pad the chunk length which generated by tomcat > automatically > > In real world, the chunk-size will be "zero-pad" until 8 bytes. Where in the HTTP RFC do you find any requirement to zero-fill the chunk-size to eight bytes? The spec defines chunk-size as one or more HEX digits, nothing more. I'm curious: what "real-world" client are you using that hasn't implemented that part of the RFC properly? - Chuck THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY MATERIAL and is thus for use only by the intended recipient. If you received this in error, please contact the sender and delete the e-mail and its attachments from all computers. - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: Zero-pad the chunk length which generated by tomcat automatically
> From: Hanks Wang (hanwan) [mailto:[EMAIL PROTECTED] > Subject: Zero-pad the chunk length which generated by tomcat > automatically > > In real world, the chunk-size will be "zero-pad" until 8 bytes. Where in the HTTP RFC do you find any requirement to zero-fill the chunk-size to eight bytes? The spec defines chunk-size as one or more HEX digits, nothing more. I'm curious: what "real-world" client are you using that hasn't implemented that part of the RFC properly? - Chuck THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY MATERIAL and is thus for use only by the intended recipient. If you received this in error, please contact the sender and delete the e-mail and its attachments from all computers. - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Zero-pad the chunk length which generated by tomcat automatically
Hi Filip, Seems the method still has a problem: In real world, the chunk-size will be "zero-pad" until 8 bytes. For example: if I have a chunk which length is 20(HEX), The chunk-length should be : 0020 But the chunk-length generated by tomcat is 20. Is it possible to make tomcat zero-pad the chunk-length? Thanks! Han -Original Message- From: Hanks Wang (hanwan) Sent: Friday, February 29, 2008 9:15 AM To: 'Tomcat Users List' Subject: RE: how to send http response in several chunked package with Tomcat My God, I am actually not aware of that despite it's so obvious... Thank u Filip! B.R Han -Original Message- From: Filip Hanik - Dev Lists [mailto:[EMAIL PROTECTED] Sent: Thursday, February 28, 2008 11:51 PM To: Tomcat Users List Subject: Re: how to send http response in several chunked package with Tomcat //first flush headers response.flushBuffer() //then flush body while (havedata) { response.getOutputStream().println(some data) response.flushBuffer() } you need to put your thinker hat on Hanks :) Hanks Wang (hanwan) wrote: > Hi Filip, > Seems the method has a problem : tomcat puts the http header and part > of the body in the same chunk. > > But I hope to generate the response in below format: > Suppose I need use String tmp as the response, tmp = part1 + part2 + > part3+part4; > we use 4 tcp frame totally for the http response: > > Frame 1: only carry the httpheader, no chunk in the frame Frame 2: > includes the first chunk, carries part1+part2; Frame 3: includes the > second chunk, carries part3+part4; Frame 4: includes a chunk whose > length is 0, tells client it's the end of chunks; > > However Tomcat generate the response in such way: > Frame 1: includes httpheader and the first chunk, 1st chunk carries > part1; Frame 2: includes part2 + part3; > Frame3 and Frame4 are same with above; > > So how can I make sure there is only http header in the first frame? > > Thanks. > Han > > > -Original Message- > From: Hanks Wang (hanwan) > Sent: Thursday, February 28, 2008 10:26 PM > To: Tomcat Users List > Subject: RE: how to send http response in several chunked package with > Tomcat > > Hi Filip, > > Yes it works. Thanks a lot! > > Christopher, in fact I'm writing a servlet to fool a management > software, So I need make sure the servlet response is as close to real > device as possible. > > Thanks for everyone's help. > > B.R > Han > -Original Message- > From: Filip Hanik - Dev Lists [mailto:[EMAIL PROTECTED] > Sent: Wednesday, February 27, 2008 11:24 PM > To: Tomcat Users List > Subject: Re: how to send http response in several chunked package with > Tomcat > > you don't need to do that, tomcat does it for you. > all you need to do is > > while (havedata) { > response.getOutputStream().println(some data) > response.flushBuffer() > } > > and tomcat takes care of the rest > > Filip > > Hanks Wang (hanwan) wrote: > >> Hi Johnny, >> >> I try below method implement the chunk in code: >> >> String tmp = "something very long"; >> >> String hlen = Integer.toHexString(tmp.length()); >> hlen = hlen +"\r\n" + tmp.toString(); String chunkend = >> Integer.toHexString(0)+"\r\n"; >> response.getOutputStream().println(hlen); >> response.getOutputStream().println(chunkend); >> >> I created two http chunk successfully by this way. The first chunk is >> the data which wraps tmp, the second is the end chunk. >> >> But the question is, all these chunk and http header are in same >> frame >> > > >> (get it from wireshark.). >> >> How can I put them in different frame? >> Which means we need 3 frame for the case: the first frame will carry >> the http header, the second will carry the first chunk data, the last >> frame will carry the end chunk. >> >> Does it mean I need control the tcp/ip protocol? It's impossible, >> > right? > >> B.R >> Han >> >> >> >> -Original Message- >> From: Hanks Wang (hanwan) >> Sent: Wednesday, February 27, 2008 3:40 PM >> To: Tomcat Users List >> Subject: RE: how to send http response in several chunked package >> with >> > > >> Tomcat >> >> Hi Johnny, >> >> Thanks a lot. I read the http RFC and find something like this: >> >> The chunk-size field is a string of hex digits indicating the size of >> the chunk. The chunked encoding is ended by any chunk whose size is >> zero, followed by the trailer, which is terminated by an empty line. >> >> Do u have any tutorial of ChunkedOutputFilter? I can't find anything >> from its API document.. >> >> Thanks >> Han >> >> >> -Original Message- >> From: Johnny Kewl [mailto:[EMAIL PROTECTED] >> Sent: Tuesday, February 26, 2008 7:41 PM >> To: Tomcat Users List >> Subject: Re: how to send http response in several chunked package >> with >> > > >> Tomcat >> >> >> - >> - >> -- >> --- >> HARBOR: http://coolharbor.100free.com/index.htm >> The most powerful application se