mirror of
https://github.com/jetty/jetty.project.git
synced 2025-03-01 11:29:29 +00:00
Merge remote-tracking branch 'origin/master' into jetty-http2
This commit is contained in:
commit
ae8e7f0067
@ -315,7 +315,10 @@ public class HttpChannel implements Runnable
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
error=true;
|
error=true;
|
||||||
throw e;
|
LOG.warn(String.valueOf(_uri), e);
|
||||||
|
_state.error(e);
|
||||||
|
_request.setHandled(true);
|
||||||
|
handleException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
@ -66,6 +66,9 @@ public class RequestLogHandler extends HandlerWrapper
|
|||||||
@Override
|
@Override
|
||||||
public void onError(AsyncEvent event) throws IOException
|
public void onError(AsyncEvent event) throws IOException
|
||||||
{
|
{
|
||||||
|
HttpServletResponse response = (HttpServletResponse)event.getAsyncContext().getResponse();
|
||||||
|
if (!response.isCommitted())
|
||||||
|
response.setStatus(500);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -91,6 +94,12 @@ public class RequestLogHandler extends HandlerWrapper
|
|||||||
{
|
{
|
||||||
super.handle(target, baseRequest, request, response);
|
super.handle(target, baseRequest, request, response);
|
||||||
}
|
}
|
||||||
|
catch(Error|IOException|ServletException|RuntimeException e)
|
||||||
|
{
|
||||||
|
if (!response.isCommitted() && !baseRequest.getHttpChannelState().isAsync())
|
||||||
|
response.setStatus(500);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
if (_requestLog != null && baseRequest.getDispatcherType().equals(DispatcherType.REQUEST))
|
if (_requestLog != null && baseRequest.getDispatcherType().equals(DispatcherType.REQUEST))
|
||||||
|
@ -130,6 +130,7 @@ public class AsyncGzipFilter extends UserAgentFilter implements GzipFactory
|
|||||||
private static final Logger LOG = Log.getLogger(AsyncGzipFilter.class);
|
private static final Logger LOG = Log.getLogger(AsyncGzipFilter.class);
|
||||||
public final static String GZIP = "gzip";
|
public final static String GZIP = "gzip";
|
||||||
public static final String DEFLATE = "deflate";
|
public static final String DEFLATE = "deflate";
|
||||||
|
public final static String ETAG_GZIP="--gzip";
|
||||||
public final static String ETAG = "o.e.j.s.GzipFilter.ETag";
|
public final static String ETAG = "o.e.j.s.GzipFilter.ETag";
|
||||||
public final static int DEFAULT_MIN_GZIP_SIZE=256;
|
public final static int DEFAULT_MIN_GZIP_SIZE=256;
|
||||||
|
|
||||||
@ -364,9 +365,8 @@ public class AsyncGzipFilter extends UserAgentFilter implements GzipFactory
|
|||||||
String etag = request.getHeader("If-None-Match");
|
String etag = request.getHeader("If-None-Match");
|
||||||
if (etag!=null)
|
if (etag!=null)
|
||||||
{
|
{
|
||||||
int dd=etag.indexOf("--");
|
if (etag.contains(ETAG_GZIP))
|
||||||
if (dd>0)
|
request.setAttribute(ETAG,etag.replace(ETAG_GZIP,""));
|
||||||
request.setAttribute(ETAG,etag.substring(0,dd)+(etag.endsWith("\"")?"\"":""));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpChannel channel = HttpChannel.getCurrentHttpChannel();
|
HttpChannel channel = HttpChannel.getCurrentHttpChannel();
|
||||||
|
@ -255,7 +255,7 @@ public abstract class AbstractCompressedStream extends ServletOutputStream
|
|||||||
|
|
||||||
String etag=_wrapper.getETag();
|
String etag=_wrapper.getETag();
|
||||||
if (etag!=null)
|
if (etag!=null)
|
||||||
setHeader("ETag",etag.substring(0,etag.length()-1)+'-'+_encoding+'"');
|
setHeader("ETag",etag.substring(0,etag.length()-1)+"--"+_encoding+'"');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -31,6 +31,7 @@ import org.eclipse.jetty.http.MimeTypes;
|
|||||||
import org.eclipse.jetty.server.HttpChannel;
|
import org.eclipse.jetty.server.HttpChannel;
|
||||||
import org.eclipse.jetty.server.HttpOutput;
|
import org.eclipse.jetty.server.HttpOutput;
|
||||||
import org.eclipse.jetty.server.Response;
|
import org.eclipse.jetty.server.Response;
|
||||||
|
import org.eclipse.jetty.servlets.AsyncGzipFilter;
|
||||||
import org.eclipse.jetty.util.BufferUtil;
|
import org.eclipse.jetty.util.BufferUtil;
|
||||||
import org.eclipse.jetty.util.Callback;
|
import org.eclipse.jetty.util.Callback;
|
||||||
import org.eclipse.jetty.util.IteratingNestedCallback;
|
import org.eclipse.jetty.util.IteratingNestedCallback;
|
||||||
@ -195,7 +196,7 @@ public class GzipHttpOutput extends HttpOutput
|
|||||||
response.setContentLength(-1);
|
response.setContentLength(-1);
|
||||||
String etag=fields.get(HttpHeader.ETAG);
|
String etag=fields.get(HttpHeader.ETAG);
|
||||||
if (etag!=null)
|
if (etag!=null)
|
||||||
fields.put(HttpHeader.ETAG,etag.substring(0,etag.length()-1)+"--gzip\"");
|
fields.put(HttpHeader.ETAG,etag.substring(0,etag.length()-1)+AsyncGzipFilter.ETAG_GZIP+ '"');
|
||||||
|
|
||||||
LOG.debug("{} compressing {}",this,_deflater);
|
LOG.debug("{} compressing {}",this,_deflater);
|
||||||
_state.set(GZState.COMPRESSING);
|
_state.set(GZState.COMPRESSING);
|
||||||
|
@ -23,6 +23,7 @@ import java.io.IOException;
|
|||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.lang.instrument.ClassFileTransformer;
|
import java.lang.instrument.ClassFileTransformer;
|
||||||
import java.lang.instrument.IllegalClassFormatException;
|
import java.lang.instrument.IllegalClassFormatException;
|
||||||
|
import java.lang.instrument.Instrumentation;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.net.URLClassLoader;
|
import java.net.URLClassLoader;
|
||||||
import java.security.CodeSource;
|
import java.security.CodeSource;
|
||||||
@ -461,16 +462,43 @@ public class WebAppClassLoader extends URLClassLoader
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* ------------------------------------------------------------ */
|
/* ------------------------------------------------------------ */
|
||||||
|
/**
|
||||||
|
* @see addTransformer
|
||||||
|
* @deprecated
|
||||||
|
*/
|
||||||
public void addClassFileTransformer(ClassFileTransformer transformer)
|
public void addClassFileTransformer(ClassFileTransformer transformer)
|
||||||
{
|
{
|
||||||
_transformers.add(transformer);
|
_transformers.add(transformer);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ------------------------------------------------------------ */
|
/* ------------------------------------------------------------ */
|
||||||
|
/**
|
||||||
|
* @see removeTransformer
|
||||||
|
* @deprecated
|
||||||
|
*/
|
||||||
public boolean removeClassFileTransformer(ClassFileTransformer transformer)
|
public boolean removeClassFileTransformer(ClassFileTransformer transformer)
|
||||||
{
|
{
|
||||||
return _transformers.remove(transformer);
|
return _transformers.remove(transformer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
/**
|
||||||
|
* @see addClassFileTransformer
|
||||||
|
*/
|
||||||
|
public void addTransformer(ClassFileTransformer transformer)
|
||||||
|
{
|
||||||
|
_transformers.add(transformer);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
/**
|
||||||
|
* @see removeClassFileTransformer
|
||||||
|
*/
|
||||||
|
public boolean removeTransformer(ClassFileTransformer transformer)
|
||||||
|
{
|
||||||
|
return _transformers.remove(transformer);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ------------------------------------------------------------ */
|
/* ------------------------------------------------------------ */
|
||||||
@Override
|
@Override
|
||||||
|
@ -97,7 +97,7 @@ public class WebAppClassLoaderTest
|
|||||||
{
|
{
|
||||||
final List<Object> results=new ArrayList<Object>();
|
final List<Object> results=new ArrayList<Object>();
|
||||||
|
|
||||||
_loader.addClassFileTransformer(new ClassFileTransformer()
|
_loader.addTransformer(new ClassFileTransformer()
|
||||||
{
|
{
|
||||||
public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer)
|
public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer)
|
||||||
throws IllegalClassFormatException
|
throws IllegalClassFormatException
|
||||||
@ -109,7 +109,7 @@ public class WebAppClassLoaderTest
|
|||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
_loader.addClassFileTransformer(new ClassFileTransformer()
|
_loader.addTransformer(new ClassFileTransformer()
|
||||||
{
|
{
|
||||||
public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer)
|
public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer)
|
||||||
throws IllegalClassFormatException
|
throws IllegalClassFormatException
|
||||||
|
Loading…
x
Reference in New Issue
Block a user