From 78e4b578e20994a82fbf4fc23f2d2048f4621e1a Mon Sep 17 00:00:00 2001 From: Michael H Date: Thu, 10 Jan 2019 03:46:49 -0500 Subject: [PATCH] [Utils] Tunnel minor fixes (#2366) - Tunnel uses a safe max size (Max size is related to maximum payload, not maximum file size) - Checks attachment sizes prior to download --- redbot/core/utils/tunnel.py | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/redbot/core/utils/tunnel.py b/redbot/core/utils/tunnel.py index 5b757543d..aedcd7474 100644 --- a/redbot/core/utils/tunnel.py +++ b/redbot/core/utils/tunnel.py @@ -2,7 +2,6 @@ import discord from datetime import datetime from redbot.core.utils.chat_formatting import pagify import io -import sys import weakref from typing import List, Optional from .common_filters import filter_mass_mentions @@ -151,15 +150,12 @@ class Tunnel(metaclass=TunnelMeta): """ files = [] - size = 0 - max_size = 8 * 1024 * 1024 - for a in m.attachments: - _fp = io.BytesIO() - await a.save(_fp) - size += sys.getsizeof(_fp) - if size > max_size: - return [] - files.append(discord.File(_fp, filename=a.filename)) + max_size = 8 * 1000 * 1000 + if m.attachments and sum(a.size for a in m.attachments) <= max_size: + for a in m.attachments: + _fp = io.BytesIO() + await a.save(_fp) + files.append(discord.File(_fp, filename=a.filename)) return files async def communicate(