The syslog UDP socket may receive data, which is not cool because those
data accumulate in the system buffers up to the receive socket buffer size.
To prevent this, we set the receive window to zero and try to shutdown(SHUT_RD)
the socket.
if (logfd < 0) {
if ((logfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0)
return;
+ /* we don't want to receive anything on this socket */
+ setsockopt(logfd, SOL_SOCKET, SO_RCVBUF, &zero, sizeof(zero));
+ shutdown(logfd, SHUT_RD); /* does nothing under Linux, maybe needed for others */
}
if (level < 0 || progname == NULL || message == NULL)