From 8ba04245127f9587f1ec7b418b69922054888a59 Mon Sep 17 00:00:00 2001 From: imterah Date: Mon, 23 Dec 2024 21:45:26 -0500 Subject: [PATCH] fix: Fixes getting inbound connections. --- backend/commonbackend/marshal.go | 9 +++++++++ backend/commonbackend/unmarshal.go | 12 ++++++++++++ .../Hermes API/Forward/Get Inbound Connections.bru | 2 +- routes/Hermes API/Forward/Start.bru | 2 +- 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/backend/commonbackend/marshal.go b/backend/commonbackend/marshal.go index e9676c3..31895de 100644 --- a/backend/commonbackend/marshal.go +++ b/backend/commonbackend/marshal.go @@ -206,6 +206,10 @@ func Marshal(commandType string, command interface{}) ([]byte, error) { totalSize += len(connectionsArray[connIndex]) + 1 } + if totalSize == 0 { + totalSize = 1 + } + connectionCommandArray := make([]byte, totalSize+1) connectionCommandArray[0] = ProxyConnectionsResponseID @@ -463,6 +467,10 @@ func Marshal(commandType string, command interface{}) ([]byte, error) { totalSize += len(proxyArray[proxyIndex]) + 1 } + if totalSize == 0 { + totalSize = 1 + } + connectionCommandArray := make([]byte, totalSize+1) connectionCommandArray[0] = ProxyInstanceResponseID @@ -475,6 +483,7 @@ func Marshal(commandType string, command interface{}) ([]byte, error) { } connectionCommandArray[totalSize] = '\n' + return connectionCommandArray, nil case "proxyInstanceRequest": _, ok := command.(*ProxyInstanceRequest) diff --git a/backend/commonbackend/unmarshal.go b/backend/commonbackend/unmarshal.go index 1e689de..b8500dd 100644 --- a/backend/commonbackend/unmarshal.go +++ b/backend/commonbackend/unmarshal.go @@ -20,6 +20,8 @@ func unmarshalIndividualConnectionStruct(conn io.Reader) (*ProxyClientConnection serverIPSize = IPv4Size } else if serverIPVersion[0] == 6 { serverIPSize = IPv6Size + } else if serverIPVersion[0] == '\n' { + return nil, fmt.Errorf("no data found") } else { return nil, fmt.Errorf("invalid server IP version recieved") } @@ -92,6 +94,8 @@ func unmarshalIndividualProxyStruct(conn io.Reader) (*ProxyInstance, error) { ipSize = IPv4Size } else if ipVersion[0] == 6 { ipSize = IPv6Size + } else if ipVersion[0] == '\n' { + return nil, fmt.Errorf("no data found") } else { return nil, fmt.Errorf("invalid IP version recieved") } @@ -293,6 +297,10 @@ func Unmarshal(conn io.Reader) (string, interface{}, error) { connection, err := unmarshalIndividualConnectionStruct(conn) if err != nil { + if err.Error() == "no data found" { + break + } + return "", nil, err } @@ -619,6 +627,10 @@ func Unmarshal(conn io.Reader) (string, interface{}, error) { proxy, err := unmarshalIndividualProxyStruct(conn) if err != nil { + if err.Error() == "no data found" { + break + } + return "", nil, err } diff --git a/routes/Hermes API/Forward/Get Inbound Connections.bru b/routes/Hermes API/Forward/Get Inbound Connections.bru index 9442285..7a750cb 100644 --- a/routes/Hermes API/Forward/Get Inbound Connections.bru +++ b/routes/Hermes API/Forward/Get Inbound Connections.bru @@ -13,6 +13,6 @@ post { body:json { { "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsiMSJdLCJleHAiOjE3MzUwNzY0MTEsIm5iZiI6MTczNDk5MDAxMSwiaWF0IjoxNzM0OTkwMDExfQ.N9TLraX4peHt7FKv8tPcHuEzL0K7T2IBEw3piQS_4OY", - "id": 1 + "id": 2 } } diff --git a/routes/Hermes API/Forward/Start.bru b/routes/Hermes API/Forward/Start.bru index 5ea3d25..acc56f8 100644 --- a/routes/Hermes API/Forward/Start.bru +++ b/routes/Hermes API/Forward/Start.bru @@ -13,6 +13,6 @@ post { body:json { { "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsiMSJdLCJleHAiOjE3MzUwNzY0MTEsIm5iZiI6MTczNDk5MDAxMSwiaWF0IjoxNzM0OTkwMDExfQ.N9TLraX4peHt7FKv8tPcHuEzL0K7T2IBEw3piQS_4OY", - "id": 1 + "id": 2 } }