You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by fu...@apache.org on 2004/09/15 02:16:05 UTC
cvs commit: jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11 Http11Processor.java Http11Protocol.java
funkman 2004/09/14 17:16:05
Modified: http11/src/java/org/apache/coyote/http11
Http11Processor.java Http11Protocol.java
Log:
Allow for customized server header at config time.
So now one can do this:
<Connector port="8080" server="TinFoil Hats R US (1.00)" />
Revision Changes Path
1.110 +116 -90 jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/Http11Processor.java
Index: Http11Processor.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/Http11Processor.java,v
retrieving revision 1.109
retrieving revision 1.110
diff -u -r1.109 -r1.110
--- Http11Processor.java 13 Sep 2004 21:39:39 -0000 1.109
+++ Http11Processor.java 15 Sep 2004 00:16:05 -0000 1.110
@@ -56,7 +56,7 @@
/**
* Processes HTTP requests.
- *
+ *
* @author Remy Maucherat
*/
public class Http11Processor implements Processor, ActionHook {
@@ -65,7 +65,7 @@
/**
* Logger.
*/
- protected static org.apache.commons.logging.Log log
+ protected static org.apache.commons.logging.Log log
= org.apache.commons.logging.LogFactory.getLog(Http11Processor.class);
@@ -210,31 +210,31 @@
* Remote Host associated with the current connection.
*/
protected String remoteHost = null;
-
-
+
+
/**
* Local Host associated with the current connection.
*/
protected String localName = null;
-
-
-
+
+
+
/**
* Local port to which the socket is connected
*/
protected int localPort = -1;
-
-
+
+
/**
* Remote port to which the socket is connected
*/
protected int remotePort = -1;
-
-
+
+
/**
* The local Host address.
*/
- protected String localAddr = null;
+ protected String localAddr = null;
/**
@@ -277,11 +277,11 @@
* List of user agents to not use gzip with
*/
protected Pattern noCompressionUserAgents[] = null;
-
+
/**
* List of MIMES which could be gzipped
*/
- protected String[] compressableMimeTypes =
+ protected String[] compressableMimeTypes =
{ "text/html", "text/xml", "text/plain" };
@@ -297,6 +297,12 @@
protected ThreadPool threadPool;
+ /**
+ * Allow a customized the server header for the tin-foil hat folks.
+ */
+ protected String server = Constants.SERVER;
+
+
// ------------------------------------------------------------- Properties
@@ -344,7 +350,7 @@
public void setCompressionMinSize(int compressionMinSize) {
this.compressionMinSize = compressionMinSize;
}
-
+
public void setThreadPool(ThreadPool threadPool) {
this.threadPool = threadPool;
@@ -354,13 +360,13 @@
* Add user-agent for which gzip compression didn't works
* The user agent String given will be exactly matched
* to the user-agent header submitted by the client.
- *
+ *
* @param userAgent user-agent string
*/
public void addNoCompressionUserAgent(String userAgent) {
try {
Pattern nRule = Pattern.compile(userAgent);
- noCompressionUserAgents =
+ noCompressionUserAgents =
addREArray(noCompressionUserAgents, nRule);
} catch (PatternSyntaxException pse) {
log.error("Error parsing regular expression: " + userAgent, pse);
@@ -369,8 +375,8 @@
/**
- * Set no compression user agent list (this method is best when used with
- * a large number of connectors, where it would be better to have all of
+ * Set no compression user agent list (this method is best when used with
+ * a large number of connectors, where it would be better to have all of
* them referenced a single array).
*/
public void setNoCompressionUserAgents(Pattern[] noCompressionUserAgents) {
@@ -381,13 +387,13 @@
/**
* Set no compression user agent list.
* List contains users agents separated by ',' :
- *
+ *
* ie: "gorilla,desesplorer,tigrus"
*/
public void setNoCompressionUserAgents(String noCompressionUserAgents) {
if (noCompressionUserAgents != null) {
StringTokenizer st = new StringTokenizer(noCompressionUserAgents, ",");
-
+
while (st.hasMoreTokens()) {
addNoCompressionUserAgent(st.nextToken().trim());
}
@@ -398,18 +404,18 @@
* Add a mime-type which will be compressable
* The mime-type String will be exactly matched
* in the response mime-type header .
- *
+ *
* @param mimeType mime-type string
*/
public void addCompressableMimeType(String mimeType) {
- compressableMimeTypes =
+ compressableMimeTypes =
addStringArray(compressableMimeTypes, mimeType);
}
/**
- * Set compressable mime-type list (this method is best when used with
- * a large number of connectors, where it would be better to have all of
+ * Set compressable mime-type list (this method is best when used with
+ * a large number of connectors, where it would be better to have all of
* them referenced a single array).
*/
public void setCompressableMimeTypes(String[] compressableMimeTypes) {
@@ -420,7 +426,7 @@
/**
* Set compressable mime-type list
* List contains users agents separated by ',' :
- *
+ *
* ie: "text/html,text/xml,text/plain"
*/
public void setCompressableMimeTypes(String compressableMimeTypes) {
@@ -448,7 +454,7 @@
/**
* Add input or output filter.
- *
+ *
* @param className class name of the filter
*/
protected void addFilter(String className) {
@@ -470,8 +476,8 @@
/**
* General use method
- *
- * @param sArray the StringArray
+ *
+ * @param sArray the StringArray
* @param value string
*/
private String[] addStringArray(String sArray[], String value) {
@@ -492,8 +498,8 @@
/**
* General use method
- *
- * @param rArray the REArray
+ *
+ * @param rArray the REArray
* @param value Obj
*/
private Pattern[] addREArray(Pattern rArray[], Pattern value) {
@@ -502,7 +508,7 @@
result = new Pattern[1];
result[0] = value;
}
- else {
+ else {
result = new Pattern[rArray.length + 1];
for (int i = 0; i < rArray.length; i++)
result[i] = rArray[i];
@@ -514,8 +520,8 @@
/**
* General use method
- *
- * @param sArray the StringArray
+ *
+ * @param sArray the StringArray
* @param value string
*/
private boolean inStringArray(String sArray[], String value) {
@@ -547,10 +553,10 @@
/**
- * Add restricted user-agent (which will downgrade the connector
+ * Add restricted user-agent (which will downgrade the connector
* to HTTP/1.0 mode). The user agent String given will be matched
* via regexp to the user-agent header submitted by the client.
- *
+ *
* @param userAgent user-agent string
*/
public void addRestrictedUserAgent(String userAgent) {
@@ -564,8 +570,8 @@
/**
- * Set restricted user agent list (this method is best when used with
- * a large number of connectors, where it would be better to have all of
+ * Set restricted user agent list (this method is best when used with
+ * a large number of connectors, where it would be better to have all of
* them referenced a single array).
*/
public void setRestrictedUserAgents(Pattern[] restrictedUserAgents) {
@@ -576,12 +582,12 @@
/**
* Set restricted user agent list (which will downgrade the connector
* to HTTP/1.0 mode). List contains users agents separated by ',' :
- *
+ *
* ie: "gorilla,desesplorer,tigrus"
*/
public void setRestrictedUserAgents(String restrictedUserAgents) {
if (restrictedUserAgents != null) {
- StringTokenizer st =
+ StringTokenizer st =
new StringTokenizer(restrictedUserAgents, ",");
while (st.hasMoreTokens()) {
addRestrictedUserAgent(st.nextToken().trim());
@@ -595,10 +601,10 @@
*/
public String[] findRestrictedUserAgents() {
String[] sarr = new String [restrictedUserAgents.length];
-
+
for (int i = 0; i < restrictedUserAgents.length; i++)
sarr[i] = restrictedUserAgents[i].toString();
-
+
return (sarr);
}
@@ -696,6 +702,26 @@
return timeout;
}
+
+ /**
+ * Set the server header name.
+ */
+ public void setServer( String server ) {
+ if (server==null || server.equals("")) {
+ this.server = Constants.SERVER;
+ } else {
+ this.server = server;
+ }
+ }
+
+ /**
+ * Get the server header name.
+ */
+ public String getServer() {
+ return server;
+ }
+
+
/** Get the request associated with this processor.
*
* @return The request
@@ -707,7 +733,7 @@
/**
* Process pipelined HTTP requests using the specified input and output
* streams.
- *
+ *
* @param input stream from which the HTTP requests will be read
* @param output stream which will be used to output the HTTP
* responses
@@ -727,7 +753,7 @@
localAddr = null;
remotePort = -1;
localPort = -1;
-
+
// Setting up the I/O
inputBuffer.setInputStream(input);
outputBuffer.setOutputStream(output);
@@ -739,8 +765,8 @@
int keepAliveLeft = maxKeepAliveRequests;
int soTimeout = socket.getSoTimeout();
- float threadRatio =
- (float) threadPool.getCurrentThreadsBusy()
+ float threadRatio =
+ (float) threadPool.getCurrentThreadsBusy()
/ (float) threadPool.getMaxThreads();
if ((threadRatio > 0.33) && (threadRatio <= 0.66)) {
soTimeout = soTimeout / 2;
@@ -800,7 +826,7 @@
// Handle when the response was committed before a serious
// error occurred. Throwing a ServletException should both
// set the status to 500 and set the errorException.
- // If we fail here, then the response is likely already
+ // If we fail here, then the response is likely already
// committed, so we can't try and set headers.
if(keepAlive && !error) { // Avoid checking twice.
error = response.getErrorException() != null ||
@@ -876,7 +902,7 @@
/**
* Send an action to the connector.
- *
+ *
* @param actionCode Type of the action
* @param param Action parameter
*/
@@ -989,12 +1015,12 @@
InetAddress inetAddr = socket.getInetAddress();
if (inetAddr != null) {
remoteAddr = inetAddr.getHostAddress();
- }
+ }
}
request.remoteAddr().setString(remoteAddr);
} else if (actionCode == ActionCode.ACTION_REQ_LOCAL_NAME_ATTRIBUTE) {
-
+
if ((localName == null) && (socket != null)) {
InetAddress inetAddr = socket.getLocalAddress();
if (inetAddr != null) {
@@ -1004,7 +1030,7 @@
request.localName().setString(localName);
} else if (actionCode == ActionCode.ACTION_REQ_HOST_ATTRIBUTE) {
-
+
if ((remoteHost == null) && (socket != null)) {
InetAddress inetAddr = socket.getInetAddress();
if (inetAddr != null) {
@@ -1012,28 +1038,28 @@
}
}
request.remoteHost().setString(remoteHost);
-
+
} else if (actionCode == ActionCode.ACTION_REQ_LOCAL_ADDR_ATTRIBUTE) {
-
+
if (localAddr == null)
localAddr = socket.getLocalAddress().getHostAddress();
request.localAddr().setString(localAddr);
-
+
} else if (actionCode == ActionCode.ACTION_REQ_REMOTEPORT_ATTRIBUTE) {
-
+
if ((remotePort == -1 ) && (socket !=null)) {
- remotePort = socket.getPort();
- }
+ remotePort = socket.getPort();
+ }
request.setRemotePort(remotePort);
} else if (actionCode == ActionCode.ACTION_REQ_LOCALPORT_ATTRIBUTE) {
-
+
if ((localPort == -1 ) && (socket !=null)) {
- localPort = socket.getLocalPort();
- }
+ localPort = socket.getLocalPort();
+ }
request.setLocalPort(localPort);
-
+
} else if (actionCode == ActionCode.ACTION_REQ_SSL_CERTIFICATE) {
if( sslSupport != null) {
/*
@@ -1065,7 +1091,7 @@
/**
* Set the associated adapter.
- *
+ *
* @param adapter the new adapter
*/
public void setAdapter(Adapter adapter) {
@@ -1075,7 +1101,7 @@
/**
* Get the associated adapter.
- *
+ *
* @return the associated adapter
*/
public Adapter getAdapter() {
@@ -1127,14 +1153,14 @@
}
MimeHeaders headers = request.getMimeHeaders();
-
+
// Check connection header
MessageBytes connectionValueMB = headers.getValue("connection");
if (connectionValueMB != null) {
ByteChunk connectionValueBC = connectionValueMB.getByteChunk();
if (findBytes(connectionValueBC, Constants.CLOSE_BYTES) != -1) {
keepAlive = false;
- } else if (findBytes(connectionValueBC,
+ } else if (findBytes(connectionValueBC,
Constants.KEEPALIVE_BYTES) != -1) {
keepAlive = true;
}
@@ -1152,7 +1178,7 @@
// Check user-agent header
if ((restrictedUserAgents != null) && ((http11) || (keepAlive))) {
MessageBytes userAgentValueMB = headers.getValue("user-agent");
- // Check in the restricted list, and adjust the http11
+ // Check in the restricted list, and adjust the http11
// and keepAlive flags accordingly
if(userAgentValueMB != null) {
String userAgentValue = userAgentValueMB.toString();
@@ -1183,11 +1209,11 @@
(uriB, uriBCStart + pos + 1, 1);
} else {
request.requestURI().setBytes
- (uriB, uriBCStart + slashPos,
+ (uriB, uriBCStart + slashPos,
uriBC.getLength() - slashPos);
}
MessageBytes hostMB = headers.setValue("host");
- hostMB.setBytes(uriB, uriBCStart + pos + 3,
+ hostMB.setBytes(uriB, uriBCStart + pos + 3,
slashPos - pos - 3);
}
@@ -1248,7 +1274,7 @@
parseHost(valueMB);
if (!contentDelimitation) {
- // If there's no content length and we're using keep-alive
+ // If there's no content length and we're using keep-alive
// (HTTP/1.0 with keep-alive or HTTP/1.1), assume
// the client is not broken and didn't send a body
if (keepAlive) {
@@ -1271,11 +1297,11 @@
if (valueMB == null || valueMB.isNull()) {
// HTTP/1.0
- // Default is what the socket tells us. Overriden if a host is
+ // Default is what the socket tells us. Overriden if a host is
// found/parsed
request.setServerPort(socket.getLocalPort());
InetAddress localAddress = socket.getLocalAddress();
- // Setting the socket-related fields. The adapter doesn't know
+ // Setting the socket-related fields. The adapter doesn't know
// about socket.
request.setLocalHost(localAddress.getHostName());
request.serverName().setString(localAddress.getHostName());
@@ -1347,16 +1373,16 @@
// Nope Compression could works in HTTP 1.0 also
// cf: mod_deflate
-
+
// Compression only since HTTP 1.1
// if (! http11)
// return false;
// Check if browser support gzip encoding
- MessageBytes acceptEncodingMB =
+ MessageBytes acceptEncodingMB =
request.getMimeHeaders().getValue("accept-encoding");
-
- if ((acceptEncodingMB == null)
+
+ if ((acceptEncodingMB == null)
|| (acceptEncodingMB.indexOf("gzip") == -1))
return false;
@@ -1364,7 +1390,7 @@
MessageBytes contentEncodingMB =
response.getMimeHeaders().getValue("Content-Encoding");
- if ((contentEncodingMB != null)
+ if ((contentEncodingMB != null)
&& (contentEncodingMB.indexOf("gzip") != -1))
return false;
@@ -1374,7 +1400,7 @@
// Check for incompatible Browser
if (noCompressionUserAgents != null) {
- MessageBytes userAgentValueMB =
+ MessageBytes userAgentValueMB =
request.getMimeHeaders().getValue("user-agent");
if(userAgentValueMB != null) {
String userAgentValue = userAgentValueMB.toString();
@@ -1386,13 +1412,13 @@
}
}
- // Check if suffisant len to trig the compression
+ // Check if suffisant len to trig the compression
int contentLength = response.getContentLength();
- if ((contentLength == -1)
+ if ((contentLength == -1)
|| (contentLength > compressionMinSize)) {
// Check for compatible MIME-TYPE
if (compressableMimeTypes != null) {
- return (startsWithStringArray(compressableMimeTypes,
+ return (startsWithStringArray(compressableMimeTypes,
response.getContentType()));
}
}
@@ -1420,7 +1446,7 @@
}
int statusCode = response.getStatus();
- if ((statusCode == 204) || (statusCode == 205)
+ if ((statusCode == 204) || (statusCode == 205)
|| (statusCode == 304)) {
// No entity body
outputBuffer.addActiveFilter
@@ -1441,7 +1467,7 @@
boolean useCompression = false;
if (entityBody && (compressionLevel > 0)) {
useCompression = isCompressable();
-
+
// Change content-length to -1 to force chunking
if (useCompression) {
response.setContentLength(-1);
@@ -1491,7 +1517,7 @@
// Add date header
String date = null;
if (System.getSecurityManager() != null){
- date = (String)AccessController.doPrivileged(
+ date = (String)AccessController.doPrivileged(
new PrivilegedAction() {
public Object run(){
return FastHttpDateFormat.getCurrentDate();
@@ -1504,12 +1530,12 @@
headers.setValue("Date").setString(date);
// Add server header
- headers.setValue("Server").setString(Constants.SERVER);
+ headers.setValue("Server").setString(server);
// FIXME: Add transfer encoding header
if ((entityBody) && (!contentDelimitation)) {
- // Mark as close the connection after the request, and add the
+ // Mark as close the connection after the request, and add the
// connection: close header
keepAlive = false;
}
@@ -1564,11 +1590,11 @@
/**
* Add an input filter to the current request.
- *
- * @return false if the encoding was not found (which would mean it is
+ *
+ * @return false if the encoding was not found (which would mean it is
* unsupported)
*/
- protected boolean addInputFilter(InputFilter[] inputFilters,
+ protected boolean addInputFilter(InputFilter[] inputFilters,
String encodingName) {
if (encodingName.equals("identity")) {
// Skip
@@ -1601,9 +1627,9 @@
int start = bc.getStart();
int end = bc.getEnd();
- // Look for first char
+ // Look for first char
int srcEnd = b.length;
-
+
for (int i = start; i <= (end - srcEnd); i++) {
if (Ascii.toLower(buff[i]) != first) continue;
// found first char, now look for a match
1.56 +88 -76 jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/Http11Protocol.java
Index: Http11Protocol.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/Http11Protocol.java,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -r1.55 -r1.56
--- Http11Protocol.java 27 May 2004 18:29:35 -0000 1.55
+++ Http11Protocol.java 15 Sep 2004 00:16:05 -0000 1.56
@@ -100,7 +100,7 @@
return (String)getAttribute(name);
}
- /** The adapter, used to call the connector
+ /** The adapter, used to call the connector
*/
public void setAdapter(Adapter adapter) {
this.adapter=adapter;
@@ -110,7 +110,7 @@
return adapter;
}
-
+
/** Start the protocol
*/
public void init() throws Exception {
@@ -142,10 +142,10 @@
log.info(sm.getString("http11protocol.init", getName()));
}
-
+
ObjectName tpOname;
ObjectName rgOname;
-
+
public void start() throws Exception {
if( this.domain != null ) {
try {
@@ -199,20 +199,20 @@
public void destroy() throws Exception {
log.info(sm.getString("http11protocol.stop", getName()));
ep.stopEndpoint();
- if( tpOname!=null )
+ if( tpOname!=null )
Registry.getRegistry(null, null).unregisterComponent(tpOname);
- if( rgOname != null )
+ if( rgOname != null )
Registry.getRegistry(null, null).unregisterComponent(rgOname);
}
-
+
// -------------------- Properties--------------------
protected ThreadPool tp=ThreadPool.createThreadPool(true);
protected PoolTcpEndpoint ep=new PoolTcpEndpoint(tp);
protected boolean secure;
-
+
protected ServerSocketFactory socketFactory;
protected SSLImplementation sslImplementation;
- // socket factory attriubtes ( XXX replace with normal setters )
+ // socket factory attriubtes ( XXX replace with normal setters )
protected Hashtable attributes = new Hashtable();
protected String socketFactoryName=null;
protected String sslImplementationName=null;
@@ -236,13 +236,15 @@
private String restrictedUserAgents = null;
private String compressableMimeTypes = "text/html,text/xml,text/plain";
private int compressionMinSize = 2048;
-
+
+ private String server;
+
// -------------------- Pool setup --------------------
public boolean getPools(){
return ep.isPoolOn();
}
-
+
public void setPools( boolean t ) {
ep.setPoolOn(t);
setAttribute("pools", "" + t);
@@ -251,7 +253,7 @@
public int getMaxThreads() {
return ep.getMaxThreads();
}
-
+
public void setMaxThreads( int maxThreads ) {
ep.setMaxThreads(maxThreads);
setAttribute("maxThreads", "" + maxThreads);
@@ -260,12 +262,12 @@
public int getMaxSpareThreads() {
return ep.getMaxSpareThreads();
}
-
+
public void setMaxSpareThreads( int maxThreads ) {
ep.setMaxSpareThreads(maxThreads);
setAttribute("maxSpareThreads", "" + maxThreads);
}
-
+
public int getMinSpareThreads() {
return ep.getMinSpareThreads();
}
@@ -289,16 +291,16 @@
public int getBacklog() {
return ep.getBacklog();
}
-
+
public void setBacklog( int i ) {
ep.setBacklog(i);
setAttribute("backlog", "" + i);
}
-
+
public int getPort() {
return ep.getPort();
}
-
+
public void setPort( int port ) {
ep.setPort(port);
setAttribute("port", "" + port);
@@ -308,12 +310,12 @@
public InetAddress getAddress() {
return ep.getAddress();
}
-
+
public void setAddress(InetAddress ia) {
ep.setAddress( ia );
setAttribute("address", "" + ia);
}
-
+
public String getName() {
String encodedAddr = "";
if (getAddress() != null) {
@@ -324,7 +326,7 @@
}
return ("http-" + encodedAddr + ep.getPort());
}
-
+
// commenting out for now since it's not doing anything
//public void setHostName( String name ) {
// ??? Doesn't seem to be used in existing or prev code
@@ -334,25 +336,25 @@
public String getSocketFactory() {
return socketFactoryName;
}
-
+
public void setSocketFactory( String valueS ) {
socketFactoryName = valueS;
setAttribute("socketFactory", valueS);
}
-
+
public String getSSLImplementation() {
return sslImplementationName;
}
-
+
public void setSSLImplementation( String valueS) {
sslImplementationName = valueS;
setAttribute("sslImplementation", valueS);
}
-
+
public boolean getTcpNoDelay() {
return ep.getTcpNoDelay();
}
-
+
public void setTcpNoDelay( boolean b ) {
ep.setTcpNoDelay( b );
setAttribute("tcpNoDelay", "" + b);
@@ -361,7 +363,7 @@
public boolean getDisableUploadTimeout() {
return disableUploadTimeout;
}
-
+
public void setDisableUploadTimeout(boolean isDisabled) {
disableUploadTimeout = isDisabled;
}
@@ -369,7 +371,7 @@
public int getSocketBuffer() {
return socketBuffer;
}
-
+
public void setSocketBuffer(int valueI) {
socketBuffer = valueI;
}
@@ -377,7 +379,7 @@
public String getCompression() {
return compression;
}
-
+
public void setCompression(String valueS) {
compression = valueS;
setAttribute("compression", valueS);
@@ -386,7 +388,7 @@
public int getMaxPostSize() {
return maxPostSize;
}
-
+
public void setMaxPostSize(int valueI) {
maxPostSize = valueI;
setAttribute("maxPostSize", "" + valueI);
@@ -395,7 +397,7 @@
public int getMaxHttpHeaderSize() {
return maxHttpHeaderSize;
}
-
+
public void setMaxHttpHeaderSize(int valueI) {
maxHttpHeaderSize = valueI;
setAttribute("maxHttpHeaderSize", "" + valueI);
@@ -404,7 +406,7 @@
public String getRestrictedUserAgents() {
return restrictedUserAgents;
}
-
+
public void setRestrictedUserAgents(String valueS) {
restrictedUserAgents = valueS;
setAttribute("restrictedUserAgents", valueS);
@@ -413,7 +415,7 @@
public String getNoCompressionUserAgents() {
return noCompressionUserAgents;
}
-
+
public void setNoCompressionUserAgents(String valueS) {
noCompressionUserAgents = valueS;
setAttribute("noCompressionUserAgents", valueS);
@@ -422,7 +424,7 @@
public String getCompressableMimeType() {
return compressableMimeTypes;
}
-
+
public void setCompressableMimeType(String valueS) {
compressableMimeTypes = valueS;
setAttribute("compressableMimeTypes", valueS);
@@ -431,7 +433,7 @@
public int getCompressionMinSize() {
return compressionMinSize;
}
-
+
public void setCompressionMinSize(int valueI) {
compressionMinSize = valueI;
setAttribute("compressionMinSize", "" + valueI);
@@ -440,7 +442,7 @@
public int getSoLinger() {
return ep.getSoLinger();
}
-
+
public void setSoLinger( int i ) {
ep.setSoLinger( i );
setAttribute("soLinger", "" + i);
@@ -449,25 +451,25 @@
public int getSoTimeout() {
return ep.getSoTimeout();
}
-
+
public void setSoTimeout( int i ) {
ep.setSoTimeout(i);
setAttribute("soTimeout", "" + i);
}
-
+
public int getServerSoTimeout() {
return ep.getServerSoTimeout();
}
-
+
public void setServerSoTimeout( int i ) {
ep.setServerSoTimeout(i);
setAttribute("serverSoTimeout", "" + i);
}
-
+
public String getKeystore() {
return getProperty("keystore");
}
-
+
public void setKeystore( String k ) {
setAttribute("keystore", k);
}
@@ -475,16 +477,16 @@
public String getKeypass() {
return getProperty("keypass");
}
-
+
public void setKeypass( String k ) {
attributes.put("keypass", k);
//setAttribute("keypass", k);
}
-
+
public String getKeytype() {
return getProperty("keystoreType");
}
-
+
public void setKeytype( String k ) {
setAttribute("keystoreType", k);
}
@@ -492,7 +494,7 @@
public String getClientauth() {
return getProperty("clientauth");
}
-
+
public void setClientauth( String k ) {
setAttribute("clientauth", k);
}
@@ -500,7 +502,7 @@
public String getProtocol() {
return getProperty("protocol");
}
-
+
public void setProtocol( String k ) {
setAttribute("protocol", k);
}
@@ -508,7 +510,7 @@
public String getProtocols() {
return getProperty("protocols");
}
-
+
public void setProtocols(String k) {
setAttribute("protocols", k);
}
@@ -516,7 +518,7 @@
public String getAlgorithm() {
return getProperty("algorithm");
}
-
+
public void setAlgorithm( String k ) {
setAttribute("algorithm", k);
}
@@ -524,7 +526,7 @@
public boolean getSecure() {
return secure;
}
-
+
public void setSecure( boolean b ) {
secure=b;
setAttribute("secure", "" + b);
@@ -533,7 +535,7 @@
public String getCiphers() {
return getProperty("ciphers");
}
-
+
public void setCiphers(String ciphers) {
setAttribute("ciphers", ciphers);
}
@@ -541,7 +543,7 @@
public String getKeyAlias() {
return getProperty("keyAlias");
}
-
+
public void setKeyAlias(String keyAlias) {
setAttribute("keyAlias", keyAlias);
}
@@ -549,7 +551,7 @@
public int getMaxKeepAliveRequests() {
return maxKeepAliveRequests;
}
-
+
/** Set the maximum number of Keep-Alive requests that we will honor.
*/
public void setMaxKeepAliveRequests(int mkar) {
@@ -560,12 +562,21 @@
public int getSocketCloseDelay() {
return socketCloseDelay;
}
-
+
public void setSocketCloseDelay( int d ) {
socketCloseDelay=d;
setAttribute("socketCloseDelay", "" + d);
}
+ public void setServer( String server ) {
+ this.server = server;
+ }
+
+ public String getServer() {
+ return server;
+ }
+
+
private static ServerSocketFactory string2SocketFactory( String val)
throws ClassNotFoundException, IllegalAccessException,
InstantiationException
@@ -577,7 +588,7 @@
public int getTimeout() {
return timeout;
}
-
+
public void setTimeout( int timeouts ) {
timeout = timeouts * 1000;
setAttribute("timeout", "" + timeouts);
@@ -586,19 +597,19 @@
public String getReportedname() {
return reportedname;
}
-
+
public void setReportedname( String reportedName) {
reportedname = reportedName;
}
-
+
// -------------------- Connection handler --------------------
public static final int THREAD_DATA_PROCESSOR=1;
public static final int THREAD_DATA_OBJECT_NAME=2;
-
-
+
+
static class MXPoolListener implements ThreadPool.ThreadPoolListener {
MXPoolListener( Http11Protocol proto, ThreadPool control ) {
-
+
}
public void threadStart(ThreadPool tp, Thread t) {
@@ -618,7 +629,7 @@
ObjectName oname=(ObjectName)tpData[Http11Protocol.THREAD_DATA_OBJECT_NAME];
if( oname==null ) return;
Registry.getRegistry(null, null).unregisterComponent(oname);
- Http11Processor processor =
+ Http11Processor processor =
(Http11Processor) tpData[Http11Protocol.THREAD_DATA_PROCESSOR];
RequestInfo rp=processor.getRequest().getRequestProcessor();
rp.setGlobalProcessor(null);
@@ -633,17 +644,17 @@
Http11ConnectionHandler( Http11Protocol proto ) {
this.proto=proto;
}
-
+
public void setAttribute( String name, Object value ) {
}
-
+
public void setServer( Object o ) {
}
-
+
public Object[] init() {
Object thData[]=new Object[3];
-
- Http11Processor processor =
+
+ Http11Processor processor =
new Http11Processor(proto.maxHttpHeaderSize);
processor.setAdapter( proto.adapter );
processor.setThreadPool( proto.tp );
@@ -657,15 +668,16 @@
processor.setRestrictedUserAgents( proto.restrictedUserAgents);
processor.setSocketBuffer( proto.socketBuffer );
processor.setMaxPostSize( proto.maxPostSize );
+ processor.setServer( proto.server );
thData[Http11Protocol.THREAD_DATA_PROCESSOR]=processor;
-
+
if( proto.getDomain() != null ) {
try {
RequestInfo rp=processor.getRequest().getRequestProcessor();
rp.setGlobalProcessor(global);
ObjectName rpName=new ObjectName
- (proto.getDomain() + ":type=RequestProcessor,worker="
+ (proto.getDomain() + ":type=RequestProcessor,worker="
+ proto.getName() +",name=HttpRequest" + count++ );
Registry.getRegistry(null, null).registerComponent( rp, rpName, null);
thData[Http11Protocol.THREAD_DATA_OBJECT_NAME]=rpName;
@@ -683,12 +695,12 @@
Http11Processor processor=null;
try {
processor=(Http11Processor)thData[Http11Protocol.THREAD_DATA_PROCESSOR];
-
+
if (processor instanceof ActionHook) {
((ActionHook) processor).action(ActionCode.ACTION_START, null);
}
socket=connection.getSocket();
-
+
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
@@ -701,9 +713,9 @@
processor.setSSLSupport( null );
}
processor.setSocket( socket );
-
+
processor.process(in, out);
-
+
// If unread input arrives after the shutdownInput() call
// below and before or during the socket.close(), an error
// may be reported to the client. To help troubleshoot this
@@ -715,7 +727,7 @@
Thread.sleep(proto.socketCloseDelay);
} catch (InterruptedException ie) { /* ignore */ }
}
-
+
TcpConnection.shutdownInput( socket );
} catch(java.net.SocketException e) {
// SocketExceptions are normal
@@ -723,7 +735,7 @@
(sm.getString
("http11protocol.proto.socketexception.debug"), e);
} catch (java.io.IOException e) {
- // IOExceptions are normal
+ // IOExceptions are normal
Http11Protocol.log.debug
(sm.getString
("http11protocol.proto.ioexception.debug"), e);
@@ -740,7 +752,7 @@
} finally {
// if(proto.adapter != null) proto.adapter.recycle();
// processor.recycle();
-
+
if (processor instanceof ActionHook) {
((ActionHook) processor).action(ActionCode.ACTION_STOP, null);
}
@@ -751,7 +763,7 @@
}
}
- protected static org.apache.commons.logging.Log log
+ protected static org.apache.commons.logging.Log log
= org.apache.commons.logging.LogFactory.getLog(Http11Protocol.class);
// -------------------- Various implementation classes --------------------
@@ -804,12 +816,12 @@
public boolean isSecure() {
return secure;
}
-
+
public PoolTcpEndpoint getEndpoint() {
return ep;
}
*/
-
+
protected String domain;
protected ObjectName oname;
protected MBeanServer mserver;
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org