comparison mercurial/sslutil.py @ 37916:51a2f8d199c7

sslutil: fix some edge cases in Python 3 support Detected by fixing up test-url.py on Python 3. Differential Revision: https://phab.mercurial-scm.org/D3467
author Augie Fackler <augie@google.com>
date Fri, 27 Apr 2018 00:05:46 -0400
parents 46e705b79323
children 67dc32d4e790
comparison
equal deleted inserted replaced
37915:6574c81b6831 37916:51a2f8d199c7
638 ''' 638 '''
639 if not cert: 639 if not cert:
640 return _('no certificate received') 640 return _('no certificate received')
641 641
642 dnsnames = [] 642 dnsnames = []
643 san = cert.get('subjectAltName', []) 643 san = cert.get(r'subjectAltName', [])
644 for key, value in san: 644 for key, value in san:
645 if key == 'DNS': 645 if key == r'DNS':
646 try: 646 try:
647 if _dnsnamematch(value, hostname): 647 if _dnsnamematch(value, hostname):
648 return 648 return
649 except wildcarderror as e: 649 except wildcarderror as e:
650 return stringutil.forcebytestr(e.args[0]) 650 return stringutil.forcebytestr(e.args[0])
670 except wildcarderror as e: 670 except wildcarderror as e:
671 return stringutil.forcebytestr(e.args[0]) 671 return stringutil.forcebytestr(e.args[0])
672 672
673 dnsnames.append(value) 673 dnsnames.append(value)
674 674
675 dnsnames = [pycompat.bytesurl(d) for d in dnsnames]
675 if len(dnsnames) > 1: 676 if len(dnsnames) > 1:
676 return _('certificate is for %s') % ', '.join(dnsnames) 677 return _('certificate is for %s') % ', '.join(dnsnames)
677 elif len(dnsnames) == 1: 678 elif len(dnsnames) == 1:
678 return _('certificate is for %s') % dnsnames[0] 679 return _('certificate is for %s') % dnsnames[0]
679 else: 680 else: