diff options
author | Guido van Rossum <guido@python.org> | 2001-10-16 19:45:52 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2001-10-16 19:45:52 (GMT) |
commit | b6aca6afe2c46b57810c0f3e726e6dae5336d324 (patch) | |
tree | 1a5a5614ff5b7f57d2cf42b4772b918ed00bec3e /Lib/ftplib.py | |
parent | 5bf1ecd503c77880ca45d67076907edf1d4d8d65 (diff) | |
download | cpython-b6aca6afe2c46b57810c0f3e726e6dae5336d324.zip cpython-b6aca6afe2c46b57810c0f3e726e6dae5336d324.tar.gz cpython-b6aca6afe2c46b57810c0f3e726e6dae5336d324.tar.bz2 |
Fix SF bug #459767: ftplib fails with files > 2GB
size(), parse150(): try int() first, catch OverflowError, fall back to
long().
Diffstat (limited to 'Lib/ftplib.py')
-rw-r--r-- | Lib/ftplib.py | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/Lib/ftplib.py b/Lib/ftplib.py index 4d5ac1a..8d8d51f 100644 --- a/Lib/ftplib.py +++ b/Lib/ftplib.py @@ -343,7 +343,7 @@ class FTP: return conn, size def transfercmd(self, cmd, rest=None): - """Like nstransfercmd() but returns only the socket.""" + """Like ntransfercmd() but returns only the socket.""" return self.ntransfercmd(cmd, rest)[0] def login(self, user = '', passwd = '', acct = ''): @@ -505,7 +505,11 @@ class FTP: # Note that the RFC doesn't say anything about 'SIZE' resp = self.sendcmd('SIZE ' + filename) if resp[:3] == '213': - return int(resp[3:].strip()) + s = resp[3:].strip() + try: + return int(s) + except OverflowError: + return long(s) def mkd(self, dirname): '''Make a directory, return its full pathname.''' @@ -549,9 +553,13 @@ def parse150(resp): import re _150_re = re.compile("150 .* \((\d+) bytes\)", re.IGNORECASE) m = _150_re.match(resp) - if m: - return int(m.group(1)) - return None + if not m: + return None + s = m.group(1) + try: + return int(s) + except OverflowError: + return long(s) _227_re = None |