while(1) {
r = select(conn->discoverySocket+1, &readable, NULL, NULL, &tv);
- if (r >= 0 || errno != EINTR) break;
+ if (r >= 0 || errno != EINTR || got_sigterm) break;
}
if (r < 0) {
error("select (waitForPADO): %m");
while(1) {
r = select(conn->discoverySocket+1, &readable, NULL, NULL, &tv);
- if (r >= 0 || errno != EINTR) break;
+ if (r >= 0 || errno != EINTR || got_sigterm) break;
}
if (r < 0) {
error("select (waitForPADS): %m");
do {
padiAttempts++;
- if (padiAttempts > conn->discoveryAttempts) {
+ if (got_sigterm || padiAttempts > conn->discoveryAttempts) {
warn("Timeout waiting for PADO packets");
close(conn->discoverySocket);
conn->discoverySocket = -1;
timeout = conn->discoveryTimeout;
do {
padrAttempts++;
- if (padrAttempts > conn->discoveryAttempts) {
+ if (got_sigterm || padrAttempts > conn->discoveryAttempts) {
warn("Timeout waiting for PADS packets");
close(conn->discoverySocket);
conn->discoverySocket = -1;