Fixed some issues with buffers, fixed child reaping for all connectors
This commit is contained in:
parent
b4bafce129
commit
097188ba2f
1 changed files with 7 additions and 4 deletions
|
@ -35,13 +35,17 @@ Socket::Server server_socket(-1); ///< Placeholder for the server socket
|
||||||
/// Disconnecting the server_socket will terminate the main listening loop
|
/// Disconnecting the server_socket will terminate the main listening loop
|
||||||
/// and cleanly shut down the process.
|
/// and cleanly shut down the process.
|
||||||
void signal_handler (int signum){
|
void signal_handler (int signum){
|
||||||
if (!server_socket.connected()) return;
|
|
||||||
switch (signum){
|
switch (signum){
|
||||||
case SIGINT: break;
|
case SIGINT: break;
|
||||||
case SIGHUP: break;
|
case SIGHUP: break;
|
||||||
case SIGTERM: break;
|
case SIGTERM: break;
|
||||||
|
case SIGCHLD:
|
||||||
|
wait(0);
|
||||||
|
return;
|
||||||
|
break;
|
||||||
default: return; break;
|
default: return; break;
|
||||||
}
|
}
|
||||||
|
if (!server_socket.connected()) return;
|
||||||
server_socket.close();
|
server_socket.close();
|
||||||
}//signal_handler
|
}//signal_handler
|
||||||
|
|
||||||
|
@ -64,7 +68,8 @@ int main(int argc, char ** argv){
|
||||||
sigaction(SIGHUP, &new_action, NULL);
|
sigaction(SIGHUP, &new_action, NULL);
|
||||||
sigaction(SIGTERM, &new_action, NULL);
|
sigaction(SIGTERM, &new_action, NULL);
|
||||||
sigaction(SIGPIPE, &new_action, NULL);
|
sigaction(SIGPIPE, &new_action, NULL);
|
||||||
|
sigaction(SIGCHLD, &new_action, NULL);
|
||||||
|
|
||||||
//default values
|
//default values
|
||||||
int listen_port = DEFAULT_PORT;
|
int listen_port = DEFAULT_PORT;
|
||||||
bool daemon_mode = true;
|
bool daemon_mode = true;
|
||||||
|
@ -174,9 +179,7 @@ int main(int argc, char ** argv){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int status;
|
|
||||||
while (server_socket.connected()){
|
while (server_socket.connected()){
|
||||||
while (waitpid((pid_t)-1, &status, WNOHANG) > 0){}//clean up all child processes
|
|
||||||
S = server_socket.accept();
|
S = server_socket.accept();
|
||||||
if (S.connected()){//check if the new connection is valid
|
if (S.connected()){//check if the new connection is valid
|
||||||
pid_t myid = fork();
|
pid_t myid = fork();
|
||||||
|
|
Loading…
Add table
Reference in a new issue