You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by ve...@apache.org on 2008/12/23 21:52:01 UTC

svn commit: r729107 - in /synapse/trunk/java: ./ modules/transports/src/main/java/org/apache/synapse/transport/nhttp/

Author: veithen
Date: Tue Dec 23 12:52:01 2008
New Revision: 729107

URL: http://svn.apache.org/viewvc?rev=729107&view=rev
Log:
SYNAPSE-479: In the NIO HTTP listener, only create an input buffer and ContentInputStream if the request has content (i.e. is not a GET request). As a side effect, this should make the transport work with httpcore 4.0-beta3.

Modified:
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerHandler.java
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerWorker.java
    synapse/trunk/java/pom.xml

Modified: synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java?rev=729107&r1=729106&r2=729107&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java (original)
+++ synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java Tue Dec 23 12:52:01 2008
@@ -57,6 +57,7 @@
 
 import javax.net.ssl.SSLContext;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.InterruptedIOException;
 import java.io.OutputStream;
 import java.net.InetSocketAddress;
@@ -455,9 +456,12 @@
             handleException("General Error sending response message", e);
         }
 
-        try {
-            worker.getIs().close();
-        } catch (IOException ignore) {}
+        InputStream is = worker.getIs();
+        if (is != null) {
+            try {
+                is.close();
+            } catch (IOException ignore) {}
+        }
     }
 
     private void sendUsingOutputStream(MessageContext msgContext) throws AxisFault {

Modified: synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerHandler.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerHandler.java?rev=729107&r1=729106&r2=729107&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerHandler.java (original)
+++ synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerHandler.java Tue Dec 23 12:52:01 2008
@@ -46,6 +46,8 @@
 import org.apache.commons.logging.LogFactory;
 
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
 
 /**
  * The server connection handler. An instance of this class is used by each IOReactor, to
@@ -117,10 +119,19 @@
         conn.getContext().setAttribute(NhttpConstants.REQUEST_READ, Boolean.FALSE);
 
         try {
-            ContentInputBuffer inputBuffer = new SharedInputBuffer(cfg.getBufferSize(), conn, allocator);
+            InputStream is;
+            // Only create an input buffer and ContentInputStream if the request has content
+            if (request instanceof HttpEntityEnclosingRequest) {
+                ContentInputBuffer inputBuffer = new SharedInputBuffer(cfg.getBufferSize(), conn, allocator);
+                context.setAttribute(REQUEST_SINK_BUFFER, inputBuffer);
+                is = new ContentInputStream(inputBuffer);
+            } else {
+                is = null;
+            }
+            
             ContentOutputBuffer outputBuffer = new SharedOutputBuffer(cfg.getBufferSize(), conn, allocator);
-            context.setAttribute(REQUEST_SINK_BUFFER, inputBuffer);
             context.setAttribute(RESPONSE_SOURCE_BUFFER, outputBuffer);
+            OutputStream os = new ContentOutputStream(outputBuffer);
 
             // create the default response to this request
             ProtocolVersion httpVersion = request.getRequestLine().getProtocolVersion();
@@ -138,8 +149,7 @@
             // hand off processing of the request to a thread off the pool
             workerPool.execute(
                 new ServerWorker(cfgCtx, conn, isHttps, metrics, this,
-                    request, new ContentInputStream(inputBuffer),
-                    response, new ContentOutputStream(outputBuffer)));
+                    request, is, response, os));
 
         } catch (Exception e) {
             if (metrics != null) {

Modified: synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerWorker.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerWorker.java?rev=729107&r1=729106&r2=729107&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerWorker.java (original)
+++ synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerWorker.java Tue Dec 23 12:52:01 2008
@@ -253,9 +253,11 @@
                     handleException("General Error sending response message", e);
                 }
 
-                try {
-                    is.close();
-                } catch (IOException ignore) {}
+                if (is != null) {
+                    try {
+                        is.close();
+                    } catch (IOException ignore) {}
+                }
 
                 // make sure that the output stream is flushed and closed properly
                 try {

Modified: synapse/trunk/java/pom.xml
URL: http://svn.apache.org/viewvc/synapse/trunk/java/pom.xml?rev=729107&r1=729106&r2=729107&view=diff
==============================================================================
--- synapse/trunk/java/pom.xml (original)
+++ synapse/trunk/java/pom.xml Tue Dec 23 12:52:01 2008
@@ -1168,7 +1168,7 @@
     <properties>
         <!-- Synapse and related components -->
         <synapse.version>SNAPSHOT</synapse.version>
-        <httpcore.nio.version>4.0-beta1</httpcore.nio.version>
+        <httpcore.nio.version>4.0-beta3</httpcore.nio.version>
         <commons.dbcp.version>1.2.2</commons.dbcp.version>
         <commons.pool.version>1.3</commons.pool.version>
         <commons.vfs.version>1.1-587797</commons.vfs.version>