Make listen() retry
Pacemaker requires this in order to operate. Multiple fencing requests will not come from a single host, however, it is possible that multiple instances of fence_xvm will need to run at approximately the same time. e.g. one 'status' or 'hostlist', one fencing action. Signed-off-by: Lon Hohberger <lon@users.sourceforge.net>
This commit is contained in:
@ -291,30 +291,34 @@ mcast_fence_virt(fence_virt_args_t *args)
|
||||
return 1;
|
||||
}
|
||||
|
||||
switch (args->net.auth) {
|
||||
case AUTH_NONE:
|
||||
case AUTH_SHA1:
|
||||
case AUTH_SHA256:
|
||||
case AUTH_SHA512:
|
||||
if (args->net.family == PF_INET) {
|
||||
lfd = ipv4_listen(args->net.port, 10);
|
||||
} else {
|
||||
lfd = ipv6_listen(args->net.port, 10);
|
||||
}
|
||||
break;
|
||||
/*case AUTH_X509:*/
|
||||
/* XXX Setup SSL listener socket here */
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (lfd < 0) {
|
||||
printf("Failed to listen: %s\n", strerror(errno));
|
||||
return 1;
|
||||
}
|
||||
|
||||
attempts = args->timeout * 10 / args->retr_time;
|
||||
|
||||
do {
|
||||
switch (args->net.auth) {
|
||||
case AUTH_NONE:
|
||||
case AUTH_SHA1:
|
||||
case AUTH_SHA256:
|
||||
case AUTH_SHA512:
|
||||
if (args->net.family == PF_INET) {
|
||||
lfd = ipv4_listen(args->net.port, 10);
|
||||
} else {
|
||||
lfd = ipv6_listen(args->net.port, 10);
|
||||
}
|
||||
break;
|
||||
/*case AUTH_X509:*/
|
||||
/* XXX Setup SSL listener socket here */
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (lfd < 0) {
|
||||
printf("Failed to listen: %s\n", strerror(errno));
|
||||
usleep(args->retr_time * 100000);
|
||||
--attempts;
|
||||
continue;
|
||||
}
|
||||
} while (0);
|
||||
|
||||
gettimeofday(&tv, NULL);
|
||||
seqno = (uint32_t)tv.tv_usec;
|
||||
|
||||
|
Reference in New Issue
Block a user