Merge remote-tracking branch 'origin/jetty-9.4.x' into jetty-10.0.x

Signed-off-by: gregw <gregw@webtide.com>
This commit is contained in:
gregw 2021-02-23 13:07:56 +01:00
commit 3100f2c158
1 changed files with 14 additions and 8 deletions

View File

@ -18,6 +18,7 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.util.Collection; import java.util.Collection;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.List; import java.util.List;
@ -178,7 +179,13 @@ public class ResourceService
public void setCacheControl(HttpField cacheControl) public void setCacheControl(HttpField cacheControl)
{ {
_cacheControl = cacheControl; if (cacheControl == null)
_cacheControl = null;
if (cacheControl.getHeader() != HttpHeader.CACHE_CONTROL)
throw new IllegalArgumentException("!Cache-Control");
_cacheControl = cacheControl instanceof PreEncodedHttpField
? cacheControl
: new PreEncodedHttpField(cacheControl.getHeader(), cacheControl.getValue());
} }
public List<String> getGzipEquivalentFileExtensions() public List<String> getGzipEquivalentFileExtensions()
@ -626,7 +633,7 @@ public class ResourceService
return; return;
} }
data = dir.getBytes("utf-8"); data = dir.getBytes(StandardCharsets.UTF_8);
response.setContentType("text/html;charset=utf-8"); response.setContentType("text/html;charset=utf-8");
response.setContentLength(data.length); response.setContentLength(data.length);
response.getOutputStream().write(data); response.getOutputStream().write(data);
@ -849,12 +856,11 @@ public class ResourceService
{ {
Response r = (Response)response; Response r = (Response)response;
r.putHeaders(content, contentLength, _etags); r.putHeaders(content, contentLength, _etags);
HttpFields.Mutable f = r.getHttpFields(); HttpFields.Mutable fields = r.getHttpFields();
if (_acceptRanges && !response.containsHeader(HttpHeader.ACCEPT_RANGES.asString())) if (_acceptRanges && !fields.contains(HttpHeader.ACCEPT_RANGES))
f.put(ACCEPT_RANGES); fields.add(ACCEPT_RANGES);
if (_cacheControl != null && !fields.contains(HttpHeader.CACHE_CONTROL))
if (_cacheControl != null && !response.containsHeader(HttpHeader.CACHE_CONTROL.asString())) fields.add(_cacheControl);
f.put(_cacheControl);
} }
else else
{ {