From a23327f4f0ba183b8650c6b1da5f2ec4c1fb8575 Mon Sep 17 00:00:00 2001 From: Marouane Date: Tue, 26 Mar 2019 13:56:26 +0900 Subject: [PATCH 1/2] UDP server stops when receiving invalid packets - Handle any exception --- .../syslog4j/server/impl/net/udp/UDPNetSyslogServer.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/graylog2/syslog4j/server/impl/net/udp/UDPNetSyslogServer.java b/src/main/java/org/graylog2/syslog4j/server/impl/net/udp/UDPNetSyslogServer.java index b6e0f06..eec650e 100644 --- a/src/main/java/org/graylog2/syslog4j/server/impl/net/udp/UDPNetSyslogServer.java +++ b/src/main/java/org/graylog2/syslog4j/server/impl/net/udp/UDPNetSyslogServer.java @@ -82,8 +82,12 @@ public void run() { this.ds.receive(dp); if(dp.getLength() > 0) { - SyslogServerEventIF event = createEvent(this.getConfig(), receiveData, dp.getLength(), dp.getAddress()); - handleEvent(null, this, dp, event); + try { + SyslogServerEventIF event = createEvent(this.getConfig(), receiveData, dp.getLength(), dp.getAddress()); + handleEvent(null, this, dp, event); + } catch (Exception e) { + handleException(null, this, dp.getSocketAddress(), e); + } } } catch (SocketException se) { int i = se.getMessage() == null ? -1 : se.getMessage().toLowerCase().indexOf("socket closed"); From 4fcd3cc48757c78d0b0c8bc81a6380cd41100c42 Mon Sep 17 00:00:00 2001 From: Marouane Date: Fri, 24 May 2019 11:11:24 +0900 Subject: [PATCH 2/2] Maintain same behaviour as the SimpleDateFormat parse failure for joda-time date parse failure --- .../syslog4j/server/impl/event/SyslogServerEvent.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/graylog2/syslog4j/server/impl/event/SyslogServerEvent.java b/src/main/java/org/graylog2/syslog4j/server/impl/event/SyslogServerEvent.java index 2c74fb5..d4b027f 100644 --- a/src/main/java/org/graylog2/syslog4j/server/impl/event/SyslogServerEvent.java +++ b/src/main/java/org/graylog2/syslog4j/server/impl/event/SyslogServerEvent.java @@ -100,9 +100,9 @@ protected void parseDate() { String originalDate = this.message.substring(0, datelength - 1); String modifiedDate = originalDate + " " + year; - DateFormat dateFormat = new SimpleDateFormat(dateFormatS, Locale.ENGLISH); try { if (!isDate8601) { + DateFormat dateFormat = new SimpleDateFormat(dateFormatS, Locale.ENGLISH); this.date = dateFormat.parse(modifiedDate); } else { this.date = DateTime.parse(originalDate).toDate(); @@ -110,7 +110,7 @@ protected void parseDate() { this.message = this.message.substring(datelength); - } catch (ParseException pe) { + } catch (ParseException | IllegalArgumentException ex) { this.date = new Date(); } }