diff --git a/classlib/modules/x-net/src/main/java/org/apache/harmony/xnet/provider/jsse/SSLEngineImpl.java b/classlib/modules/x-net/src/main/java/org/apache/harmony/xnet/provider/jsse/SSLEngineImpl.java
index e4cdb4e..77f8238 100644
--- a/classlib/modules/x-net/src/main/java/org/apache/harmony/xnet/provider/jsse/SSLEngineImpl.java
+++ b/classlib/modules/x-net/src/main/java/org/apache/harmony/xnet/provider/jsse/SSLEngineImpl.java
@@ -79,7 +79,7 @@
     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 @@
             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());
diff --git a/classlib/modules/x-net/src/main/native/jsse/shared/sslEngine.c b/classlib/modules/x-net/src/main/native/jsse/shared/sslEngine.c
index f1d1f78..2123f39 100644
--- a/classlib/modules/x-net/src/main/native/jsse/shared/sslEngine.c
+++ b/classlib/modules/x-net/src/main/native/jsse/shared/sslEngine.c
@@ -130,13 +130,13 @@
 }
 
 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 @@
     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 @@
         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 @@
     _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 @@
     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 @@
     }
     
     // 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 @@
         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
diff --git a/classlib/modules/x-net/src/main/native/jsse/shared/sslEngine.h b/classlib/modules/x-net/src/main/native/jsse/shared/sslEngine.h
index 2b56fbe..80c1c59 100644
--- a/classlib/modules/x-net/src/main/native/jsse/shared/sslEngine.h
+++ b/classlib/modules/x-net/src/main/native/jsse/shared/sslEngine.h
@@ -32,7 +32,7 @@
 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
