diff options
author | Elliott Hughes <enh@google.com> | 2009-12-15 15:32:28 -0800 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2009-12-15 15:44:38 -0800 |
commit | ecd469016485b59ea886faea126796af968a6b47 (patch) | |
tree | a4a7303ccc29dba9550443502f0e85e454904837 /x-net/src | |
parent | 58ee024b48f87139f268a1de5aa0f54fe5edb9c9 (diff) | |
download | libcore-ecd469016485b59ea886faea126796af968a6b47.zip libcore-ecd469016485b59ea886faea126796af968a6b47.tar.gz libcore-ecd469016485b59ea886faea126796af968a6b47.tar.bz2 |
Fix our SSLSession implementations to call valueUnbound on remove.
This addresses the other problem from the following abandoned change:
https://android-git.corp.google.com/g/4743
Diffstat (limited to 'x-net/src')
3 files changed, 18 insertions, 7 deletions
diff --git a/x-net/src/main/java/org/apache/harmony/xnet/provider/jsse/OpenSSLSessionImpl.java b/x-net/src/main/java/org/apache/harmony/xnet/provider/jsse/OpenSSLSessionImpl.java index 9aa4b86..17cd088 100644 --- a/x-net/src/main/java/org/apache/harmony/xnet/provider/jsse/OpenSSLSessionImpl.java +++ b/x-net/src/main/java/org/apache/harmony/xnet/provider/jsse/OpenSSLSessionImpl.java @@ -424,7 +424,7 @@ public class OpenSSLSessionImpl implements SSLSession { ((SSLSessionBindingListener) value) .valueBound(new SSLSessionBindingEvent(this, name)); } - if (old != null && old instanceof SSLSessionBindingListener) { + if (old instanceof SSLSessionBindingListener) { ((SSLSessionBindingListener) old) .valueUnbound(new SSLSessionBindingEvent(this, name)); } @@ -432,7 +432,12 @@ public class OpenSSLSessionImpl implements SSLSession { /** * Removes a link (name) with the specified value object of the SSL - * session's application layer data. These links-to -data bounds are + * session's application layer data. + * + * <p>If the value object implements the <code>SSLSessionBindingListener</code> + * interface, the object will receive a <code>valueUnbound</code> notification. + * + * <p>These links-to -data bounds are * monitored, as a matter of security, by the full machinery of the * <code>AccessController</code> class. * @@ -444,7 +449,11 @@ public class OpenSSLSessionImpl implements SSLSession { if (name == null) { throw new IllegalArgumentException("Parameter is null"); } - values.remove(name, AccessController.getContext()); + Object old = values.remove(name, AccessController.getContext()); + if (old instanceof SSLSessionBindingListener) { + SSLSessionBindingListener listener = (SSLSessionBindingListener) old; + listener.valueUnbound(new SSLSessionBindingEvent(this, name)); + } } protected void finalize() { diff --git a/x-net/src/main/java/org/apache/harmony/xnet/provider/jsse/SSLSessionImpl.java b/x-net/src/main/java/org/apache/harmony/xnet/provider/jsse/SSLSessionImpl.java index 5d46568..cd74d57 100644 --- a/x-net/src/main/java/org/apache/harmony/xnet/provider/jsse/SSLSessionImpl.java +++ b/x-net/src/main/java/org/apache/harmony/xnet/provider/jsse/SSLSessionImpl.java @@ -325,7 +325,7 @@ public class SSLSessionImpl implements SSLSession, Cloneable { if (value instanceof SSLSessionBindingListener) { ((SSLSessionBindingListener) value).valueBound(new SSLSessionBindingEvent(this, name)); } - if (old != null && old instanceof SSLSessionBindingListener) { + if (old instanceof SSLSessionBindingListener) { ((SSLSessionBindingListener) old).valueUnbound(new SSLSessionBindingEvent(this, name)); } @@ -335,8 +335,11 @@ public class SSLSessionImpl implements SSLSession, Cloneable { if (name == null) { throw new IllegalArgumentException("Parameter is null"); } - values.remove(new ValueKey(name)); - + Object old = values.remove(new ValueKey(name)); + if (old instanceof SSLSessionBindingListener) { + SSLSessionBindingListener listener = (SSLSessionBindingListener) old; + listener.valueUnbound(new SSLSessionBindingEvent(this, name)); + } } @Override diff --git a/x-net/src/test/java/tests/api/javax/net/ssl/SSLSessionBindingListenerTest.java b/x-net/src/test/java/tests/api/javax/net/ssl/SSLSessionBindingListenerTest.java index 566ff3c..7b26485 100644 --- a/x-net/src/test/java/tests/api/javax/net/ssl/SSLSessionBindingListenerTest.java +++ b/x-net/src/test/java/tests/api/javax/net/ssl/SSLSessionBindingListenerTest.java @@ -91,7 +91,6 @@ public class SSLSessionBindingListenerTest extends TestCase { method = "valueUnbound", args = {SSLSessionBindingEvent.class} ) - @KnownFailure("this will be fixed in donutburger") public void test_valueUnbound() throws UnknownHostException, IOException { SSLSocket sock = (SSLSocket) SSLSocketFactory.getDefault() .createSocket(); |