eihrul 20 anni fa
parent
commit
33974e01a2
2 ha cambiato i file con 11 aggiunte e 8 eliminazioni
  1. 1 0
      peer.c
  2. 10 8
      protocol.c

+ 1 - 0
peer.c

@@ -558,6 +558,7 @@ enet_peer_queue_incoming_command (ENetPeer * peer, const ENetProtocol * command,
 
     switch (command -> header.command)
     {
+    case ENET_PROTOCOL_COMMAND_SEND_FRAGMENT:
     case ENET_PROTOCOL_COMMAND_SEND_RELIABLE:
        for (currentCommand = enet_list_previous (enet_list_end (& channel -> incomingReliableCommands));
             currentCommand != enet_list_end (& channel -> incomingReliableCommands);

+ 10 - 8
protocol.c

@@ -396,17 +396,19 @@ enet_protocol_handle_send_fragment (ENetHost * host, ENetPeer * peer, const ENet
         fragmentCount != startCommand -> fragmentCount)
       return;
     
-    if ((startCommand -> fragments [fragmentNumber / 32] & (1 << fragmentNumber)) == 0)
-      -- startCommand -> fragmentsRemaining;
+    if ((startCommand -> fragments [fragmentNumber / 32] & (1 << (fragmentNumber & 32))) == 0)
+    {
+       -- startCommand -> fragmentsRemaining;
 
-    startCommand -> fragments [fragmentNumber / 32] |= (1 << fragmentNumber);
+       startCommand -> fragments [fragmentNumber / 32] |= (1 << (fragmentNumber & 32));
 
-    if (fragmentOffset + fragmentLength > startCommand -> packet -> dataLength)
-      fragmentLength = startCommand -> packet -> dataLength - fragmentOffset;
+       if (fragmentOffset + fragmentLength > startCommand -> packet -> dataLength)
+         fragmentLength = startCommand -> packet -> dataLength - fragmentOffset;
 
-    memcpy (startCommand -> packet -> data + fragmentOffset,
-            (enet_uint8 *) command + sizeof (ENetProtocolSendFragment),
-            fragmentLength);
+       memcpy (startCommand -> packet -> data + fragmentOffset,
+               (enet_uint8 *) command + sizeof (ENetProtocolSendFragment),
+               fragmentLength);
+    }
 }
 
 static void