def run(self):
		Logger.info("[WebApps] new process started")
		
		signal.signal(signal.SIGINT, signal.SIG_IGN)
		signal.signal(signal.SIGTERM, signal.SIG_IGN)
		
		# close inherited father pipes
		self.father_pipes[0].close()
		self.father_pipes[1].close()
		
		self.socks = Queue.Queue()
		
		self.clean_timer = threading.Timer(Config.process_timeout, self.clean)
		self.clean_timer.start()
		
		self.f_control = ControlFatherProcess(self)
		self.f_control.start()
		
		while self.f_control.is_alive() or not self.socks.empty():
			try:
				sock = self.socks.get(timeout=0.01)
				if Config.connection_secure:
					ssl_conn = SSL.Connection(self.ssl_ctx, sock)
					Logger.debug("[WebApps] new connection => %s" % str(ssl_conn.getpeername()))
					ssl_conn.set_accept_state()
					ProtocolDetectDispatcher(ssl_conn, self.f_control, self.ssl_ctx)
				else:
					HttpProtocolDetectDispatcher(sock, self.f_control)
			except (IOError, Queue.Empty):
				continue
			
			# reload asyncore if stopped
			if self.is_sleeping():
				# timeout needed for more SSL layer reactivity
				self.t_asyncore = threading.Thread(target=lambda:asyncore.loop(timeout=0.01))
				self.t_asyncore.start()
		
		if not self.is_sleeping():
			asyncore.close_all()
			self.t_asyncore.join()
		
		Logger.info("[WebApps] child process stopped")