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