Skip to content

Commit a48b05e

Browse files
authored
added coderabbitai suggestions like:
- Add error state tracking to the SyslogPrinter class. - configurable buffer size. That way, anyone can -D SYSLOG_BUFFER_SIZE=256 (or larger) in their build flags to avoid silent truncation.
1 parent afccadd commit a48b05e

File tree

2 files changed

+33
-4
lines changed

2 files changed

+33
-4
lines changed

wled00/syslog.cpp

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,27 @@ size_t SyslogPrinter::write(const uint8_t *buf, size_t size) {
120120
}
121121

122122
size_t SyslogPrinter::write(const uint8_t *buf, size_t size, uint8_t severity) {
123-
if (!WLED_CONNECTED || buf == nullptr || !syslogEnabled) return 0;
124-
if (!resolveHostname()) return 0;
123+
_lastOperationSucceeded = true;
124+
if (!WLED_CONNECTED) {
125+
_lastOperationSucceeded = false;
126+
_lastErrorMessage = F("Network not connected");
127+
return 0;
128+
}
129+
if (buf == nullptr) {
130+
_lastOperationSucceeded = false;
131+
_lastErrorMessage = F("Null buffer provided");
132+
return 0;
133+
}
134+
if (!syslogEnabled) {
135+
_lastOperationSucceeded = false;
136+
_lastErrorMessage = F("Syslog is disabled");
137+
return 0;
138+
}
139+
if (!resolveHostname()) {
140+
_lastOperationSucceeded = false;
141+
_lastErrorMessage = F("Failed to resolve hostname");
142+
return 0;
143+
}
125144

126145
syslogUdp.beginPacket(syslogHostIP, syslogPort);
127146

wled00/syslog.h

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,15 +49,21 @@ class SyslogPrinter : public Print {
4949
WiFiUDP syslogUdp; // needs to be here otherwise UDP messages get truncated upon destruction
5050
IPAddress syslogHostIP;
5151
bool resolveHostname();
52+
bool _lastOperationSucceeded;
53+
String _lastErrorMessage;
5254

5355
// Syslog configuration
5456
uint8_t _facility;
5557
uint8_t _severity;
5658
uint8_t _protocol;
5759
String _appName;
58-
bool test = true;
60+
5961
// Buffer management
60-
char _buffer[128]; // Buffer for collecting characters
62+
#ifndef SYSLOG_BUFFER_SIZE
63+
#define SYSLOG_BUFFER_SIZE 128
64+
#endif
65+
char _buffer[SYSLOG_BUFFER_SIZE]; // Buffer for collecting characters
66+
6167
size_t _bufferIndex;
6268
void flushBuffer();
6369

@@ -75,6 +81,10 @@ class SyslogPrinter : public Print {
7581

7682
// Severity override for specific messages
7783
size_t write(const uint8_t *buf, size_t size, uint8_t severity);
84+
85+
// Error handling
86+
bool lastOperationSucceeded() const { return _lastOperationSucceeded; }
87+
String getLastErrorMessage() const { return _lastErrorMessage; }
7888
};
7989

8090
// Default instance

0 commit comments

Comments
 (0)