cvs server: Diffing .
cvs server: Diffing docs
cvs server: Diffing src
cvs server: Diffing src/conf
cvs server: Diffing src/examples
cvs server: Diffing src/java
cvs server: Diffing src/java/org
cvs server: Diffing src/java/org/apache
cvs server: Diffing src/java/org/apache/commons
cvs server: Diffing src/java/org/apache/commons/httpclient
Index: src/java/org/apache/commons/httpclient/HttpMethodBase.java
===================================================================
RCS file: /home/cvspublic/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethodBase.java,v
retrieving revision 1.32
diff -d -u -b -B -w -u -r1.32 HttpMethodBase.java
--- src/java/org/apache/commons/httpclient/HttpMethodBase.java 18 Jul 2002 17:05:51 -0000 1.32
+++ src/java/org/apache/commons/httpclient/HttpMethodBase.java 19 Jul 2002 16:15:35 -0000
@@ -113,6 +113,7 @@
* @author Sean C. Sullivan
* @author dIon Gillard
* @author Jeff Dever
+ * @author Davanum Srinivas
* @version $Revision: 1.32 $ $Date: 2002/07/18 17:05:51 $
*/
public abstract class HttpMethodBase implements HttpMethod {
@@ -1079,6 +1080,8 @@
}
responseHeaders.clear();
+ String name = null;
+ String value = null;
for(;;) {
String line = conn.readLine();
if ((line == null) || (line.length() < 1)) {
@@ -1086,20 +1089,44 @@
}
// Parse the header name and value
+ // Check for folded headers first
+ // Detect LWS-char see HTTP/1.0 or HTTP/1.1 Section 2.2
+ // discussion on folded headers
+
+ boolean isFolded = false;
+ if ( line.charAt(0) == ' ' || line.charAt(0) == '\t' )
+ {
+ // we have continuation folded header
+ // so append value
+ isFolded = true;
+ value = line.substring(1).trim();
+ }
+ else
+ {
+ // Otherwise we should have normal HTTP header line
+ // Parse the header name and value
int colon = line.indexOf(":");
if (colon < 0) {
throw new HttpException("Unable to parse header: " + line);
}
- String name = line.substring(0, colon).trim();
+ name = line.substring(0, colon).trim();
+ value = line.substring(colon + 1).trim();
+ }
String match = name.toLowerCase();
- String value = line.substring(colon + 1).trim();
Header header = (Header)(responseHeaders.get(match));
if (null == header) {
header = new Header(name, value);
} else {
String oldvalue = header.getValue();
if (null != oldvalue) {
+ if ( isFolded ) {
+ // LWS becomes space plus extended value
+ header = new Header(name,oldvalue + " " + value);
+ }
+ else {
+ // Append additional header value
header = new Header(name,oldvalue + ", " + value);
+ }
} else {
header = new Header(name,value);
}
cvs server: Diffing src/java/org/apache/commons/httpclient/log
cvs server: Diffing src/java/org/apache/commons/httpclient/methods
cvs server: Diffing src/test
cvs server: Diffing src/test/org
cvs server: Diffing src/test/org/apache
cvs server: Diffing src/test/org/apache/commons
cvs server: Diffing src/test/org/apache/commons/httpclient
cvs server: Diffing src/test-webapp
cvs server: Diffing src/test-webapp/conf
cvs server: Diffing src/test-webapp/src
cvs server: Diffing src/test-webapp/src/org
cvs server: Diffing src/test-webapp/src/org/apache
cvs server: Diffing src/test-webapp/src/org/apache/commons
cvs server: Diffing src/test-webapp/src/org/apache/commons/httpclient
cvs server: Diffing xdocs
cvs server: Diffing xdocs/images
cvs server: Diffing xdocs/stylesheets