in the localhost space was too clever for its own good, and finding
a reader comment posted on the recent Linux Magazine agedu article
which has misconstrued those addresses as implying that the data is
shipped to some outside server machine has caused me to decide that
in fact it was. Removed (by default, though re-enableable by ifdef).
git-svn-id: svn://svn.tartarus.org/sgt/agedu@8589
cda61777-01e9-0310-a592-
d414129be87e
int fd, ret;
int authtype;
char *authstring = NULL;
int fd, ret;
int authtype;
char *authstring = NULL;
struct fd *f;
struct sockaddr_in addr;
socklen_t addrlen;
struct fd *f;
struct sockaddr_in addr;
socklen_t addrlen;
}
addr.sin_family = AF_INET;
if (!dcfg->address) {
}
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);
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);
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);
} 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);
if (ret < 0 && errno == EADDRNOTAVAIL && !dcfg->address) {
/*
* Some systems don't like us binding to random weird
if (ret < 0 && errno == EADDRNOTAVAIL && !dcfg->address) {
/*
* Some systems don't like us binding to random weird
addr.sin_port = htons(0);
ret = bind(fd, (const struct sockaddr *)&addr, addrlen);
}
addr.sin_port = htons(0);
ret = bind(fd, (const struct sockaddr *)&addr, addrlen);
}
if (ret < 0) {
fprintf(stderr, "bind: %s\n", strerror(errno));
exit(1);
if (ret < 0) {
fprintf(stderr, "bind: %s\n", strerror(errno));
exit(1);