X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/agedu/blobdiff_plain/14601b5d4222f2bee568e03eddf2f949b2a9d126..c1065ef6db11830ffb544b5ffabe6af3e59688f6:/httpd.c diff --git a/httpd.c b/httpd.c index 2437cdd..e5ee270 100644 --- a/httpd.c +++ b/httpd.c @@ -262,7 +262,7 @@ char *got_data(struct connctx *ctx, char *data, int length, if (!magic_access && !auth_correct) { if (auth_string) { ret = http_error("401", "Unauthorized", - "WWW-Authenticate: Basic realm=\""PNAME"\"\r", + "WWW-Authenticate: Basic realm=\""PNAME"\"\r\n", "\nYou must authenticate to view these pages."); } else { ret = http_error("403", "Forbidden", NULL, @@ -414,7 +414,6 @@ void run_httpd(const void *t, int authmask, const struct httpd_config *dcfg, int fd, ret; int authtype; char *authstring = NULL; - unsigned long ipaddr; struct fd *f; struct sockaddr_in addr; socklen_t addrlen; @@ -431,22 +430,28 @@ void run_httpd(const void *t, int authmask, const struct httpd_config *dcfg, fprintf(stderr, "socket(PF_INET): %s\n", strerror(errno)); exit(1); } + memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; if (!dcfg->address) { +#ifdef RANDOM_LOCALHOST + unsigned long ipaddr; srand(0L); ipaddr = 0x7f000000; ipaddr += (1 + rand() % 255) << 16; ipaddr += (1 + rand() % 255) << 8; ipaddr += (1 + rand() % 255); addr.sin_addr.s_addr = htonl(ipaddr); +#else + addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); +#endif addr.sin_port = htons(0); - } else { addr.sin_addr.s_addr = inet_addr(dcfg->address); addr.sin_port = dcfg->port ? htons(dcfg->port) : 0; } addrlen = sizeof(addr); ret = bind(fd, (const struct sockaddr *)&addr, addrlen); +#ifdef RANDOM_LOCALHOST if (ret < 0 && errno == EADDRNOTAVAIL && !dcfg->address) { /* * Some systems don't like us binding to random weird @@ -457,6 +462,7 @@ void run_httpd(const void *t, int authmask, const struct httpd_config *dcfg, addr.sin_port = htons(0); ret = bind(fd, (const struct sockaddr *)&addr, addrlen); } +#endif if (ret < 0) { fprintf(stderr, "bind: %s\n", strerror(errno)); exit(1);