mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
Support trailing dots in DNS names. Fixes #782510. Will backport to 2.3.
This commit is contained in:
parent
8db4403a76
commit
0d8e16c7ad
2 changed files with 19 additions and 3 deletions
|
@ -150,10 +150,16 @@ class Codec(codecs.Codec):
|
|||
raise UnicodeError, "unsupported error handling "+errors
|
||||
|
||||
result = []
|
||||
for label in dots.split(input):
|
||||
labels = dots.split(input)
|
||||
if labels and len(labels[-1])==0:
|
||||
trailing_dot = '.'
|
||||
del labels[-1]
|
||||
else:
|
||||
trailing_dot = ''
|
||||
for label in labels:
|
||||
result.append(ToASCII(label))
|
||||
# Join with U+002E
|
||||
return ".".join(result), len(input)
|
||||
return ".".join(result)+trailing_dot, len(input)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
|
||||
|
@ -168,11 +174,17 @@ class Codec(codecs.Codec):
|
|||
unicode(input, "ascii")
|
||||
labels = input.split(".")
|
||||
|
||||
if labels and len(labels[-1]) == 0:
|
||||
trailing_dot = u'.'
|
||||
del labels[-1]
|
||||
else:
|
||||
trailing_dot = u''
|
||||
|
||||
result = []
|
||||
for label in labels:
|
||||
result.append(ToUnicode(label))
|
||||
|
||||
return u".".join(result), len(input)
|
||||
return u".".join(result)+trailing_dot, len(input)
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue