You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by eg...@apache.org on 2006/11/29 12:16:37 UTC

svn commit: r480520 - /incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java

Author: eglynn
Date: Wed Nov 29 03:16:33 2006
New Revision: 480520

URL: http://svn.apache.org/viewvc?view=rev&rev=480520
Log:
Fix for interop issue with HTTP 202 responses to oneways with empty entity body
(i.e. not a partial repsonse). Addresses JIRA issue CXF-269.

Modified:
    incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java

Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java?view=diff&rev=480520&r1=480519&r2=480520
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java Wed Nov 29 03:16:33 2006
@@ -458,10 +458,9 @@
         private void handleResponse() throws IOException {
             Exchange exchange = outMessage.getExchange();
             int responseCode = getResponseCode(connection);
-            if (exchange != null
-                && exchange.isOneWay()
-                && responseCode != HttpURLConnection.HTTP_ACCEPTED) {
-                //oneway operation
+            if (isOneway(exchange)
+                && !isPartialResponse(connection, responseCode)) {
+                // oneway operation without partial response
                 connection.getInputStream().close();
                 return;
             }
@@ -489,6 +488,25 @@
             
             incomingObserver.onMessage(inMessage);
         }
+    }
+    
+    /**
+     * @param exchange the exchange in question
+     * @return true iff the exchange indicates a oneway MEP
+     */
+    private boolean isOneway(Exchange exchange) {
+        return exchange != null && exchange.isOneWay();
+    }
+    
+    /**
+     * @param connection the connection in question
+     * @param responseCode the response code
+     * @return true if a partial response is pending on the connection 
+     */
+    private boolean isPartialResponse(URLConnection connection,
+                                      int responseCode) {
+        return responseCode == HttpURLConnection.HTTP_ACCEPTED
+               && connection.getContentLength() != 0;
     }
 
     /**