Author: jochen Date: Sun May 7 13:48:51 2006 New Revision: 404846 URL: http://svn.apache.org/viewcvs?rev=404846&view=rev Log: HTTP/1.0 (which is the only version supported by the Lite HTTP transport) requires the presence of a valid content-length header. Consequently, the Lite HTTP transport will from now on reject the contentLengthOptional setting.
Modified: webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcHttpTransport.java webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLiteHttpTransport.java webservices/xmlrpc/trunk/src/changes/changes.xml Modified: webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcHttpTransport.java URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcHttpTransport.java?rev=404846&r1=404845&r2=404846&view=diff ============================================================================== --- webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcHttpTransport.java (original) +++ webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcHttpTransport.java Sun May 7 13:48:51 2006 @@ -94,8 +94,8 @@ initHttpHeaders(pRequest); return super.sendRequest(pRequest); } - - protected boolean isUsingByteArrayOutput(XmlRpcHttpClientConfig pConfig) { + + protected boolean isUsingByteArrayOutput(XmlRpcHttpClientConfig pConfig) throws XmlRpcException { return !pConfig.isEnabledForExtensions() || !pConfig.isContentLengthOptional(); } Modified: webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLiteHttpTransport.java URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLiteHttpTransport.java?rev=404846&r1=404845&r2=404846&view=diff ============================================================================== --- webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLiteHttpTransport.java (original) +++ webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLiteHttpTransport.java Sun May 7 13:48:51 2006 @@ -231,7 +231,15 @@ } } - protected void writeRequest(RequestWriter pWriter) throws XmlRpcException { + protected boolean isUsingByteArrayOutput(XmlRpcHttpClientConfig pConfig) throws XmlRpcException { + boolean result = super.isUsingByteArrayOutput(pConfig); + if (!result) { + throw new XmlRpcException("The Content-Length header is required with HTTP/1.0, and HTTP/1.1 is unsupported by the Lite HTTP Transport."); + } + return result; + } + + protected void writeRequest(RequestWriter pWriter) throws XmlRpcException { OutputStream ostream = getOutputStream(); pWriter.write(ostream); } Modified: webservices/xmlrpc/trunk/src/changes/changes.xml URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/trunk/src/changes/changes.xml?rev=404846&r1=404845&r2=404846&view=diff ============================================================================== --- webservices/xmlrpc/trunk/src/changes/changes.xml (original) +++ webservices/xmlrpc/trunk/src/changes/changes.xml Sun May 7 13:48:51 2006 @@ -37,6 +37,11 @@ The Base64 encoder doesn't accept buffers of length 0. Such a buffer was passed, if the byte array to encode has itself length 0. </action> + <action dev="jochen" type="fix" issue="XMLRPC-79"> + HTTP/1.0 requires a content-length header. The Lite HTTP transport + doesn't support HTTP/1.1, so it refuses the "contentLengthOptional" + setting from now on. + </action> </release> <release version="3.0a1" date="17-Feb-2005"> <action dev="jochen" type="enhancement">