From 09c5a9eaaace704ced9daa9772479680c22a9941 Mon Sep 17 00:00:00 2001 From: ScottyPoi Date: Wed, 15 Jan 2025 16:57:53 -0700 Subject: [PATCH 1/3] uTP: modify packet comparator to use ackNr for STATE packets --- .../src/wire/utp/PortalNetworkUtp/requestManager.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/portalnetwork/src/wire/utp/PortalNetworkUtp/requestManager.ts b/packages/portalnetwork/src/wire/utp/PortalNetworkUtp/requestManager.ts index 65a8117a9..7f5ffbd93 100644 --- a/packages/portalnetwork/src/wire/utp/PortalNetworkUtp/requestManager.ts +++ b/packages/portalnetwork/src/wire/utp/PortalNetworkUtp/requestManager.ts @@ -6,9 +6,9 @@ import { Heap } from "heap-js"; import { MAX_IN_FLIGHT_PACKETS, type RequestId } from "./types.js"; const packetComparator: Comparator> = (a: Packet, b: Packet) => { - // If packets belong to the same connection, sort by sequence number + // If packets belong to the same connection, sort by sequence number (or ackNr for ST_STATE packets) if (a.header.connectionId === b.header.connectionId) { - return a.header.seqNr - b.header.seqNr; + return a.header.pType === PacketType.ST_STATE ? a.header.ackNr - b.header.ackNr : a.header.seqNr - b.header.seqNr; } // Otherwise, sort by timestamp return a.header.timestampMicroseconds - b.header.timestampMicroseconds; From eae0359366988bba99267475b6ac035be60c59aa Mon Sep 17 00:00:00 2001 From: ScottyPoi Date: Wed, 15 Jan 2025 16:58:06 -0700 Subject: [PATCH 2/3] uTP: update logging to use ackNr for STATE packets --- .../src/wire/utp/PortalNetworkUtp/requestManager.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/portalnetwork/src/wire/utp/PortalNetworkUtp/requestManager.ts b/packages/portalnetwork/src/wire/utp/PortalNetworkUtp/requestManager.ts index 7f5ffbd93..ce06d5c87 100644 --- a/packages/portalnetwork/src/wire/utp/PortalNetworkUtp/requestManager.ts +++ b/packages/portalnetwork/src/wire/utp/PortalNetworkUtp/requestManager.ts @@ -90,7 +90,7 @@ export class RequestManager { } else { this.packetHeap.push(packet) } - this.logger.extend('HANDLE_PACKET')(`Adding ${PacketType[packet.header.pType]} [${packet.header.seqNr}] for Req:${packet.header.connectionId} to queue (size: ${this.packetHeap.size()} packets)`) + this.logger.extend('HANDLE_PACKET')(`Adding ${PacketType[packet.header.pType]} [${packet.header.pType === PacketType.ST_STATE ? packet.header.ackNr : packet.header.seqNr}] for Req:${packet.header.connectionId} to queue (size: ${this.packetHeap.size()} packets)`) if (this.currentPacket === undefined) { this.currentPacket = this.packetHeap.pop() await this.processCurrentPacket() @@ -108,7 +108,7 @@ export class RequestManager { await this.processCurrentPacket() return } - this.logger.extend('PROCESS_CURRENT_PACKET')(`Processing ${PacketType[this.currentPacket.header.pType]} [${this.currentPacket.header.seqNr}] for Req:${this.currentPacket.header.connectionId}`) + this.logger.extend('PROCESS_CURRENT_PACKET')(`Processing ${PacketType[this.currentPacket.header.pType]} [${this.currentPacket.header.pType === PacketType.ST_STATE ? this.currentPacket.header.ackNr : this.currentPacket.header.seqNr}] for Req:${this.currentPacket.header.connectionId}`) const request = this.lookupRequest(this.currentPacket.header.connectionId) if (request === undefined) { this.logger.extend('PROCESS_CURRENT_PACKET')(`Request not found for current packet - connectionId: ${this.currentPacket.header.connectionId}`) From 0d15e3d377f47ec30fb796cbb23b2d1753568bc9 Mon Sep 17 00:00:00 2001 From: ScottyPoi Date: Wed, 15 Jan 2025 17:03:45 -0700 Subject: [PATCH 3/3] uTP: fix "needed" ackNr's logging --- packages/portalnetwork/src/wire/utp/Socket/WriteSocket.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/portalnetwork/src/wire/utp/Socket/WriteSocket.ts b/packages/portalnetwork/src/wire/utp/Socket/WriteSocket.ts index 023754b6a..161d36327 100644 --- a/packages/portalnetwork/src/wire/utp/Socket/WriteSocket.ts +++ b/packages/portalnetwork/src/wire/utp/Socket/WriteSocket.ts @@ -71,7 +71,7 @@ export class WriteSocket extends UtpSocket { this._clearTimeout() } logProgress() { - const needed = this.writer!.dataChunks.filter((n) => !this.ackNrs.includes(n[0])) + const needed = this.writer!.dataChunks.filter((n) => !this.ackNrs.includes(n[0])).map((n) => n[0]) this.logger( `AckNr's received (${this.ackNrs.length}/${ this.writer!.sentChunks.length