Skip to content

Commit

Permalink
More informative error messages.
Browse files Browse the repository at this point in the history
  • Loading branch information
Keith Rarick committed Nov 5, 2007
1 parent af3fc6f commit 6f84c28
Show file tree
Hide file tree
Showing 7 changed files with 39 additions and 38 deletions.
37 changes: 19 additions & 18 deletions beanstalkd.c
Expand Up @@ -36,7 +36,7 @@ nullfd(int fd, int flags)

close(fd);
r = open("/dev/null", flags);
if (r != fd) perror("open(\"/dev/null\")"), exit(1);
if (r != fd) twarn("open(\"/dev/null\")"), exit(1);
}

static void
Expand Down Expand Up @@ -78,14 +78,14 @@ set_sig_handlers()
sa.sa_handler = SIG_IGN;
sa.sa_flags = 0;
r = sigemptyset(&sa.sa_mask);
if (r == -1) perror("sigemptyset()"), exit(111);
if (r == -1) twarn("sigemptyset()"), exit(111);

r = sigaction(SIGPIPE, &sa, 0);
if (r == -1) perror("sigaction(SIGPIPE)"), exit(111);
if (r == -1) twarn("sigaction(SIGPIPE)"), exit(111);

sa.sa_handler = enter_drain_mode;
r = sigaction(SIGUSR1, &sa, 0);
if (r == -1) perror("sigaction(SIGUSR1)"), exit(111);
if (r == -1) twarn("sigaction(SIGUSR1)"), exit(111);
}

static void
Expand All @@ -95,7 +95,7 @@ check_err(conn c, const char *s)
if (errno == EINTR) return;
if (errno == EWOULDBLOCK) return;

perror(s);
warn("%s:%d in %s: %s", __FILE__, __LINE__, __func__, s);
conn_close(c);
return;
}
Expand Down Expand Up @@ -209,7 +209,7 @@ wait_for_job(conn c)

/* this conn is waiting, but we want to know if they hang up */
r = conn_update_evq(c, EV_READ | EV_PERSIST);
if (r == -1) return warn("update events failed"), conn_close(c);
if (r == -1) return twarnx("update events failed"), conn_close(c);

c->state = STATE_WAIT;
enqueue_waiting_conn(c);
Expand Down Expand Up @@ -270,13 +270,13 @@ do_stats(conn c, int(*fmt)(char *, size_t, void *), void *data)

/* now actually format the stats data */
r = fmt(c->out_job->body, stats_len, data);
if (r != stats_len) return warn("snprintf inconsistency"), conn_close(c);
if (r != stats_len) return twarnx("snprintf inconsistency"), conn_close(c);
c->out_job->body[stats_len - 1] = '\n'; /* patch up sprintf's output */

c->out_job_sent = 0;

r = snprintf(c->reply_buf, LINE_BUF_SIZE, "OK %d\r\n", stats_len - 2);
if (r >= LINE_BUF_SIZE) return warn("truncated reply"), conn_close(c);
if (r >= LINE_BUF_SIZE) return twarnx("truncated reply"), conn_close(c);

reply(c, c->reply_buf, strlen(c->reply_buf), STATE_SENDJOB);
}
Expand Down Expand Up @@ -449,7 +449,7 @@ dispatch_cmd(conn c)

r = snprintf(c->reply_buf, LINE_BUF_SIZE, "KICKED %u\r\n", i);
/* can't happen */
if (r >= LINE_BUF_SIZE) return warn("truncated reply"), conn_close(c);
if (r >= LINE_BUF_SIZE) return twarnx("truncated reply"), conn_close(c);

reply(c, c->reply_buf, strlen(c->reply_buf), STATE_SENDWORD);
break;
Expand Down Expand Up @@ -491,7 +491,7 @@ reset_conn(conn c)
int r;

r = conn_update_evq(c, EV_READ | EV_PERSIST);
if (r == -1) return warn("update events failed"), conn_close(c);
if (r == -1) return twarnx("update events failed"), conn_close(c);

/* was this a peek or stats command? */
if (!has_reserved_this_job(c, c->out_job)) free(c->out_job);
Expand Down Expand Up @@ -605,7 +605,7 @@ h_conn_timeout(conn c)
j->timeout_ct++;
enqueue_job(remove_this_reserved_job(c, j));
r = conn_update_evq(c, c->evq.ev_events);
if (r == -1) return warn("conn_update_evq() failed"), conn_close(c);
if (r == -1) return twarnx("conn_update_evq() failed"), conn_close(c);
}
}

Expand All @@ -616,7 +616,7 @@ static void
h_conn(const int fd, const short which, conn c)
{
if (fd != c->fd) {
warn("Argh! event fd doesn't match conn fd.");
twarnx("Argh! event fd doesn't match conn fd.");
close(fd);
return conn_close(c);
}
Expand Down Expand Up @@ -648,21 +648,22 @@ h_accept(const int fd, const short which, struct event *ev)
addrlen = sizeof addr;
cfd = accept(fd, &addr, &addrlen);
if (cfd == -1) {
if (errno != EAGAIN && errno != EWOULDBLOCK) perror("accept()");
if (errno != EAGAIN && errno != EWOULDBLOCK) twarn("accept()");
return;
}

flags = fcntl(cfd, F_GETFL, 0);
if (flags < 0) return perror("getting flags"), close(cfd), v();
if (flags < 0) return twarn("getting flags"), close(cfd), v();

r = fcntl(cfd, F_SETFL, flags | O_NONBLOCK);
if (r < 0) return perror("setting O_NONBLOCK"), close(cfd), v();
if (r < 0) return twarn("setting O_NONBLOCK"), close(cfd), v();

c = make_conn(cfd, STATE_WANTCOMMAND);
if (!c) return warn("make_conn() failed"), close(cfd), v();
if (!c) return twarnx("make_conn() failed"), close(cfd), v();

dprintf("accepted conn, fd=%d\n", cfd);
r = conn_set_evq(c, EV_READ | EV_PERSIST, (evh) h_conn);
if (r == -1) return warn("conn_set_evq() failed"), close(cfd), v();
if (r == -1) return twarnx("conn_set_evq() failed"), close(cfd), v();
}

int
Expand All @@ -672,7 +673,7 @@ main(int argc, char **argv)
struct event listen_evq;

listen_socket = make_server_socket(HOST, PORT);
if (listen_socket == -1) warn("make_server_socket()"), exit(111);
if (listen_socket == -1) twarnx("make_server_socket()"), exit(111);

prot_init();
#ifndef DEBUG
Expand Down
3 changes: 2 additions & 1 deletion conn.c
Expand Up @@ -3,6 +3,7 @@
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <errno.h>

#include "conn.h"
#include "net.h"
Expand Down Expand Up @@ -97,7 +98,7 @@ conn_set_evq(conn c, const int events, evh handler)
if (has_reserved_job(c)) tv.tv_sec = soonest_job(c)->deadline - time(NULL);

r = event_add(&c->evq, has_reserved_job(c) ? &tv : NULL);
if (r == -1) return -1;
if (r == -1) return twarn("event_add() err %d", errno), -1;

return 0;
}
Expand Down
6 changes: 3 additions & 3 deletions job.c
Expand Up @@ -14,7 +14,7 @@ allocate_job(int body_size)
job j;

j = malloc(sizeof(struct job) + body_size);
if (!j) return warn("OOM"), NULL;
if (!j) return twarnx("OOM"), NULL;

j->state = JOB_STATE_INVALID;
j->creation = time(NULL);
Expand All @@ -31,7 +31,7 @@ make_job(unsigned int pri, int body_size)
job j;

j = allocate_job(body_size);
if (!j) return warn("OOM"), NULL;
if (!j) return twarnx("OOM"), NULL;

j->id = next_id++;
j->pri = pri;
Expand All @@ -47,7 +47,7 @@ job_copy(job j)
if (!j) return NULL;

n = malloc(sizeof(struct job) + j->body_size);
if (!n) return warn("OOM"), NULL;
if (!n) return twarnx("OOM"), NULL;

n->id = j->id;
n->pri = j->pri;
Expand Down
11 changes: 6 additions & 5 deletions net.c
Expand Up @@ -3,6 +3,7 @@
#include <stdio.h>

#include "net.h"
#include "util.h"

int
make_server_socket(int host, int port)
Expand All @@ -12,13 +13,13 @@ make_server_socket(int host, int port)
struct sockaddr_in addr;

fd = socket(AF_INET, SOCK_STREAM, 0);
if (fd == -1) return perror("socket()"), -1;
if (fd == -1) return twarn("socket()"), -1;

flags = fcntl(fd, F_GETFL, 0);
if (flags < 0) return perror("getting flags"), close(fd), -1;
if (flags < 0) return twarn("getting flags"), close(fd), -1;

r = fcntl(fd, F_SETFL, flags | O_NONBLOCK);
if (flags < 0) return perror("setting O_NONBLOCK"), close(fd), -1;
if (flags < 0) return twarn("setting O_NONBLOCK"), close(fd), -1;

flags = 1;
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &flags, sizeof flags);
Expand All @@ -32,10 +33,10 @@ make_server_socket(int host, int port)
addr.sin_port = htons(port);
addr.sin_addr.s_addr = htonl(host);
r = bind(fd, (struct sockaddr *) &addr, sizeof addr);
if (r == -1) return perror("bind()"), close(fd), -1;
if (r == -1) return twarn("bind()"), close(fd), -1;

r = listen(fd, 1024);
if (r == -1) return perror("listen()"), close(fd), -1;
if (r == -1) return twarn("listen()"), close(fd), -1;

return fd;
}
Expand Down
4 changes: 2 additions & 2 deletions prot.c
Expand Up @@ -35,7 +35,7 @@ reply(conn c, char *line, int len, int state)
int r;

r = conn_update_evq(c, EV_WRITE | EV_PERSIST);
if (r == -1) return warn("conn_update_evq() failed"), conn_close(c);
if (r == -1) return twarnx("conn_update_evq() failed"), conn_close(c);

c->reply = line;
c->reply_len = len;
Expand All @@ -56,7 +56,7 @@ reply_job(conn c, job j, const char *word)
word, j->id, j->pri, j->body_size - 2);

/* can't happen */
if (r >= LINE_BUF_SIZE) return warn("truncated reply"), conn_close(c);
if (r >= LINE_BUF_SIZE) return twarnx("truncated reply"), conn_close(c);

return reply(c, c->reply_buf, strlen(c->reply_buf), STATE_SENDJOB);
}
Expand Down
7 changes: 0 additions & 7 deletions util.c
@@ -1,13 +1,6 @@
#include <stdio.h>
#include <unistd.h>

void
warn(const char *s)
{
fprintf(stderr, "%s\n", s);
}


void
v()
{
Expand Down
9 changes: 7 additions & 2 deletions util.h
@@ -1,12 +1,17 @@
#ifndef util_h
#define util_h

#define min(a,b) ((a)<(b)?(a):(b))
#include <err.h>

int warn(const char *s);
#define min(a,b) ((a)<(b)?(a):(b))

void v();

#define twarn(fmt, args...) warn("%s:%d in %s: " fmt, \
__FILE__, __LINE__, __func__, ##args)
#define twarnx(fmt, args...) warnx("%s:%d in %s: " fmt, \
__FILE__, __LINE__, __func__, ##args)

#ifdef DEBUG
#define dprintf(fmt, args...) fprintf(stderr, fmt, ##args)
#else
Expand Down

0 comments on commit 6f84c28

Please sign in to comment.