Merge remote-tracking branch 'origin/jetty-9.4.x' into jetty-10.0.x
This commit is contained in:
commit
4215edd3b9
|
@ -37,6 +37,7 @@ import org.slf4j.LoggerFactory;
|
||||||
import static org.eclipse.jetty.http.HttpCompliance.RFC7230;
|
import static org.eclipse.jetty.http.HttpCompliance.RFC7230;
|
||||||
import static org.eclipse.jetty.http.HttpCompliance.Violation;
|
import static org.eclipse.jetty.http.HttpCompliance.Violation;
|
||||||
import static org.eclipse.jetty.http.HttpCompliance.Violation.CASE_SENSITIVE_FIELD_NAME;
|
import static org.eclipse.jetty.http.HttpCompliance.Violation.CASE_SENSITIVE_FIELD_NAME;
|
||||||
|
import static org.eclipse.jetty.http.HttpCompliance.Violation.HTTP_0_9;
|
||||||
import static org.eclipse.jetty.http.HttpCompliance.Violation.MULTIPLE_CONTENT_LENGTHS;
|
import static org.eclipse.jetty.http.HttpCompliance.Violation.MULTIPLE_CONTENT_LENGTHS;
|
||||||
import static org.eclipse.jetty.http.HttpCompliance.Violation.NO_COLON_AFTER_FIELD_NAME;
|
import static org.eclipse.jetty.http.HttpCompliance.Violation.NO_COLON_AFTER_FIELD_NAME;
|
||||||
import static org.eclipse.jetty.http.HttpCompliance.Violation.TRANSFER_ENCODING_WITH_CONTENT_LENGTH;
|
import static org.eclipse.jetty.http.HttpCompliance.Violation.TRANSFER_ENCODING_WITH_CONTENT_LENGTH;
|
||||||
|
@ -750,12 +751,19 @@ public class HttpParser
|
||||||
|
|
||||||
case LF:
|
case LF:
|
||||||
// HTTP/0.9
|
// HTTP/0.9
|
||||||
checkViolation(Violation.HTTP_0_9);
|
if (Violation.HTTP_0_9.isAllowedBy(_complianceMode))
|
||||||
_requestHandler.startRequest(_methodString, _uri.toString(), HttpVersion.HTTP_0_9);
|
{
|
||||||
setState(State.CONTENT);
|
reportComplianceViolation(HTTP_0_9, HTTP_0_9.getDescription());
|
||||||
_endOfContent = EndOfContent.NO_CONTENT;
|
_requestHandler.startRequest(_methodString, _uri.toString(), HttpVersion.HTTP_0_9);
|
||||||
BufferUtil.clear(buffer);
|
setState(State.CONTENT);
|
||||||
handle = handleHeaderContentMessage();
|
_endOfContent = EndOfContent.NO_CONTENT;
|
||||||
|
BufferUtil.clear(buffer);
|
||||||
|
handle = handleHeaderContentMessage();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new BadMessageException(HttpStatus.HTTP_VERSION_NOT_SUPPORTED_505, "HTTP/0.9 not supported");
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ALPHA:
|
case ALPHA:
|
||||||
|
@ -924,10 +932,10 @@ public class HttpParser
|
||||||
private void checkVersion()
|
private void checkVersion()
|
||||||
{
|
{
|
||||||
if (_version == null)
|
if (_version == null)
|
||||||
throw new BadMessageException(HttpStatus.BAD_REQUEST_400, "Unknown Version");
|
throw new BadMessageException(HttpStatus.HTTP_VERSION_NOT_SUPPORTED_505, "Unknown Version");
|
||||||
|
|
||||||
if (_version.getVersion() < 10 || _version.getVersion() > 20)
|
if (_version.getVersion() < 10 || _version.getVersion() > 20)
|
||||||
throw new BadMessageException(HttpStatus.BAD_REQUEST_400, "Bad Version");
|
throw new BadMessageException(HttpStatus.HTTP_VERSION_NOT_SUPPORTED_505, "Unsupported Version");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void parsedHeader()
|
private void parsedHeader()
|
||||||
|
|
|
@ -158,14 +158,14 @@ public class HttpConnectionTest
|
||||||
connector.getConnectionFactory(HttpConnectionFactory.class).getHttpConfiguration().setHttpCompliance(HttpCompliance.RFC2616);
|
connector.getConnectionFactory(HttpConnectionFactory.class).getHttpConfiguration().setHttpCompliance(HttpCompliance.RFC2616);
|
||||||
String request = "GET / HTTP/0.9\r\n\r\n";
|
String request = "GET / HTTP/0.9\r\n\r\n";
|
||||||
String response = connector.getResponse(request);
|
String response = connector.getResponse(request);
|
||||||
assertThat(response, containsString("400 Bad Request"));
|
assertThat(response, containsString("505 HTTP Version Not Supported"));
|
||||||
assertThat(response, containsString("reason: Bad Version"));
|
assertThat(response, containsString("reason: Unsupported Version"));
|
||||||
|
|
||||||
connector.getConnectionFactory(HttpConnectionFactory.class).getHttpConfiguration().setHttpCompliance(HttpCompliance.RFC7230);
|
connector.getConnectionFactory(HttpConnectionFactory.class).getHttpConfiguration().setHttpCompliance(HttpCompliance.RFC7230);
|
||||||
request = "GET / HTTP/0.9\r\n\r\n";
|
request = "GET / HTTP/0.9\r\n\r\n";
|
||||||
response = connector.getResponse(request);
|
response = connector.getResponse(request);
|
||||||
assertThat(response, containsString("400 Bad Request"));
|
assertThat(response, containsString("505 HTTP Version Not Supported"));
|
||||||
assertThat(response, containsString("reason: Bad Version"));
|
assertThat(response, containsString("reason: Unsupported Version"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -307,7 +307,7 @@ public class NcsaRequestLogTest
|
||||||
_connector.getResponse("METHOD /foo HTTP/9\n\n");
|
_connector.getResponse("METHOD /foo HTTP/9\n\n");
|
||||||
String log = _entries.poll(5, TimeUnit.SECONDS);
|
String log = _entries.poll(5, TimeUnit.SECONDS);
|
||||||
assertThat(log, containsString("\"- - -\""));
|
assertThat(log, containsString("\"- - -\""));
|
||||||
assertThat(log, containsString(" 400 "));
|
assertThat(log, containsString(" 505 "));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ParameterizedTest()
|
@ParameterizedTest()
|
||||||
|
|
Loading…
Reference in New Issue