@@ -55,55 +55,52 @@ namespace NN {
5555
5656 void *begin = buffer.GetReadCursor ();
5757 buffer.ReadBuffer (&packet.magic , NATNEG_MAGIC_LEN);
58- if (memcmp (&NNMagicData,&packet.magic , NATNEG_MAGIC_LEN) != 0 ) {
59- // skip invalid packet
60- return ;
61- }
62- memset (&packet.Packet .Init , 0 , sizeof (packet.Packet .Init ));
63- packet.version = buffer.ReadByte ();
64- packet.packettype = buffer.ReadByte ();
65- packet.cookie = buffer.ReadInt ();
58+ if (memcmp (&NNMagicData,&packet.magic , NATNEG_MAGIC_LEN) == 0 ) { // valid natneg packet
59+ memset (&packet.Packet .Init , 0 , sizeof (packet.Packet .Init ));
60+ packet.version = buffer.ReadByte ();
61+ packet.packettype = buffer.ReadByte ();
62+ packet.cookie = buffer.ReadInt ();
6663
67- int packetSize = packetSizeFromType (packet.packettype , packet.version );
68- std::string gamename;
64+ int packetSize = packetSizeFromType (packet.packettype , packet.version );
65+ std::string gamename;
6966
70-
71- size_t new_pos = 0 ;
72- switch (packet. packettype ) {
73- case NN_INIT:
74- buffer. ReadBuffer (& packet.Packet . Init , packetSize);
75- if (packet. version > 1 ) {
76- gamename = buffer. ReadNTS ();
77- }
78- driver-> handle_init_packet (address, &packet, gamename) ;
79- break ;
80- case NN_CONNECT_ACK:
81- buffer. ReadBuffer (&packet. Packet . Init , packetSize );
82- driver-> handle_connect_ack_packet (address, &packet) ;
83- break ;
84- case NN_ADDRESS_CHECK:
85- buffer.ReadBuffer (&packet. Packet . Init , packetSize );
86- new_pos = (( size_t )begin-( size_t )buffer. GetHead () );
87- new_pos += sizeof (packet );
88- buffer. SetReadCursor (new_pos );
89- driver-> handle_address_check_packet (address, &packet) ;
90- break ;
91- case NN_REPORT:
92- buffer. ReadBuffer (&packet. Packet . Report , packetSize );
93- driver-> handle_report_packet (address, &packet) ;
94- break ;
95- case NN_NATIFY_REQUEST:
96- buffer.ReadBuffer (&packet. Packet . Init , packetSize );
97- new_pos = (( size_t )begin-( size_t )buffer. GetHead () );
98- new_pos += sizeof (packet );
99- buffer. SetReadCursor (new_pos );
100- driver-> handle_natify_packet (address, &packet) ;
101- break ;
102- case NN_ERTACK:
103- buffer. ReadBuffer (&packet. Packet . Init , packetSize );
104- driver-> handle_ert_ack_packet (address, &packet) ;
105- break ;
106- }
67+ size_t new_pos = 0 ;
68+ switch (packet. packettype ) {
69+ case NN_INIT:
70+ buffer. ReadBuffer (&packet. Packet . Init , packetSize);
71+ if ( packet.version > 1 ) {
72+ gamename = buffer. ReadNTS ();
73+ }
74+ driver-> handle_init_packet (address, &packet, gamename);
75+ break ;
76+ case NN_CONNECT_ACK:
77+ buffer. ReadBuffer (&packet. Packet . Init , packetSize);
78+ driver-> handle_connect_ack_packet (address, &packet );
79+ break ;
80+ case NN_ADDRESS_CHECK:
81+ buffer. ReadBuffer (&packet. Packet . Init , packetSize);
82+ new_pos = (( size_t )begin-( size_t ) buffer.GetHead () );
83+ new_pos += sizeof (packet );
84+ buffer. SetReadCursor (new_pos );
85+ driver-> handle_address_check_packet (address, &packet );
86+ break ;
87+ case NN_REPORT:
88+ buffer. ReadBuffer (&packet. Packet . Report , packetSize);
89+ driver-> handle_report_packet (address, &packet );
90+ break ;
91+ case NN_NATIFY_REQUEST:
92+ buffer. ReadBuffer (&packet. Packet . Init , packetSize);
93+ new_pos = (( size_t )begin-( size_t ) buffer.GetHead () );
94+ new_pos += sizeof (packet );
95+ buffer. SetReadCursor (new_pos );
96+ driver-> handle_natify_packet (address, &packet );
97+ break ;
98+ case NN_ERTACK:
99+ buffer. ReadBuffer (&packet. Packet . Init , packetSize);
100+ driver-> handle_ert_ack_packet (address, &packet );
101+ break ;
102+ }
103+ }
107104 }
108105 if (buf && buf->base ) {
109106 free ((void *)buf->base );
0 commit comments