Skip to content

Commit 4b31dc6

Browse files
Merge branch '7.2' into 7.3
* 7.2: remove useless @legacy annotation [Mailer] [Transport] Send clone of `RawMessage` instance in `RoundRobinTransport`
2 parents cde2156 + e8401ca commit 4b31dc6

File tree

3 files changed

+24
-4
lines changed

3 files changed

+24
-4
lines changed

src/Symfony/Component/Mailer/Bridge/Mailgun/Tests/Transport/MailgunApiTransportTest.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,6 @@ public function testCustomHeader()
9898
$this->assertEquals('amp-html-value', $payload['amp-html']);
9999
}
100100

101-
/**
102-
* @legacy
103-
*/
104101
public function testPrefixHeaderWithH()
105102
{
106103
$email = new Email();

src/Symfony/Component/Mailer/Tests/Transport/RoundRobinTransportTest.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
1717
use Symfony\Component\Mailer\Transport\RoundRobinTransport;
1818
use Symfony\Component\Mailer\Transport\TransportInterface;
19+
use Symfony\Component\Mime\Header\Headers;
20+
use Symfony\Component\Mime\Message;
1921
use Symfony\Component\Mime\RawMessage;
2022

2123
/**
@@ -144,6 +146,27 @@ public function testSendOneDeadAndRecoveryWithinRetryPeriod()
144146
$this->assertTransports($t, 1, []);
145147
}
146148

149+
public function testSendOneDeadMessageAlterationsDoNotPersist()
150+
{
151+
$t1 = $this->createMock(TransportInterface::class);
152+
$t1->expects($this->once())->method('send')
153+
->willReturnCallback(function (Message $message) {
154+
$message->getHeaders()->addTextHeader('X-Transport-1', 'value');
155+
throw new TransportException();
156+
});
157+
$t2 = $this->createMock(TransportInterface::class);
158+
$t2->expects($this->once())->method('send');
159+
$t = new RoundRobinTransport([$t1, $t2]);
160+
$p = new \ReflectionProperty($t, 'cursor');
161+
$p->setValue($t, 0);
162+
$headers = new Headers();
163+
$headers->addTextHeader('X-Shared', 'value');
164+
$message = new Message($headers);
165+
$t->send($message);
166+
$this->assertSame($message->getHeaders()->get('X-Shared')->getBody(), 'value');
167+
$this->assertFalse($message->getHeaders()->has('X-Transport-1'));
168+
}
169+
147170
public function testFailureDebugInformation()
148171
{
149172
$t1 = $this->createMock(TransportInterface::class);

src/Symfony/Component/Mailer/Transport/RoundRobinTransport.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public function send(RawMessage $message, ?Envelope $envelope = null): ?SentMess
5050

5151
while ($transport = $this->getNextTransport()) {
5252
try {
53-
return $transport->send($message, $envelope);
53+
return $transport->send(clone $message, $envelope);
5454
} catch (TransportExceptionInterface $e) {
5555
$exception ??= new TransportException('All transports failed.');
5656
$exception->appendDebug(\sprintf("Transport \"%s\": %s\n", $transport, $e->getDebug()));

0 commit comments

Comments
 (0)