3.1.5.3 Client Disconnects from Chat Session

When a client disconnects, the server makes an announcement to remaining clients, and then the departing client disconnects.

  • The departing client issues a TRANS_USERDATA_END_OF_STREAM packet to the server and the other existing clients in the chat session. A TRANS_USERDATA_END_OF_STREAM message SHOULD be a separate packet without a payload; however, it MAY be the final queued data packet. After sending the TRANS_USERDATA_END_OF_STREAM message, the departing client MUST NOT send additional DFRAMEs other than retries. The client MUST be prepared to continue receiving TRANS_COMMAND_SACK packets until it receives the TRANS_USERDATA_END_OF_STREAM from the server and other existing clients in the DXDiag chat session.

  • The server and each existing client respond with four TRANS_COMMAND_SACK packets and a TRANS_USERDATA_END_OF_STREAM packet (in any order).

  • The departing client returns four TRANS_COMMAND_SACK packets to the server and each existing client before disconnecting.

  • If other clients are present in the game session, the server sends each one a TRANS_USERDATA_DESTROY_PLAYER packet to remove the departing client from their name table. This can happen before the server receives the final TRANS_COMMAND_SACK packet from the departing client.

  • Each remaining client sends the server a TRANS_USERDATA_REQ_INTEGRITY_CHECK and TRANS_COMMAND_SACK packet to acknowledge the removal of the departed client.