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 */


Reply via email to