jobserver: exit completely when socket ops fail

When socket(2), setsockopt(2), bind(2), listen(2), or accept(2) return an
unexpected error status, it is usually not a good idea to let the campaign
continue.  This is especially a problem as the perror(3) message gets lost
in normal campaign output and may be missed by the user.

Change-Id: I92747174e0706a613bedd8c6664cc8d888e07533
This commit is contained in:
Horst Schirmeier
2014-03-05 16:17:28 +01:00
committed by Bjoern Doebel
parent f775c92d72
commit dbff3ab236

View File

@ -125,7 +125,7 @@ void JobServer::run()
if ((s = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("socket");
// TODO: Log-level?
return;
exit(1);
}
/* Enable address reuse */
@ -133,7 +133,7 @@ void JobServer::run()
if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) == -1) {
perror("setsockopt");
// TODO: Log-level?
return;
exit(1);
}
/* IPv4, bind to all interfaces */
@ -146,14 +146,14 @@ void JobServer::run()
if (::bind(s, (struct sockaddr*) &saddr, sizeof(saddr)) == -1) {
perror("bind");
// TODO: Log-level?
return;
exit(1);
}
/* Listen with a backlog of maxThreads */
if (listen(s, m_maxThreads) == -1) {
perror("listen");
// TODO: Log-level?
return;
exit(1);
}
cout << "JobServer listening ..." << endl;
// TODO: Log-level?
@ -166,7 +166,7 @@ void JobServer::run()
if (errno != EWOULDBLOCK) {
perror("poll/accept");
// TODO: Log-level?
return;
exit(1);
} else {
continue;
}