From 6455b9006aa6600999be3ce723c86787a3cb4176 Mon Sep 17 00:00:00 2001 From: Nicolas Favre-Felix Date: Mon, 24 Jan 2011 23:40:44 +0100 Subject: [PATCH] Re-enable logs. --- client.c | 19 +++++++++++-------- server.c | 7 ++++--- slog.c | 6 ++++-- slog.h | 3 ++- 4 files changed, 21 insertions(+), 14 deletions(-) diff --git a/client.c b/client.c index cf53ed7..88ad7d7 100644 --- a/client.c +++ b/client.c @@ -18,6 +18,7 @@ http_client_new(int fd, struct server *s) { c->fd = fd; c->s = s; + /* initialize HTTP parser */ c->settings.on_path = http_on_path; c->settings.on_body = http_on_body; c->settings.on_message_complete = http_on_complete; @@ -32,6 +33,9 @@ http_client_new(int fd, struct server *s) { } +/** + * Called by libevent when read(2) is possible on fd without blocking. + */ void http_client_read(int fd, short event, void *ctx) { @@ -48,16 +52,15 @@ http_client_read(int fd, short event, void *ctx) { return; } - /* TODO: http parse. */ nparsed = http_parser_execute(&c->parser, &c->settings, buffer, ret); if(c->parser.upgrade) { - /* TODO */ + /* TODO: upgrade parser (WebSockets & cie) */ } else if(nparsed != ret) { /* invalid */ http_client_free(c); return; } - if(!c->executing) { + if(!c->executing) { /* if we're not waiting for Redis to reply, continue serving. */ http_client_serve(c); } } @@ -157,7 +160,7 @@ http_client_reset(struct http_client *c) { } /** - * Add read event callback + * (Re-)add read event callback */ void http_client_serve(struct http_client *c) { @@ -260,17 +263,17 @@ http_on_complete(http_parser *p) { if(c->path.sz == 16 && memcmp(c->path.s, "/crossdomain.xml", 16) == 0) { return http_crossdomain(c); } - /* slog(s, WEBDIS_DEBUG, uri); */ + slog(c->s, WEBDIS_DEBUG, c->path.s, c->path.sz); ret = cmd_run(c->s, c, 1+c->path.s, c->path.sz-1, NULL, 0); break; case HTTP_POST: - /*slog(s, WEBDIS_DEBUG, uri);*/ + slog(c->s, WEBDIS_DEBUG, c->path.s, c->path.sz); ret = cmd_run(c->s, c, 1+c->body.s, c->body.sz-1, NULL, 0); break; case HTTP_PUT: - /* slog(s, WEBDIS_DEBUG, uri); */ + slog(c->s, WEBDIS_DEBUG, c->path.s, c->path.sz); ret = cmd_run(c->s, c, 1+c->path.s, c->path.sz-1, c->body.s, c->body.sz); break; @@ -279,7 +282,7 @@ http_on_complete(http_parser *p) { return http_options(c); default: - slog(c->s, WEBDIS_DEBUG, "405"); + slog(c->s, WEBDIS_DEBUG, "405", 3); http_send_error(c, 405, "Method Not Allowed"); return 0; } diff --git a/server.c b/server.c index 6de454c..18cf451 100644 --- a/server.c +++ b/server.c @@ -124,7 +124,8 @@ on_timer_reconnect(int fd, short event, void *ctx) { s->ac->data = s; if(s->ac->err) { - slog(s, WEBDIS_ERROR, "Connection failed"); + const char err[] = "Connection failed"; + slog(s, WEBDIS_ERROR, err, sizeof(err)-1); fprintf(stderr, "Error: %s\n", s->ac->errstr); } @@ -184,7 +185,7 @@ server_start(struct server *s) { #endif /* start http server */ - slog(s, WEBDIS_INFO, "Starting HTTP Server"); + slog(s, WEBDIS_INFO, "Starting HTTP Server", sizeof("Starting HTTP Server")-1); s->fd = socket_setup(s->cfg->http_host, s->cfg->http_port); /* FIXME: check return value. */ @@ -193,7 +194,7 @@ server_start(struct server *s) { event_add(&s->ev, NULL); /* drop privileges */ - slog(s, WEBDIS_INFO, "Dropping Privileges"); + slog(s, WEBDIS_INFO, "Dropping Privileges", sizeof("Dropping Privileges")-1); setuid(s->cfg->user); setgid(s->cfg->group); diff --git a/slog.c b/slog.c index 9a749e4..179aba2 100644 --- a/slog.c +++ b/slog.c @@ -10,7 +10,9 @@ #include "server.h" #include "conf.h" -void slog(const struct server *s, log_level level, const char *body) { +void slog(const struct server *s, log_level level, + const char *body, size_t sz) { + const char *c = ".-*#"; time_t now = time(NULL); static FILE *fp = NULL; @@ -26,7 +28,7 @@ void slog(const struct server *s, log_level level, const char *body) { if(!fp) return; /* limit message size */ - snprintf(msg, sizeof(msg), "%s", body); + snprintf(msg, sz + 1 > sizeof(msg) ? sizeof(msg) : sz + 1, "%s", body); strftime(buf,sizeof(buf),"%d %b %H:%M:%S",localtime(&now)); fprintf(fp,"[%d] %s %c %s\n", (int)self, buf, c[level], msg); diff --git a/slog.h b/slog.h index 047b064..f85f80e 100644 --- a/slog.h +++ b/slog.h @@ -11,6 +11,7 @@ typedef enum { struct server; -void slog(const struct server *s, log_level level, const char *body); +void slog(const struct server *s, log_level level, + const char *body, size_t sz); #endif