You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by su...@apache.org on 2010/05/08 07:57:34 UTC

svn commit: r942314 - in /synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp: HttpCoreNIOSender.java NHttpConfiguration.java NhttpConstants.java

Author: supun
Date: Sat May  8 05:57:33 2010
New Revision: 942314

URL: http://svn.apache.org/viewvc?rev=942314&view=rev
Log:
Enabling user to control weather to preserve User-Agent header or Server header. The corresponding issue is SYNAPSE-645

Modified:
    synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java
    synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NHttpConfiguration.java
    synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java

Modified: synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java?rev=942314&r1=942313&r2=942314&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java (original)
+++ synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java Sat May  8 05:57:33 2010
@@ -105,7 +105,10 @@ public class HttpCoreNIOSender extends A
     private List<String> knownDirectHosts = new ArrayList<String>();
     /** The list of known hosts to go via proxy */
     private List<String> knownProxyHosts = new ArrayList<String>();
-
+    /** Weather User-Agent header coming from client should be preserved */
+    private boolean preserveUserAgentHeader = false;
+    /** Weather Server header coming from server should be preserved */
+    private boolean preserveServerHeader = true;
     /**
      * Initialize the transport sender, and execute reactor in new seperate thread
      * @param cfgCtx the Axis2 configuration context
@@ -154,6 +157,9 @@ public class HttpCoreNIOSender extends A
             cfgCtx.setNonReplicableProperty("warnOnHTTP500", warnOnHttp500);
         }
 
+        preserveUserAgentHeader = NHttpConfiguration.getInstance().isPreserveUserAgentHeader();
+        preserveServerHeader = NHttpConfiguration.getInstance().isPreserveServerHeader();
+
         HttpParams params = getClientParameters();
         try {
             String prefix = (sslContext == null ? "http" : "https") + "-Sender I/O dispatcher";
@@ -330,10 +336,16 @@ public class HttpCoreNIOSender extends A
             if (HTTP.CONN_DIRECTIVE.equalsIgnoreCase(headerName) ||
                 HTTP.TRANSFER_ENCODING.equalsIgnoreCase(headerName) ||
                 HTTP.DATE_HEADER.equalsIgnoreCase(headerName) ||
-                HTTP.SERVER_HEADER.equalsIgnoreCase(headerName) ||
                 HTTP.CONTENT_TYPE.equalsIgnoreCase(headerName) ||
-                HTTP.CONTENT_LEN.equalsIgnoreCase(headerName) ||
-                HTTP.USER_AGENT.equalsIgnoreCase(headerName)) {
+                HTTP.CONTENT_LEN.equalsIgnoreCase(headerName)) {
+                iter.remove();
+            }
+
+            if (!preserveServerHeader && HTTP.SERVER_HEADER.equalsIgnoreCase(headerName)) {
+                iter.remove();
+            }
+
+            if (!preserveUserAgentHeader && HTTP.USER_AGENT.equalsIgnoreCase(headerName)) {
                 iter.remove();
             }
         }

Modified: synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NHttpConfiguration.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NHttpConfiguration.java?rev=942314&r1=942313&r2=942314&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NHttpConfiguration.java (original)
+++ synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NHttpConfiguration.java Sat May  8 05:57:33 2010
@@ -122,6 +122,14 @@ public final class NHttpConfiguration {
         return getProperty(NhttpConstants.DISABLE_KEEPALIVE, 0) == 1;
     }
 
+    public boolean isPreserveUserAgentHeader() {
+        return getBooleanValue(NhttpConstants.USER_AGENT_HEADER_PRESERVE, false);
+    }
+
+    public boolean isPreserveServerHeader() {
+        return getBooleanValue(NhttpConstants.SERVER_HEADER_PRESERVE, true);
+    }
+
     /**
      * Get properties that tune nhttp transport. Preference to system properties
      * @param name name of the system/config property

Modified: synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java?rev=942314&r1=942313&r2=942314&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java (original)
+++ synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java Sat May  8 05:57:33 2010
@@ -65,6 +65,16 @@ public class NhttpConstants {
     /** The message context property name which holds the exception (if any) for the last encountered exception */
     public static final String ERROR_EXCEPTION = "ERROR_EXCEPTION";
 
+    /** Defines weather synapse needs to preserve the original User-Agent header. Configures
+     * through nhttp.properties file or via a system property
+     * */
+    public static final String USER_AGENT_HEADER_PRESERVE = "http.user.agent.preserve";
+
+    /** Defines weather synapse needs to preserve the original Server header. Configures
+     * through nhttp.properties file or via a system property
+     * */
+    public static final String SERVER_HEADER_PRESERVE = "http.server.preserve"; 
+
     /** Denotes a connection close is forced if set at the NhttpContext */
     public static final String FORCE_CLOSING = "forceClosing";
     /** Denotes a message is being processed by the current connection if this is set at the context */