diff options
Diffstat (limited to 'libjava/classpath/gnu/javax/net/ssl/provider/SSLEngineImpl.java')
-rw-r--r-- | libjava/classpath/gnu/javax/net/ssl/provider/SSLEngineImpl.java | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/libjava/classpath/gnu/javax/net/ssl/provider/SSLEngineImpl.java b/libjava/classpath/gnu/javax/net/ssl/provider/SSLEngineImpl.java index b63fb2f20f2..a62801f9932 100644 --- a/libjava/classpath/gnu/javax/net/ssl/provider/SSLEngineImpl.java +++ b/libjava/classpath/gnu/javax/net/ssl/provider/SSLEngineImpl.java @@ -768,10 +768,27 @@ public final class SSLEngineImpl extends SSLEngine } else { - inout = outsec.encrypt(sources, offset, length, - ContentType.APPLICATION_DATA, sink); - consumed = inout[0]; - produced = inout[1]; + if (outsec.needToSplitPayload()) + { + inout = outsec.encrypt(sources, offset, 1, + ContentType.APPLICATION_DATA, sink); + consumed = inout[0]; + produced = inout[1]; + if (length > 1) + { + inout = outsec.encrypt(sources, offset+1, length-1, + ContentType.APPLICATION_DATA, sink); + consumed += inout[0]; + produced += inout[1]; + } + } + else + { + inout = outsec.encrypt(sources, offset, length, + ContentType.APPLICATION_DATA, sink); + consumed = inout[0]; + produced = inout[1]; + } } if (Debug.DEBUG) |