diff --git a/src/main/java/org/conscrypt/OpenSSLEngineImpl.java b/src/main/java/org/conscrypt/OpenSSLEngineImpl.java
index c70abcd..5888188 100644
--- a/src/main/java/org/conscrypt/OpenSSLEngineImpl.java
+++ b/src/main/java/org/conscrypt/OpenSSLEngineImpl.java
@@ -419,6 +419,7 @@
         // If we haven't completed the handshake yet, just let the caller know.
         HandshakeStatus handshakeStatus = getHandshakeStatus();
         if (handshakeStatus == HandshakeStatus.NEED_UNWRAP) {
+            int positionBeforeHandshake = src.position();
             OpenSSLBIOSource source = OpenSSLBIOSource.wrap(src);
             long sslSessionCtx = 0L;
             try {
@@ -433,7 +434,9 @@
                             getPeerHost(), getPeerPort(), true);
                 }
                 int bytesWritten = handshakeSink.position();
-                return new SSLEngineResult(Status.OK, getHandshakeStatus(), 0, bytesWritten);
+                int bytesConsumed = (src.position() - positionBeforeHandshake);
+                return new SSLEngineResult((bytesConsumed > 0) ? Status.OK : Status.BUFFER_UNDERFLOW,
+                        getHandshakeStatus(), 0, bytesWritten);
             } catch (Exception e) {
                 throw (SSLHandshakeException) new SSLHandshakeException("Handshake failed")
                         .initCause(e);
@@ -488,7 +491,8 @@
 
             int consumed = srcDuplicate.position() - positionBeforeRead;
             src.position(srcDuplicate.position());
-            return new SSLEngineResult(Status.OK, getHandshakeStatus(), consumed, produced);
+            return new SSLEngineResult((consumed > 0) ? Status.OK : Status.BUFFER_UNDERFLOW,
+                    getHandshakeStatus(), consumed, produced);
         } catch (IOException e) {
             throw new SSLException(e);
         } finally {
diff --git a/src/main/java/org/conscrypt/OpenSSLSocketImpl.java b/src/main/java/org/conscrypt/OpenSSLSocketImpl.java
index c3ecac8..327879d 100644
--- a/src/main/java/org/conscrypt/OpenSSLSocketImpl.java
+++ b/src/main/java/org/conscrypt/OpenSSLSocketImpl.java
@@ -432,7 +432,7 @@
 
     @Override
     public int getPort() {
-        return peerHostname == null ? super.getPort() : peerPort;
+        return peerPort == -1 ? super.getPort() : peerPort;
     }
 
     @Override
