Author: markt Date: Mon May 14 13:45:05 2018 New Revision: 1831568 URL: http://svn.apache.org/viewvc?rev=1831568&view=rev Log: Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=62371 Improve logging of Host validation failures.
Modified: tomcat/trunk/java/org/apache/coyote/AbstractProcessor.java tomcat/trunk/java/org/apache/coyote/LocalStrings.properties tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/java/org/apache/coyote/AbstractProcessor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/AbstractProcessor.java?rev=1831568&r1=1831567&r2=1831568&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/AbstractProcessor.java (original) +++ tomcat/trunk/java/org/apache/coyote/AbstractProcessor.java Mon May 14 13:45:05 2018 @@ -29,6 +29,7 @@ import org.apache.tomcat.util.ExceptionU import org.apache.tomcat.util.buf.ByteChunk; import org.apache.tomcat.util.buf.MessageBytes; import org.apache.tomcat.util.http.parser.Host; +import org.apache.tomcat.util.log.UserDataHelper; import org.apache.tomcat.util.net.AbstractEndpoint.Handler.SocketState; import org.apache.tomcat.util.net.DispatchType; import org.apache.tomcat.util.net.SSLSupport; @@ -61,6 +62,7 @@ public abstract class AbstractProcessor */ private ErrorState errorState = ErrorState.NONE; + protected final UserDataHelper userDataHelper; public AbstractProcessor(Adapter adapter) { this(adapter, new Request(), new Response()); @@ -75,6 +77,7 @@ public abstract class AbstractProcessor response.setHook(this); request.setResponse(response); request.setHook(this); + userDataHelper = new UserDataHelper(getLog()); } /** @@ -294,8 +297,23 @@ public abstract class AbstractProcessor } catch (IllegalArgumentException e) { // IllegalArgumentException indicates that the host name is invalid + UserDataHelper.Mode logMode = userDataHelper.getNextMode(); + if (logMode != null) { + String message = sm.getString("abstractProcessor.hostInvalid", valueMB.toString()); + switch (logMode) { + case INFO_THEN_DEBUG: + message += sm.getString("abstractProcessor.fallToDebug"); + //$FALL-THROUGH$ + case INFO: + getLog().info(message, e); + break; + case DEBUG: + getLog().debug(message, e); + } + } + response.setStatus(400); - setErrorState(ErrorState.CLOSE_CLEAN, null); + setErrorState(ErrorState.CLOSE_CLEAN, e); } } Modified: tomcat/trunk/java/org/apache/coyote/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/LocalStrings.properties?rev=1831568&r1=1831567&r2=1831568&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/LocalStrings.properties (original) +++ tomcat/trunk/java/org/apache/coyote/LocalStrings.properties Mon May 14 13:45:05 2018 @@ -23,7 +23,9 @@ abstractConnectionHandler.socketexceptio abstractConnectionHandler.negotiatedProcessor.fail=Failed to create Processor for negotiated protocol [{0}] abstractConnectionHandler.upgradeCreate=Created upgrade processor [{0}] for socket wrapper [{1}] +abstractProcessor.fallToDebug=\n Note: further occurrences of request parsing errors will be logged at DEBUG level. abstractProcessor.httpupgrade.notsupported=HTTP upgrade is not supported by this protocol +abstractProcessor.hostInvalid=The host [{0}] is not valid abstractProcessor.noExecute=Unable to transfer processing to a container thread because this Processor is not currently associated with a SocketWrapper abstractProcessor.nonContainerThreadError=An error occurred in processing while on a non-container thread. The connection will be closed immediately abstractProcessor.pushrequest.notsupported=Server push requests are not supported by this protocol Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java?rev=1831568&r1=1831567&r2=1831568&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java Mon May 14 13:45:05 2018 @@ -73,8 +73,6 @@ public class Http11Processor extends Abs private final AbstractHttp11Protocol<?> protocol; - private final UserDataHelper userDataHelper; - /** * Input. */ @@ -151,8 +149,6 @@ public class Http11Processor extends Abs super(adapter); this.protocol = protocol; - userDataHelper = new UserDataHelper(log); - httpParser = new HttpParser(protocol.getRelaxedPathChars(), protocol.getRelaxedQueryChars()); Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1831568&r1=1831567&r2=1831568&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Mon May 14 13:45:05 2018 @@ -109,6 +109,9 @@ Relax Host validation by removing the requirement that the final component of a FQDN must be alphabetic. (markt) </fix> + <fix> + <bug>62371</bug>: Improve logging of Host validation failures. (markt) + </fix> </changelog> </subsection> <subsection name="Jasper"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org