@@ -176,6 +176,7 @@ private function handleEncapsulatedPacket(EncapsulatedPacket $packet) : void{
176176 }
177177
178178 if (PacketReliability::isSequenced ($ packet ->reliability )){
179+ assert ($ packet ->orderChannel !== null && $ packet ->sequenceIndex !== null , 'These should have been set during decode ' );
179180 if ($ packet ->sequenceIndex < $ this ->receiveSequencedHighestIndex [$ packet ->orderChannel ] or $ packet ->orderIndex < $ this ->receiveOrderedIndex [$ packet ->orderChannel ]){
180181 //too old sequenced packet, discard it
181182 return ;
@@ -184,28 +185,30 @@ private function handleEncapsulatedPacket(EncapsulatedPacket $packet) : void{
184185 $ this ->receiveSequencedHighestIndex [$ packet ->orderChannel ] = $ packet ->sequenceIndex + 1 ;
185186 $ this ->handleEncapsulatedPacketRoute ($ packet );
186187 }elseif (PacketReliability::isOrdered ($ packet ->reliability )){
187- if ($ packet ->orderIndex === $ this ->receiveOrderedIndex [$ packet ->orderChannel ]){
188+ $ orderChannel = $ packet ->orderChannel ;
189+ assert ($ orderChannel !== null , 'This should have been set during decode ' );
190+ if ($ packet ->orderIndex === $ this ->receiveOrderedIndex [$ orderChannel ]){
188191 //this is the packet we expected to get next
189192 //Any ordered packet resets the sequence index to zero, so that sequenced packets older than this ordered
190193 //one get discarded. Sequenced packets also include (but don't increment) the order index, so a sequenced
191194 //packet with an order index less than this will get discarded
192- $ this ->receiveSequencedHighestIndex [$ packet -> orderChannel ] = 0 ;
193- $ this ->receiveOrderedIndex [$ packet -> orderChannel ] = $ packet ->orderIndex + 1 ;
195+ $ this ->receiveSequencedHighestIndex [$ orderChannel ] = 0 ;
196+ $ this ->receiveOrderedIndex [$ orderChannel ] = $ packet ->orderIndex + 1 ;
194197
195198 $ this ->handleEncapsulatedPacketRoute ($ packet );
196- $ i = $ this ->receiveOrderedIndex [$ packet -> orderChannel ];
197- for (; isset ($ this ->receiveOrderedPackets [$ packet -> orderChannel ][$ i ]); ++$ i ){
198- $ this ->handleEncapsulatedPacketRoute ($ this ->receiveOrderedPackets [$ packet -> orderChannel ][$ i ]);
199- unset($ this ->receiveOrderedPackets [$ packet -> orderChannel ][$ i ]);
199+ $ i = $ this ->receiveOrderedIndex [$ orderChannel ];
200+ for (; isset ($ this ->receiveOrderedPackets [$ orderChannel ][$ i ]); ++$ i ){
201+ $ this ->handleEncapsulatedPacketRoute ($ this ->receiveOrderedPackets [$ orderChannel ][$ i ]);
202+ unset($ this ->receiveOrderedPackets [$ orderChannel ][$ i ]);
200203 }
201204
202- $ this ->receiveOrderedIndex [$ packet -> orderChannel ] = $ i ;
203- }elseif ($ packet ->orderIndex > $ this ->receiveOrderedIndex [$ packet -> orderChannel ]){
204- if (count ($ this ->receiveOrderedPackets [$ packet -> orderChannel ]) >= self ::$ WINDOW_SIZE ){
205+ $ this ->receiveOrderedIndex [$ orderChannel ] = $ i ;
206+ }elseif ($ packet ->orderIndex > $ this ->receiveOrderedIndex [$ orderChannel ]){
207+ if (count ($ this ->receiveOrderedPackets [$ orderChannel ]) >= self ::$ WINDOW_SIZE ){
205208 //queue overflow for this channel - we should probably disconnect the peer at this point
206209 return ;
207210 }
208- $ this ->receiveOrderedPackets [$ packet -> orderChannel ][$ packet ->orderIndex ] = $ packet ;
211+ $ this ->receiveOrderedPackets [$ orderChannel ][$ packet ->orderIndex ] = $ packet ;
209212 }else {
210213 //duplicate/already received packet
211214 }
0 commit comments