Issue #5539 - Updating StatisticsServlet accept processing per review

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
This commit is contained in:
Joakim Erdfelt 2020-11-16 09:09:20 -06:00
parent 770be2dbc3
commit 683d9a9349
No known key found for this signature in database
GPG Key ID: 2D0E1FB8FE4B68B4
1 changed files with 16 additions and 19 deletions

View File

@ -39,6 +39,7 @@ import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.http.HttpHeader;
import org.eclipse.jetty.http.QuotedQualityCSV; import org.eclipse.jetty.http.QuotedQualityCSV;
import org.eclipse.jetty.io.ConnectionStatistics; import org.eclipse.jetty.io.ConnectionStatistics;
import org.eclipse.jetty.server.AbstractConnector; import org.eclipse.jetty.server.AbstractConnector;
@ -212,8 +213,17 @@ public class StatisticsServlet extends HttpServlet
private List<String> getOrderedAcceptableMimeTypes(HttpServletRequest request) private List<String> getOrderedAcceptableMimeTypes(HttpServletRequest request)
{ {
QuotedQualityCSV values = null; QuotedQualityCSV values = new QuotedQualityCSV(QuotedQualityCSV.MOST_SPECIFIC_MIME_ORDERING);
Enumeration<String> enumAccept = request.getHeaders("Accept");
// No accept header specified, try 'accept' parameter (for those clients that are
// so ancient that they cannot set the standard HTTP `Accept` header)
String acceptParameter = request.getParameter("accept");
if (acceptParameter != null)
{
values.addValue(acceptParameter);
}
Enumeration<String> enumAccept = request.getHeaders(HttpHeader.ACCEPT.toString());
if (enumAccept != null) if (enumAccept != null)
{ {
while (enumAccept.hasMoreElements()) while (enumAccept.hasMoreElements())
@ -221,33 +231,20 @@ public class StatisticsServlet extends HttpServlet
String value = enumAccept.nextElement(); String value = enumAccept.nextElement();
if (StringUtil.isNotBlank(value)) if (StringUtil.isNotBlank(value))
{ {
if (values == null)
{
values = new QuotedQualityCSV(QuotedQualityCSV.MOST_SPECIFIC_MIME_ORDERING);
}
values.addValue(value); values.addValue(value);
} }
} }
} }
if (values != null) if (values.isEmpty())
{ {
return values.getValues();
}
// No accept header specified, try 'accept' parameter (for those clients that are
// so ancient that they cannot set the standard HTTP `Accept` header)
String acceptParameter = request.getParameter("accept");
if (acceptParameter != null)
{
// return that we support the one type specified in the 'accept' parameter
return Collections.singletonList(acceptParameter);
}
// return that we allow ALL mime types // return that we allow ALL mime types
return Collections.singletonList("*/*"); return Collections.singletonList("*/*");
} }
return values.getValues();
}
private boolean isLoopbackAddress(String address) private boolean isLoopbackAddress(String address)
{ {
try try