ID:945431
 
Applies to:DM Language
Status: Open

Issue hasn't been assigned a status value.
The world.Reboot() command, and the fact that it reloads the DMB, is pretty cool.

However, the only way to identify the clients that reconnect is by client.key, which is not unique across reboot for telnet clients (Since they may reconnect in a different order than they did initially).

This is a bit of a problem for telnet, if you want to use world.Reboot() without forcing people to log in again (What in a MUD is known as a hotboot, or copyover).

I'm hoping that what DM does is fork a child process and let it inherit descriptors. In that case, the descriptor information will still allow BYOND to uniquely identify each telnet client as the same ones they were before.

If this is the case, can we get access to a client-variable that will uniquely identify one telnet IP from its next-of-kin with the same IP?
DD does not fork anything, but it at least should have a distinct port number for each telnet connection. I'm not sure of a backwards-compatible way we could alter the naming scheme though, and I wouldn't really love exposing the port number to the language itself.
In response to Lummox JR
Lummox JR wrote:
DD does not fork anything, but it at least should have a distinct port number for each telnet connection. I'm not sure of a backwards-compatible way we could alter the naming scheme though, and I wouldn't really love exposing the port number to the language itself.

Ideally, it would work such that the telnet key 123.456.789 and key 123.456.789 (2) would maintain the same keys after a reboot, even if key 123.456.789 (2) re-connected first. I'm not sure how this relates to backwards compatability, as I seriously doubt any game at all relies on the keys being basically randomized on reconnect.

As for the port number, I'm not really sure what harm could come of that - This information is already readily available on any OS; all it takes is a netstat -a. If I wanted to send garbage data or try stuff with an already-established connection, you can already do that without a problem. Regardless, if you really wanted to hide the port, just hash the IP+port. Even if a game had 10000 players, the chance of a collision would be miniscule. Call it 'telnet_id' :)
Well, presumably it could even be the computer_id of the client, as I guess for telnet it's random presently?
This is already possible with a C/C++ library. Someone remind me to add this feature.