comparison mercurial/sslutil.py @ 29106:fe7ebef8796a

sslutil: further refactor sslkwargs The logic here and what happens with web.cacerts is mind numbing. Make the code even more explicit.
author Gregory Szorc <gregory.szorc@gmail.com>
date Wed, 04 May 2016 23:01:49 -0700
parents 548e9c8c2841
children c8fbfb9163ce
comparison
equal deleted inserted replaced
29105:548e9c8c2841 29106:fe7ebef8796a
247 # dispatch sets web.cacerts=! when --insecure is used. 247 # dispatch sets web.cacerts=! when --insecure is used.
248 cacerts = ui.config('web', 'cacerts') 248 cacerts = ui.config('web', 'cacerts')
249 if cacerts == '!': 249 if cacerts == '!':
250 return kws 250 return kws
251 251
252 # If a value is set in the config, validate against a path and load
253 # and require those certs.
252 if cacerts: 254 if cacerts:
253 cacerts = util.expandpath(cacerts) 255 cacerts = util.expandpath(cacerts)
254 if not os.path.exists(cacerts): 256 if not os.path.exists(cacerts):
255 raise error.Abort(_('could not find web.cacerts: %s') % cacerts) 257 raise error.Abort(_('could not find web.cacerts: %s') % cacerts)
256 else: 258
257 # CA certs aren't explicitly listed in the config. See if we can load 259 kws.update({'ca_certs': cacerts,
258 # defaults. 260 'cert_reqs': ssl.CERT_REQUIRED})
259 cacerts = _defaultcacerts() 261 return kws
260 if cacerts and cacerts != '!': 262
261 ui.debug('using %s to enable OS X system CA\n' % cacerts) 263 # No CAs in config. See if we can load defaults.
262 ui.setconfig('web', 'cacerts', cacerts, 'defaultcacerts') 264 cacerts = _defaultcacerts()
265 if cacerts and cacerts != '!':
266 ui.debug('using %s to enable OS X system CA\n' % cacerts)
267 ui.setconfig('web', 'cacerts', cacerts, 'defaultcacerts')
263 268
264 if cacerts != '!': 269 if cacerts != '!':
265 kws.update({'ca_certs': cacerts, 270 kws.update({'ca_certs': cacerts,
266 'cert_reqs': ssl.CERT_REQUIRED, 271 'cert_reqs': ssl.CERT_REQUIRED,
267 }) 272 })