def udp_timeout(self): if not self.__is_auth: self.print_access_log("not_get_server_response") self.dispatcher.ctunnel_fail() return self.__nat.recyle_ips() if not fnc_config.configs["udp_global"]: self.__udp_whitelist.recycle_cache() filter_ips = self.__timer.get_timeout_names() for ip in filter_ips: n = utils.ip4b_2_number(ip) fdsl_ctl.tf_record_del(self.__traffic_fetch_fd, n) if self.__timer.exists(ip): self.__timer.drop(ip) self.set_timeout(self.fileno, self.__TIMEOUT) # 尝试发送ping 5 次 if self.__sent_ping_cnt < 5: self.__send_ping() return # 如果发送5次ping都没有响应,那么暂时取消会话 self.__sent_ping_cnt = 0 self.__handle_close()
def tcp_timeout(self): self.__static_nat.recyle_ips() if not fnc_config.configs["udp_global"]: self.__udp_whitelist.recycle_cache() if not self.is_conn_ok(): self.print_access_log("connect_failed") self.delete_handler(self.fileno) return if self.__is_sent_ping and self.__auth_ok: self.print_access_log("timeout") self.delete_handler(self.fileno) return if self.__auth_ok: self.set_timeout(self.fileno, self.__TIMEOUT) self.__is_sent_ping = True self.__send_ping() tunnel_ips = self.__timer.get_timeout_names() for ip in tunnel_ips: n = utils.ip4b_2_number(ip) fdsl_ctl.tf_record_del(self.__traffic_fetch_fd, n) if self.__timer.exists(ip): self.__timer.drop(ip) return self.print_access_log("auth_timeout") self.delete_handler(self.fileno)