diff --git a/canlogserver.c b/canlogserver.c index 0ddecba..ce9cb83 100644 --- a/canlogserver.c +++ b/canlogserver.c @@ -156,7 +156,7 @@ int idx2dindex(int ifidx, int socket) return i; } -/* +/* * This is a Signalhandler. When we get a signal, that a child * terminated, we wait for it, so the zombie will disappear. */ @@ -321,7 +321,9 @@ int main(int argc, char **argv) if ((s[i] = socket(PF_CAN, SOCK_RAW, CAN_RAW)) < 0) { perror("socket"); - return 1; + while (--i > 0) + close(s[i]); + goto close_accsocket; } if (mask[i] || value[i]) { @@ -377,17 +379,32 @@ int main(int argc, char **argv) while (running) { - FD_ZERO(&rdfs); - for (i=0; i maxfd ? s[i] : maxfd; + FD_SET(s[i], &rdfs); + } + + if ((ret = select(maxfd + 1, &rdfs, NULL, NULL, NULL)) < 0) { //perror("select"); running = 0; continue; } for (i=0; i