From 11f07ae141dcf58f17af69c9cb1911d06a07ba3e Mon Sep 17 00:00:00 2001 From: "Ernest (ErNis)" Date: Fri, 8 Sep 2023 09:02:13 +0300 Subject: [PATCH] Prevent of multi line forwarding to APRS-IS --- src/igate.cpp | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/igate.cpp b/src/igate.cpp index 0c4ecc4..00d95e9 100644 --- a/src/igate.cpp +++ b/src/igate.cpp @@ -69,13 +69,23 @@ int igateProcess(AX25Msg &Packet) { // Add Infomation header += String(F(":")); - uint8_t Raw[500]; - memset(Raw, 0, sizeof(Raw)); size_t hSize = strlen(header.c_str()); - memcpy(&Raw[0], header.c_str(), hSize); - memcpy(&Raw[hSize], &Packet.info[0], Packet.len); - aprsClient.write(&Raw[0], - hSize + Packet.len); // info binary write aprsc support - aprsClient.println(); + uint8_t raw[500]; + memset(raw, 0, sizeof(raw)); + memcpy(&raw[0], header.c_str(), hSize); + + // Prevent multi lines (Issue #48) + size_t crlf_pos = Packet.len; + for (int i = 0; i < Packet.len; i++) { + if (Packet.info[i] == '\n' || Packet.info[i] == '\r') { + crlf_pos = i; + break; + } + } + + memcpy(&raw[hSize], &Packet.info[0], crlf_pos); + aprsClient.write(&raw[0], hSize + crlf_pos); + aprsClient.write("\r\n"); + return 1; }