in-game player swapping

This idea has floated around for quite a long time and I have said 324723 times that I will test it. I did so yesterday, and this is how it goes.

When a game begins, players get a message from the server along these lines:

(taken from mittens logs)

The gpid argument to the GO command is a code that the client can resend on login if he/she disconnects. It goes in the HELO command and looks like this:

On receipt of this the Tenhou server will thrust you back into the game so that you can resume. This begs the question of what happens if you try rejoining with a different ID. Well, the answer is that it can and does work to a degree.

Suppose that a game is started with ID1. ID1 then disconnects and ID2 logs in with the gpid from ID1's game. ID2 will then assume ID1's role seamlessly and be able to play in the game fine. What happens though is that ID1 keeps the change in ranking, and not ID2.

That's the theory, anyway.

Something which I can't really explain is that the ID2 that I used is now dead. That is, on login Tenhou sends the following error:

E1003 IDが正しくありません
Invalid ID

I have no idea whether or not this is a fluke or something I did wrong. I'll try and repeat it to see what happens. By the way, the game did not show up in the game records that are published. I hope the other players didn't lose their IDs...

Next to test: what happens if ID1 stays in game and ID2 tries to join with the gpid? Update: Nothing special happens, it just disconnects ID1 in favour of ID2.