@@ -28,7 +28,7 @@ class Client
2828 * @param ?LoopInterface $loop
2929 * @param ?MulticastFactory $multicast
3030 */
31- public function __construct (LoopInterface $ loop = null , MulticastFactory $ multicast = null )
31+ public function __construct (? LoopInterface $ loop = null , ? MulticastFactory $ multicast = null )
3232 {
3333 $ this ->loop = $ loop ?: Loop::get ();
3434 $ this ->multicast = $ multicast ?: new MulticastFactory ($ this ->loop );
@@ -46,11 +46,6 @@ public function search($searchTarget = 'ssdp:all', $mx = 2)
4646 $ socket = $ this ->multicast ->createSender ();
4747 // TODO: The TTL for the IP packet SHOULD default to 2 and SHOULD be configurable.
4848
49- $ timer = $ this ->loop ->addTimer ($ mx , function () use ($ socket , &$ deferred ) {
50- $ deferred ->resolve ();
51- $ socket ->close ();
52- });
53-
5449 $ loop = $ this ->loop ;
5550 $ deferred = new Deferred (function () use ($ socket , &$ timer , $ loop ) {
5651 // canceling resulting promise cancels timer and closes socket
@@ -59,6 +54,11 @@ public function search($searchTarget = 'ssdp:all', $mx = 2)
5954 throw new RuntimeException ('Cancelled ' );
6055 });
6156
57+ $ timer = $ this ->loop ->addTimer ($ mx , function () use ($ socket , $ deferred ) {
58+ $ deferred ->resolve ();
59+ $ socket ->close ();
60+ });
61+
6262 $ that = $ this ;
6363 $ socket ->on ('message ' , function ($ data , $ remote ) use ($ deferred , $ that ) {
6464 $ message = $ that ->parseMessage ($ data , $ remote );
0 commit comments