Skip to content

Commit 85803af

Browse files
authored
Merge pull request #636 from openziti/fix-ssl-socket-wrapper
implement handshake listeners, fix erroneous EOF return
2 parents 965cbcc + f908c45 commit 85803af

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

ziti/src/main/kotlin/org/openziti/net/internal/ZitiSSLSocket.kt

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ class ZitiSSLSocket(val transport: Socket, val engine: SSLEngine) :
4444
constructor(s: Socket, host: String, port: Int): this(s, tls.createSSLEngine(host, port))
4545

4646
private val sslBuffer: ByteBuffer = ByteBuffer.allocate(32 * 1024)
47+
private val hsListeners = mutableListOf<HandshakeCompletedListener>()
4748

4849
init {
4950
engine.useClientMode = true
@@ -114,7 +115,6 @@ class ZitiSSLSocket(val transport: Socket, val engine: SSLEngine) :
114115
with(engine.unwrap(sslBuffer, plainBuffer)) {
115116
sslBuffer.compact()
116117
if (bytesProduced() > 0) {
117-
plainBuffer.flip()
118118
return copyPlainText(out, off, len)
119119
}
120120
}
@@ -194,6 +194,12 @@ class ZitiSSLSocket(val transport: Socket, val engine: SSLEngine) :
194194
}
195195
}
196196

197+
val ev = HandshakeCompletedEvent(this, engine.session)
198+
synchronized(hsListeners) {
199+
hsListeners.forEach {
200+
it.handshakeCompleted(ev)
201+
}
202+
}
197203
}
198204

199205
override fun getSession(): SSLSession {
@@ -243,11 +249,21 @@ class ZitiSSLSocket(val transport: Socket, val engine: SSLEngine) :
243249
override fun getSupportedProtocols(): Array<String> = engine.supportedProtocols
244250

245251
override fun addHandshakeCompletedListener(listener: HandshakeCompletedListener?) {
246-
error("not implemented")
252+
listener?.let {
253+
synchronized(hsListeners) {
254+
hsListeners.add(it)
255+
}
256+
if (engine.handshakeStatus == SSLEngineResult.HandshakeStatus.NOT_HANDSHAKING)
257+
listener.handshakeCompleted(HandshakeCompletedEvent(this, engine.session))
258+
}
247259
}
248260

249261
override fun removeHandshakeCompletedListener(listener: HandshakeCompletedListener?) {
250-
error("not implemented")
262+
listener?.let {
263+
synchronized(hsListeners) {
264+
hsListeners.remove(it)
265+
}
266+
}
251267
}
252268

253269
override fun setEnableSessionCreation(flag: Boolean) {

0 commit comments

Comments
 (0)