From a90596b67ada2bae7f85919dfc6cc72106be576f Mon Sep 17 00:00:00 2001 From: Nyholm Date: Sun, 18 Jul 2021 18:12:44 -0700 Subject: [PATCH] [Notifier] [5.4] Make sure Http TransportException is not leaking --- .../Notifier/Bridge/Mailjet/MailjetTransport.php | 9 ++++++++- .../Bridge/MessageMedia/MessageMediaTransport.php | 8 +++++++- .../Component/Notifier/Bridge/Telnyx/TelnyxTransport.php | 9 ++++++++- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/Notifier/Bridge/Mailjet/MailjetTransport.php b/src/Symfony/Component/Notifier/Bridge/Mailjet/MailjetTransport.php index 935269fcc6a0e..fc51eb4055ef2 100644 --- a/src/Symfony/Component/Notifier/Bridge/Mailjet/MailjetTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Mailjet/MailjetTransport.php @@ -18,6 +18,7 @@ use Symfony\Component\Notifier\Message\SmsMessage; use Symfony\Component\Notifier\Transport\AbstractTransport; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; +use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; use Symfony\Contracts\HttpClient\HttpClientInterface; /** @@ -65,7 +66,13 @@ protected function doSend(MessageInterface $message): SentMessage ], ]); - if (200 !== $response->getStatusCode()) { + try { + $statusCode = $response->getStatusCode(); + } catch (TransportExceptionInterface $e) { + throw new TransportException('Could not reach the remote Mailjet server.', $response, 0, $e); + } + + if (200 !== $statusCode) { $content = $response->toArray(false); $errorMessage = $content['requestError']['serviceException']['messageId'] ?? ''; $errorInfo = $content['requestError']['serviceException']['text'] ?? ''; diff --git a/src/Symfony/Component/Notifier/Bridge/MessageMedia/MessageMediaTransport.php b/src/Symfony/Component/Notifier/Bridge/MessageMedia/MessageMediaTransport.php index 6421b464ff16b..24160ad375135 100644 --- a/src/Symfony/Component/Notifier/Bridge/MessageMedia/MessageMediaTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/MessageMedia/MessageMediaTransport.php @@ -80,7 +80,13 @@ protected function doSend(MessageInterface $message): SentMessage ] ); - if (202 === $response->getStatusCode()) { + try { + $statusCode = $response->getStatusCode(); + } catch (TransportExceptionInterface $e) { + throw new TransportException('Could not reach the remote MessageMedia server.', $response, 0, $e); + } + + if (202 === $statusCode) { $result = $response->toArray(false)['messages'][0]; $sentMessage = new SentMessage($message, (string) $this); $sentMessage->setMessageId($result['message_id']); diff --git a/src/Symfony/Component/Notifier/Bridge/Telnyx/TelnyxTransport.php b/src/Symfony/Component/Notifier/Bridge/Telnyx/TelnyxTransport.php index 571a76be88fb3..6c1799e0c2c10 100644 --- a/src/Symfony/Component/Notifier/Bridge/Telnyx/TelnyxTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Telnyx/TelnyxTransport.php @@ -19,6 +19,7 @@ use Symfony\Component\Notifier\Message\SmsMessage; use Symfony\Component\Notifier\Transport\AbstractTransport; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; +use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; use Symfony\Contracts\HttpClient\HttpClientInterface; /** @@ -84,7 +85,13 @@ protected function doSend(MessageInterface $message): SentMessage ], ]); - if (200 !== $response->getStatusCode()) { + try { + $statusCode = $response->getStatusCode(); + } catch (TransportExceptionInterface $e) { + throw new TransportException('Could not reach the remote Telnyx server.', $response, 0, $e); + } + + if (200 !== $statusCode) { $error = $response->toArray(false); if (!isset($error['errors'])) { throw new TransportException('Unable to send the SMS.', $response);