Skip to content

Commit b63317d

Browse files
andrew-dembfabpot
authored andcommitted
[Mailer] Fix memory leak with mailer.message_logger_listener
1 parent 69018fe commit b63317d

File tree

3 files changed

+15
-7
lines changed

3 files changed

+15
-7
lines changed

src/Symfony/Bundle/FrameworkBundle/Resources/config/mailer.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
use Symfony\Component\Mailer\EventListener\DkimSignedMessageListener;
1616
use Symfony\Component\Mailer\EventListener\EnvelopeListener;
1717
use Symfony\Component\Mailer\EventListener\MessageListener;
18-
use Symfony\Component\Mailer\EventListener\MessageLoggerListener;
1918
use Symfony\Component\Mailer\EventListener\MessengerTransportListener;
2019
use Symfony\Component\Mailer\EventListener\SmimeEncryptedMessageListener;
2120
use Symfony\Component\Mailer\EventListener\SmimeSignedMessageListener;
@@ -72,10 +71,6 @@
7271
])
7372
->tag('kernel.event_subscriber')
7473

75-
->set('mailer.message_logger_listener', MessageLoggerListener::class)
76-
->tag('kernel.event_subscriber')
77-
->tag('kernel.reset', ['method' => 'reset'])
78-
7974
->set('mailer.messenger_transport_listener', MessengerTransportListener::class)
8075
->tag('kernel.event_subscriber')
8176

src/Symfony/Bundle/FrameworkBundle/Resources/config/mailer_debug.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,17 @@
1212
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
1313

1414
use Symfony\Component\Mailer\DataCollector\MessageDataCollector;
15+
use Symfony\Component\Mailer\EventListener\MessageLoggerListener;
1516

1617
return static function (ContainerConfigurator $container) {
1718
$container->services()
19+
->set('mailer.message_logger_listener', MessageLoggerListener::class)
20+
->args([
21+
service('profiler.is_disabled_state_checker')->nullOnInvalid(),
22+
])
23+
->tag('kernel.event_subscriber')
24+
->tag('kernel.reset', ['method' => 'reset'])
25+
1826
->set('mailer.data_collector', MessageDataCollector::class)
1927
->args([
2028
service('mailer.message_logger_listener'),

src/Symfony/Component/Mailer/EventListener/MessageLoggerListener.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,9 @@ class MessageLoggerListener implements EventSubscriberInterface, ResetInterface
2525
{
2626
private MessageEvents $events;
2727

28-
public function __construct()
29-
{
28+
public function __construct(
29+
protected ?\Closure $disabled = null,
30+
) {
3031
$this->events = new MessageEvents();
3132
}
3233

@@ -37,6 +38,10 @@ public function reset(): void
3738

3839
public function onMessage(MessageEvent $event): void
3940
{
41+
if ($this->disabled?->__invoke()) {
42+
return;
43+
}
44+
4045
$this->events->add($event);
4146
}
4247

0 commit comments

Comments
 (0)