From c76fde46779df4c64bf0097552bc7cb712a37de0 Mon Sep 17 00:00:00 2001 From: soypat Date: Sat, 7 Jun 2025 09:36:10 -0300 Subject: [PATCH] minor changes --- internet/definitions.go | 17 +++++++++++------ internet/stack-port.go | 4 ++-- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/internet/definitions.go b/internet/definitions.go index 16794f7..71565d4 100644 --- a/internet/definitions.go +++ b/internet/definitions.go @@ -28,6 +28,7 @@ type StackNode interface { Demux(carrierData []byte, frameOffset int) error LocalPort() uint16 Protocol() uint64 + // Connect ConnectionID() *uint64 // SetFlagPending(flagPending func(numPendingEncapsulations int)) } @@ -50,15 +51,19 @@ var ( _ = net.ErrClosed ) -func handleNodeError(nodes *[]node, nodeIdx int, err error) { +func handleNodeError(nodesPtr *[]node, nodeIdx int, err error) { + if nodeIdx >= len(*nodesPtr) { + panic("unreachable") + } if err != nil { - badConnID := (*nodes)[nodeIdx].connID != nil && *(*nodes)[nodeIdx].connID != (*nodes)[nodeIdx].currConnID - if err == net.ErrClosed || (*nodes)[nodeIdx].lastErrs[0] == err || (*nodes)[nodeIdx].lastErrs[1] == err || badConnID { - *nodes = slices.Delete(*nodes, nodeIdx, nodeIdx+1) + nodes := *nodesPtr + badConnID := nodes[nodeIdx].connID != nil && *nodes[nodeIdx].connID != nodes[nodeIdx].currConnID + if err == net.ErrClosed || nodes[nodeIdx].lastErrs[0] == err || nodes[nodeIdx].lastErrs[1] == err || badConnID { + *nodesPtr = slices.Delete(nodes, nodeIdx, nodeIdx+1) } else { // Advance Queue of errors - (*nodes)[nodeIdx].lastErrs[1] = (*nodes)[nodeIdx].lastErrs[0] - (*nodes)[nodeIdx].lastErrs[0] = err + nodes[nodeIdx].lastErrs[1] = nodes[nodeIdx].lastErrs[0] + nodes[nodeIdx].lastErrs[0] = err } } } diff --git a/internet/stack-port.go b/internet/stack-port.go index c592451..0a7ed92 100644 --- a/internet/stack-port.go +++ b/internet/stack-port.go @@ -6,10 +6,10 @@ import ( ) type StackPort struct { + connID uint64 + protocol uint64 handlers []node dstPortOff int - protocol uint64 - connID uint64 } func (ps *StackPort) Reset(protocol uint64, dstPortOffset int) {