| 
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -405,12 +405,8 @@ void Daemon::forkBooster(char type, int sleepTime)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (newPid == 0) /* Child process */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Reset used signal handlers
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        signal(SIGCHLD, SIG_DFL);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        signal(SIGTERM, SIG_DFL);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        signal(SIGUSR1, SIG_DFL);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        signal(SIGUSR2, SIG_DFL);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        signal(SIGPIPE, SIG_DFL);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Restore used signal handlers
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        restoreUnixSignalHandlers();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Will get this signal if applauncherd dies
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        prctl(PR_SET_PDEATHSIG, SIGHUP);
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -767,6 +763,33 @@ void Daemon::killBoosters()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // in order to automatically start new boosters.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				void Daemon::setUnixSignalHandler(int signum, sighandler_t handler)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    struct sigaction *oldAct = new struct sigaction();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    struct sigaction newAct;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    newAct.sa_handler = handler;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    sigemptyset(&newAct.sa_mask);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    newAct.sa_flags |= SA_RESTART;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (sigaction(signum, &newAct, oldAct) == 0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        m_originalSigHandlers[signum] = oldAct;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    } else {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        throw std::runtime_error("Daemon: Failed to set signal handler");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				void Daemon::restoreUnixSignalHandlers()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    for (SigHandlerMap::iterator it = m_originalSigHandlers.begin(); it != m_originalSigHandlers.end(); it++ )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        sigaction(it->first, it->second, NULL);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    m_originalSigHandlers.clear();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Daemon::~Daemon()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    delete m_socketManager;
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
			
			 | 
			 | 
			
				
 
 |