#include "system/time.h"
#include "system/filesys.h"
+static bool syslogd_is_started;
struct syslog_message {
uint32_t level;
return -1;
}
+ syslogd_is_started = 1;
+
if (child != 0) {
return 0;
}
msg->len = strlen(s);
strcpy(msg->message, s);
- syslog_fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
- if (syslog_fd == -1) {
- printf("Failed to create syslog socket\n");
- free(s);
- free(msg);
- return;
- }
+ if (syslogd_is_started == 0) {
+ syslog(msg->level, "%s", msg->message);
+ } else {
+ syslog_fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
+ if (syslog_fd == -1) {
+ printf("Failed to create syslog socket\n");
+ free(s);
+ free(msg);
+ return;
+ }
- syslog_sin.sin_family = AF_INET;
- syslog_sin.sin_port = htons(CTDB_PORT);
- syslog_sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+ syslog_sin.sin_family = AF_INET;
+ syslog_sin.sin_port = htons(CTDB_PORT);
+ syslog_sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+
+
+ ret = sendto(syslog_fd, msg, len, 0, &syslog_sin, sizeof(syslog_sin));
+ /* no point in checking here since we cant log an error */
- ret = sendto(syslog_fd, msg, len, 0, &syslog_sin, sizeof(syslog_sin));
- /* no point in checking here since we cant log an error */
+ close(syslog_fd);
+ }
- close(syslog_fd);
free(s);
free(msg);
}