From 72bd5612d61957bae6446063687043c5754882ba Mon Sep 17 00:00:00 2001 From: markt Date: Mon, 6 Dec 2010 16:26:17 +0000 Subject: [PATCH] Fix mix-up of connectionUploadTimeout and connectionTimeout Use connectionUploadTimeout consistently as attribute name Document connectionUploadTimeout git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1042706 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/catalina/connector/Connector.java | 1 - .../coyote/http11/AbstractHttp11Processor.java | 10 ++++---- .../coyote/http11/AbstractHttp11Protocol.java | 27 +++++++++++++--------- .../apache/coyote/http11/Http11AprProcessor.java | 3 ++- .../apache/coyote/http11/Http11AprProtocol.java | 16 ++----------- .../apache/coyote/http11/Http11NioProcessor.java | 3 ++- .../apache/coyote/http11/Http11NioProtocol.java | 3 ++- java/org/apache/coyote/http11/Http11Processor.java | 2 +- java/org/apache/coyote/http11/Http11Protocol.java | 3 ++- webapps/docs/config/http.xml | 16 +++++++++---- 10 files changed, 43 insertions(+), 41 deletions(-) diff --git a/java/org/apache/catalina/connector/Connector.java b/java/org/apache/catalina/connector/Connector.java index 6f0677b5e..9ec57b817 100644 --- a/java/org/apache/catalina/connector/Connector.java +++ b/java/org/apache/catalina/connector/Connector.java @@ -247,7 +247,6 @@ public class Connector extends LifecycleMBeanBase { replacements.put("acceptCount", "backlog"); replacements.put("connectionLinger", "soLinger"); replacements.put("connectionTimeout", "soTimeout"); - replacements.put("connectionUploadTimeout", "timeout"); replacements.put("randomFile", "randomfile"); replacements.put("rootFile", "rootfile"); replacements.put("sslProtocols", "protocols"); diff --git a/java/org/apache/coyote/http11/AbstractHttp11Processor.java b/java/org/apache/coyote/http11/AbstractHttp11Processor.java index 34598a930..22bca8e5b 100644 --- a/java/org/apache/coyote/http11/AbstractHttp11Processor.java +++ b/java/org/apache/coyote/http11/AbstractHttp11Processor.java @@ -181,7 +181,7 @@ public abstract class AbstractHttp11Processor implements ActionHook, Processor { /** * Maximum timeout on uploads. 5 minutes as in Apache HTTPD server. */ - protected int timeout = 300000; + protected int connectionUploadTimeout = 300000; /** @@ -582,15 +582,15 @@ public abstract class AbstractHttp11Processor implements ActionHook, Processor { /** * Set the upload timeout. */ - public void setTimeout( int timeouts ) { - timeout = timeouts ; + public void setConnectionUploadTimeout(int timeout) { + connectionUploadTimeout = timeout ; } /** * Get the upload timeout. */ - public int getTimeout() { - return timeout; + public int getConnectionUploadTimeout() { + return connectionUploadTimeout; } diff --git a/java/org/apache/coyote/http11/AbstractHttp11Protocol.java b/java/org/apache/coyote/http11/AbstractHttp11Protocol.java index 3c1c43875..69d323d75 100644 --- a/java/org/apache/coyote/http11/AbstractHttp11Protocol.java +++ b/java/org/apache/coyote/http11/AbstractHttp11Protocol.java @@ -152,14 +152,6 @@ public abstract class AbstractHttp11Protocol extends AbstractProtocolHandler { return endpoint.getKeepAliveTimeout(); } - public int getTimeout() { - return getSoTimeout(); - } - - public void setTimeout( int timeout ) { - setSoTimeout(timeout); - } - public int getConnectionTimeout() { return getSoTimeout(); } @@ -198,14 +190,27 @@ public abstract class AbstractHttp11Protocol extends AbstractProtocolHandler { public void setMaxHttpHeaderSize(int valueI) { maxHttpHeaderSize = valueI; } + /** + * Specifies a different (usually longer) connection timeout during data + * upload. + */ + private int connectionUploadTimeout = 300000; + public int getConnectionUploadTimeout() { return connectionUploadTimeout; } + public void setConnectionUploadTimeout(int i) { + connectionUploadTimeout = i; + } + + // HTTP /** - * If true, the regular socket timeout will be used for the full duration - * of the connection. + * If true, the connectionUploadTimeout will be ignored and the regular + * socket timeout will be used for the full duration of the connection. */ private boolean disableUploadTimeout = true; public boolean getDisableUploadTimeout() { return disableUploadTimeout; } - public void setDisableUploadTimeout(boolean isDisabled) { disableUploadTimeout = isDisabled; } + public void setDisableUploadTimeout(boolean isDisabled) { + disableUploadTimeout = isDisabled; + } // HTTP diff --git a/java/org/apache/coyote/http11/Http11AprProcessor.java b/java/org/apache/coyote/http11/Http11AprProcessor.java index c13c46ed9..c802542ad 100644 --- a/java/org/apache/coyote/http11/Http11AprProcessor.java +++ b/java/org/apache/coyote/http11/Http11AprProcessor.java @@ -238,7 +238,8 @@ public class Http11AprProcessor extends AbstractHttp11Processor { request.setStartTime(System.currentTimeMillis()); keptAlive = true; if (!disableUploadTimeout) { - Socket.timeoutSet(socketRef, timeout * 1000); + Socket.timeoutSet(socketRef, + connectionUploadTimeout * 1000); } inputBuffer.parseHeaders(); } catch (IOException e) { diff --git a/java/org/apache/coyote/http11/Http11AprProtocol.java b/java/org/apache/coyote/http11/Http11AprProtocol.java index 13756f1b8..4dff0fdcc 100644 --- a/java/org/apache/coyote/http11/Http11AprProtocol.java +++ b/java/org/apache/coyote/http11/Http11AprProtocol.java @@ -143,19 +143,6 @@ public class Http11AprProtocol extends AbstractHttp11Protocol { public boolean getDeferAccept() { return ((AprEndpoint)endpoint).getDeferAccept(); } public void setDeferAccept(boolean deferAccept) { ((AprEndpoint)endpoint).setDeferAccept(deferAccept); } - /** - * This timeout represents the socket timeout which will be used while - * the adapter execution is in progress, unless disableUploadTimeout - * is set to true. The default is the same as for Apache HTTP Server - * (300 000 milliseconds). - * TODO: Make the timeout attribute names consistent across the connectors - */ - protected int timeout = 300000; - @Override - public int getTimeout() { return timeout; } - @Override - public void setTimeout(int timeout) { this.timeout = timeout; } - // -------------------- SSL related properties -------------------- /** @@ -437,7 +424,8 @@ public class Http11AprProtocol extends AbstractHttp11Protocol { proto.getMaxTrailerSize()); processor.setAdapter(proto.adapter); processor.setMaxKeepAliveRequests(proto.getMaxKeepAliveRequests()); - processor.setTimeout(proto.timeout); + processor.setConnectionUploadTimeout( + proto.getConnectionUploadTimeout()); processor.setDisableUploadTimeout(proto.getDisableUploadTimeout()); processor.setCompressionMinSize(proto.getCompressionMinSize()); processor.setCompression(proto.getCompression()); diff --git a/java/org/apache/coyote/http11/Http11NioProcessor.java b/java/org/apache/coyote/http11/Http11NioProcessor.java index 3d5ff2ce8..cbb815784 100644 --- a/java/org/apache/coyote/http11/Http11NioProcessor.java +++ b/java/org/apache/coyote/http11/Http11NioProcessor.java @@ -339,7 +339,8 @@ public class Http11NioProcessor extends AbstractHttp11Processor { } request.setStartTime(System.currentTimeMillis()); if (!disableUploadTimeout) { //only for body, not for request headers - socket.getIOChannel().socket().setSoTimeout(timeout); + socket.getIOChannel().socket().setSoTimeout( + connectionUploadTimeout); } } catch (IOException e) { if (log.isDebugEnabled()) { diff --git a/java/org/apache/coyote/http11/Http11NioProtocol.java b/java/org/apache/coyote/http11/Http11NioProtocol.java index c29edabb9..404cba0af 100644 --- a/java/org/apache/coyote/http11/Http11NioProtocol.java +++ b/java/org/apache/coyote/http11/Http11NioProtocol.java @@ -427,7 +427,8 @@ public class Http11NioProtocol extends AbstractHttp11JsseProtocol { proto.getMaxTrailerSize()); processor.setAdapter(proto.adapter); processor.setMaxKeepAliveRequests(proto.getMaxKeepAliveRequests()); - processor.setTimeout(proto.getTimeout()); + processor.setConnectionUploadTimeout( + proto.getConnectionUploadTimeout()); processor.setDisableUploadTimeout(proto.getDisableUploadTimeout()); processor.setCompressionMinSize(proto.getCompressionMinSize()); processor.setCompression(proto.getCompression()); diff --git a/java/org/apache/coyote/http11/Http11Processor.java b/java/org/apache/coyote/http11/Http11Processor.java index 59f790923..a4069aeed 100644 --- a/java/org/apache/coyote/http11/Http11Processor.java +++ b/java/org/apache/coyote/http11/Http11Processor.java @@ -199,7 +199,7 @@ public class Http11Processor extends AbstractHttp11Processor { if (disableUploadTimeout) { socket.getSocket().setSoTimeout(soTimeout); } else { - socket.getSocket().setSoTimeout(timeout); + socket.getSocket().setSoTimeout(connectionUploadTimeout); } inputBuffer.parseHeaders(); } catch (IOException e) { diff --git a/java/org/apache/coyote/http11/Http11Protocol.java b/java/org/apache/coyote/http11/Http11Protocol.java index e4ed1e111..dae125aa9 100644 --- a/java/org/apache/coyote/http11/Http11Protocol.java +++ b/java/org/apache/coyote/http11/Http11Protocol.java @@ -299,7 +299,8 @@ public class Http11Protocol extends AbstractHttp11JsseProtocol { processor.setAdapter(proto.adapter); processor.setMaxKeepAliveRequests(proto.getMaxKeepAliveRequests()); processor.setKeepAliveTimeout(proto.getKeepAliveTimeout()); - processor.setTimeout(proto.getTimeout()); + processor.setConnectionUploadTimeout( + proto.getConnectionUploadTimeout()); processor.setDisableUploadTimeout(proto.getDisableUploadTimeout()); processor.setCompressionMinSize(proto.getCompressionMinSize()); processor.setCompression(proto.getCompression()); diff --git a/webapps/docs/config/http.xml b/webapps/docs/config/http.xml index ca3108866..53bbe56eb 100644 --- a/webapps/docs/config/http.xml +++ b/webapps/docs/config/http.xml @@ -300,12 +300,18 @@ presented. The default value is 60000 (i.e. 60 seconds).

+ +

Specifies the timeout, in milliseconds, to use while a data upload is + in progress. The only takes effect if + disableUploadTimeout is set to false. +

+
+ -

This flag allows the servlet container to use a different, longer - connection timeout while a servlet is being executed, which in the end - allows either the servlet a longer amount of time to complete its - execution, or a longer timeout during data upload. If not specified, - this attribute is set to "true".

+

This flag allows the servlet container to use a different, usually + longer connection timeout during data upload. If not specified, this + attribute is set to true which disables this longer timeout. +

-- 2.11.0