diff options
-rw-r--r-- | src/interface.c | 25 | ||||
-rw-r--r-- | src/main.c | 10 |
2 files changed, 20 insertions, 15 deletions
diff --git a/src/interface.c b/src/interface.c index fd33382e8..fac7af771 100644 --- a/src/interface.c +++ b/src/interface.c @@ -393,21 +393,28 @@ int doIOForInterfaces() { struct timeval tv; int i; int selret; - int fdmax = 0; + int fdmax; tv.tv_sec = 1; tv.tv_usec = 0; - addInterfacesReadyToReadAndListenSocketToFdSet(&rfds,&fdmax); - addInterfacesForBufferFlushToFdSet(&wfds,&fdmax); + while(1) { + fdmax = 0; - while((selret = select(fdmax+1,&rfds,&wfds,NULL,&tv))) { - getConnections(&rfds); - if(selret<0 && errno==EINTR) break; - else if(selret<0) { + addInterfacesReadyToReadAndListenSocketToFdSet(&rfds,&fdmax); + addInterfacesForBufferFlushToFdSet(&wfds,&fdmax); + + selret = select(fdmax+1,&rfds,&wfds,NULL,&tv); + + if(selret == 0 || (selret<0 && errno==EINTR)) break; + + if(selret<0) { closeNextErroredInterface(); continue; } + + getConnections(&rfds); + for(i=0;i<interface_max_connections;i++) { if(interfaces[i].open && FD_ISSET(interfaces[i].fd,&rfds)) { if(COMMAND_RETURN_KILL==interfaceReadInput(&(interfaces[i]))) { @@ -420,11 +427,9 @@ int doIOForInterfaces() { interfaces[i].lastTime = time(NULL); } } + tv.tv_sec = 0; tv.tv_usec = 0; - fdmax = 0; - addInterfacesReadyToReadAndListenSocketToFdSet(&rfds,&fdmax); - addInterfacesForBufferFlushToFdSet(&wfds,&fdmax); } return 1; diff --git a/src/main.c b/src/main.c index 8cce240d3..cda6d1077 100644 --- a/src/main.c +++ b/src/main.c @@ -385,11 +385,11 @@ void cleanUpPidFile() { } void killFromPidFile(char * cmd, int killOption) { + /*char buf[32]; struct stat st_cmd; - struct stat st_exe; + struct stat st_exe;*/ ConfigParam * pidFileParam = parseConfigFilePath(CONF_PID_FILE, 1); int pid; - char buf[32]; FILE * fp = fopen(pidFileParam->value,"r"); if(!fp) { @@ -405,7 +405,7 @@ void killFromPidFile(char * cmd, int killOption) { } fclose(fp); - memset(buf, 0, 32); + /*memset(buf, 0, 32); snprintf(buf, 31, "/proc/%i/exe", pid); if(killOption == 1) { @@ -430,7 +430,7 @@ void killFromPidFile(char * cmd, int killOption) { cmd, pid); exit(EXIT_FAILURE); } - } + }*/ if(kill(pid, SIGTERM)) { ERROR("unable to kill proccess %i: %s\n", pid, strerror(errno)); @@ -492,9 +492,9 @@ int main(int argc, char * argv[]) { readPlaylistState(); while(COMMAND_RETURN_KILL!=doIOForInterfaces()) { + if(COMMAND_RETURN_KILL==handlePendingSignals()) break; syncPlayerAndPlaylist(); closeOldInterfaces(); - if(COMMAND_RETURN_KILL==handlePendingSignals()) break; readDirectoryDBIfUpdateIsFinished(); } |