From 7583b3acccfe4ddc08460bc41d07e473194b9868 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Sun, 7 Mar 2021 11:31:44 -0800 Subject: [PATCH] Show better error on bind() error See #51 --- tool/net/redbean.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tool/net/redbean.c b/tool/net/redbean.c index 5843d016..3715742c 100644 --- a/tool/net/redbean.c +++ b/tool/net/redbean.c @@ -26,6 +26,7 @@ #include "libc/calls/struct/stat.h" #include "libc/calls/weirdtypes.h" #include "libc/dce.h" +#include "libc/errno.h" #include "libc/fmt/conv.h" #include "libc/fmt/fmt.h" #include "libc/fmt/itoa.h" @@ -1156,7 +1157,15 @@ void RedBean(void) { if (setitimer(ITIMER_REAL, &kHeartbeat, NULL) == -1) notimer = true; CHECK_NE(-1, (server = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP))); TuneServerSocket(); - CHECK_NE(-1, bind(server, &serveraddr, sizeof(serveraddr))); + if (bind(server, &serveraddr, sizeof(serveraddr)) == -1) { + if (errno == EADDRINUSE) { + fprintf(stderr, "error: address in use\n" + "try passing the -p PORT flag\n"); + } else { + fprintf(stderr, "error: bind() failed: %s\n", strerror(errno)); + } + exit(1); + } CHECK_NE(-1, listen(server, 10)); addrsize = sizeof(serveraddr); CHECK_NE(-1, getsockname(server, &serveraddr, &addrsize));