Repository navigation
Harness: read past the family entry packets; client queue room for busy maps - #723
Merged
Merged
Conversation
…e game Every entry now ends with the Family window's INFO and entitlements (since #699), which the login's map-setup drain stopped at and left for the tests, so twelve tests that read the next packet strictly failed on opcode 95. The drain now waits for them and keeps them in WorldSession::family, leaving anything else in order; families.rs reads them from there.
Entering a map queues one message per NPC, player, mob and its control, reactor and drop while the client actor is still busy with the map change: about 190 for Kerning City's subway (103000103, 91 mobs), so a fresh field's spawns could pass the 256 cap and disconnect the player as a slow client (rank_rooms' 'connection closed during packet read').
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes the master suite failure on 47e520e (12 tests; last green 02fa988).
Harness: family packets on entering the game. Since #699, every entry ends with the Family window's INFO (0x5F) and entitlement list (0x64). After SetField, the login's map-setup drain stopped at the first of these and left it in the buffer, so tests that read the next packet strictly failed with "opcode 95 (Unknown)". The drain now waits for the entitlement list. It keeps INFO, the list and any SET_PRIVILEGE (0x67) in
WorldSession::family, and leaves any other packet that arrives first to be read, in order.families.rsreads its entry packets from there, andopcode_namenow names the three opcodes.Server: client queue capacity, 256 → 1024. rank_rooms' "connection closed during packet read" was the world disconnecting the player as a slow client ("Client queue full") on entering 103000103. That map has 91 mobs, so the join replay is about 190 messages (spawn plus control for each mob), queued while the client actor is still busy with the map change. A fresh field could push this past 256.
Verified on a fresh stack: rank_rooms, cash_shop, change_channel, invalid_target_map_transfer, local_chat_same_map, map_npc_spawn, movement_same_map, portal_map_transfer, presence_different_channels, presence_same_map, starting_equipment, whisper_between_two_players, families (5), guilds (7) and buddy_list all pass, and the world log has no "queue full".