Remy Maucherat wrote:
On Wed, 2008-02-27 at 18:25 -0700, Filip Hanik - Dev Lists wrote:
Remy Maucherat wrote:
On Wed, 2008-02-27 at 17:08 -0700, Filip Hanik - Dev Lists wrote:
Remy Maucherat wrote:
This makes me think there's a straight issue in CharChunk (I suppose the
problem is that realReadChars gets called with len = 0; if it handled
that scenario, things should be fine).
the old char chunk worked just fine, so why not stick with it. the error above is a result of B2CConverter and InputBuffer being modified
Ok, but the new code looks a bit nicer,
huh? here we go again, first it was "elegant", now "it's nice". how about "it works" as argument. bottom line is, my patch was very simple, the B2C Converter is using an intermediary inputstream, but wasn't looking if there was data available to read, so that

take a look at the original patch proposed
http://people.apache.org/~fhanik/tomcat/b2c/patch.txt

obviously, my patch touches nothing of what you claim to be "my code", all I did today was, revert the old patch, and apply the simple patch.
and it works.

so I would prefer keeping it if
possible. From what I can see, your code replaces the limit value (the
one which would cause the problem if it was 0) by the amount of bytes
which have been read in the ByteChunk. This would translate to:
Index: java/org/apache/catalina/connector/InputBuffer.java
===================================================================
---java/org/apache/catalina/connector/InputBuffer.java  (revision 630535)
+++java/org/apache/catalina/connector/InputBuffer.java  (working copy)
@@ -355,7 +355,7 @@
         }
state = CHAR_STATE;
-        conv.convert(bb, cb, len);
+        conv.convert(bb, cb, bb.getLength());
         bb.setOffset(bb.getEnd());
return cb.getLength();

The problem is that I sort of like the idea of the limit (it's related
to the space left in the char buffer for adding the parsed chars). So
maybe trying to respect that with a decent fallback could work (didn't
try it):
Index: java/org/apache/catalina/connector/InputBuffer.java
===================================================================
---java/org/apache/catalina/connector/InputBuffer.java  (revision 630535)
+++java/org/apache/catalina/connector/InputBuffer.java  (working copy)
@@ -355,7 +355,7 @@
         }
state = CHAR_STATE;
-        conv.convert(bb, cb, len);
+        conv.convert(bb, cb, (len == 0) ? bb.getLength() : len);
         bb.setOffset(bb.getEnd());
return cb.getLength();
so now we're trying to "fix the fix". why is that? I do NOT claim that "my shit don't stink" but lets face it, the broken patch came with such claim. and now were arguing that it's "nicer". sorry for being blunt, but lets cut to the chase here, what is it that you are really trying to say and maybe we can focus the technical discussion on that, instead of running around in circles.

I don't see anything wrong with fixing the thing.

Obviously the whole byte/char-chunk code is very sensitive, since several components keep their own offset/end/limit flags to the same byte[], which makes it somewhat of a difficult thing to read into. and that's why I managed to come up with a patch that didn't upset that eco system of the old code.

I agree, but I don't see this is being proposed. It could be too risky
obviously.
not really, the patch was fairly large, and I was against for the reason of regression when the patch becomes a redo/refactor of how the logic works. especially when there is a much simpler fix that does the exact thing.
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/buf/B2CConverter.java?r1=572497&r2=572496&pathrev=572497

and the comment that went along with the checkin
"The patch I just committed is still a bit fragile (since it depends on InputBuffer knowing what CharChunk does internally)"

at this point I don't see how this has to be argued again. the series of events speak for themselves.

And Remy, I appreciate how you've handled this, you've kept your cool, I had a rough day yesterday, and I apologize if I snapped in my email. Not my intention.

Filip

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to