chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
util: properly divide in 64bit in format_timestamp()
[elogind.git]
/
src
/
logger.c
diff --git
a/src/logger.c
b/src/logger.c
index c486a8acd1d854a83e0915b44f6de15f1f91d23a..de4dfad38603c680f02f4d62ef14e94de49aec80 100644
(file)
--- a/
src/logger.c
+++ b/
src/logger.c
@@
-36,6
+36,7
@@
#include "log.h"
#include "list.h"
#include "sd-daemon.h"
#include "log.h"
#include "list.h"
#include "sd-daemon.h"
+#include "tcpwrap.h"
#define STREAM_BUFFER 2048
#define STREAMS_MAX 256
#define STREAM_BUFFER 2048
#define STREAMS_MAX 256
@@
-89,7
+90,7
@@
struct Stream {
LIST_FIELDS(Stream, stream);
};
LIST_FIELDS(Stream, stream);
};
-static int stream_log(Stream *s, char *p, usec_t t
imestamp
) {
+static int stream_log(Stream *s, char *p, usec_t t
s
) {
char header_priority[16], header_time[64], header_pid[16];
struct iovec iovec[5];
char header_priority[16], header_time[64], header_pid[16];
struct iovec iovec[5];
@@
-134,7
+135,7
@@
static int stream_log(Stream *s, char *p, usec_t timestamp) {
time_t t;
struct tm *tm;
time_t t;
struct tm *tm;
- t = (time_t) (t
imestamp
/ USEC_PER_SEC);
+ t = (time_t) (t
s
/ USEC_PER_SEC);
if (!(tm = localtime(&t)))
return -EINVAL;
if (!(tm = localtime(&t)))
return -EINVAL;
@@
-177,7
+178,7
@@
static int stream_log(Stream *s, char *p, usec_t timestamp) {
return 0;
}
return 0;
}
-static int stream_line(Stream *s, char *p, usec_t t
imestamp
) {
+static int stream_line(Stream *s, char *p, usec_t t
s
) {
int r;
assert(s);
int r;
assert(s);
@@
-236,13
+237,13
@@
static int stream_line(Stream *s, char *p, usec_t timestamp) {
return 0;
case STREAM_RUNNING:
return 0;
case STREAM_RUNNING:
- return stream_log(s, p, t
imestamp
);
+ return stream_log(s, p, t
s
);
}
assert_not_reached("Unknown stream state");
}
}
assert_not_reached("Unknown stream state");
}
-static int stream_scan(Stream *s, usec_t t
imestamp
) {
+static int stream_scan(Stream *s, usec_t t
s
) {
char *p;
size_t remaining;
int r = 0;
char *p;
size_t remaining;
int r = 0;
@@
-259,7
+260,7
@@
static int stream_scan(Stream *s, usec_t timestamp) {
*newline = 0;
*newline = 0;
- if ((r = stream_line(s, p, t
imestamp
)) >= 0) {
+ if ((r = stream_line(s, p, t
s
)) >= 0) {
remaining -= newline-p+1;
p = newline+1;
}
remaining -= newline-p+1;
p = newline+1;
}
@@
-273,7
+274,7
@@
static int stream_scan(Stream *s, usec_t timestamp) {
return r;
}
return r;
}
-static int stream_process(Stream *s, usec_t t
imestamp
) {
+static int stream_process(Stream *s, usec_t t
s
) {
ssize_t l;
int r;
assert(s);
ssize_t l;
int r;
assert(s);
@@
-292,7
+293,7
@@
static int stream_process(Stream *s, usec_t timestamp) {
return 0;
s->length += l;
return 0;
s->length += l;
- r = stream_scan(s, t
imestamp
);
+ r = stream_scan(s, t
s
);
if (r < 0)
return r;
if (r < 0)
return r;
@@
-340,6
+341,11
@@
static int stream_new(Server *s, int server_fd) {
return 0;
}
return 0;
}
+ if (!socket_tcpwrap(fd, "systemd-logger")) {
+ close_nointr_nofail(fd);
+ return 0;
+ }
+
if (!(stream = new0(Stream, 1))) {
close_nointr_nofail(fd);
return -ENOMEM;
if (!(stream = new0(Stream, 1))) {
close_nointr_nofail(fd);
return -ENOMEM;
@@
-428,7
+434,7
@@
static int server_init(Server *s, unsigned n_sockets) {
fd = SD_LISTEN_FDS_START+i;
fd = SD_LISTEN_FDS_START+i;
- if ((r = sd_is_socket(fd, SOCK_STREAM, 1)) < 0) {
+ if ((r = sd_is_socket(fd,
AF_UNSPEC,
SOCK_STREAM, 1)) < 0) {
log_error("Failed to determine file descriptor type: %s", strerror(-r));
goto fail;
}
log_error("Failed to determine file descriptor type: %s", strerror(-r));
goto fail;
}
@@
-501,10
+507,10
@@
static int process_event(Server *s, struct epoll_event *ev) {
}
} else {
}
} else {
- usec_t t
imestamp
;
+ usec_t t
s
;
Stream *stream = ev->data.ptr;
Stream *stream = ev->data.ptr;
- t
imestamp
= now(CLOCK_REALTIME);
+ t
s
= now(CLOCK_REALTIME);
if (!(ev->events & EPOLLIN)) {
log_info("Got invalid event from epoll. (2)");
if (!(ev->events & EPOLLIN)) {
log_info("Got invalid event from epoll. (2)");
@@
-512,7
+518,7
@@
static int process_event(Server *s, struct epoll_event *ev) {
return 0;
}
return 0;
}
- if ((r = stream_process(stream, t
imestamp
)) <= 0) {
+ if ((r = stream_process(stream, t
s
)) <= 0) {
if (r < 0)
log_info("Got error on stream: %s", strerror(-r));
if (r < 0)
log_info("Got error on stream: %s", strerror(-r));
@@
-547,6
+553,10
@@
int main(int argc, char *argv[]) {
if (server_init(&server, (unsigned) n) < 0)
return 3;
if (server_init(&server, (unsigned) n) < 0)
return 3;
+ sd_notify(false,
+ "READY=1\n"
+ "STATUS=Processing requests...");
+
for (;;) {
struct epoll_event event;
int k;
for (;;) {
struct epoll_event event;
int k;
@@
-571,6
+581,9
@@
int main(int argc, char *argv[]) {
r = 0;
fail:
r = 0;
fail:
+ sd_notify(false,
+ "STATUS=Shutting down...");
+
server_done(&server);
log_info("systemd-logger stopped as pid %llu", (unsigned long long) getpid());
server_done(&server);
log_info("systemd-logger stopped as pid %llu", (unsigned long long) getpid());