recv_control always sent waiting cursors before the control queue, so on a slow link cursor moves at 30 Hz kept responses, events and Closing from ever leaving, until the queue hit CONTROL_CAP and the client was dropped. a cursor could also overtake an earlier client.left or client.joined.
cursors now sit in the control queue as one entry per run: a move merges into the entry at the back, and starts a new entry after any other frame. order is kept and cursors still coalesce.