mirror of
https://git.FreeBSD.org/src.git
synced 2024-10-19 02:29:40 +00:00
libc: Some enhancements to syslog(3)
This is a re-application of commit
2d82b47a5b
, which was reverted since it
broke with syslog daemons that don't adjust the /dev/log recv buffer
size. Now that the default is large enough to accomodate 8KB messages,
restore support for large messages.
PR: 260126
This commit is contained in:
parent
963f5dc7a3
commit
881059955a
@ -57,6 +57,9 @@ __FBSDID("$FreeBSD$");
|
||||
|
||||
#include "libc_private.h"
|
||||
|
||||
/* Maximum number of characters of syslog message */
|
||||
#define MAXLINE 8192
|
||||
|
||||
static int LogFile = -1; /* fd for log */
|
||||
static int status; /* connection status */
|
||||
static int opened; /* have done openlog() */
|
||||
@ -141,7 +144,7 @@ vsyslog1(int pri, const char *fmt, va_list ap)
|
||||
char ch, *p;
|
||||
long tz_offset;
|
||||
int cnt, fd, saved_errno;
|
||||
char hostname[MAXHOSTNAMELEN], *stdp, tbuf[2048], fmt_cpy[1024],
|
||||
char hostname[MAXHOSTNAMELEN], *stdp, tbuf[MAXLINE], fmt_cpy[MAXLINE],
|
||||
errstr[64], tz_sign;
|
||||
FILE *fp, *fmt_fp;
|
||||
struct bufcookie tbuf_cookie;
|
||||
@ -396,9 +399,19 @@ connectlog(void)
|
||||
struct sockaddr_un SyslogAddr; /* AF_UNIX address of local logger */
|
||||
|
||||
if (LogFile == -1) {
|
||||
socklen_t len;
|
||||
|
||||
if ((LogFile = _socket(AF_UNIX, SOCK_DGRAM | SOCK_CLOEXEC,
|
||||
0)) == -1)
|
||||
return;
|
||||
if (_getsockopt(LogFile, SOL_SOCKET, SO_SNDBUF, &len,
|
||||
&(socklen_t){sizeof(len)}) == 0) {
|
||||
if (len < MAXLINE) {
|
||||
len = MAXLINE;
|
||||
(void)_setsockopt(LogFile, SOL_SOCKET, SO_SNDBUF,
|
||||
&len, sizeof(len));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (LogFile != -1 && status == NOCONN) {
|
||||
SyslogAddr.sun_len = sizeof(SyslogAddr);
|
||||
|
Loading…
Reference in New Issue
Block a user