@@ -57,7 +57,7 @@ import java.util.concurrent.atomic.AtomicReference
5757import kotlin.text.Charsets.UTF_8
5858import kotlinx.coroutines.channels.Channel as Chan
5959
60- internal class ZitiSocketChannel private constructor(internal val ctx : ZitiContextImpl , val connId : Int ):
60+ internal class ZitiSocketChannel private constructor(internal val ctx : ZitiContextImpl , val connId : UInt ):
6161 AsynchronousSocketChannel (Provider ),
6262 Channel .MessageReceiver ,
6363 ZitiConnection ,
@@ -104,6 +104,9 @@ internal class ZitiSocketChannel private constructor(internal val ctx: ZitiConte
104104 override val inputSupport = InputChannel .InputSupport (receiveQueue)
105105 val crypto = CompletableDeferred <Crypto .SecretStream ?>()
106106
107+ /* * router provided connection id */
108+ internal var rtConnId: UInt = connId
109+
107110 override fun getLocalAddress (): SocketAddress ? = local
108111
109112 override fun getRemoteAddress (): SocketAddress ? = remote
@@ -220,7 +223,7 @@ internal class ZitiSocketChannel private constructor(internal val ctx: ZitiConte
220223 private fun deregister () {
221224 ctx.launch {
222225 channel.runCatching {
223- await().deregisterReceiver(connId )
226+ await().deregisterReceiver(rtConnId )
224227 }
225228 }
226229 }
@@ -239,7 +242,7 @@ internal class ZitiSocketChannel private constructor(internal val ctx: ZitiConte
239242 override fun shutdownOutput (): AsynchronousSocketChannel {
240243 if (state.get() == State .connected && sentFin.compareAndSet(false , true )) {
241244 val finMsg = Message (ZitiProtocol .ContentType .Data ).apply {
242- setHeader(Header .ConnId , connId )
245+ setHeader(Header .ConnId , rtConnId )
243246 setHeader(Header .FlagsHeader , ZitiProtocol .EdgeFlags .FIN )
244247 setHeader(Header .SeqHeader , seq.getAndIncrement())
245248 }
@@ -264,7 +267,7 @@ internal class ZitiSocketChannel private constructor(internal val ctx: ZitiConte
264267 state.set(State .closed)
265268 State .connecting, State .connected -> {
266269 val closeMsg = Message (ZitiProtocol .ContentType .StateClosed ).apply {
267- setHeader(Header .ConnId , connId )
270+ setHeader(Header .ConnId , rtConnId )
268271 }
269272 d(" closing conn = ${this .connId} " )
270273 ctx.async {
@@ -343,7 +346,7 @@ internal class ZitiSocketChannel private constructor(internal val ctx: ZitiConte
343346 }
344347
345348 val dataMessage = Message (ZitiProtocol .ContentType .Data , data)
346- dataMessage.setHeader(Header .ConnId , connId )
349+ dataMessage.setHeader(Header .ConnId , rtConnId )
347350 dataMessage.setHeader(Header .SeqHeader , seq.getAndIncrement())
348351 v(" sending $dataMessage " )
349352 channel.await().Send (dataMessage)
@@ -434,7 +437,7 @@ internal class ZitiSocketChannel private constructor(internal val ctx: ZitiConte
434437
435438 internal suspend fun doZitiHandshake (ch : Channel , remote : ZitiAddress .Dial , ns : Session , kp : KeyPair ? ) {
436439 val connectMsg = Message (ZitiProtocol .ContentType .Connect , ns.token.toByteArray(UTF_8 )).apply {
437- setHeader(Header .ConnId , connId )
440+ setHeader(Header .ConnId , rtConnId )
438441 setHeader(Header .SeqHeader , 0 )
439442 kp?.let {
440443 setHeader(Header .PublicKeyHeader , it.publicKey.asBytes)
@@ -502,7 +505,7 @@ internal class ZitiSocketChannel private constructor(internal val ctx: ZitiConte
502505 crypto.await()?.let {
503506 val header = it.header()
504507 val headerMessage = Message (ZitiProtocol .ContentType .Data , header)
505- .setHeader(Header .ConnId , connId )
508+ .setHeader(Header .ConnId , rtConnId )
506509 .setHeader(Header .SeqHeader , seq.getAndIncrement())
507510 ch.Send (headerMessage)
508511 }
0 commit comments