diff --git a/kobo/client/__init__.py b/kobo/client/__init__.py index dce65778..9b47b4f1 100644 --- a/kobo/client/__init__.py +++ b/kobo/client/__init__.py @@ -470,6 +470,10 @@ def upload_file(self, file_name, target_dir): checksum = sum.hexdigest().lower() fsize = os.path.getsize(file_name) + # use str only for large uploads to not break compatibility with older hubs + if fsize > xmlrpclib.MAXINT: + fsize = str(fsize) + upload_id, upload_key = self.upload.register_upload(os.path.basename(file_name), checksum, fsize, target_dir) secure = (scheme == "https") diff --git a/kobo/django/upload/xmlrpc.py b/kobo/django/upload/xmlrpc.py index 39a55e07..fdf54a4d 100644 --- a/kobo/django/upload/xmlrpc.py +++ b/kobo/django/upload/xmlrpc.py @@ -27,7 +27,8 @@ def register_upload(request, name, checksum, size, target_dir): upload.owner = request.user upload.name = name upload.checksum = checksum.lower() - upload.size = size + # size may be sent as a string to workaround the xmlrpc.client.MAXINT limit + upload.size = int(size) upload.target_dir = target_dir upload.save() return (upload.id, upload.upload_key)