summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenny Root <kroot@google.com>2013-09-10 18:50:15 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2013-09-10 18:50:15 +0000
commit0d819a82fbf9b719e5892ad1e3163518705e3eb1 (patch)
treef8d573523e48f601ada6be452139736b70a7902c
parent27bfb68a2246394b504660182c228bfca2e38cdf (diff)
parent16cdc260a805bcbec56a4f9a704e36fa924617ce (diff)
downloadlibcore-0d819a82fbf9b719e5892ad1e3163518705e3eb1.zip
libcore-0d819a82fbf9b719e5892ad1e3163518705e3eb1.tar.gz
libcore-0d819a82fbf9b719e5892ad1e3163518705e3eb1.tar.bz2
Merge "Delay SSLSocketImpl instantiation until needed"
-rw-r--r--crypto/src/main/java/org/conscrypt/OpenSSLSocketImpl.java2
-rw-r--r--crypto/src/main/java/org/conscrypt/SSLEngineImpl.java2
-rw-r--r--crypto/src/main/java/org/conscrypt/SSLSessionImpl.java13
-rw-r--r--crypto/src/main/java/org/conscrypt/SSLSocketImpl.java2
-rw-r--r--luni/src/main/java/javax/net/ssl/HttpsURLConnection.java25
5 files changed, 29 insertions, 15 deletions
diff --git a/crypto/src/main/java/org/conscrypt/OpenSSLSocketImpl.java b/crypto/src/main/java/org/conscrypt/OpenSSLSocketImpl.java
index f8a4a98..0caeff3 100644
--- a/crypto/src/main/java/org/conscrypt/OpenSSLSocketImpl.java
+++ b/crypto/src/main/java/org/conscrypt/OpenSSLSocketImpl.java
@@ -742,7 +742,7 @@ public class OpenSSLSocketImpl
} catch (IOException e) {
// return an invalid session with
// invalid cipher suite of "SSL_NULL_WITH_NULL_NULL"
- return SSLSessionImpl.NULL_SESSION;
+ return SSLSessionImpl.getNullSession();
}
}
return sslSession;
diff --git a/crypto/src/main/java/org/conscrypt/SSLEngineImpl.java b/crypto/src/main/java/org/conscrypt/SSLEngineImpl.java
index 0be367d..3ed9980 100644
--- a/crypto/src/main/java/org/conscrypt/SSLEngineImpl.java
+++ b/crypto/src/main/java/org/conscrypt/SSLEngineImpl.java
@@ -369,7 +369,7 @@ public class SSLEngineImpl extends SSLEngine {
if (session != null) {
return session;
}
- return SSLSessionImpl.NULL_SESSION;
+ return SSLSessionImpl.getNullSession();
}
/**
diff --git a/crypto/src/main/java/org/conscrypt/SSLSessionImpl.java b/crypto/src/main/java/org/conscrypt/SSLSessionImpl.java
index 4014a28..9631b1e 100644
--- a/crypto/src/main/java/org/conscrypt/SSLSessionImpl.java
+++ b/crypto/src/main/java/org/conscrypt/SSLSessionImpl.java
@@ -33,8 +33,13 @@ import org.conscrypt.util.EmptyArray;
public final class SSLSessionImpl implements SSLSession, Cloneable {
- /** Session object reporting an invalid cipher suite of "SSL_NULL_WITH_NULL_NULL" */
- public static final SSLSessionImpl NULL_SESSION = new SSLSessionImpl(null);
+ /*
+ * Holds default instances so class preloading doesn't create an instance of
+ * it.
+ */
+ private static class DefaultHolder {
+ public static final SSLSessionImpl NULL_SESSION = new SSLSessionImpl(null);
+ }
private long creationTime;
private boolean isValid = true;
@@ -54,6 +59,10 @@ public final class SSLSessionImpl implements SSLSession, Cloneable {
byte[] serverRandom;
final boolean isServer;
+ public static SSLSessionImpl getNullSession() {
+ return DefaultHolder.NULL_SESSION;
+ }
+
public SSLSessionImpl(CipherSuite cipher_suite, SecureRandom secureRandom) {
creationTime = System.currentTimeMillis();
lastAccessedTime = creationTime;
diff --git a/crypto/src/main/java/org/conscrypt/SSLSocketImpl.java b/crypto/src/main/java/org/conscrypt/SSLSocketImpl.java
index b727873..138a143 100644
--- a/crypto/src/main/java/org/conscrypt/SSLSocketImpl.java
+++ b/crypto/src/main/java/org/conscrypt/SSLSocketImpl.java
@@ -391,7 +391,7 @@ public class SSLSocketImpl extends SSLSocket {
} catch (IOException e) {
// return an invalid session with
// invalid cipher suite of "SSL_NULL_WITH_NULL_NULL"
- return SSLSessionImpl.NULL_SESSION;
+ return SSLSessionImpl.getNullSession();
}
}
return session;
diff --git a/luni/src/main/java/javax/net/ssl/HttpsURLConnection.java b/luni/src/main/java/javax/net/ssl/HttpsURLConnection.java
index 9803f3d..ab86a9b 100644
--- a/luni/src/main/java/javax/net/ssl/HttpsURLConnection.java
+++ b/luni/src/main/java/javax/net/ssl/HttpsURLConnection.java
@@ -104,11 +104,16 @@ import java.security.cert.X509Certificate;
* connection will be retried with SSLv3 only.
*/
public abstract class HttpsURLConnection extends HttpURLConnection {
+ /*
+ * Holds default instances so class preloading doesn't create an instance of
+ * it.
+ */
+ private static class NoPreloadHolder {
+ public static HostnameVerifier defaultHostnameVerifier = new DefaultHostnameVerifier();
- private static HostnameVerifier defaultHostnameVerifier = new DefaultHostnameVerifier();
-
- private static SSLSocketFactory defaultSSLSocketFactory = (SSLSocketFactory) SSLSocketFactory
- .getDefault();
+ public static SSLSocketFactory defaultSSLSocketFactory = (SSLSocketFactory) SSLSocketFactory
+ .getDefault();
+ }
/**
* Sets the default hostname verifier to be used by new instances.
@@ -122,7 +127,7 @@ public abstract class HttpsURLConnection extends HttpURLConnection {
if (v == null) {
throw new IllegalArgumentException("HostnameVerifier is null");
}
- defaultHostnameVerifier = v;
+ NoPreloadHolder.defaultHostnameVerifier = v;
}
/**
@@ -131,7 +136,7 @@ public abstract class HttpsURLConnection extends HttpURLConnection {
* @return the default hostname verifier.
*/
public static HostnameVerifier getDefaultHostnameVerifier() {
- return defaultHostnameVerifier;
+ return NoPreloadHolder.defaultHostnameVerifier;
}
/**
@@ -146,7 +151,7 @@ public abstract class HttpsURLConnection extends HttpURLConnection {
if (sf == null) {
throw new IllegalArgumentException("SSLSocketFactory is null");
}
- defaultSSLSocketFactory = sf;
+ NoPreloadHolder.defaultSSLSocketFactory = sf;
}
/**
@@ -155,7 +160,7 @@ public abstract class HttpsURLConnection extends HttpURLConnection {
* @return the default SSL socket factory for new instances.
*/
public static SSLSocketFactory getDefaultSSLSocketFactory() {
- return defaultSSLSocketFactory;
+ return NoPreloadHolder.defaultSSLSocketFactory;
}
/**
@@ -176,8 +181,8 @@ public abstract class HttpsURLConnection extends HttpURLConnection {
*/
protected HttpsURLConnection(URL url) {
super(url);
- hostnameVerifier = defaultHostnameVerifier;
- sslSocketFactory = defaultSSLSocketFactory;
+ hostnameVerifier = NoPreloadHolder.defaultHostnameVerifier;
+ sslSocketFactory = NoPreloadHolder.defaultSSLSocketFactory;
}
/**