def __reset_nw(self, nw, errormsg, warn=True, wait=True, destroy=False, quit=False): from sabnzbd.nzbqueue import NzbQueue server = nw.server article = nw.article fileno = None if nw.nntp: try: fileno = nw.nntp.sock.fileno() except: fileno = self.__lookup_nw(nw) destroy = True nw.nntp.error_msg = None if warn and errormsg: server.warning = errormsg logging.info('Thread %s@%s:%s: ' + errormsg, nw.thrdnum, server.host, server.port) elif errormsg: logging.info('Thread %s@%s:%s: ' + errormsg, nw.thrdnum, server.host, server.port) if nw in server.busy_threads: server.busy_threads.remove(nw) if not (destroy or nw in server.idle_threads): server.idle_threads.append(nw) if fileno and fileno in self.write_fds: self.write_fds.pop(fileno) if fileno and fileno in self.read_fds: self.read_fds.pop(fileno) if article: if article.tries > cfg.max_art_tries() and ( article.fetcher.optional or not cfg.max_art_opt()): # Too many tries on this server, consider article missing self.decoder.decode(article, None) else: # Remove this server from try_list article.fetcher = None nzf = article.nzf nzo = nzf.nzo ## Allow all servers to iterate over each nzo/nzf again ## NzbQueue.do.reset_try_lists(nzf, nzo) if destroy: nw.terminate(quit=quit) else: nw.hard_reset(wait, quit=quit)
def __reset_nw(self, nw, reset_msg, warn=True, wait=True, destroy=False, send_quit=False): server = nw.server article = nw.article fileno = None if nw.nntp: try: fileno = nw.nntp.sock.fileno() except: fileno = self.__lookup_nw(nw) destroy = True nw.nntp.error_msg = None if warn and reset_msg: server.warning = reset_msg logging.info("Thread %s@%s: %s", nw.thrdnum, server.host, reset_msg) elif reset_msg: logging.debug("Thread %s@%s: %s", nw.thrdnum, server.host, reset_msg) if nw in server.busy_threads: server.busy_threads.remove(nw) if not (destroy or nw in server.idle_threads): server.idle_threads.append(nw) if fileno and fileno in self.write_fds: self.write_fds.pop(fileno) if fileno and fileno in self.read_fds: self.read_fds.pop(fileno) if article: if article.tries > cfg.max_art_tries() and ( article.fetcher.optional or not cfg.max_art_opt()): # Too many tries on this server, consider article missing self.decode(article, None) else: # Allow all servers to iterate over each nzo/nzf again sabnzbd.nzbqueue.NzbQueue.do.reset_try_lists(article) if destroy: nw.terminate(quit=send_quit) else: nw.hard_reset(wait, send_quit=send_quit) # Empty SSL info, it might change on next connect server.ssl_info = ""
def __reset_nw(self, nw, errormsg, warn=True, wait=True, destroy=False, quit=False): server = nw.server article = nw.article fileno = None if nw.nntp: try: fileno = nw.nntp.sock.fileno() except: fileno = self.__lookup_nw(nw) destroy = True nw.nntp.error_msg = None if warn and errormsg: server.warning = errormsg logging.info('Thread %s@%s: ' + errormsg, nw.thrdnum, server.id) elif errormsg: logging.info('Thread %s@%s: ' + errormsg, nw.thrdnum, server.id) if nw in server.busy_threads: server.busy_threads.remove(nw) if not (destroy or nw in server.idle_threads): server.idle_threads.append(nw) if fileno and fileno in self.write_fds: self.write_fds.pop(fileno) if fileno and fileno in self.read_fds: self.read_fds.pop(fileno) if article: if article.tries > cfg.max_art_tries() and (article.fetcher.optional or not cfg.max_art_opt()): # Too many tries on this server, consider article missing self.decode(article, None, None) else: # Remove this server from try_list article.fetcher = None nzf = article.nzf nzo = nzf.nzo # Allow all servers to iterate over each nzo/nzf again ## sabnzbd.nzbqueue.NzbQueue.do.reset_try_lists(nzf, nzo) if destroy: nw.terminate(quit=quit) else: nw.hard_reset(wait, quit=quit) # Empty SSL info, it might change on next connect server.ssl_info = ''
def __reset_nw( self, nw: NewsWrapper, reset_msg: Optional[str] = None, warn: bool = False, wait: bool = True, count_article_try: bool = True, send_quit: bool = False, ): # Some warnings are errors, and not added as server.warning if warn and reset_msg: nw.server.warning = reset_msg logging.info("Thread %s@%s: %s", nw.thrdnum, nw.server.host, reset_msg) elif reset_msg: logging.debug("Thread %s@%s: %s", nw.thrdnum, nw.server.host, reset_msg) # Make sure this NewsWrapper is in the idle threads if nw in nw.server.busy_threads: nw.server.busy_threads.remove(nw) if nw not in nw.server.idle_threads: nw.server.idle_threads.append(nw) # Make sure it is not in the readable sockets self.remove_socket(nw) if nw.article: # Only some errors should count towards the total tries for each server if ( count_article_try and nw.article.tries > cfg.max_art_tries() and (nw.article.fetcher.optional or not cfg.max_art_opt()) ): # Too many tries on this server, consider article missing self.decode(nw.article, None) else: # Allow all servers to iterate over this nzo/nzf again sabnzbd.NzbQueue.reset_try_lists(nw.article) # Reset connection object nw.hard_reset(wait, send_quit=send_quit) # Empty SSL info, it might change on next connect nw.server.ssl_info = ""