From 40b48910307be4216643a19e19491ece640bc59c Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Sun, 25 Sep 2016 17:30:37 +0200 Subject: [PATCH] Make sure SyslogUdpHandler does not create empty frames where not necessary, fixes #841 --- src/Monolog/Handler/SyslogUdpHandler.php | 2 +- tests/Monolog/Handler/SyslogUdpHandlerTest.php | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/Monolog/Handler/SyslogUdpHandler.php b/src/Monolog/Handler/SyslogUdpHandler.php index b175cc3a..74d946a5 100644 --- a/src/Monolog/Handler/SyslogUdpHandler.php +++ b/src/Monolog/Handler/SyslogUdpHandler.php @@ -59,7 +59,7 @@ class SyslogUdpHandler extends AbstractSyslogHandler $message = implode("\n", $message); } - return preg_split('/$\R?^/m', $message); + return preg_split('/$\R?^/m', $message, -1, PREG_SPLIT_NO_EMPTY); } /** diff --git a/tests/Monolog/Handler/SyslogUdpHandlerTest.php b/tests/Monolog/Handler/SyslogUdpHandlerTest.php index 497812b3..aa4a3341 100644 --- a/tests/Monolog/Handler/SyslogUdpHandlerTest.php +++ b/tests/Monolog/Handler/SyslogUdpHandlerTest.php @@ -11,10 +11,12 @@ namespace Monolog\Handler; +use Monolog\TestCase; + /** * @requires extension sockets */ -class SyslogUdpHandlerTest extends \PHPUnit_Framework_TestCase +class SyslogUdpHandlerTest extends TestCase { /** * @expectedException UnexpectedValueException @@ -42,6 +44,20 @@ class SyslogUdpHandlerTest extends \PHPUnit_Framework_TestCase $handler->handle($this->getRecordWithMessage("hej\nlol")); } + public function testSplitWorksOnEmptyMsg() + { + $handler = new SyslogUdpHandler("127.0.0.1", 514, "authpriv"); + $handler->setFormatter($this->getIdentityFormatter()); + + $socket = $this->getMock('\Monolog\Handler\SyslogUdp\UdpSocket', array('write'), array('lol', 'lol')); + $socket->expects($this->never()) + ->method('write'); + + $handler->setSocket($socket); + + $handler->handle($this->getRecordWithMessage(null)); + } + protected function getRecordWithMessage($msg) { return array('message' => $msg, 'level' => \Monolog\Logger::WARNING, 'context' => null, 'extra' => array(), 'channel' => 'lol');