From 1c8d1b028950c111fab4c654e27c288264bb82fc Mon Sep 17 00:00:00 2001 From: Rapptz Date: Wed, 24 Mar 2021 08:49:12 -0400 Subject: Recreate aiohttp.FormData objects during request retries Fixes #6531 --- discord/webhook.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'discord/webhook.py') diff --git a/discord/webhook.py b/discord/webhook.py index 9b22d42c..0b0195b2 100644 --- a/discord/webhook.py +++ b/discord/webhook.py @@ -203,13 +203,6 @@ class AsyncWebhookAdapter(WebhookAdapter): if reason: headers['X-Audit-Log-Reason'] = _uriquote(reason, safe='/ ') - if multipart: - data = aiohttp.FormData() - for key, value in multipart.items(): - if key.startswith('file'): - data.add_field(key, value[1], filename=value[0], content_type=value[2]) - else: - data.add_field(key, value) base_url = url.replace(self._request_url, '/') or '/' _id = self._webhook_id @@ -217,6 +210,14 @@ class AsyncWebhookAdapter(WebhookAdapter): for file in files: file.reset(seek=tries) + if multipart: + data = aiohttp.FormData() + for key, value in multipart.items(): + if key.startswith('file'): + data.add_field(key, value[1], filename=value[0], content_type=value[2]) + else: + data.add_field(key, value) + async with self.session.request(verb, url, headers=headers, data=data) as r: log.debug('Webhook ID %s with %s %s has returned status code %s', _id, verb, base_url, r.status) # Coerce empty strings to return None for hygiene purposes -- cgit v1.2.3