summaryrefslogtreecommitdiffstats
path: root/Lib/ftplib.py
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2001-10-16 19:45:52 (GMT)
committerGuido van Rossum <guido@python.org>2001-10-16 19:45:52 (GMT)
commitb6aca6afe2c46b57810c0f3e726e6dae5336d324 (patch)
tree1a5a5614ff5b7f57d2cf42b4772b918ed00bec3e /Lib/ftplib.py
parent5bf1ecd503c77880ca45d67076907edf1d4d8d65 (diff)
downloadcpython-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.py18
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