hgomez 2003/10/01 00:54:09
Modified: http11/src/java/org/apache/coyote/http11
Http11Processor.java
Log:
More setters for gzip compression support.
Fix problems with getRemoteAddr, getRemoteHost.
Tested with TC 3.3.2-dev
Revision Changes Path
1.80 +112 -68
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.79
retrieving revision 1.80
diff -u -r1.79 -r1.80
--- Http11Processor.java 21 Sep 2003 19:28:11 -0000 1.79
+++ Http11Processor.java 1 Oct 2003 07:54:09 -0000 1.80
@@ -59,39 +59,37 @@
package org.apache.coyote.http11;
-import java.io.InterruptedIOException;
-import java.io.InputStream;
import java.io.IOException;
+import java.io.InputStream;
+import java.io.InterruptedIOException;
import java.io.OutputStream;
-import java.net.Socket;
import java.net.InetAddress;
+import java.net.Socket;
+import java.util.StringTokenizer;
-import org.apache.tomcat.util.buf.ByteChunk;
-import org.apache.tomcat.util.buf.MessageBytes;
-import org.apache.tomcat.util.http.FastHttpDateFormat;
-import org.apache.tomcat.util.http.MimeHeaders;
-import org.apache.tomcat.util.buf.Ascii;
-import org.apache.tomcat.util.buf.HexUtils;
-import org.apache.tomcat.util.net.SSLSupport;
-import org.apache.tomcat.util.threads.ThreadPool;
-import org.apache.tomcat.util.threads.ThreadWithAttributes;
-
-import org.apache.coyote.ActionHook;
import org.apache.coyote.ActionCode;
+import org.apache.coyote.ActionHook;
import org.apache.coyote.Adapter;
import org.apache.coyote.Processor;
import org.apache.coyote.Request;
import org.apache.coyote.RequestInfo;
import org.apache.coyote.Response;
-
import org.apache.coyote.http11.filters.ChunkedInputFilter;
import org.apache.coyote.http11.filters.ChunkedOutputFilter;
-//import org.apache.coyote.http11.filters.GzipInputFilter;
import org.apache.coyote.http11.filters.GzipOutputFilter;
import org.apache.coyote.http11.filters.IdentityInputFilter;
import org.apache.coyote.http11.filters.IdentityOutputFilter;
import org.apache.coyote.http11.filters.VoidInputFilter;
import org.apache.coyote.http11.filters.VoidOutputFilter;
+import org.apache.tomcat.util.buf.Ascii;
+import org.apache.tomcat.util.buf.ByteChunk;
+import org.apache.tomcat.util.buf.HexUtils;
+import org.apache.tomcat.util.buf.MessageBytes;
+import org.apache.tomcat.util.http.FastHttpDateFormat;
+import org.apache.tomcat.util.http.MimeHeaders;
+import org.apache.tomcat.util.net.SSLSupport;
+import org.apache.tomcat.util.threads.ThreadPool;
+import org.apache.tomcat.util.threads.ThreadWithAttributes;
/**
@@ -324,27 +322,35 @@
}
- /**
- * Set compression level.
- */
- public void setCompression(String compression) {
- if (compression.equals("on")) {
- this.compressionLevel = 1;
- } else if (compression.equals("force")) {
- this.compressionLevel = 2;
- } else if (compression.equals("off")) {
- this.compressionLevel = 0;
- } else {
- try {
- // Try to parse compression as an int, which would give the
- // minimum compression size
- compressionMinSize = Integer.parseInt(compression);
- this.compressionLevel = 1;
- } catch (Exception e) {
- this.compressionLevel = 0;
- }
- }
- }
+ /**
+ * Set compression level.
+ */
+ public void setCompression(String compression) {
+ if (compression.equals("on")) {
+ this.compressionLevel = 1;
+ } else if (compression.equals("force")) {
+ this.compressionLevel = 2;
+ } else if (compression.equals("off")) {
+ this.compressionLevel = 0;
+ } else {
+ try {
+ // Try to parse compression as an int, which would
give the
+ // minimum compression size
+ compressionMinSize = Integer.parseInt(compression);
+ this.compressionLevel = 1;
+ } catch (Exception e) {
+ this.compressionLevel = 0;
+ }
+ }
+ }
+
+ /**
+ * Set Minimum size to trigger compression.
+ */
+ public void setCompressionMinSize(int compressionMinSize) {
+ this.compressionMinSize = compressionMinSize;
+ }
+
public void setThreadPool(ThreadPool threadPool) {
this.threadPool = threadPool;
@@ -362,14 +368,31 @@
}
- /**
- * 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(String[] noCompressionUserAgents) {
- this.noCompressionUserAgents = noCompressionUserAgents;
- }
+ /**
+ * 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(String[] noCompressionUserAgents) {
+ this.noCompressionUserAgents = noCompressionUserAgents;
+ }
+
+
+ /**
+ * 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());
+ }
+ }
+ }
/**
@@ -392,14 +415,31 @@
}
- /**
- * 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 setCompressableMimeType(String[] compressableMimeTypes) {
- this.compressableMimeTypes = compressableMimeTypes;
- }
+ /**
+ * 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) {
+ this.compressableMimeTypes = compressableMimeTypes;
+ }
+
+
+ /**
+ * Set compressable mime-type list
+ * List contains users agents separated by ',' :
+ *
+ * ie: "text/html,text/xml,text/plain"
+ */
+ public void setCompressableMimeTypes(String compressableMimeTypes) {
+ if (compressableMimeTypes != null) {
+ StringTokenizer st = new
StringTokenizer(compressableMimeTypes, ",");
+
+ while (st.hasMoreTokens()) {
+ addCompressableMimeType(st.nextToken().trim());
+ }
+ }
+ }
/**
@@ -885,29 +925,32 @@
} else if (actionCode == ActionCode.ACTION_REQ_HOST_ADDR_ATTRIBUTE) {
- if ((remoteAddr == null) && (socket != null)) {
+ if ((remoteAddr == null) && (socket != null))
remoteAddr = socket.getInetAddress().getHostAddress();
- request.remoteAddr().setString(remoteAddr);
- }
+
+ request.remoteAddr().setString(remoteAddr);
} else if (actionCode == ActionCode.ACTION_REQ_HOST_ATTRIBUTE) {
- if (remoteAddr == null) {
+ if (remoteAddr == null)
remoteAddr = socket.getInetAddress().getHostAddress();
- request.remoteAddr().setString(remoteAddr);
- }
- if (remoteHost == null) {
+
+ request.remoteAddr().setString(remoteAddr);
+
+ if (remoteHost == null)
remoteHost = socket.getInetAddress().getHostName();
- request.remoteHost().setString(remoteHost);
- }
- if (remotePort == -1){
+
+ request.remoteHost().setString(remoteHost);
+
+ if (remotePort == -1)
remotePort = socket.getPort();
- request.setRemotePort(remotePort);
- }
- if (localAddr == null){
+
+ request.setRemotePort(remotePort);
+
+ if (localAddr == null)
localAddr = socket.getLocalAddress().getHostAddress();
- request.localAddr().setString(localAddr);
- }
+
+ request.localAddr().setString(localAddr);
} else if (actionCode == ActionCode.ACTION_REQ_SSL_CERTIFICATE) {
if( sslSupport != null) {
@@ -1230,6 +1273,7 @@
request.getMimeHeaders().getValue("user-agent");
String userAgentValue = userAgentValueMB.toString();
+ // TODO: Use regexp instead of simple string compare (cf:
Apache 2.x)
if (inStringArray(noCompressionUserAgents, userAgentValue))
return false;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]