You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2018/06/28 12:13:34 UTC

svn commit: r1834599 - in /tomcat/trunk: java/org/apache/catalina/core/ java/org/apache/catalina/mapper/ webapps/docs/

Author: markt
Date: Thu Jun 28 12:13:34 2018
New Revision: 1834599

URL: http://svn.apache.org/viewvc?rev=1834599&view=rev
Log:
Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=53411
Improve the handling of HTTP requests that do not explicitly specify a host name when no default host is configured. Also improve the tracking of changes to the default host as hosts are added and removed while Tomcat is running.

Modified:
    tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties
    tomcat/trunk/java/org/apache/catalina/core/LocalStrings_es.properties
    tomcat/trunk/java/org/apache/catalina/core/LocalStrings_fr.properties
    tomcat/trunk/java/org/apache/catalina/core/LocalStrings_ja.properties
    tomcat/trunk/java/org/apache/catalina/core/StandardEngine.java
    tomcat/trunk/java/org/apache/catalina/core/StandardEngineValve.java
    tomcat/trunk/java/org/apache/catalina/mapper/LocalStrings.properties
    tomcat/trunk/java/org/apache/catalina/mapper/Mapper.java
    tomcat/trunk/java/org/apache/catalina/mapper/MapperListener.java
    tomcat/trunk/webapps/docs/changelog.xml

Modified: tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties?rev=1834599&r1=1834598&r2=1834599&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties (original)
+++ tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties Thu Jun 28 12:13:34 2018
@@ -187,7 +187,6 @@ standardContext.workCreateException=Fail
 standardContext.workCreateFail=Failed to create work directory [{0}] for context [{1}]
 standardContextValve.acknowledgeException=Failed to acknowledge request with a 100 (Continue) response
 standardEngine.jvmRouteFail=Failed to set Engine's jvmRoute attribute from system property
-standardEngine.noHost=No Host matches server name [{0}]
 standardEngine.notHost=Child of an Engine must be a Host
 standardEngine.notParent=Engine cannot have a parent Container
 standardHost.clientAbort=Remote Client Aborted Request, IOException: [{0}]

Modified: tomcat/trunk/java/org/apache/catalina/core/LocalStrings_es.properties
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/LocalStrings_es.properties?rev=1834599&r1=1834598&r2=1834599&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/LocalStrings_es.properties (original)
+++ tomcat/trunk/java/org/apache/catalina/core/LocalStrings_es.properties Thu Jun 28 12:13:34 2018
@@ -119,7 +119,6 @@ standardContext.workCreateException = No
 standardContext.workCreateFail = No pude crear el directorio de trabajo [{0}] para el contexto [{1}]
 standardContextValve.acknowledgeException = No pude reconocer el requerimiento con una respuesta 100 (Continuar)
 standardEngine.jvmRouteFail = No pude poner el atributo jvmRoute del Motor para la propiedad del sistema
-standardEngine.noHost = No hay M\u00E1quina que coincida con nombre de servidor [{0}]
 standardEngine.notHost = El Hijo de un Motor debe de ser un M\u00E1quina
 standardEngine.notParent = El Motor no puede tener un Contenedor padre
 standardHost.clientAbort = El Cliente Remoto Abort\u00F3 el Requerimiento, IOException: [{0}]

Modified: tomcat/trunk/java/org/apache/catalina/core/LocalStrings_fr.properties
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/LocalStrings_fr.properties?rev=1834599&r1=1834598&r2=1834599&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/LocalStrings_fr.properties (original)
+++ tomcat/trunk/java/org/apache/catalina/core/LocalStrings_fr.properties Thu Jun 28 12:13:34 2018
@@ -60,7 +60,6 @@ standardContext.startingContext=Exceptio
 standardContext.stoppingContext=Exception \u00e0 l''arr\u00eat du Context [{0}]
 standardContext.resourcesStart=Erreur lors du d\u00e9marrage des ressources statiques
 standardContext.urlPattern.patternWarning=ATTENTION: Le mod\u00e8le (pattern) URL [{0}] doit commencer par un ''/'' dans l''API Servlet 2.4
-standardEngine.noHost=Aucune h\u00f4te (host) ne correspond au nom de serveur [{0}]
 standardEngine.notHost=Le fils d''un moteur (child of an Engine) doit \u00eatre un h\u00f4te
 standardEngine.notParent=Un moteur (engine) ne peut avoir de conteneur parent (container)
 standardHost.invalidErrorReportValveClass=Impossible de charger la classe valve de rapport d''erreur: [{0}]

Modified: tomcat/trunk/java/org/apache/catalina/core/LocalStrings_ja.properties
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/LocalStrings_ja.properties?rev=1834599&r1=1834598&r2=1834599&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/LocalStrings_ja.properties (original)
+++ tomcat/trunk/java/org/apache/catalina/core/LocalStrings_ja.properties Thu Jun 28 12:13:34 2018
@@ -60,7 +60,6 @@ standardContext.servletMap.pattern=\u30b
 standardContext.startFailed=\u4ee5\u524d\u306e\u30a8\u30e9\u30fc\u306e\u305f\u3081\u306b\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e\u8d77\u52d5\u304c\u5931\u6557\u3057\u307e\u3057\u305f [{0}]
 standardContext.stoppingContext=\u30ed\u30fc\u30c0\u3092\u505c\u6b62\u4e2d\u306e\u4f8b\u5916\u3067\u3059
 standardContext.urlPattern.patternWarning=\u8b66\u544a: Servlet 2.4\u3067\u306fURL\u30d1\u30bf\u30fc\u30f3 [{0}] \u306f''/''\u3067\u59cb\u307e\u3089\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-standardEngine.noHost=\u30b5\u30fc\u30d0\u540d [{0}] \u306b\u4e00\u81f4\u3059\u308b\u30db\u30b9\u30c8\u304c\u5b58\u5728\u3057\u307e\u305b\u3093
 standardEngine.notHost=\u30a8\u30f3\u30b8\u30f3\u306e\u5b50\u4f9b\u306f\u30db\u30b9\u30c8\u3067\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
 standardEngine.notParent=\u30a8\u30f3\u30b8\u30f3\u306f\u89aa\u306e\u30b3\u30f3\u30c6\u30ca\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093
 standardHost.clientAbort=\u30ea\u30e2\u30fc\u30c8\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u4e2d\u6b62\u3057\u307e\u3057\u305f, IOException: [{0}]

Modified: tomcat/trunk/java/org/apache/catalina/core/StandardEngine.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardEngine.java?rev=1834599&r1=1834598&r2=1834599&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardEngine.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardEngine.java Thu Jun 28 12:13:34 2018
@@ -149,6 +149,9 @@ public class StandardEngine extends Cont
         } else {
             this.defaultHost = host.toLowerCase(Locale.ENGLISH);
         }
+        if (getState().isAvailable()) {
+            service.getMapper().setDefaultHostName(host);
+        }
         support.firePropertyChange("defaultHost", oldDefaultHost,
                                    this.defaultHost);
 

Modified: tomcat/trunk/java/org/apache/catalina/core/StandardEngineValve.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardEngineValve.java?rev=1834599&r1=1834598&r2=1834599&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardEngineValve.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardEngineValve.java Thu Jun 28 12:13:34 2018
@@ -19,13 +19,11 @@ package org.apache.catalina.core;
 import java.io.IOException;
 
 import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.Host;
 import org.apache.catalina.connector.Request;
 import org.apache.catalina.connector.Response;
 import org.apache.catalina.valves.ValveBase;
-import org.apache.tomcat.util.res.StringManager;
 
 /**
  * Valve that implements the default basic behavior for the
@@ -44,15 +42,6 @@ final class StandardEngineValve extends
     }
 
 
-    // ----------------------------------------------------- Instance Variables
-
-    /**
-     * The string manager for this package.
-     */
-    private static final StringManager sm =
-        StringManager.getManager(Constants.Package);
-
-
     // --------------------------------------------------------- Public Methods
 
     /**
@@ -73,10 +62,8 @@ final class StandardEngineValve extends
         // Select the Host to be used for this Request
         Host host = request.getHost();
         if (host == null) {
-            response.sendError
-                (HttpServletResponse.SC_BAD_REQUEST,
-                 sm.getString("standardEngine.noHost",
-                              request.getServerName()));
+            // HTTP 0.9 or HTTP 1.0 request without a host when no default host
+            // is defined. This is handled by the CoyoteAdapter.
             return;
         }
         if (request.isAsyncSupported()) {
@@ -85,6 +72,5 @@ final class StandardEngineValve extends
 
         // Ask this Host to process this request
         host.getPipeline().getFirst().invoke(request, response);
-
     }
 }

Modified: tomcat/trunk/java/org/apache/catalina/mapper/LocalStrings.properties
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/mapper/LocalStrings.properties?rev=1834599&r1=1834598&r2=1834599&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/mapper/LocalStrings.properties (original)
+++ tomcat/trunk/java/org/apache/catalina/mapper/LocalStrings.properties Thu Jun 28 12:13:34 2018
@@ -21,7 +21,7 @@ mapper.removeWrapper=Removing wrapper fr
 mapper.duplicateHost=Duplicate Host [{0}]. The name is already used by Host [{1}]. This Host will be ignored.
 mapper.duplicateHostAlias=Duplicate host Alias [{0}] in Host [{1}]. The name is already used by Host [{2}]. This Alias will be ignored.
 
-mapperListener.unknownDefaultHost=Unknown default host [{0}] for service [{1}]
+mapperListener.unknownDefaultHost=Unknown default host [{0}] for service [{1}]. Tomcat will not be able process HTTP/1.0 requests that do not specify a host name.
 mapperListener.registerHost=Register host [{0}] at domain [{1}] for service [{2}]
 mapperListener.unregisterHost=Unregister host [{0}] at domain [{1}] for service [{2}]
 mapperListener.registerContext=Register Context [{0}] for service [{1}]

Modified: tomcat/trunk/java/org/apache/catalina/mapper/Mapper.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/mapper/Mapper.java?rev=1834599&r1=1834598&r2=1834599&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/mapper/Mapper.java (original)
+++ tomcat/trunk/java/org/apache/catalina/mapper/Mapper.java Thu Jun 28 12:13:34 2018
@@ -692,12 +692,14 @@ public final class Mapper {
                     MappingData mappingData) throws IOException {
 
         if (host.isNull()) {
+            if (defaultHostName == null) {
+                return;
+            }
             host.getCharChunk().append(defaultHostName);
         }
         host.toChars();
         uri.toChars();
-        internalMap(host.getCharChunk(), uri.getCharChunk(), version,
-                mappingData);
+        internalMap(host.getCharChunk(), uri.getCharChunk(), version, mappingData);
     }
 
 

Modified: tomcat/trunk/java/org/apache/catalina/mapper/MapperListener.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/mapper/MapperListener.java?rev=1834599&r1=1834598&r2=1834599&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/mapper/MapperListener.java (original)
+++ tomcat/trunk/java/org/apache/catalina/mapper/MapperListener.java Thu Jun 28 12:13:34 2018
@@ -266,7 +266,7 @@ public class MapperListener extends Life
 
         boolean found = false;
 
-        if (defaultHost != null && defaultHost.length() >0) {
+        if (defaultHost != null && defaultHost.length() > 0) {
             Container[] containers = engine.findChildren();
 
             for (Container container : containers) {
@@ -286,11 +286,10 @@ public class MapperListener extends Life
             }
         }
 
-        if(found) {
+        if (found) {
             mapper.setDefaultHostName(defaultHost);
         } else {
-            log.warn(sm.getString("mapperListener.unknownDefaultHost",
-                    defaultHost, service));
+            log.error(sm.getString("mapperListener.unknownDefaultHost", defaultHost, service));
         }
     }
 
@@ -308,6 +307,10 @@ public class MapperListener extends Life
                 registerContext((Context) container);
             }
         }
+
+        // Default host may have changed
+        findDefaultHost();
+
         if(log.isDebugEnabled()) {
             log.debug(sm.getString("mapperListener.registerHost",
                     host.getName(), domain, service));
@@ -324,6 +327,9 @@ public class MapperListener extends Life
 
         mapper.removeHost(hostname);
 
+        // Default host may have changed
+        findDefaultHost();
+
         if(log.isDebugEnabled()) {
             log.debug(sm.getString("mapperListener.unregisterHost", hostname,
                     domain, service));

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1834599&r1=1834598&r2=1834599&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Thu Jun 28 12:13:34 2018
@@ -55,6 +55,12 @@
         <bug>53387</bug>: Add support for regular expression capture groups to
         the SSI servlet and filter. (markt)
       </add>
+      <fix>
+        <bug>53411</bug>: Improve the handling of HTTP requests that do not
+        explicitly specify a host name when no default host is configured. Also
+        improve the tracking of changes to the default host as hosts are added
+        and removed while Tomcat is running. (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Coyote">



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org