Skip to content

Commit 5c5dea8

Browse files
Merge branch '4.1'
* 4.1: [travis] fix composer.lock invalidation for deps=low [Security\Http] Restore laziness of listener iterator Make the `message_bus` alias public
2 parents 1d245fc + 79f4f28 commit 5c5dea8

File tree

1 file changed

+25
-18
lines changed

1 file changed

+25
-18
lines changed

Firewall.php

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -56,31 +56,38 @@ public function onKernelRequest(GetResponseEvent $event)
5656
$listeners[2] = null;
5757
}
5858

59-
$accessListener = null;
60-
$authenticationListeners = array();
61-
62-
foreach ($listeners[0] as $listener) {
63-
if ($listener instanceof AccessListener) {
64-
$accessListener = $listener;
65-
} else {
66-
$authenticationListeners[] = $listener;
67-
}
68-
}
59+
$authenticationListeners = $listeners[0];
60+
$exceptionListener = $listeners[1];
61+
$logoutListener = $listeners[2];
6962

70-
if (null !== $exceptionListener = $listeners[1]) {
63+
if (null !== $exceptionListener) {
7164
$this->exceptionListeners[$event->getRequest()] = $exceptionListener;
7265
$exceptionListener->register($this->dispatcher);
7366
}
7467

75-
if (null !== $logoutListener = $listeners[2]) {
76-
$authenticationListeners[] = $logoutListener;
77-
}
68+
$authenticationListeners = function () use ($authenticationListeners, $logoutListener) {
69+
$accessListener = null;
7870

79-
if (null !== $accessListener) {
80-
$authenticationListeners[] = $accessListener;
81-
}
71+
foreach ($authenticationListeners as $listener) {
72+
if ($listener instanceof AccessListener) {
73+
$accessListener = $listener;
74+
75+
continue;
76+
}
77+
78+
yield $listener;
79+
}
80+
81+
if (null !== $logoutListener) {
82+
yield $logoutListener;
83+
}
84+
85+
if (null !== $accessListener) {
86+
yield $accessListener;
87+
}
88+
};
8289

83-
$this->handleRequest($event, $authenticationListeners);
90+
$this->handleRequest($event, $authenticationListeners());
8491
}
8592

8693
public function onKernelFinishRequest(FinishRequestEvent $event)

0 commit comments

Comments
 (0)