File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -32,15 +32,18 @@ public function push($chunk)
3232 $ message = substr ($ this ->buffer , 0 , $ pos );
3333 $ this ->buffer = (string )substr ($ this ->buffer , $ pos + self ::LEOM );
3434
35- $ messages []= $ this ->parseMessage ($ message );
35+ $ parsed = $ this ->parseMessage ($ message );
36+ if ($ parsed ->getFields ()) {
37+ $ messages []= $ parsed ;
38+ }
3639 }
3740
3841 return $ messages ;
3942 }
4043
4144 private function parseMessage ($ message )
4245 {
43- $ lines = explode (self ::EOL , $ message );
46+ $ lines = array_filter ( explode (self ::EOL , $ message) );
4447 $ last = count ($ lines ) - 1 ;
4548 $ fields = array ();
4649
Original file line number Diff line number Diff line change @@ -156,4 +156,19 @@ public function testParsingMissingSpaceEmptyValue()
156156 $ this ->assertInstanceOf ('Clue\React\Ami\Protocol\Response ' , $ first );
157157 $ this ->assertEquals ('' , $ first ->getFieldValue ('Response ' ));
158158 }
159+
160+ public function testParsingExcessiveNewlines ()
161+ {
162+ $ parser = new Parser ();
163+ $ this ->assertEquals (array (), $ parser ->push ("Asterisk Call Manager/1.3 \r\n" ));
164+
165+ $ ret = $ parser ->push ("First: 1 \r\n\r\nSecond: 2 \r\n\r\n\r\nThird: 3 \r\n\r\n\r\n\r\nFourth: 4 \r\n\r\n" );
166+ $ this ->assertCount (4 , $ ret );
167+
168+ $ last = $ ret [count ($ ret ) - 1 ];
169+ /* @var $last \Clue\React\Ami\Protocol\Response */
170+
171+ $ this ->assertInstanceOf ('Clue\React\Ami\Protocol\Response ' , $ last );
172+ $ this ->assertEquals ('4 ' , $ last ->getFieldValue ('Fourth ' ));
173+ }
159174}
You can’t perform that action at this time.
0 commit comments