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