SCCS-vsn: sbin/routed/main.c 5.4
#endif not lint
#ifndef lint
#endif not lint
#ifndef lint
-static char sccsid[] = "@(#)main.c 5.3 (Berkeley) %G%";
+static char sccsid[] = "@(#)main.c 5.4 (Berkeley) %G%";
int domain, type;
struct sockaddr_in *sin;
{
int domain, type;
struct sockaddr_in *sin;
{
- retry = 1;
- while ((s = socket(domain, type, 0)) < 0 && retry) {
+ if (s = socket(domain, type, 0)) {
- sleep(5 * retry);
- retry <<= 1;
- }
- if (retry == 0) {
syslog(LOG_ERR, "socket: %m");
return (-1);
}
if (setsockopt(s, SOL_SOCKET, SO_BROADCAST, &on, sizeof (on)) < 0) {
syslog(LOG_ERR, "setsockopt SO_BROADCAST: %m");
syslog(LOG_ERR, "socket: %m");
return (-1);
}
if (setsockopt(s, SOL_SOCKET, SO_BROADCAST, &on, sizeof (on)) < 0) {
syslog(LOG_ERR, "setsockopt SO_BROADCAST: %m");
+ close(s);
+ return (-1);
- while (bind(s, sin, sizeof (*sin), 0) < 0 && retry) {
+ if (bind(s, sin, sizeof (*sin), 0) < 0) {
- sleep(5 * retry);
- retry <<= 1;
- }
- if (retry == 0) {
syslog(LOG_ERR, "bind: %m");
syslog(LOG_ERR, "bind: %m");
return (-1);
}
return (s);
return (-1);
}
return (s);