Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix for #130: Turkish ISP deletes empty UDP Packages #162

Merged
merged 2 commits into from
Dec 20, 2022
Merged

Conversation

4real
Copy link
Contributor

@4real 4real commented Dec 20, 2022

Decided to send the auth token again rather than a fixed 5 byte message. Cost is minimal after all.

…in the auth bytes, to purposefully increase the UDP payload size from 1 to 8 bytes, in order to pass the filtering of some ISPs.
@4real 4real merged commit abded8b into master Dec 20, 2022
@4real 4real deleted the fix/hello branch December 20, 2022 13:44
udpSocket.ReceiveTimeout = 0; //Reset to infinite
}

bool failedUdpReceive = receivedUdp != 8;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@4real this is a breaking change. It will stop any older versions of DR from being able to connect to the latest server which I imagine will be an issue for a lot of users.

The single byte that was there before was always intended to be a version number so that changes could be made like this one. Maybe add a new version of the auth handshake and retain support for the old version?

Copy link
Contributor Author

@4real 4real Dec 20, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is that a real use case though? I mean, using version X server with version Y client. My impression is one quite often tries to update both client and server together because game protocols tend to be incompatible, and because of the ease of updating it's not worth maintaining backwards compatibility. Although it's true a disconnection is going to happen without a message in this case.

If there are users that need X > Y backwards compatibility (as opposed to X < Y), then single byte is good enough.

Some kind of longer DR2 + user version strings are probably a good idea anyway. Although exactly how and what to expose to the user is a bigger discussion.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NM I see that guy's comment on Discord. So A) people have old DR2 server executables lingering around which must be accounted for, and B) there I should probably update the "compatibility"/"legacy" listener whatever it's called to make sure it also runs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants