From a05478e22c36c10b7b09c4cf9f70c7550dc306f4 Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Nov 27 2018 15:39:22 +0000 Subject: PR#1172: make timeout of authentication configurable Merges #1172 https://pagure.io/koji/pull-request/1172 Fixes: #1171 https://pagure.io/koji/issue/1171 GSSAPI authentication timeout should be able to be configured --- diff --git a/cli/koji.conf b/cli/koji.conf index 26c24cf..addd4e3 100644 --- a/cli/koji.conf +++ b/cli/koji.conf @@ -39,3 +39,9 @@ ;enabled plugins for CLI, runroot and save_failed_tree are available ;plugins = + +;timeout of XMLRPC requests by seconds, default: 60 * 60 * 12 = 43200 +;timeout = 43200 + +;timeout of GSSAPI/SSL authentication by seconds, default: 60 +;auth_timeout = 60 diff --git a/koji/__init__.py b/koji/__init__.py index bc40a98..f529eb7 100644 --- a/koji/__init__.py +++ b/koji/__init__.py @@ -268,6 +268,10 @@ BASEDIR = '/mnt/koji' # default task priority PRIO_DEFAULT = 20 +# default timeouts +DEFAULT_REQUEST_TIMEOUT = 60 * 60 * 12 +DEFAULT_AUTH_TIMEOUT = 60 + ## BEGIN kojikamid dup #Exceptions @@ -1647,7 +1651,8 @@ def read_config(profile_name, user_config=None): 'offline_retry' : None, 'offline_retry_interval' : None, 'keepalive' : True, - 'timeout' : None, + 'timeout' : DEFAULT_REQUEST_TIMEOUT, + 'auth_timeout' : DEFAULT_AUTH_TIMEOUT, 'use_fast_upload': False, 'upload_blocksize': 1048576, 'poll_interval': 6, @@ -1719,7 +1724,8 @@ def read_config(profile_name, user_config=None): 'debug', 'debug_xmlrpc', 'krb_canon_host'): result[name] = config.getboolean(profile_name, name) elif name in ('max_retries', 'retry_interval', - 'offline_retry_interval', 'poll_interval', 'timeout', + 'offline_retry_interval', 'poll_interval', + 'timeout', 'auth_timeout', 'upload_blocksize', 'pyver'): try: result[name] = int(value) @@ -2037,6 +2043,7 @@ def grab_session_options(options): 'anon_retry', 'keepalive', 'timeout', + 'auth_timeout', 'use_fast_upload', 'upload_blocksize', 'krb_rdns', @@ -2074,7 +2081,7 @@ class ClientSession(object): self.logger = logging.getLogger('koji') self.rsession = None self.new_session() - self.opts.setdefault('timeout', 60 * 60 * 12) + self.opts.setdefault('timeout', DEFAULT_REQUEST_TIMEOUT) def new_session(self): @@ -2233,13 +2240,14 @@ class ClientSession(object): # Force a new session self.new_session() - # 60 second timeout during login sinfo = None old_env = {} old_opts = self.opts self.opts = old_opts.copy() try: - self.opts['timeout'] = 60 + # temporary timeout value during login + self.opts['timeout'] = self.opts.get('auth_timeout', + DEFAULT_AUTH_TIMEOUT) kwargs = {} if keytab: old_env['KRB5_CLIENT_KTNAME'] = os.environ.get('KRB5_CLIENT_KTNAME') @@ -2301,10 +2309,11 @@ class ClientSession(object): # Force a new session self.new_session() - # 60 second timeout during login old_opts = self.opts self.opts = old_opts.copy() - self.opts['timeout'] = 60 + # temporary timeout value during login + self.opts['timeout'] = self.opts.get('auth_timeout', + DEFAULT_AUTH_TIMEOUT) self.opts['cert'] = cert self.opts['serverca'] = serverca try: