Skip to content

Commit

Permalink
Add coroutine exception handler on more socket contexts (#507)
Browse files Browse the repository at this point in the history
Let's see if this fixes the issue while we prepare a
larger rework of the `ElectrumClient`.
  • Loading branch information
t-bast committed Jul 10, 2023
1 parent b1fb1e9 commit 64c6a60
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions src/jvmMain/kotlin/fr/acinq/lightning/io/JvmTcpSocket.kt
Original file line number Diff line number Diff line change
Expand Up @@ -160,18 +160,19 @@ class JvmTcpSocket(val socket: Socket, val loggerFactory: LoggerFactory) : TcpSo
internal actual object PlatformSocketBuilder : TcpSocket.Builder {
override suspend fun connect(host: String, port: Int, tls: TcpSocket.TLS, loggerFactory: LoggerFactory): TcpSocket {
val logger = loggerFactory.newLogger(this::class)
return withContext(Dispatchers.IO) {
val context = tlsContext(logger)
return withContext(context) {
try {
val socket = aSocket(SelectorManager(Dispatchers.IO)).tcp().connect(host, port).let { socket ->
val socket = aSocket(SelectorManager(context)).tcp().connect(host, port).let { socket ->
when (tls) {
is TcpSocket.TLS.TRUSTED_CERTIFICATES -> socket.tls(tlsContext(logger))
TcpSocket.TLS.UNSAFE_CERTIFICATES -> socket.tls(tlsContext(logger)) {
is TcpSocket.TLS.TRUSTED_CERTIFICATES -> socket.tls(context)
TcpSocket.TLS.UNSAFE_CERTIFICATES -> socket.tls(context) {
logger.warning { "using unsafe TLS!" }
trustManager = JvmTcpSocket.unsafeX509TrustManager()
}
is TcpSocket.TLS.PINNED_PUBLIC_KEY -> {
logger.info { "using certificate pinning for connections with $host" }
socket.tls(tlsContext(logger), JvmTcpSocket.tlsConfigForPinnedCert(tls.pubKey, logger))
socket.tls(context, JvmTcpSocket.tlsConfigForPinnedCert(tls.pubKey, logger))
}
else -> socket
}
Expand Down

0 comments on commit 64c6a60

Please sign in to comment.