This PR addresses a couple of issues in the implementation of secure chat handling in Velocity:
Any command with a 'last seen' update (every command pre-1.20.5) could not be cancelled by the proxy
This PR introduces a system to 'delay' these acknowledgements to ensure that we can always pass a state to the server that is consistent with messages signed by the client
Modified or spoofed commands would not have a last seen update attached, which would be rejected by pre-1.20.5 servers
Most of the diff is refactoring ChatQueue to be able to capture the state that we need - recommend to review commit-by-commit.
This potentially resolves some cases of #1127 - but it's hard to say given possible interaction from other plugins and servers, and would need to get some specific testing on that. However, from personal experience running these patches on a 1.20.4 server over a few months - we haven't been able to reproduce any issues. 🙂
This PR addresses a couple of issues in the implementation of secure chat handling in Velocity:
Most of the diff is refactoring
ChatQueue
to be able to capture the state that we need - recommend to review commit-by-commit.This potentially resolves some cases of #1127 - but it's hard to say given possible interaction from other plugins and servers, and would need to get some specific testing on that. However, from personal experience running these patches on a 1.20.4 server over a few months - we haven't been able to reproduce any issues. 🙂
Thanks!