@ -73,6 +73,7 @@ class Server:
" ssl " ,
" ssl " ,
" ssl_verify " ,
" ssl_verify " ,
" ssl_ciphers " ,
" ssl_ciphers " ,
" required " ,
" optional " ,
" optional " ,
" retention " ,
" retention " ,
" send_group " ,
" send_group " ,
@ -109,6 +110,7 @@ class Server:
send_group ,
send_group ,
username = None ,
username = None ,
password = None ,
password = None ,
required = False ,
optional = False ,
optional = False ,
retention = 0 ,
retention = 0 ,
) :
) :
@ -125,6 +127,7 @@ class Server:
self . ssl : bool = ssl
self . ssl : bool = ssl
self . ssl_verify : int = ssl_verify
self . ssl_verify : int = ssl_verify
self . ssl_ciphers : str = ssl_ciphers
self . ssl_ciphers : str = ssl_ciphers
self . required : bool = required
self . optional : bool = optional
self . optional : bool = optional
self . retention : int = retention
self . retention : int = retention
self . send_group : bool = send_group
self . send_group : bool = send_group
@ -312,6 +315,7 @@ class Downloader(Thread):
ssl_ciphers = srv . ssl_ciphers ( )
ssl_ciphers = srv . ssl_ciphers ( )
username = srv . username ( )
username = srv . username ( )
password = srv . password ( )
password = srv . password ( )
required = srv . required ( )
optional = srv . optional ( )
optional = srv . optional ( )
retention = int ( srv . retention ( ) * 24 * 3600 ) # days ==> seconds
retention = int ( srv . retention ( ) * 24 * 3600 ) # days ==> seconds
send_group = srv . send_group ( )
send_group = srv . send_group ( )
@ -344,6 +348,7 @@ class Downloader(Thread):
send_group ,
send_group ,
username ,
username ,
password ,
password ,
required ,
optional ,
optional ,
retention ,
retention ,
)
)
@ -473,10 +478,14 @@ class Downloader(Thread):
if server . errormsg != errormsg :
if server . errormsg != errormsg :
server . errormsg = errormsg
server . errormsg = errormsg
logging . warning ( errormsg )
logging . warning ( errormsg )
if not server . required :
logging . warning ( T ( " Server %s will be ignored for %s minutes " ) , server . host , _PENALTY_TIMEOUT )
logging . warning ( T ( " Server %s will be ignored for %s minutes " ) , server . host , _PENALTY_TIMEOUT )
# Not fully the same as the code below for optional servers
# Not fully the same as the code below for optional servers
server . bad_cons = 0
server . bad_cons = 0
if server . required :
sabnzbd . Scheduler . plan_required_server_resume ( )
else :
server . deactivate ( )
server . deactivate ( )
self . plan_server ( server , _PENALTY_TIMEOUT )
self . plan_server ( server , _PENALTY_TIMEOUT )
@ -835,12 +844,17 @@ class Downloader(Thread):
penalty = _PENALTY_UNKNOWN
penalty = _PENALTY_UNKNOWN
block = True
block = True
if block or ( penalty and server . optional ) :
if block or ( penalty and server . optional ) :
retry_article = False
if server . active :
if server . active :
if server . required :
sabnzbd . Scheduler . plan_required_server_resume ( )
retry_article = True
else :
server . deactivate ( )
server . deactivate ( )
if penalty and ( block or server . optional ) :
if penalty and ( block or server . optional ) :
self . plan_server ( server , penalty )
self . plan_server ( server , penalty )
# Note that the article is discard for this server
# Note that the article is discard for this server if the server is not required
self . __reset_nw ( nw , retry_article = Fals e, send_quit = True )
self . __reset_nw ( nw , retry_article = retry_articl e, send_quit = True )
continue
continue
except :
except :
logging . error (
logging . error (