diff options
author | Greg Wilkins | 2014-08-06 23:10:35 +0000 |
---|---|---|
committer | Greg Wilkins | 2014-08-06 23:10:35 +0000 |
commit | 64e49a1fe5a39d07d1768990aabde29d7d4457d7 (patch) | |
tree | d0a4e3a69b4ad9bdbb3bb09487fadb068c8c43d2 | |
parent | 55dec378fc4ee6732d7e09e08ddfe3f1a6cfa30f (diff) | |
download | org.eclipse.jetty.project-64e49a1fe5a39d07d1768990aabde29d7d4457d7.tar.gz org.eclipse.jetty.project-64e49a1fe5a39d07d1768990aabde29d7d4457d7.tar.xz org.eclipse.jetty.project-64e49a1fe5a39d07d1768990aabde29d7d4457d7.zip |
work around classloaders for field preencoders
-rw-r--r-- | jetty-http/src/main/java/org/eclipse/jetty/http/PreEncodedHttpField.java | 19 | ||||
-rw-r--r-- | jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackEncoder.java | 11 |
2 files changed, 25 insertions, 5 deletions
diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/PreEncodedHttpField.java b/jetty-http/src/main/java/org/eclipse/jetty/http/PreEncodedHttpField.java index 9e47f50574..f8f983a0b3 100644 --- a/jetty-http/src/main/java/org/eclipse/jetty/http/PreEncodedHttpField.java +++ b/jetty-http/src/main/java/org/eclipse/jetty/http/PreEncodedHttpField.java @@ -21,7 +21,9 @@ package org.eclipse.jetty.http; import java.nio.ByteBuffer; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; +import java.util.ServiceConfigurationError; import java.util.ServiceLoader; import org.eclipse.jetty.util.log.Log; @@ -45,8 +47,21 @@ public class PreEncodedHttpField extends HttpField static { List<HttpFieldPreEncoder> encoders = new ArrayList<>(); - for (HttpFieldPreEncoder enc : ServiceLoader.load(HttpFieldPreEncoder.class,PreEncodedHttpField.class.getClassLoader())) - encoders.add(enc); + Iterator<HttpFieldPreEncoder> iter = ServiceLoader.load(HttpFieldPreEncoder.class,PreEncodedHttpField.class.getClassLoader()).iterator(); + while (iter.hasNext()) + { + try + { + HttpFieldPreEncoder enc = iter.next(); + } + catch(Error|RuntimeException e) + { + LOG.debug(e); + } + } + // TODO avoid needing this catch all + if (encoders.size()==0) + encoders.add(new Http1FieldPreEncoder()); LOG.debug("HttpField encoders loaded: {}",encoders); __encoders = encoders.toArray(new HttpFieldPreEncoder[encoders.size()]); } diff --git a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackEncoder.java b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackEncoder.java index 33c524984e..fed4aa5b82 100644 --- a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackEncoder.java +++ b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackEncoder.java @@ -53,8 +53,9 @@ public class HpackEncoder private final static EnumSet<HttpHeader> __DO_NOT_INDEX = EnumSet.of( - // TODO ??? HttpHeader.C_PATH, - // TODO ??? HttpHeader.DATE, + // HttpHeader.C_PATH, // TODO more data needed + // HttpHeader.DATE, // TODO more data needed + HttpHeader.AUTHORIZATION, HttpHeader.CONTENT_MD5, HttpHeader.CONTENT_RANGE, HttpHeader.ETAG, @@ -63,7 +64,9 @@ public class HpackEncoder HttpHeader.IF_NONE_MATCH, HttpHeader.IF_RANGE, HttpHeader.IF_MATCH, + HttpHeader.LOCATION, HttpHeader.RANGE, + HttpHeader.RETRY_AFTER, HttpHeader.EXPIRES, HttpHeader.LAST_MODIFIED, HttpHeader.SET_COOKIE, @@ -71,7 +74,9 @@ public class HpackEncoder private final static EnumSet<HttpHeader> __NEVER_INDEX = - EnumSet.of(HttpHeader.SET_COOKIE, + EnumSet.of( + HttpHeader.AUTHORIZATION, + HttpHeader.SET_COOKIE, HttpHeader.SET_COOKIE2); static |