Merge remote-tracking branch 'origin/jetty-9.3.x'

This commit is contained in:
Greg Wilkins 2016-04-23 09:38:30 +10:00
commit 2c197878bd
2 changed files with 22 additions and 7 deletions

View File

@ -155,6 +155,7 @@ public abstract class Resource implements ResourceFactory, Closeable
* @param useCaches controls URLConnection caching * @param useCaches controls URLConnection caching
* @return A Resource object. * @return A Resource object.
* @throws MalformedURLException Problem accessing URI * @throws MalformedURLException Problem accessing URI
* @throws IOException Problem handling resource as file.
*/ */
public static Resource newResource(String resource, boolean useCaches) public static Resource newResource(String resource, boolean useCaches)
throws MalformedURLException throws MalformedURLException
@ -176,13 +177,13 @@ public abstract class Resource implements ResourceFactory, Closeable
// It's a file. // It's a file.
if (resource.startsWith("./")) if (resource.startsWith("./"))
resource=resource.substring(2); resource=resource.substring(2);
File file=new File(resource).getCanonicalFile(); File file=new File(resource).getCanonicalFile();
return new PathResource(file.toPath()); return new PathResource(file);
} }
catch(Exception e2) catch(IOException e2)
{ {
LOG.debug(Log.EXCEPTION,e2); // TODO throw the IOException instead
e.addSuppressed(e2);
throw e; throw e;
} }
} }
@ -226,6 +227,7 @@ public abstract class Resource implements ResourceFactory, Closeable
} }
catch (IllegalArgumentException e) catch (IllegalArgumentException e)
{ {
LOG.ignore(e);
// Catches scenario where a bad Windows path like "C:\dev" is // Catches scenario where a bad Windows path like "C:\dev" is
// improperly escaped, which various downstream classloaders // improperly escaped, which various downstream classloaders
// tend to have a problem with // tend to have a problem with

View File

@ -60,6 +60,7 @@ import javax.net.ssl.SSLPeerUnverifiedException;
import javax.net.ssl.SSLServerSocket; import javax.net.ssl.SSLServerSocket;
import javax.net.ssl.SSLServerSocketFactory; import javax.net.ssl.SSLServerSocketFactory;
import javax.net.ssl.SSLSession; import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSessionContext;
import javax.net.ssl.SSLSocket; import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.StandardConstants; import javax.net.ssl.StandardConstants;
@ -209,7 +210,7 @@ public class SslContextFactory extends AbstractLifeCycle
/** Set to true to enable SSL Session caching */ /** Set to true to enable SSL Session caching */
private boolean _sessionCachingEnabled = true; private boolean _sessionCachingEnabled = true;
/** SSL session cache size */ /** SSL session cache size */
private int _sslSessionCacheSize; private int _sslSessionCacheSize=0;
/** SSL session timeout */ /** SSL session timeout */
private int _sslSessionTimeout; private int _sslSessionTimeout;
@ -384,9 +385,15 @@ public class SslContextFactory extends AbstractLifeCycle
SecureRandom secureRandom = (_secureRandomAlgorithm == null)?null:SecureRandom.getInstance(_secureRandomAlgorithm); SecureRandom secureRandom = (_secureRandomAlgorithm == null)?null:SecureRandom.getInstance(_secureRandomAlgorithm);
context = _sslProvider == null ? SSLContext.getInstance(_sslProtocol) : SSLContext.getInstance(_sslProtocol, _sslProvider); context = _sslProvider == null ? SSLContext.getInstance(_sslProtocol) : SSLContext.getInstance(_sslProtocol, _sslProvider);
context.init(keyManagers,trustManagers,secureRandom); context.init(keyManagers,trustManagers,secureRandom);
} }
} }
// Initialize cache
SSLSessionContext serverContext=context.getServerSessionContext();
if (serverContext!=null)
serverContext.setSessionCacheSize(getSslSessionCacheSize());
// select the protocols and ciphers // select the protocols and ciphers
SSLEngine sslEngine=context.createSSLEngine(); SSLEngine sslEngine=context.createSSLEngine();
selectCipherSuites( selectCipherSuites(
@ -1411,14 +1418,20 @@ public class SslContextFactory extends AbstractLifeCycle
} }
/** Set the flag to enable SSL Session caching. /** Set the flag to enable SSL Session caching.
* @param enableSessionCaching the value of the flag * If set to true, then the {@link SSLContext#createSSLEngine(String, int)} method is
*/ * used to pass host and port information as a hint for session reuse. Note that
* this is only a hint and session may not be reused. Moreover, the hint is typically
* only used on client side implementations and setting this to false does not
* stop a server from accepting an offered session ID to reuse.
* @param enableSessionCaching the value of the flag
*/
public void setSessionCachingEnabled(boolean enableSessionCaching) public void setSessionCachingEnabled(boolean enableSessionCaching)
{ {
_sessionCachingEnabled = enableSessionCaching; _sessionCachingEnabled = enableSessionCaching;
} }
/** Get SSL session cache size. /** Get SSL session cache size.
* Passed directly to {@link SSLSessionContext#setSessionCacheSize(int)}
* @return SSL session cache size * @return SSL session cache size
*/ */
public int getSslSessionCacheSize() public int getSslSessionCacheSize()