@@ -52,7 +52,11 @@ public function search($searchTarget = 'ssdp:all', $mx = 2)
52
52
$ socket = $ this ->multicast ->createSender ();
53
53
// TODO: The TTL for the IP packet SHOULD default to 2 and SHOULD be configurable.
54
54
55
- $ messages = array ();
55
+ $ timer = $ this ->loop ->addTimer ($ mx , function () use ($ socket , &$ deferred ) {
56
+ $ deferred ->resolve ();
57
+ $ socket ->close ();
58
+ });
59
+
56
60
$ loop = $ this ->loop ;
57
61
$ deferred = new Deferred (function () use ($ socket , &$ timer , $ loop ) {
58
62
// canceling resulting promise cancels timer and closes socket
@@ -61,15 +65,11 @@ public function search($searchTarget = 'ssdp:all', $mx = 2)
61
65
throw new RuntimeException ('Cancelled ' );
62
66
});
63
67
64
- $ timer = $ this ->loop ->addTimer ($ mx , function () use ($ socket , &$ deferred , &$ messages ) {
65
- $ deferred ->resolve ($ messages );
66
- $ socket ->close ();
67
- });
68
-
69
68
$ that = $ this ;
70
- $ socket ->on ('message ' , function ($ data , $ remote ) use (& $ messages , $ that ) {
69
+ $ socket ->on ('message ' , function ($ data , $ remote ) use ($ deferred , $ that ) {
71
70
$ message = $ that ->parseMessage ($ data , $ remote );
72
- $ messages [] = $ message ;
71
+
72
+ $ deferred ->progress ($ message );
73
73
});
74
74
75
75
$ socket ->send ($ data , self ::ADDRESS );
0 commit comments