@@ -32,10 +32,11 @@ import io.netty.buffer.PooledByteBufAllocator
32
32
import io.netty.channel.*
33
33
import io.netty.channel.epoll.Epoll
34
34
import io.netty.channel.epoll.EpollDatagramChannel
35
- import io.netty.channel.nio.NioEventLoopGroup
35
+ import io.netty.channel.nio.NioIoHandler
36
36
import io.netty.channel.socket.nio.NioDatagramChannel
37
37
import io.netty.handler.codec.quic.*
38
38
import io.netty.handler.ssl.ClientAuth
39
+ import org.slf4j.LoggerFactory
39
40
import java.net.InetSocketAddress
40
41
import java.net.SocketAddress
41
42
import java.time.Duration
@@ -49,14 +50,20 @@ class QuicTransport(
49
50
private val protocols : List <ProtocolBinding <* >>
50
51
) : NettyTransport {
51
52
53
+ private val logger = LoggerFactory .getLogger(QuicTransport ::class .java)
54
+
52
55
private var closed = false
53
56
var connectTimeout = Duration .ofSeconds(15 )
54
57
55
58
private val listeners = mutableMapOf<Multiaddr , Channel >()
56
59
private val channels = mutableListOf<Channel >()
57
60
58
- private var workerGroup by lazyVar { NioEventLoopGroup () }
59
- private var bossGroup by lazyVar { NioEventLoopGroup (1 ) }
61
+ private var workerGroup by lazyVar {
62
+ MultiThreadIoEventLoopGroup (NioIoHandler .newFactory())
63
+ }
64
+ private var bossGroup by lazyVar {
65
+ MultiThreadIoEventLoopGroup (1 , NioIoHandler .newFactory())
66
+ }
60
67
private var allocator by lazyVar { PooledByteBufAllocator (true ) }
61
68
private var multistreamProtocol: MultistreamProtocol = MultistreamProtocolV1
62
69
private var incomingMultistreamProtocol: MultistreamProtocol by lazyVar { multistreamProtocol }
@@ -166,7 +173,7 @@ class QuicTransport(
166
173
listeners - = addr
167
174
}
168
175
}
169
- println (" Quic server listening on " + addr)
176
+ logger.info (" Quic server listening on $ addr" )
170
177
res.complete(null )
171
178
}
172
179
}
@@ -300,38 +307,23 @@ class QuicTransport(
300
307
301
308
override fun handles (addr : Multiaddr ) =
302
309
handlesHost(addr) &&
303
- addr.has(UDP ) &&
304
- addr.has(QUICV1 ) &&
305
- ! addr.has(WS )
310
+ addr.has(UDP ) &&
311
+ addr.has(QUICV1 ) &&
312
+ ! addr.has(WS )
306
313
307
314
fun quicSslContext (expectedRemotePeerId : PeerId ? , trustManager : Libp2pTrustManager ): QuicSslContext {
308
315
val connectionKeys = if (certAlgorithm.equals(" ECDSA" )) generateEcdsaKeyPair() else generateEd25519KeyPair()
309
316
val javaPrivateKey = getJavaKey(connectionKeys.first)
310
317
val isClient = expectedRemotePeerId != null
311
318
val cert = buildCert(localKey, connectionKeys.first)
312
- println (" Building " + certAlgorithm + " keys and cert for peerid " + PeerId .fromPubKey(localKey.publicKey()))
319
+ logger.debug (" Building {} keys and cert for peerid {} " , certAlgorithm, PeerId .fromPubKey(localKey.publicKey()))
313
320
return (
314
- if (isClient) {
315
- QuicSslContextBuilder .forClient().keyManager(javaPrivateKey, null , cert)
316
- } else {
317
- QuicSslContextBuilder .forServer(javaPrivateKey, null , cert).clientAuth(ClientAuth .REQUIRE )
318
- }
319
- )
320
- // .option(BoringSSLContextOption.GROUPS, arrayOf("x25519"))
321
- // .option(
322
- // BoringSSLContextOption.SIGNATURE_ALGORITHMS,
323
- // arrayOf(
324
- // // "ed25519",
325
- // "ecdsa_secp256r1_sha256",
326
- // "rsa_pkcs1_sha256",
327
- // "rsa_pss_rsae_sha256",
328
- // "ecdsa_secp384r1_sha384",
329
- // "rsa_pkcs1_sha384",
330
- // "rsa_pss_rsae_sha384",
331
- // "rsa_pss_rsae_sha512",
332
- // "rsa_pkcs1_sha512",
333
- // )
334
- // )
321
+ if (isClient) {
322
+ QuicSslContextBuilder .forClient().keyManager(javaPrivateKey, null , cert)
323
+ } else {
324
+ QuicSslContextBuilder .forServer(javaPrivateKey, null , cert).clientAuth(ClientAuth .REQUIRE )
325
+ }
326
+ )
335
327
.trustManager(trustManager)
336
328
.applicationProtocols(" libp2p" )
337
329
.build()
0 commit comments