@@ -157,6 +157,31 @@ public function testParseAnswerWithInlineData()
157157 $ this ->assertSame ('178.79.169.131 ' , $ response ->answers [0 ]->data );
158158 }
159159
160+ public function testParseAnswerWithUnknownType ()
161+ {
162+ $ data = "" ;
163+ $ data .= "04 69 67 6f 72 02 69 6f 00 " ; // answer: igor.io
164+ $ data .= "23 28 00 01 " ; // answer: type 9000, class IN
165+ $ data .= "00 01 51 80 " ; // answer: ttl 86400
166+ $ data .= "00 05 " ; // answer: rdlength 5
167+ $ data .= "68 65 6c 6c 6f " ; // answer: rdata "hello"
168+
169+ $ data = $ this ->convertTcpDumpToBinary ($ data );
170+
171+ $ response = new Message ();
172+ $ response ->header ->set ('anCount ' , 1 );
173+ $ response ->data = $ data ;
174+
175+ $ this ->parser ->parseAnswer ($ response );
176+
177+ $ this ->assertCount (1 , $ response ->answers );
178+ $ this ->assertSame ('igor.io ' , $ response ->answers [0 ]->name );
179+ $ this ->assertSame (9000 , $ response ->answers [0 ]->type );
180+ $ this ->assertSame (Message::CLASS_IN , $ response ->answers [0 ]->class );
181+ $ this ->assertSame (86400 , $ response ->answers [0 ]->ttl );
182+ $ this ->assertSame ('hello ' , $ response ->answers [0 ]->data );
183+ }
184+
160185 public function testParseResponseWithCnameAndOffsetPointers ()
161186 {
162187 $ data = "" ;
@@ -273,6 +298,31 @@ public function testParseResponseWithTwoAnswers()
273298 $ this ->assertSame ('193.223.78.152 ' , $ response ->answers [1 ]->data );
274299 }
275300
301+ public function testParseNSResponse ()
302+ {
303+ $ data = "" ;
304+ $ data .= "04 69 67 6f 72 02 69 6f 00 " ; // answer: igor.io
305+ $ data .= "00 02 00 01 " ; // answer: type NS, class IN
306+ $ data .= "00 01 51 80 " ; // answer: ttl 86400
307+ $ data .= "00 07 " ; // answer: rdlength 7
308+ $ data .= "05 68 65 6c 6c 6f 00 " ; // answer: rdata hello
309+
310+ $ data = $ this ->convertTcpDumpToBinary ($ data );
311+
312+ $ response = new Message ();
313+ $ response ->header ->set ('anCount ' , 1 );
314+ $ response ->data = $ data ;
315+
316+ $ this ->parser ->parseAnswer ($ response );
317+
318+ $ this ->assertCount (1 , $ response ->answers );
319+ $ this ->assertSame ('igor.io ' , $ response ->answers [0 ]->name );
320+ $ this ->assertSame (Message::TYPE_NS , $ response ->answers [0 ]->type );
321+ $ this ->assertSame (Message::CLASS_IN , $ response ->answers [0 ]->class );
322+ $ this ->assertSame (86400 , $ response ->answers [0 ]->ttl );
323+ $ this ->assertSame ('hello ' , $ response ->answers [0 ]->data );
324+ }
325+
276326 public function testParsePTRResponse ()
277327 {
278328 $ data = "" ;
0 commit comments