You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by od...@apache.org on 2010/09/22 16:20:04 UTC
svn commit: r999967 - in
/harmony/enhanced/java/branches/omd/classlib/modules/x-net/src/main:
java/org/apache/harmony/xnet/provider/jsse/SSLEngineImpl.java
native/jsse/shared/sslEngine.c native/jsse/shared/sslEngine.h
Author: odeakin
Date: Wed Sep 22 14:20:04 2010
New Revision: 999967
URL: http://svn.apache.org/viewvc?rev=999967&view=rev
Log:
Add check for a shutdown state and set engine state appropriately.
Modified:
harmony/enhanced/java/branches/omd/classlib/modules/x-net/src/main/java/org/apache/harmony/xnet/provider/jsse/SSLEngineImpl.java
harmony/enhanced/java/branches/omd/classlib/modules/x-net/src/main/native/jsse/shared/sslEngine.c
harmony/enhanced/java/branches/omd/classlib/modules/x-net/src/main/native/jsse/shared/sslEngine.h
Modified: harmony/enhanced/java/branches/omd/classlib/modules/x-net/src/main/java/org/apache/harmony/xnet/provider/jsse/SSLEngineImpl.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/omd/classlib/modules/x-net/src/main/java/org/apache/harmony/xnet/provider/jsse/SSLEngineImpl.java?rev=999967&r1=999966&r2=999967&view=diff
==============================================================================
--- harmony/enhanced/java/branches/omd/classlib/modules/x-net/src/main/java/org/apache/harmony/xnet/provider/jsse/SSLEngineImpl.java (original)
+++ harmony/enhanced/java/branches/omd/classlib/modules/x-net/src/main/java/org/apache/harmony/xnet/provider/jsse/SSLEngineImpl.java Wed Sep 22 14:20:04 2010
@@ -79,7 +79,7 @@ public class SSLEngineImpl extends SSLEn
private static native long initSSLEngine(long context);
private static native HandshakeStatus connectImpl(long ssl);
private static native HandshakeStatus acceptImpl(long ssl);
- private static native SSLEngineResult wrapImpl(long sslEngineAddress,
+ private static native SSLEngineResult wrapImpl(long ssl, long sslEngineAddress,
long src_address, int src_len, long dst_address, int dst_len);
private static native SSLEngineResult unwrapImpl(long ssl, long sslEngineAddress,
long src_address, int src_len, long dst_address, int dst_len);
@@ -570,7 +570,7 @@ public class SSLEngineImpl extends SSLEn
dst_address = AddressUtil.getDirectBufferAddress(dst_temp_buffer);
}
- SSLEngineResult result = wrapImpl(SSLEngineAddress, src_address, src_length, dst_address, dst_length);
+ SSLEngineResult result = wrapImpl(SSL, SSLEngineAddress, src_address, src_length, dst_address, dst_length);
// update the buffers contents and positions
srcs[0].position(srcs[0].position() + result.bytesConsumed());
Modified: harmony/enhanced/java/branches/omd/classlib/modules/x-net/src/main/native/jsse/shared/sslEngine.c
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/omd/classlib/modules/x-net/src/main/native/jsse/shared/sslEngine.c?rev=999967&r1=999966&r2=999967&view=diff
==============================================================================
--- harmony/enhanced/java/branches/omd/classlib/modules/x-net/src/main/native/jsse/shared/sslEngine.c (original)
+++ harmony/enhanced/java/branches/omd/classlib/modules/x-net/src/main/native/jsse/shared/sslEngine.c Wed Sep 22 14:20:04 2010
@@ -130,13 +130,13 @@ JNIEXPORT jobject JNICALL Java_org_apach
}
JNIEXPORT jobject JNICALL Java_org_apache_harmony_xnet_provider_jsse_SSLEngineImpl_wrapImpl
- (JNIEnv *env, jclass clazz, jlong jsslengine, jlong src_address, int src_len,
+ (JNIEnv *env, jclass clazz, jlong jssl, jlong jsslengine, jlong src_address, int src_len,
jlong dst_address, int dst_len) {
_sslengine *sslengine = jlong2addr(_sslengine, jsslengine);
BIO *bio = sslengine->bio;
BIO *bio_io = sslengine->bio_io;
- SSL *ssl = NULL;
- int write_result = 0, read_result = 0;
+ SSL *ssl = jlong2addr(SSL, jssl);
+ int write_result = 0, read_result = 0, shutdownState = 0;
jobject handshake_state = NULL, engine_state = NULL, result = NULL;
jclass result_class;
jmethodID result_constructor;
@@ -144,7 +144,6 @@ JNIEXPORT jobject JNICALL Java_org_apach
jbyte *dst_buffer = jlong2addr(jbyte, dst_address);
int initial_init_state, init_state;
- BIO_get_ssl(bio, &ssl);
initial_init_state = SSL_in_init(ssl);
// write input data
@@ -162,6 +161,12 @@ JNIEXPORT jobject JNICALL Java_org_apach
handshake_state = handshake_need_unwrap;
engine_state = engine_ok;
}
+
+ // Check if close_notify has been sent or received
+ shutdownState = SSL_get_shutdown(ssl);
+ if (shutdownState) {
+ engine_state = engine_closed;
+ }
// read output data
read_result = BIO_read(bio_io, dst_buffer, dst_len);
@@ -198,8 +203,8 @@ JNIEXPORT jobject JNICALL Java_org_apach
_sslengine *sslengine = jlong2addr(_sslengine, jsslengine);
BIO *bio = sslengine->bio;
BIO *bio_io = sslengine->bio_io;
- SSL *ssl = NULL;
- int write_result = 0, read_result = 0;
+ SSL *ssl = jlong2addr(SSL, jssl);
+ int write_result = 0, read_result = 0, shutdownState = 0;
jobject handshake_state = NULL, engine_state = NULL, result = NULL;
jclass result_class;
jmethodID result_constructor;
@@ -207,7 +212,6 @@ JNIEXPORT jobject JNICALL Java_org_apach
jbyte *dst_buffer = jlong2addr(jbyte, dst_address);
int initial_init_state, init_state;
- BIO_get_ssl(bio, &ssl);
initial_init_state = SSL_in_init(ssl);
// write input data
@@ -218,11 +222,7 @@ JNIEXPORT jobject JNICALL Java_org_apach
}
// read output data
- //read_result = BIO_read(bio, dst_buffer, dst_len);
- read_result = SSL_read(ssl, dst_buffer, dst_len);
-
- // TODO: Check for SSL_RECEIVED_SHUTDOWN
-
+ read_result = BIO_read(bio, dst_buffer, dst_len);
if (read_result > 0) {
// wrote some data so must not be handshaking
handshake_state = handshake_not_handshaking;
@@ -236,6 +236,12 @@ JNIEXPORT jobject JNICALL Java_org_apach
handshake_state = handshake_need_wrap;
engine_state = engine_ok;
}
+
+ // Check if close_notify has been sent or received
+ shutdownState = SSL_get_shutdown(ssl);
+ if (shutdownState) {
+ engine_state = engine_closed;
+ }
init_state = SSL_in_init(ssl);
// if not in SSL init state
Modified: harmony/enhanced/java/branches/omd/classlib/modules/x-net/src/main/native/jsse/shared/sslEngine.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/omd/classlib/modules/x-net/src/main/native/jsse/shared/sslEngine.h?rev=999967&r1=999966&r2=999967&view=diff
==============================================================================
--- harmony/enhanced/java/branches/omd/classlib/modules/x-net/src/main/native/jsse/shared/sslEngine.h (original)
+++ harmony/enhanced/java/branches/omd/classlib/modules/x-net/src/main/native/jsse/shared/sslEngine.h Wed Sep 22 14:20:04 2010
@@ -32,7 +32,7 @@ JNIEXPORT jobject JNICALL Java_org_apach
JNIEXPORT jobject JNICALL Java_org_apache_harmony_xnet_provider_jsse_SSLEngineImpl_connectImpl
(JNIEnv *, jclass, jlong);
JNIEXPORT jobject JNICALL Java_org_apache_harmony_xnet_provider_jsse_SSLEngineImpl_wrapImpl
- (JNIEnv *, jclass, jlong, jlong, int, jlong, int);
+ (JNIEnv *, jclass, jlong, jlong, jlong, int, jlong, int);
JNIEXPORT jobject JNICALL Java_org_apache_harmony_xnet_provider_jsse_SSLEngineImpl_unwrapImpl
(JNIEnv *, jclass, jlong, jlong, jlong, int, jlong, int);
JNIEXPORT void JNICALL Java_org_apache_harmony_xnet_provider_jsse_SSLEngineImpl_shutdownImpl