Author: markt Date: Sat May 12 17:01:11 2018 New Revision: 1831483 URL: http://svn.apache.org/viewvc?rev=1831483&view=rev Log: Simplify HostParser after reviewing code. Add additional test case.
Modified: tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.java tomcat/trunk/test/org/apache/tomcat/util/http/parser/TestHttpParserHost.java Modified: tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.java?rev=1831483&r1=1831482&r2=1831483&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.java Sat May 12 17:01:11 2018 @@ -844,28 +844,26 @@ public class HttpParser { private enum DomainParseState { - NEW( true, false, false, AllowsEnd.NEVER, AllowsEnd.NEVER, " at the start of"), - ALL_ALPHA( true, true, true, AllowsEnd.ALWAYS, AllowsEnd.ALWAYS, " after a letter in"), - ALPHA( true, true, true, AllowsEnd.FIRST, AllowsEnd.FIRST, " after a letter in"), - NUMERIC( true, true, true, AllowsEnd.FIRST, AllowsEnd.FIRST, " after a number in"), - PERIOD( true, false, false, AllowsEnd.NEVER, AllowsEnd.NEVER, " after a period in"), - HYPHEN( true, true, false, AllowsEnd.NEVER, AllowsEnd.NEVER, " after a hypen in"), - COLON( false, false, false, AllowsEnd.NEVER, AllowsEnd.NEVER, " after a colon in"), - END( false, false, false, AllowsEnd.NEVER, AllowsEnd.NEVER, " at the end of"); + NEW( true, false, false, AllowsEnd.NEVER, " at the start of"), + ALL_ALPHA( true, true, true, AllowsEnd.ALWAYS, " after a letter in"), + ALPHA( true, true, true, AllowsEnd.FIRST, " after a letter in"), + NUMERIC( true, true, true, AllowsEnd.FIRST, " after a number in"), + PERIOD( true, false, false, AllowsEnd.NEVER, " after a period in"), + HYPHEN( true, true, false, AllowsEnd.NEVER, " after a hypen in"), + COLON( false, false, false, AllowsEnd.NEVER, " after a colon in"), + END( false, false, false, AllowsEnd.NEVER, " at the end of"); private final boolean mayContinue; private final boolean allowsHyphen; private final boolean allowsPeriod; - private final AllowsEnd allowsColon; private final AllowsEnd allowsEnd; private final String errorLocation; private DomainParseState(boolean mayContinue, boolean allowsHyphen, boolean allowsPeriod, - AllowsEnd allowsColon, AllowsEnd allowsEnd, String errorLocation) { + AllowsEnd allowsEnd, String errorLocation) { this.mayContinue = mayContinue; this.allowsHyphen = allowsHyphen; this.allowsPeriod = allowsPeriod; - this.allowsColon = allowsColon; this.allowsEnd = allowsEnd; this.errorLocation = errorLocation; } @@ -891,8 +889,8 @@ public class HttpParser { Character.toString((char) c), errorLocation)); } } else if (c == ':') { - if (allowsColon == AllowsEnd.ALWAYS || - allowsColon == AllowsEnd.FIRST && segmentIndex == 0) { + if (allowsEnd == AllowsEnd.ALWAYS || + allowsEnd == AllowsEnd.FIRST && segmentIndex == 0) { return COLON; } else { throw new IllegalArgumentException(sm.getString("http.invalidCharacterDomain", Modified: tomcat/trunk/test/org/apache/tomcat/util/http/parser/TestHttpParserHost.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/util/http/parser/TestHttpParserHost.java?rev=1831483&r1=1831482&r2=1831483&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/tomcat/util/http/parser/TestHttpParserHost.java (original) +++ tomcat/trunk/test/org/apache/tomcat/util/http/parser/TestHttpParserHost.java Sat May 12 17:01:11 2018 @@ -91,6 +91,7 @@ public class TestHttpParserHost { result.add(new Object[] { TestType.IPv4, "123", Integer.valueOf(-1), null} ); result.add(new Object[] { TestType.IPv4, "123:8080", Integer.valueOf(3), null} ); result.add(new Object[] { TestType.IPv4, "myapp-t.mydomain.com", Integer.valueOf(-1), null} ); + result.add(new Object[] { TestType.IPv4, "myapp-t.my-domain.com", Integer.valueOf(-1), null} ); // Domain Name - invalid result.add(new Object[] { TestType.IPv4, ".", Integer.valueOf(-1), IAE} ); result.add(new Object[] { TestType.IPv4, ".:8080", Integer.valueOf(-1), IAE} ); @@ -202,6 +203,7 @@ public class TestHttpParserHost { } } catch (Exception e) { + e.printStackTrace(); exceptionClass = e.getClass(); } Assert.assertEquals(input, expectedResult.intValue(), result); --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org