Hi,

please find attached a fix for an bug in the WarpConnector of Tomcat4. I
had the problem that when uploading a picture (JPG) using a HTML form
(with <input type="file"> tag) I got broken pictures on the server.
After comparing the two files (locally and on the server) I realized the
version on the server lost all 0xff bytes. They were simply stripped
off, all other content was correctly transfered. After investigating in
the C code of mod_webapp I had to move over to the JAVA code of the
WarpConnector. There I found a code part which simply coerced the
received byte to an int. Both are signed numeric values so the ASCII
character 255 is converted to the integer -1. This -1 is a special value
meaning end of stream. The attached code changes this behaviour.

Hope you can integrate this in the main distribution.

Philipp


diff -r -u -N webapp-module-1.0-tc40.orig/java/WarpRequest.java webapp-module-1.0-tc40/java/WarpRequest.java
--- webapp-module-1.0-tc40.orig/java/WarpRequest.java	Mon Sep 17 05:41:39 2001
+++ webapp-module-1.0-tc40/java/WarpRequest.java	Fri Oct 19 17:53:46 2001
@@ -138,8 +138,13 @@
             if (packet.getType()!=Constants.TYPE_CBK_DATA)
                 throw new IOException("Invalid WARP packet type for body");
 
-            if (this.packet.pointer<this.packet.size)
-                return((int)this.packet.buffer[this.packet.pointer++]);
+            if (this.packet.pointer<this.packet.size) {
+				int b = (int)this.packet.buffer[this.packet.pointer++];
+				if (b == -1) {
+					b = 255;
+				}
+                return(b);
+			}
 
             this.packet.reset();
             this.packet.setType(Constants.TYPE_CBK_READ);

Reply via email to