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

[Bug Fix] Fix for random disconnects when a large number of guild members zone or disconnect #4402

Merged
merged 1 commit into from
Jul 10, 2024

Conversation

neckkola
Copy link
Contributor

@neckkola neckkola commented Jul 5, 2024

Description

Reports from multiple servers indicate that when a large number of guild members zone, or /ex to disconnect, some guild members will go linkdead and disconnect. Reports from both PEQ and EZ

It appears that the zone process is becoming overwhelmed with packet processing regarding sending guild member status (zone, time, etc). When an impacted client de-guilds, the problem is no longer experienced.

Fix

The destructor for Client was sending a guild member status packet with a zone_id = 0 to indicate that the client was offline. This packet would then be sent to all zone servers to notify guild players. This was originally established to notify clients when a player logged. However, if the client was simply zoning, the packet was still sent, even though the CompleteConnect function would immediately send another packet to indicate the new zone of the player.

Therefore, the destructor packet was modified to only be sent when the player is not zoning. This reduces the packet load by 50%, a significant reduction for large guilds.

I also confirmed that the db update for online status is occurring as designed and should not be an issue. (first logon, and a disconnect).

I believe that this will resolve the random nature of this issue.

Type of change

  • Bug fix (non-breaking change which fixes an issue)

Testing

I monitored packets being sent when a guild member is logged in, and another guild member zones. When zoning, player A would receive 2 packets, one with a zone id of 0, another with the proper zone id. With the fix, player A receives a single packet with the updated zone id.

I logged clients into the arena, bazaar and crescent reach and monitored packets and the guild window to ensure it continues to function as expected.

Clients tested:
RoF2

Checklist

  • I have tested my changes
  • I have performed a self-review of my code. Ensuring variables, functions and methods are named in a human-readable way, comments are added only where naming of variables, functions and methods can't give enough context.
  • I own the changes of my code and take responsibility for the potential issues that occur

@Akkadius Akkadius merged commit 1e41c55 into EQEmu:master Jul 10, 2024
1 check passed
catapultam-habeo pushed a commit to The-Heroes-Journey-EQEMU/Server that referenced this pull request Jul 12, 2024
catapultam-habeo pushed a commit to The-Heroes-Journey-EQEMU/Server that referenced this pull request Jul 14, 2024
@joligario joligario mentioned this pull request Jul 30, 2024
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.

3 participants