You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ga...@apache.org on 2005/03/15 18:27:34 UTC
cvs commit: ws-axis/java/src/org/apache/axis/transport/http ChunkedInputStream.java
gawor 2005/03/15 09:27:34
Modified: java/src/org/apache/axis/transport/http
ChunkedInputStream.java
Log:
read last \r\n if this is the last token
Revision Changes Path
1.10 +20 -8 ws-axis/java/src/org/apache/axis/transport/http/ChunkedInputStream.java
Index: ChunkedInputStream.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/transport/http/ChunkedInputStream.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- ChunkedInputStream.java 22 Nov 2004 18:11:13 -0000 1.9
+++ ChunkedInputStream.java 15 Mar 2005 17:27:34 -0000 1.10
@@ -26,10 +26,15 @@
*/
public class ChunkedInputStream extends java.io.FilterInputStream {
+
protected long chunkSize = 0l;
protected volatile boolean closed = false;
- private static final int maxCharLong = (Long.toHexString(Long.MAX_VALUE))
- .toString().length();
+
+ private static final int maxCharLong =
+ (Long.toHexString(Long.MAX_VALUE)).toString().length();
+
+ private byte[] buf = new byte[maxCharLong + 2];
+
private ChunkedInputStream () {
super(null);
}
@@ -127,10 +132,7 @@
}
protected long getChunked()throws IOException {
- //StringBuffer buf= new StringBuffer(1024);
- byte[]buf = new byte[maxCharLong + 2];
int bufsz = 0;
-
chunkSize = -1L;
int c = -1;
@@ -158,13 +160,23 @@
closed = true;
throw new IOException("'" + sbuf + "' " + ne.getMessage());
}
- if (chunkSize < 1L) closed = true;
+ if (chunkSize < 0L) {
+ closed = true;
+ } if (chunkSize == 0) {
+ closed = true;
+ // consume last \r\n tokens of 0\r\n\r\n chunk
+ if (in.read() != -1) {
+ in.read();
+ }
+ }
if (chunkSize != 0L && c < 0) {
//If chunk size is zero try and be tolerant that there maybe no cr or lf at the end.
throw new IOException("HTTP Chunked stream closed in middle of chunk.");
}
- if (chunkSize < 0L) throw new IOException("HTTP Chunk size received " +
- chunkSize + " is less than zero.");
+ if (chunkSize < 0L) {
+ throw new IOException("HTTP Chunk size received " +
+ chunkSize + " is less than zero.");
+ }
return chunkSize;
}