(doit): make failing to bind a socket a non-fatal error, and abort if

no sockets were bound


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@10213 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Assar Westerlund
2001-07-02 16:27:09 +00:00
parent 846c5648d8
commit 60263ed4cd

View File

@@ -442,7 +442,7 @@ doit (krb5_keytab keytab, int port)
sockets = malloc (n * sizeof(*sockets)); sockets = malloc (n * sizeof(*sockets));
if (sockets == NULL) if (sockets == NULL)
krb5_errx (context, 1, "out of memory"); krb5_errx (context, 1, "out of memory");
maxfd = 0; maxfd = -1;
FD_ZERO(&real_fdset); FD_ZERO(&real_fdset);
for (i = 0; i < n; ++i) { for (i = 0; i < n; ++i) {
int sa_size; int sa_size;
@@ -455,14 +455,21 @@ doit (krb5_keytab keytab, int port)
if (bind (sockets[i], sa, sa_size) < 0) { if (bind (sockets[i], sa, sa_size) < 0) {
char str[128]; char str[128];
size_t len; size_t len;
int save_errno = errno;
ret = krb5_print_address (&addrs.val[i], str, sizeof(str), &len); ret = krb5_print_address (&addrs.val[i], str, sizeof(str), &len);
krb5_err (context, 1, errno, "bind(%s)", str); if (ret)
strlcpy(str, "unknown address", sizeof(str));
krb5_warn (context, save_errno, "bind(%s)", str);
continue;
} }
maxfd = max (maxfd, sockets[i]); maxfd = max (maxfd, sockets[i]);
if (maxfd >= FD_SETSIZE) if (maxfd >= FD_SETSIZE)
krb5_errx (context, 1, "fd too large"); krb5_errx (context, 1, "fd too large");
FD_SET(sockets[i], &real_fdset); FD_SET(sockets[i], &real_fdset);
} }
if (maxfd == -1)
krb5_errx (context, 1, "No sockets!");
while(exit_flag == 0) { while(exit_flag == 0) {
int ret; int ret;