[syslog-ng] [PATCH (3.4)] afsocket: Use the "dgram" proto for dgram sockets
Gergely Nagy
algernon at balabit.hu
Thu Oct 11 12:34:34 CEST 2012
When applying a transport to a socket, don't just set the transport,
but also set logproto_name properly: "dgram" for SOCK_DGRAM sockets,
"text" for everything else.
If this is not done, and our socket is SOCK_DGRAM, we'd use the text
proto, which after the refactoring, would look for a terminating new
line, instead of datagram boundary - and it wouldn't find it, which
will result in partial messages accumulating in a buffer, to
eventually be sent out as garbage.
This patch simply makes it so that SOCK_DGRAM will use the "dgram"
logproto, which does the right thing, and knows about datagram
boundaries.
Reported-by: Peter Czanik <czanik at balabit.hu>
Signed-off-by: Gergely Nagy <algernon at balabit.hu>
---
modules/afsocket/afunix.c | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/modules/afsocket/afunix.c b/modules/afsocket/afunix.c
index 1a1465f..8849927 100644
--- a/modules/afsocket/afunix.c
+++ b/modules/afsocket/afunix.c
@@ -172,12 +172,16 @@ afunix_sd_apply_transport(AFSocketSourceDriver *s)
if (!self->super.bind_addr)
self->super.bind_addr = g_sockaddr_unix_new(self->filename);
+ self->super.logproto_name = "text";
+
if (self->super.sock_type == SOCK_DGRAM)
- afsocket_sd_set_transport(&self->super.super.super, "unix-dgram");
+ {
+ afsocket_sd_set_transport(&self->super.super.super, "unix-dgram");
+ self->super.logproto_name = "dgram";
+ }
else
afsocket_sd_set_transport(&self->super.super.super, "unix-stream");
- self->super.logproto_name = "text";
return TRUE;
}
--
1.7.9
More information about the syslog-ng
mailing list