Re-enable logs.

master
Nicolas Favre-Felix 14 years ago
parent 443d142497
commit 6455b9006a

@ -18,6 +18,7 @@ http_client_new(int fd, struct server *s) {
c->fd = fd; c->fd = fd;
c->s = s; c->s = s;
/* initialize HTTP parser */
c->settings.on_path = http_on_path; c->settings.on_path = http_on_path;
c->settings.on_body = http_on_body; c->settings.on_body = http_on_body;
c->settings.on_message_complete = http_on_complete; 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 void
http_client_read(int fd, short event, void *ctx) { http_client_read(int fd, short event, void *ctx) {
@ -48,16 +52,15 @@ http_client_read(int fd, short event, void *ctx) {
return; return;
} }
/* TODO: http parse. */
nparsed = http_parser_execute(&c->parser, &c->settings, buffer, ret); nparsed = http_parser_execute(&c->parser, &c->settings, buffer, ret);
if(c->parser.upgrade) { if(c->parser.upgrade) {
/* TODO */ /* TODO: upgrade parser (WebSockets & cie) */
} else if(nparsed != ret) { /* invalid */ } else if(nparsed != ret) { /* invalid */
http_client_free(c); http_client_free(c);
return; return;
} }
if(!c->executing) { if(!c->executing) { /* if we're not waiting for Redis to reply, continue serving. */
http_client_serve(c); 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 void
http_client_serve(struct http_client *c) { 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) { if(c->path.sz == 16 && memcmp(c->path.s, "/crossdomain.xml", 16) == 0) {
return http_crossdomain(c); 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); ret = cmd_run(c->s, c, 1+c->path.s, c->path.sz-1, NULL, 0);
break; break;
case HTTP_POST: 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); ret = cmd_run(c->s, c, 1+c->body.s, c->body.sz-1, NULL, 0);
break; break;
case HTTP_PUT: 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, ret = cmd_run(c->s, c, 1+c->path.s, c->path.sz-1,
c->body.s, c->body.sz); c->body.s, c->body.sz);
break; break;
@ -279,7 +282,7 @@ http_on_complete(http_parser *p) {
return http_options(c); return http_options(c);
default: default:
slog(c->s, WEBDIS_DEBUG, "405"); slog(c->s, WEBDIS_DEBUG, "405", 3);
http_send_error(c, 405, "Method Not Allowed"); http_send_error(c, 405, "Method Not Allowed");
return 0; return 0;
} }

@ -124,7 +124,8 @@ on_timer_reconnect(int fd, short event, void *ctx) {
s->ac->data = s; s->ac->data = s;
if(s->ac->err) { 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); fprintf(stderr, "Error: %s\n", s->ac->errstr);
} }
@ -184,7 +185,7 @@ server_start(struct server *s) {
#endif #endif
/* start http server */ /* 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); s->fd = socket_setup(s->cfg->http_host, s->cfg->http_port);
/* FIXME: check return value. */ /* FIXME: check return value. */
@ -193,7 +194,7 @@ server_start(struct server *s) {
event_add(&s->ev, NULL); event_add(&s->ev, NULL);
/* drop privileges */ /* drop privileges */
slog(s, WEBDIS_INFO, "Dropping Privileges"); slog(s, WEBDIS_INFO, "Dropping Privileges", sizeof("Dropping Privileges")-1);
setuid(s->cfg->user); setuid(s->cfg->user);
setgid(s->cfg->group); setgid(s->cfg->group);

@ -10,7 +10,9 @@
#include "server.h" #include "server.h"
#include "conf.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 = ".-*#"; const char *c = ".-*#";
time_t now = time(NULL); time_t now = time(NULL);
static FILE *fp = NULL; static FILE *fp = NULL;
@ -26,7 +28,7 @@ void slog(const struct server *s, log_level level, const char *body) {
if(!fp) return; if(!fp) return;
/* limit message size */ /* 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)); strftime(buf,sizeof(buf),"%d %b %H:%M:%S",localtime(&now));
fprintf(fp,"[%d] %s %c %s\n", (int)self, buf, c[level], msg); fprintf(fp,"[%d] %s %c %s\n", (int)self, buf, c[level], msg);

@ -11,6 +11,7 @@ typedef enum {
struct server; 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 #endif

Loading…
Cancel
Save