No that is what I am seeing but after we return from 
doFetchConcatResources(..) we set the status in doGet.  So lets say we 
return false from doFetchConcatResources and the content written to the 
response was bigger than the buffer.  This means we will flush the buffer 
and set the status to the OK status then write the rest of the content and 
set the status to bad request, but it will be to late we already set the 
status to OK.  Make sense?
 
-Ryan

Email: rjbax...@us.ibm.com
Phone: 978-899-3041
developerWorks Profile



From:   "Ciancetta, Jesse E." <jc...@mitre.org>
To:     "dev@shindig.apache.org" <dev@shindig.apache.org>, 
Date:   12/02/2011 03:34 PM
Subject:        RE: Bug With The ConcatProxyServlet



Hmm -- I'm not seeing the case where what your describing could happen.

If I understand what you're saying -- it sounds like content is being 
written directly to the response object, and if an exception is thrown 
after the response buffer has already been flushed then at that point it's 
too late to change the response code.

But I don't see any cases in ConcatProxyServlet where content is being 
written directly to the client response when looping over the concat fetch 
responses.  It doesn't looks like the code inside of the 
doFetchConcatResources(...) method does any work that writes to the actual 
response until line 247 where cos.close() is called which takes the 
content of a stringbuilder and flushes it to the response.  All the other 
work in that method is calling methods on cos that just write to the 
stringbuilder (cos.output, cos.outputError, ...).

Are you seeing something different? 

>-----Original Message-----
>From: Ryan J Baxter [mailto:rjbax...@us.ibm.com]
>Sent: Thursday, December 01, 2011 6:20 PM
>To: dev@shindig.apache.org
>Subject: Bug With The ConcatProxyServlet
>
>I am noticing a small problem with the ConcatProxyServlet in Shindig,
>mainly when the content of the data being concatenated is greater than
>response buffer size and there is a failure with one of the requests 
being
>made.  In this case the way the ConcateProxyServlet is currently written
>it is possible that we should return an error status but instead we will
>have an OK status.  This is because once the response has to flush the
>buffer, because the content is bigger than the buffer size, the responses
>status if set to the OK status and cannot be changed again after it is
>set.  The only way I can think of fixing this problem in the concat
>servlet is to loop through the requests once making sure there are no
>internal errors.  If there are errors we set the error status and return.
>If there are not any errors we loop through the requests again and this
>time write out the content to the response.  I hope that makes sense to
>everyone, what do others think?
>
>-Ryan
>
>Email: rjbax...@us.ibm.com
>Phone: 978-899-3041
>developerWorks Profile




Reply via email to