-
Notifications
You must be signed in to change notification settings - Fork 1k
Packet Corruption on 64bit #50
Comments
I did some logging and found that the issue is only apparent when the packets are split, and when the first fragment isn't received first. It seems to be that split packets aren't being reconstructed in the correct order, but in the order in which the packets are received. I've changed the BuildPacketFromSplitPacketList function to construct the packets in order splitPacketIndex - will report whether this fixes it. |
Hi @garrynewman, If you could contribute a patch/pull request that would be great - I'm using RakNet in an application that will often have packets > MTU so I'm very interested in any fixes here. Regards. |
Hey @garrynewman Did you have any success with your fixes? Note, the latest source already appears to use splitPacketIndex when reconstructing the packets:
Regards. |
Yeah my fix did fix it for me. Here's what I changed in BuildPacketFromSplitPacketList:
to
|
Having a serious issue like this and no replies from the developers doesn't exactly make RakNet look very good. |
it, is the code of previous version, it think all split packet have the same size, it store the size into splitPacketPartLength=BITS_TO_BYTES(splitPacketChannel->firstPacket->dataBitLength); and fill the memory with and use splitPacketIndex to put the split pack in this position. but i am not sure this code it is ok and all split packet have the same size. ----------- CODE -----------------------------
#endif |
I might want to wrape that code with ``` |
sorry i only speak a little english |
Put ``` at the start and end of your code. |
That's almost right. You have to include new lines before and after it. So like ''' |
sorry i try it,y put ''' but it is not ok |
It's ```, I just put ''' as an example so it didn't show as code. You still have to put a new line before your last one. |
in the code of GARRY i dont understan how this part of the code it is possible if ( splitPacket == NULL ) how ist si posible not found splitPacket by splitPacketIndex |
Packet editing? Packet corruption? Dunno. |
i think if it not found splitPacket , it is a error and this mesage must be discard. |
Can this be fixed and officially be committed on the repo? Ever since Oculus bought it there are no big updates... |
RakNet has been abandoned, as is shown on the website. |
Maybe Oculus, the new owner of RakNet, is too busy with VR to care about this project for now... |
Fine, Oculus shall then assign someone repo admin rights so he can process pull requests. |
I'm not really sure why they bought something to leave it die. It certainly at least needs someone to process pull requests, so we can include fixes like Garry's. |
Maybe someone with the know-how will start a community fork Thanks for the fix @garrynewman! I was beating my head against this bug for hours :( |
I've got a fork ( https://github.com/larku/RakNet ) that includes most of the pending pull requests from the official if that's of use to you. I'm also happy to accept pull requests into this fork. |
Seems the problem described in this ticket is still present in your fork. |
Hey @Cleroth, that fork includes: Which should address this. |
Oh... so it was fixed long ago in a different way... |
…r-gitignore Added gitignore for top-level 'build' directory since this is fairly …
I've been having issues where packets are apparently corrupted. This seems to only affect about 1 in 50 people, who it seems to happen to quite regularly. I've added CRCs to both datagrams and packet content, the CRC on the datagrams always pass. The CRC on the packet content itself fails very occasionally.
This apparently happens when packet size > MTU. Could there be an issue when sending lots of data to 100+ connected clients where the client would reconstruct packets wrong?
The text was updated successfully, but these errors were encountered: