Improve error messages for consistency (#297)

This commit is contained in:
Paul Kulchenko 2021-10-25 14:44:04 -07:00 committed by GitHub
parent 013f03e33f
commit c00755f921
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -701,7 +701,7 @@ static void ProgramFile(const char *path, void program(const char *, size_t)) {
mbedtls_platform_zeroize(p, n); mbedtls_platform_zeroize(p, n);
free(p); free(p);
} else { } else {
DIEF("(srvr) error: failed to read file: %s", path); DIEF("(srvr) error: failed to read file %`'s", path);
} }
} }
@ -860,14 +860,15 @@ static void ProgramGid(long x) {
changegid = x; changegid = x;
} }
#define MINTIMEOUT 10
static void ProgramTimeout(long ms) { static void ProgramTimeout(long ms) {
ldiv_t d; ldiv_t d;
if (ms < 0) { if (ms < 0) {
timeout.tv_sec = ms; /* -(keepalive seconds) */ timeout.tv_sec = ms; /* -(keepalive seconds) */
timeout.tv_usec = 0; timeout.tv_usec = 0;
} else { } else {
if (ms < 10) { if (ms < MINTIMEOUT) {
DIEF("(cfg) error: timeout needs to be 10ms or greater"); DIEF("(cfg) error: timeout needs to be %dms or greater", MINTIMEOUT);
} }
d = ldiv(ms, 1000); d = ldiv(ms, 1000);
timeout.tv_sec = d.quot; timeout.tv_sec = d.quot;
@ -1159,7 +1160,7 @@ static void WaitAll(void) {
} }
continue; continue;
} }
DIEF("(srvr) wait error %s", strerror(errno)); DIEF("(srvr) wait error: %m");
} }
} }
} }
@ -1178,7 +1179,7 @@ static void ReapZombies(void) {
} else { } else {
if (errno == ECHILD) break; if (errno == ECHILD) break;
if (errno == EINTR) continue; if (errno == EINTR) continue;
DIEF("(srvr) wait error %s", strerror(errno)); DIEF("(srvr) wait error: %m");
} }
} while (!terminated); } while (!terminated);
} }
@ -1234,7 +1235,7 @@ static int TlsFlush(struct TlsBio *bio, const unsigned char *buf, size_t len) {
} else if (errno == EPIPE || errno == ECONNRESET || errno == ENETRESET) { } else if (errno == EPIPE || errno == ECONNRESET || errno == ENETRESET) {
return MBEDTLS_ERR_NET_CONN_RESET; return MBEDTLS_ERR_NET_CONN_RESET;
} else { } else {
WARNF("(ssl) TlsSend error %s", strerror(errno)); WARNF("(ssl) TlsSend error: %m");
return MBEDTLS_ERR_NET_SEND_FAILED; return MBEDTLS_ERR_NET_SEND_FAILED;
} }
} }
@ -1278,7 +1279,7 @@ static int TlsRecvImpl(void *ctx, unsigned char *p, size_t n, uint32_t o) {
} else if (errno == EPIPE || errno == ECONNRESET || errno == ENETRESET) { } else if (errno == EPIPE || errno == ECONNRESET || errno == ENETRESET) {
return MBEDTLS_ERR_NET_CONN_RESET; return MBEDTLS_ERR_NET_CONN_RESET;
} else { } else {
WARNF("(ssl) tls read() error %s", strerror(errno)); WARNF("(ssl) tls read() error: %m");
return MBEDTLS_ERR_NET_RECV_FAILED; return MBEDTLS_ERR_NET_RECV_FAILED;
} }
} }
@ -1841,7 +1842,7 @@ static bool OpenZip(bool force) {
if (st.st_ino == zst.st_ino) { if (st.st_ino == zst.st_ino) {
fd = zfd; fd = zfd;
} else if ((fd = open(zpath, O_RDWR)) == -1) { } else if ((fd = open(zpath, O_RDWR)) == -1) {
WARNF("(zip) open() failed w/ %m"); WARNF("(zip) open() error: %m");
return false; return false;
} }
if ((m = mmap(0, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0)) != if ((m = mmap(0, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0)) !=
@ -1870,11 +1871,11 @@ static bool OpenZip(bool force) {
WARNF("(zip) couldn't locate central directory"); WARNF("(zip) couldn't locate central directory");
} }
} else { } else {
WARNF("(zip) mmap() failed w/ %m"); WARNF("(zip) mmap() error: %m");
} }
} }
} else { } else {
WARNF("(zip) stat() failed w/ %m"); WARNF("(zip) stat() error: %m");
} }
return false; return false;
} }
@ -2179,7 +2180,7 @@ static ssize_t Send(struct iovec *iov, int iovlen) {
WARNF("(rsp) %s write timeout", DescribeClient()); WARNF("(rsp) %s write timeout", DescribeClient());
} else { } else {
LockInc(&shared->c.writeerrors); LockInc(&shared->c.writeerrors);
WARNF("(rsp) %s write error %s", DescribeClient(), strerror(errno)); WARNF("(rsp) %s write error: %m", DescribeClient());
} }
connectionclose = true; connectionclose = true;
} }
@ -2564,7 +2565,7 @@ static void LaunchBrowser(const char *path) {
if ((prog = commandv(GetSystemUrlLauncherCommand(), gc(malloc(PATH_MAX))))) { if ((prog = commandv(GetSystemUrlLauncherCommand(), gc(malloc(PATH_MAX))))) {
u = gc(xasprintf("http://%s:%d%s", inet_ntoa(addr), u = gc(xasprintf("http://%s:%d%s", inet_ntoa(addr),
ntohs(serveraddr->sin_port), gc(EscapePath(path, -1, 0)))); ntohs(serveraddr->sin_port), gc(EscapePath(path, -1, 0))));
DEBUGF("(srvr) opening browser with command %s %s", prog, u); DEBUGF("(srvr) opening browser with command %`'s %s", prog, u);
ignore.sa_flags = 0; ignore.sa_flags = 0;
ignore.sa_handler = SIG_IGN; ignore.sa_handler = SIG_IGN;
sigemptyset(&ignore.sa_mask); sigemptyset(&ignore.sa_mask);
@ -2589,11 +2590,11 @@ static void LaunchBrowser(const char *path) {
sigaction(SIGQUIT, &savequit, 0); sigaction(SIGQUIT, &savequit, 0);
sigprocmask(SIG_SETMASK, &savemask, 0); sigprocmask(SIG_SETMASK, &savemask, 0);
if (!(WIFEXITED(ws) && WEXITSTATUS(ws) == 0)) { if (!(WIFEXITED(ws) && WEXITSTATUS(ws) == 0)) {
WARNF("(srvr) %s failed with %d", GetSystemUrlLauncherCommand(), WARNF("(srvr) command %`'s exited with %d", GetSystemUrlLauncherCommand(),
WIFEXITED(ws) ? WEXITSTATUS(ws) : 128 + WEXITSTATUS(ws)); WIFEXITED(ws) ? WEXITSTATUS(ws) : 128 + WEXITSTATUS(ws));
} }
} else { } else {
WARNF("(srvr) can't launch browser because %s isn't installed", WARNF("(srvr) can't launch browser because %`'s isn't installed",
GetSystemUrlLauncherCommand()); GetSystemUrlLauncherCommand());
} }
} }
@ -3624,7 +3625,7 @@ static int LuaFetch(lua_State *L) {
*/ */
DEBUGF("(ftch) client resolving %s", host); DEBUGF("(ftch) client resolving %s", host);
if ((rc = getaddrinfo(host, port, &hints, &addr)) != EAI_SUCCESS) { if ((rc = getaddrinfo(host, port, &hints, &addr)) != EAI_SUCCESS) {
luaL_error(L, "getaddrinfo(%s:%s) failed", host, port); luaL_error(L, "getaddrinfo(%s:%s) error: EAI_%s", host, port, gai_strerror(rc));
unreachable; unreachable;
} }
@ -3638,7 +3639,7 @@ static int LuaFetch(lua_State *L) {
addr->ai_protocol, false, &timeout))); addr->ai_protocol, false, &timeout)));
if (connect(sock, addr->ai_addr, addr->ai_addrlen) == -1) { if (connect(sock, addr->ai_addr, addr->ai_addrlen) == -1) {
close(sock); close(sock);
luaL_error(L, "connect(%s:%s) failed: %s", host, port, strerror(errno)); luaL_error(L, "connect(%s:%s) error: %s", host, port, strerror(errno));
unreachable; unreachable;
} }
if (usessl) { if (usessl) {
@ -3688,7 +3689,7 @@ static int LuaFetch(lua_State *L) {
} }
} else if (write(sock, request, requestlen) != requestlen) { } else if (write(sock, request, requestlen) != requestlen) {
close(sock); close(sock);
luaL_error(L, "write failed: %s", strerror(errno)); luaL_error(L, "write error: %s", strerror(errno));
unreachable; unreachable;
} }
if (logmessages) { if (logmessages) {
@ -3723,7 +3724,7 @@ static int LuaFetch(lua_State *L) {
close(sock); close(sock);
free(inbuf.p); free(inbuf.p);
DestroyHttpMessage(&msg); DestroyHttpMessage(&msg);
luaL_error(L, "read failed: %s", strerror(errno)); luaL_error(L, "read error: %s", strerror(errno));
unreachable; unreachable;
} }
g = rc; g = rc;
@ -5626,14 +5627,14 @@ static char *HandleTransferRefused(void) {
static char *HandleMapFailed(struct Asset *a, int fd) { static char *HandleMapFailed(struct Asset *a, int fd) {
LockInc(&shared->c.mapfails); LockInc(&shared->c.mapfails);
WARNF("(srvr) mmap(%`'s) failed %s", a->file->path, strerror(errno)); WARNF("(srvr) mmap(%`'s) error: %m", a->file->path);
close(fd); close(fd);
return ServeError(500, "Internal Server Error"); return ServeError(500, "Internal Server Error");
} }
static char *HandleOpenFail(struct Asset *a) { static char *HandleOpenFail(struct Asset *a) {
LockInc(&shared->c.openfails); LockInc(&shared->c.openfails);
WARNF("(srvr) open(%`'s) failed %s", a->file->path, strerror(errno)); WARNF("(srvr) open(%`'s) error: %m", a->file->path);
if (errno == ENFILE) { if (errno == ENFILE) {
LockInc(&shared->c.enfiles); LockInc(&shared->c.enfiles);
return ServeError(503, "Service Unavailable"); return ServeError(503, "Service Unavailable");
@ -5656,7 +5657,7 @@ static char *HandlePayloadReadError(void) {
return ServeFailure(408, "Request Timeout"); return ServeFailure(408, "Request Timeout");
} else { } else {
LockInc(&shared->c.readerrors); LockInc(&shared->c.readerrors);
INFOF("(clnt) %s payload read error %s", DescribeClient(), strerror(errno)); INFOF("(clnt) %s payload read error: %m", DescribeClient());
return ServeFailure(500, "Internal Server Error"); return ServeFailure(500, "Internal Server Error");
} }
} }
@ -5667,7 +5668,7 @@ static void HandleForkFailure(void) {
EnterMeltdownMode(); EnterMeltdownMode();
SendServiceUnavailable(); SendServiceUnavailable();
close(client); close(client);
DIEF("(srvr) too many processes %s", strerror(errno)); DIEF("(srvr) too many processes: %m");
} }
static void HandleFrag(size_t got) { static void HandleFrag(size_t got) {
@ -6368,7 +6369,7 @@ static void HandleMessages(void) {
return; return;
} else { } else {
LockInc(&shared->c.readerrors); LockInc(&shared->c.readerrors);
WARNF("(clnt) %s read failed %s", DescribeClient(), strerror(errno)); WARNF("(clnt) %s read error: %m", DescribeClient());
return; return;
} }
if (killed || (terminated && !amtread) || if (killed || (terminated && !amtread) ||
@ -6526,10 +6527,9 @@ static void HandleConnection(size_t i) {
} else if (errno == ENETUNREACH || errno == EHOSTUNREACH || } else if (errno == ENETUNREACH || errno == EHOSTUNREACH ||
errno == EOPNOTSUPP || errno == ENOPROTOOPT || errno == EPROTO) { errno == EOPNOTSUPP || errno == ENOPROTOOPT || errno == EPROTO) {
LockInc(&shared->c.accepterrors); LockInc(&shared->c.accepterrors);
WARNF("(srvr) %s ephemeral accept error %s", DescribeServer(), WARNF("(srvr) %s ephemeral accept error: %m", DescribeServer());
strerror(errno));
} else { } else {
DIEF("(srvr) %s accept error %s", DescribeServer(), strerror(errno)); DIEF("(srvr) %s accept error: %m", DescribeServer());
} }
} }
@ -6551,7 +6551,7 @@ static void HandlePoll(void) {
WARNF("(srvr) %s ran out of memory"); WARNF("(srvr) %s ran out of memory");
meltdown = true; meltdown = true;
} else { } else {
DIEF("(srvr) poll error %s", strerror(errno)); DIEF("(srvr) poll error: %m");
} }
} }
@ -6607,16 +6607,16 @@ static void Listen(void) {
} }
if (bind(servers.p[n].fd, &servers.p[n].addr, if (bind(servers.p[n].fd, &servers.p[n].addr,
sizeof(servers.p[n].addr)) == -1) { sizeof(servers.p[n].addr)) == -1) {
DIEF("(srvr) bind: %s: %hhu.%hhu.%hhu.%hhu:%hu", strerror(errno), DIEF("(srvr) bind error: %m: %hhu.%hhu.%hhu.%hhu:%hu",
ips.p[i] >> 24, ips.p[i] >> 16, ips.p[i] >> 8, ips.p[i], ips.p[i] >> 24, ips.p[i] >> 16, ips.p[i] >> 8, ips.p[i],
ports.p[j]); ports.p[j]);
} }
if (listen(servers.p[n].fd, 10) == -1) { if (listen(servers.p[n].fd, 10) == -1) {
DIEF("(srvr) listen: %m"); DIEF("(srvr) listen error: %m");
} }
addrsize = sizeof(servers.p[n].addr); addrsize = sizeof(servers.p[n].addr);
if (getsockname(servers.p[n].fd, &servers.p[n].addr, &addrsize) == -1) { if (getsockname(servers.p[n].fd, &servers.p[n].addr, &addrsize) == -1) {
DIEF("(srvr) getsockname: %m"); DIEF("(srvr) getsockname error: %m");
} }
port = ntohs(servers.p[n].addr.sin_port); port = ntohs(servers.p[n].addr.sin_port);
ip = ntohl(servers.p[n].addr.sin_addr.s_addr); ip = ntohl(servers.p[n].addr.sin_addr.s_addr);