Removed RFC from enum names
Signed-off-by: Greg Wilkins <gregw@webtide.com>
This commit is contained in:
parent
22beb1d02a
commit
f046bdc2c6
|
@ -105,8 +105,8 @@ public enum HttpCompliance // TODO in Jetty-10 convert this enum to a class so t
|
||||||
|
|
||||||
case "RFC2616":
|
case "RFC2616":
|
||||||
sections = EnumSet.complementOf(EnumSet.of(
|
sections = EnumSet.complementOf(EnumSet.of(
|
||||||
HttpComplianceSection.RFC7230_3_2_4_NO_FOLDING,
|
HttpComplianceSection.NO_FIELD_FOLDING,
|
||||||
HttpComplianceSection.RFC7230_A2_NO_HTTP_9));
|
HttpComplianceSection.NO_HTTP_9));
|
||||||
i++;
|
i++;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -22,13 +22,13 @@ package org.eclipse.jetty.http;
|
||||||
*/
|
*/
|
||||||
public enum HttpComplianceSection
|
public enum HttpComplianceSection
|
||||||
{
|
{
|
||||||
USE_CASE_INSENSITIVE_FIELD_VALUE_CACHE("","Use case insensitive field value cache"),
|
CASE_INSENSITIVE_FIELD_VALUE_CACHE("","Use case insensitive field value cache"),
|
||||||
RFC7230_3_1_1_METHOD_CASE_SENSITIVE("https://tools.ietf.org/html/rfc7230#section-3.1.1","Method is case-sensitive"),
|
METHOD_CASE_SENSITIVE("https://tools.ietf.org/html/rfc7230#section-3.1.1","Method is case-sensitive"),
|
||||||
RFC7230_3_2_FIELD_COLON("https://tools.ietf.org/html/rfc7230#section-3.2","Fields must have a Colon"),
|
FIELD_COLON("https://tools.ietf.org/html/rfc7230#section-3.2","Fields must have a Colon"),
|
||||||
RFC7230_3_2_CASE_INSENSITIVE_FIELD_NAME("https://tools.ietf.org/html/rfc7230#section-3.2","Field name is case-insensitive"),
|
FIELD_NAME_CASE_INSENSITIVE("https://tools.ietf.org/html/rfc7230#section-3.2","Field name is case-insensitive"),
|
||||||
RFC7230_3_2_4_NO_WS_AFTER_FIELD_NAME("https://tools.ietf.org/html/rfc7230#section-3.2.4","Whitespace not allowed after field name"),
|
NO_WS_AFTER_FIELD_NAME("https://tools.ietf.org/html/rfc7230#section-3.2.4","Whitespace not allowed after field name"),
|
||||||
RFC7230_3_2_4_NO_FOLDING("https://tools.ietf.org/html/rfc7230#section-3.2.4","No line Folding"),
|
NO_FIELD_FOLDING("https://tools.ietf.org/html/rfc7230#section-3.2.4","No line Folding"),
|
||||||
RFC7230_A2_NO_HTTP_9("https://tools.ietf.org/html/rfc7230#appendix-A.2","No HTTP/0.9"),
|
NO_HTTP_9("https://tools.ietf.org/html/rfc7230#appendix-A.2","No HTTP/0.9"),
|
||||||
;
|
;
|
||||||
|
|
||||||
final String url;
|
final String url;
|
||||||
|
|
|
@ -351,10 +351,10 @@ public class HttpParser
|
||||||
/* ------------------------------------------------------------------------------- */
|
/* ------------------------------------------------------------------------------- */
|
||||||
protected String caseInsensitiveHeader(String orig, String normative)
|
protected String caseInsensitiveHeader(String orig, String normative)
|
||||||
{
|
{
|
||||||
if (_compliances.contains(HttpComplianceSection.RFC7230_3_2_CASE_INSENSITIVE_FIELD_NAME))
|
if (_compliances.contains(HttpComplianceSection.FIELD_NAME_CASE_INSENSITIVE))
|
||||||
return normative;
|
return normative;
|
||||||
if (!orig.equals(normative))
|
if (!orig.equals(normative))
|
||||||
handleViolation(HttpComplianceSection.RFC7230_3_2_CASE_INSENSITIVE_FIELD_NAME,orig);
|
handleViolation(HttpComplianceSection.FIELD_NAME_CASE_INSENSITIVE,orig);
|
||||||
return orig;
|
return orig;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -669,7 +669,7 @@ public class HttpParser
|
||||||
_length=_string.length();
|
_length=_string.length();
|
||||||
_methodString=takeString();
|
_methodString=takeString();
|
||||||
|
|
||||||
if (_compliances.contains(HttpComplianceSection.RFC7230_3_1_1_METHOD_CASE_SENSITIVE))
|
if (_compliances.contains(HttpComplianceSection.METHOD_CASE_SENSITIVE))
|
||||||
{
|
{
|
||||||
HttpMethod method=HttpMethod.CACHE.get(_methodString);
|
HttpMethod method=HttpMethod.CACHE.get(_methodString);
|
||||||
if (method!=null)
|
if (method!=null)
|
||||||
|
@ -682,7 +682,7 @@ public class HttpParser
|
||||||
if (method!=null)
|
if (method!=null)
|
||||||
{
|
{
|
||||||
if (!method.asString().equals(_methodString))
|
if (!method.asString().equals(_methodString))
|
||||||
handleViolation(HttpComplianceSection.RFC7230_3_1_1_METHOD_CASE_SENSITIVE,_methodString);
|
handleViolation(HttpComplianceSection.METHOD_CASE_SENSITIVE,_methodString);
|
||||||
_methodString = method.asString();
|
_methodString = method.asString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -787,7 +787,7 @@ public class HttpParser
|
||||||
else if (b < HttpTokens.SPACE && b>=0)
|
else if (b < HttpTokens.SPACE && b>=0)
|
||||||
{
|
{
|
||||||
// HTTP/0.9
|
// HTTP/0.9
|
||||||
if (complianceViolation(HttpComplianceSection.RFC7230_A2_NO_HTTP_9,"No request version"))
|
if (complianceViolation(HttpComplianceSection.NO_HTTP_9,"No request version"))
|
||||||
throw new BadMessageException("HTTP/0.9 not supported");
|
throw new BadMessageException("HTTP/0.9 not supported");
|
||||||
handle=_requestHandler.startRequest(_methodString,_uri.toString(), HttpVersion.HTTP_0_9);
|
handle=_requestHandler.startRequest(_methodString,_uri.toString(), HttpVersion.HTTP_0_9);
|
||||||
setState(State.END);
|
setState(State.END);
|
||||||
|
@ -854,7 +854,7 @@ public class HttpParser
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// HTTP/0.9
|
// HTTP/0.9
|
||||||
if (complianceViolation(HttpComplianceSection.RFC7230_A2_NO_HTTP_9,"No request version"))
|
if (complianceViolation(HttpComplianceSection.NO_HTTP_9,"No request version"))
|
||||||
throw new BadMessageException("HTTP/0.9 not supported");
|
throw new BadMessageException("HTTP/0.9 not supported");
|
||||||
|
|
||||||
handle=_requestHandler.startRequest(_methodString,_uri.toString(), HttpVersion.HTTP_0_9);
|
handle=_requestHandler.startRequest(_methodString,_uri.toString(), HttpVersion.HTTP_0_9);
|
||||||
|
@ -973,7 +973,7 @@ public class HttpParser
|
||||||
if (!(_field instanceof HostPortHttpField) && _valueString!=null && !_valueString.isEmpty())
|
if (!(_field instanceof HostPortHttpField) && _valueString!=null && !_valueString.isEmpty())
|
||||||
{
|
{
|
||||||
_field=new HostPortHttpField(_header,
|
_field=new HostPortHttpField(_header,
|
||||||
_compliances.contains(HttpComplianceSection.RFC7230_3_2_CASE_INSENSITIVE_FIELD_NAME)?_header.asString():_headerString,
|
_compliances.contains(HttpComplianceSection.FIELD_NAME_CASE_INSENSITIVE)?_header.asString():_headerString,
|
||||||
_valueString);
|
_valueString);
|
||||||
add_to_connection_trie=_fieldCache!=null;
|
add_to_connection_trie=_fieldCache!=null;
|
||||||
}
|
}
|
||||||
|
@ -1071,7 +1071,7 @@ public class HttpParser
|
||||||
case HttpTokens.SPACE:
|
case HttpTokens.SPACE:
|
||||||
case HttpTokens.TAB:
|
case HttpTokens.TAB:
|
||||||
{
|
{
|
||||||
if (complianceViolation(HttpComplianceSection.RFC7230_3_2_4_NO_FOLDING,_headerString))
|
if (complianceViolation(HttpComplianceSection.NO_FIELD_FOLDING,_headerString))
|
||||||
throw new BadMessageException(HttpStatus.BAD_REQUEST_400,"Header Folding");
|
throw new BadMessageException(HttpStatus.BAD_REQUEST_400,"Header Folding");
|
||||||
|
|
||||||
// header value without name - continuation?
|
// header value without name - continuation?
|
||||||
|
@ -1190,24 +1190,24 @@ public class HttpParser
|
||||||
String n = cached_field.getName();
|
String n = cached_field.getName();
|
||||||
String v = cached_field.getValue();
|
String v = cached_field.getValue();
|
||||||
|
|
||||||
if (!_compliances.contains(HttpComplianceSection.RFC7230_3_2_CASE_INSENSITIVE_FIELD_NAME))
|
if (!_compliances.contains(HttpComplianceSection.FIELD_NAME_CASE_INSENSITIVE))
|
||||||
{
|
{
|
||||||
// Have to get the fields exactly from the buffer to match case
|
// Have to get the fields exactly from the buffer to match case
|
||||||
String en = BufferUtil.toString(buffer,buffer.position()-1,n.length(),StandardCharsets.US_ASCII);
|
String en = BufferUtil.toString(buffer,buffer.position()-1,n.length(),StandardCharsets.US_ASCII);
|
||||||
if (!n.equals(en))
|
if (!n.equals(en))
|
||||||
{
|
{
|
||||||
handleViolation(HttpComplianceSection.RFC7230_3_2_CASE_INSENSITIVE_FIELD_NAME,en);
|
handleViolation(HttpComplianceSection.FIELD_NAME_CASE_INSENSITIVE,en);
|
||||||
n = en;
|
n = en;
|
||||||
cached_field = new HttpField(cached_field.getHeader(),n,v);
|
cached_field = new HttpField(cached_field.getHeader(),n,v);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (v!=null && !_compliances.contains(HttpComplianceSection.USE_CASE_INSENSITIVE_FIELD_VALUE_CACHE))
|
if (v!=null && !_compliances.contains(HttpComplianceSection.CASE_INSENSITIVE_FIELD_VALUE_CACHE))
|
||||||
{
|
{
|
||||||
String ev = BufferUtil.toString(buffer,buffer.position()+n.length()+1,v.length(),StandardCharsets.ISO_8859_1);
|
String ev = BufferUtil.toString(buffer,buffer.position()+n.length()+1,v.length(),StandardCharsets.ISO_8859_1);
|
||||||
if (!v.equals(ev))
|
if (!v.equals(ev))
|
||||||
{
|
{
|
||||||
handleViolation(HttpComplianceSection.USE_CASE_INSENSITIVE_FIELD_VALUE_CACHE,ev+"!="+v);
|
handleViolation(HttpComplianceSection.CASE_INSENSITIVE_FIELD_VALUE_CACHE,ev+"!="+v);
|
||||||
v = ev;
|
v = ev;
|
||||||
cached_field = new HttpField(cached_field.getHeader(),n,v);
|
cached_field = new HttpField(cached_field.getHeader(),n,v);
|
||||||
}
|
}
|
||||||
|
@ -1308,7 +1308,7 @@ public class HttpParser
|
||||||
_valueString="";
|
_valueString="";
|
||||||
_length=-1;
|
_length=-1;
|
||||||
|
|
||||||
if (!complianceViolation(HttpComplianceSection.RFC7230_3_2_FIELD_COLON,_headerString))
|
if (!complianceViolation(HttpComplianceSection.FIELD_COLON,_headerString))
|
||||||
{
|
{
|
||||||
setState(FieldState.FIELD);
|
setState(FieldState.FIELD);
|
||||||
break;
|
break;
|
||||||
|
@ -1316,7 +1316,7 @@ public class HttpParser
|
||||||
}
|
}
|
||||||
|
|
||||||
//Ignore trailing whitespaces
|
//Ignore trailing whitespaces
|
||||||
if (b==HttpTokens.SPACE && !complianceViolation(HttpComplianceSection.RFC7230_3_2_4_NO_WS_AFTER_FIELD_NAME,null))
|
if (b==HttpTokens.SPACE && !complianceViolation(HttpComplianceSection.NO_WS_AFTER_FIELD_NAME,null))
|
||||||
{
|
{
|
||||||
setState(FieldState.WS_AFTER_NAME);
|
setState(FieldState.WS_AFTER_NAME);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -38,7 +38,7 @@ public class HttpParserTest
|
||||||
{
|
{
|
||||||
static
|
static
|
||||||
{
|
{
|
||||||
HttpCompliance.CUSTOM0.sections().remove(HttpComplianceSection.RFC7230_3_2_4_NO_WS_AFTER_FIELD_NAME);
|
HttpCompliance.CUSTOM0.sections().remove(HttpComplianceSection.NO_WS_AFTER_FIELD_NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -128,7 +128,7 @@ public class HttpParserTest
|
||||||
Assert.assertEquals("/999", _uriOrStatus);
|
Assert.assertEquals("/999", _uriOrStatus);
|
||||||
Assert.assertEquals("HTTP/0.9", _versionOrReason);
|
Assert.assertEquals("HTTP/0.9", _versionOrReason);
|
||||||
Assert.assertEquals(-1, _headers);
|
Assert.assertEquals(-1, _headers);
|
||||||
Assert.assertThat(_complianceViolation, contains(HttpComplianceSection.RFC7230_A2_NO_HTTP_9));
|
Assert.assertThat(_complianceViolation, contains(HttpComplianceSection.NO_HTTP_9));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -157,7 +157,7 @@ public class HttpParserTest
|
||||||
Assert.assertEquals("/222", _uriOrStatus);
|
Assert.assertEquals("/222", _uriOrStatus);
|
||||||
Assert.assertEquals("HTTP/0.9", _versionOrReason);
|
Assert.assertEquals("HTTP/0.9", _versionOrReason);
|
||||||
Assert.assertEquals(-1, _headers);
|
Assert.assertEquals(-1, _headers);
|
||||||
Assert.assertThat(_complianceViolation, contains(HttpComplianceSection.RFC7230_A2_NO_HTTP_9));
|
Assert.assertThat(_complianceViolation, contains(HttpComplianceSection.NO_HTTP_9));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -273,7 +273,7 @@ public class HttpParserTest
|
||||||
Assert.assertEquals("Name", _hdr[1]);
|
Assert.assertEquals("Name", _hdr[1]);
|
||||||
Assert.assertEquals("value extra", _val[1]);
|
Assert.assertEquals("value extra", _val[1]);
|
||||||
Assert.assertEquals(1, _headers);
|
Assert.assertEquals(1, _headers);
|
||||||
Assert.assertThat(_complianceViolation, contains(HttpComplianceSection.RFC7230_3_2_4_NO_FOLDING));
|
Assert.assertThat(_complianceViolation, contains(HttpComplianceSection.NO_FIELD_FOLDING));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -372,7 +372,7 @@ public class HttpParserTest
|
||||||
parseAll(parser, buffer);
|
parseAll(parser, buffer);
|
||||||
|
|
||||||
Assert.assertThat(_bad, Matchers.containsString("Illegal character"));
|
Assert.assertThat(_bad, Matchers.containsString("Illegal character"));
|
||||||
Assert.assertThat(_complianceViolation,contains(HttpComplianceSection.RFC7230_3_2_4_NO_WS_AFTER_FIELD_NAME));
|
Assert.assertThat(_complianceViolation,contains(HttpComplianceSection.NO_WS_AFTER_FIELD_NAME));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -390,7 +390,7 @@ public class HttpParserTest
|
||||||
parseAll(parser, buffer);
|
parseAll(parser, buffer);
|
||||||
|
|
||||||
Assert.assertThat(_bad, Matchers.containsString("Illegal character"));
|
Assert.assertThat(_bad, Matchers.containsString("Illegal character"));
|
||||||
Assert.assertThat(_complianceViolation,contains(HttpComplianceSection.RFC7230_3_2_4_NO_WS_AFTER_FIELD_NAME));
|
Assert.assertThat(_complianceViolation,contains(HttpComplianceSection.NO_WS_AFTER_FIELD_NAME));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -422,7 +422,7 @@ public class HttpParserTest
|
||||||
Assert.assertEquals("Other", _hdr[1]);
|
Assert.assertEquals("Other", _hdr[1]);
|
||||||
Assert.assertEquals("value", _val[1]);
|
Assert.assertEquals("value", _val[1]);
|
||||||
|
|
||||||
Assert.assertThat(_complianceViolation, contains(HttpComplianceSection.RFC7230_3_2_4_NO_WS_AFTER_FIELD_NAME));
|
Assert.assertThat(_complianceViolation, contains(HttpComplianceSection.NO_WS_AFTER_FIELD_NAME));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -752,7 +752,7 @@ public class HttpParserTest
|
||||||
parseAll(parser, buffer);
|
parseAll(parser, buffer);
|
||||||
Assert.assertNull(_bad);
|
Assert.assertNull(_bad);
|
||||||
Assert.assertEquals("GET", _methodOrVersion);
|
Assert.assertEquals("GET", _methodOrVersion);
|
||||||
Assert.assertThat(_complianceViolation, contains(HttpComplianceSection.RFC7230_3_1_1_METHOD_CASE_SENSITIVE));
|
Assert.assertThat(_complianceViolation, contains(HttpComplianceSection.METHOD_CASE_SENSITIVE));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -814,7 +814,7 @@ public class HttpParserTest
|
||||||
Assert.assertEquals("cOnNeCtIoN", _hdr[1]);
|
Assert.assertEquals("cOnNeCtIoN", _hdr[1]);
|
||||||
Assert.assertEquals("ClOsE", _val[1]);
|
Assert.assertEquals("ClOsE", _val[1]);
|
||||||
Assert.assertEquals(1, _headers);
|
Assert.assertEquals(1, _headers);
|
||||||
Assert.assertThat(_complianceViolation, contains(HttpComplianceSection.RFC7230_3_2_CASE_INSENSITIVE_FIELD_NAME,HttpComplianceSection.RFC7230_3_2_CASE_INSENSITIVE_FIELD_NAME,HttpComplianceSection.USE_CASE_INSENSITIVE_FIELD_VALUE_CACHE));
|
Assert.assertThat(_complianceViolation, contains(HttpComplianceSection.FIELD_NAME_CASE_INSENSITIVE,HttpComplianceSection.FIELD_NAME_CASE_INSENSITIVE,HttpComplianceSection.CASE_INSENSITIVE_FIELD_VALUE_CACHE));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
Loading…
Reference in New Issue