Author: jochen
Date: Sat Oct 27 11:14:40 2007
New Revision: 589165

URL: http://svn.apache.org/viewvc?rev=589165&view=rev
Log:
Ensured that the server replies with a spec compliant request,
if the client uses the content-length header.
PR: XMLRPC-148
Submitted-By: Andreas Sahlbach, [EMAIL PROTECTED]


Modified:
    webservices/xmlrpc/trunk/.classpath
    
webservices/xmlrpc/trunk/server/src/main/java/org/apache/xmlrpc/webserver/XmlRpcServletServer.java
    webservices/xmlrpc/trunk/src/changes/changes.xml

Modified: webservices/xmlrpc/trunk/.classpath
URL: 
http://svn.apache.org/viewvc/webservices/xmlrpc/trunk/.classpath?rev=589165&r1=589164&r2=589165&view=diff
==============================================================================
--- webservices/xmlrpc/trunk/.classpath (original)
+++ webservices/xmlrpc/trunk/.classpath Sat Oct 27 11:14:40 2007
@@ -5,7 +5,7 @@
        <classpathentry kind="src" output="server/target/classes" 
path="server/src/main/java"/>
        <classpathentry kind="src" path="tests/src/test/java"/>
        <classpathentry kind="src" path="tests/src/test/resources"/>
-       <classpathentry kind="con" 
path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+       <classpathentry kind="con" 
path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER/modules"/>
        <classpathentry kind="con" 
path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
        <classpathentry kind="output" path="tests/target/test-classes"/>
 </classpath>

Modified: 
webservices/xmlrpc/trunk/server/src/main/java/org/apache/xmlrpc/webserver/XmlRpcServletServer.java
URL: 
http://svn.apache.org/viewvc/webservices/xmlrpc/trunk/server/src/main/java/org/apache/xmlrpc/webserver/XmlRpcServletServer.java?rev=589165&r1=589164&r2=589165&view=diff
==============================================================================
--- 
webservices/xmlrpc/trunk/server/src/main/java/org/apache/xmlrpc/webserver/XmlRpcServletServer.java
 (original)
+++ 
webservices/xmlrpc/trunk/server/src/main/java/org/apache/xmlrpc/webserver/XmlRpcServletServer.java
 Sat Oct 27 11:14:40 2007
@@ -25,6 +25,7 @@
 
 import org.apache.xmlrpc.XmlRpcException;
 import org.apache.xmlrpc.common.ServerStreamConnection;
+import org.apache.xmlrpc.common.XmlRpcHttpRequestConfig;
 import org.apache.xmlrpc.common.XmlRpcHttpRequestConfigImpl;
 import org.apache.xmlrpc.common.XmlRpcStreamRequestConfig;
 import org.apache.xmlrpc.server.XmlRpcHttpServer;
@@ -75,7 +76,8 @@
                XmlRpcHttpRequestConfigImpl result = newConfig(pRequest);
                XmlRpcHttpServerConfig serverConfig = (XmlRpcHttpServerConfig) 
getConfig();
                result.setBasicEncoding(serverConfig.getBasicEncoding());
-               
result.setContentLengthOptional(serverConfig.isContentLengthOptional());
+               
result.setContentLengthOptional(serverConfig.isContentLengthOptional()
+                       && (pRequest.getHeader("Content-Length") == null));
                
result.setEnabledForExtensions(serverConfig.isEnabledForExtensions());
                
result.setGzipCompressing(HttpUtil.isUsingGzipEncoding(pRequest.getHeader("Content-Encoding")));
                
result.setGzipRequesting(HttpUtil.isUsingGzipEncoding(pRequest.getHeaders("Accept-Encoding")));
@@ -114,7 +116,11 @@
                        // The spec requires a content-length.
                        return true;
                }
-               return !((XmlRpcHttpServerConfig) 
getConfig()).isContentLengthOptional();
+               boolean isRequired = !((XmlRpcHttpServerConfig) 
getConfig()).isContentLengthOptional();
+               if(pConfig instanceof XmlRpcHttpRequestConfig) {
+                   isRequired |= 
!((XmlRpcHttpRequestConfig)pConfig).isContentLengthOptional();
+               }
+               return isRequired;
        }
 
        protected OutputStream getOutputStream(XmlRpcStreamRequestConfig 
pConfig,

Modified: webservices/xmlrpc/trunk/src/changes/changes.xml
URL: 
http://svn.apache.org/viewvc/webservices/xmlrpc/trunk/src/changes/changes.xml?rev=589165&r1=589164&r2=589165&view=diff
==============================================================================
--- webservices/xmlrpc/trunk/src/changes/changes.xml (original)
+++ webservices/xmlrpc/trunk/src/changes/changes.xml Sat Oct 27 11:14:40 2007
@@ -11,6 +11,11 @@
           issue="XMLRPC-149">
         It is now possible to set the clients user-agent header in the client 
configuration.
       </action>
+      <action dev="jochen" type="fix" due-to="Andreas Sahlbach" 
due-to-email="[EMAIL PROTECTED]"
+          issue="XMLRPC-148">
+        Ensured that the server replies with a spec compliant request, if the 
client uses the
+        content-length header.
+      </action>
     </release>
     <release version="3.1" date="2007-Aug-31">
       <action dev="jochen" type="add">


Reply via email to