Code reorganisation: make sure that the service name is only queried
when it is needed, i.e. when we are sending to or receiving from the network
This commit is contained in:
parent
c5f9d2cd50
commit
94e0cb4f54
44
syslogd.c
44
syslogd.c
@ -782,7 +782,7 @@ char *LocalDomain; /* our local domain name */
|
|||||||
char *emptystring = "";
|
char *emptystring = "";
|
||||||
int InetInuse = 0; /* non-zero if INET sockets are being used */
|
int InetInuse = 0; /* non-zero if INET sockets are being used */
|
||||||
int finet = -1; /* Internet datagram socket */
|
int finet = -1; /* Internet datagram socket */
|
||||||
int LogPort; /* port number for INET connections */
|
int LogPort = 0; /* port number for INET connections */
|
||||||
int Initialized = 0; /* set when we have initialized ourselves */
|
int Initialized = 0; /* set when we have initialized ourselves */
|
||||||
int MarkInterval = 20 * 60; /* interval between marks in seconds */
|
int MarkInterval = 20 * 60; /* interval between marks in seconds */
|
||||||
int MarkSeq = 0; /* mark sequence number */
|
int MarkSeq = 0; /* mark sequence number */
|
||||||
@ -1249,6 +1249,23 @@ static int create_unix_socket(const char *path)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef SYSLOG_INET
|
#ifdef SYSLOG_INET
|
||||||
|
int getlogport()
|
||||||
|
{
|
||||||
|
struct servent *sp;
|
||||||
|
sp = getservbyname("syslog", "udp");
|
||||||
|
if (sp == NULL) {
|
||||||
|
if (errno == ENOENT) {
|
||||||
|
errno = 0;
|
||||||
|
logerror("The file /etc/services does not seem exist.");
|
||||||
|
}
|
||||||
|
errno = 0;
|
||||||
|
logerror("network logging disabled (syslog/udp service unknown).");
|
||||||
|
logerror("see syslogd(8) for details of whether and how to enable it.");
|
||||||
|
return -1;
|
||||||
|
} else
|
||||||
|
return sp->s_port;
|
||||||
|
}
|
||||||
|
|
||||||
static int create_inet_socket()
|
static int create_inet_socket()
|
||||||
{
|
{
|
||||||
int fd, on = 1;
|
int fd, on = 1;
|
||||||
@ -1261,6 +1278,12 @@ static int create_inet_socket()
|
|||||||
return fd;
|
return fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!LogPort)
|
||||||
|
LogPort = getlogport();
|
||||||
|
|
||||||
|
if (LogPort == -1)
|
||||||
|
return -1;
|
||||||
|
|
||||||
memset(&sin, 0, sizeof(sin));
|
memset(&sin, 0, sizeof(sin));
|
||||||
sin.sin_family = AF_INET;
|
sin.sin_family = AF_INET;
|
||||||
sin.sin_port = LogPort;
|
sin.sin_port = LogPort;
|
||||||
@ -2295,22 +2318,8 @@ void init()
|
|||||||
#else
|
#else
|
||||||
char cline[BUFSIZ];
|
char cline[BUFSIZ];
|
||||||
#endif
|
#endif
|
||||||
struct servent *sp;
|
|
||||||
struct hostent *hent;
|
struct hostent *hent;
|
||||||
|
|
||||||
sp = getservbyname("syslog", "udp");
|
|
||||||
if (sp == NULL) {
|
|
||||||
if (errno == ENOENT) {
|
|
||||||
errno = 0;
|
|
||||||
logerror("The file /etc/services does not seem exist.");
|
|
||||||
}
|
|
||||||
errno = 0;
|
|
||||||
logerror("network logging disabled (syslog/udp service unknown).");
|
|
||||||
logerror("see syslogd(8) for details of whether and how to enable it.");
|
|
||||||
LogPort = 0;
|
|
||||||
} else
|
|
||||||
LogPort = sp->s_port;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Close all open log files and free log descriptor array.
|
* Close all open log files and free log descriptor array.
|
||||||
*/
|
*/
|
||||||
@ -2740,7 +2749,10 @@ void cfline(line, f)
|
|||||||
{
|
{
|
||||||
case '@':
|
case '@':
|
||||||
#ifdef SYSLOG_INET
|
#ifdef SYSLOG_INET
|
||||||
if (!LogPort) {
|
if (!LogPort)
|
||||||
|
LogPort = getlogport();
|
||||||
|
|
||||||
|
if (LogPort == -1) {
|
||||||
f->f_type = F_UNUSED;
|
f->f_type = F_UNUSED;
|
||||||
logerror("Forward rule without networking enabled");
|
logerror("Forward rule without networking enabled");
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user