dworkin / dgd

Dworkin's Game Driver, an object-oriented database management system originally used to run MUDs.
https://www.dworkin.nl/dgd/
GNU Affero General Public License v3.0
103 stars 31 forks source link

Telnet treats SGA as on by default #58

Closed nyankers closed 2 years ago

nyankers commented 3 years ago

Per RFC858, the default behavior should be that SGA is off and therefore IAC GA should be sent after every prompt.

Currently, dgd does the opposite of this. The default behavior is that SGA is on.

nyankers commented 3 years ago

Created a pull request to hopefully help highlight what's going on in code: #59

shentino commented 3 years ago

I do remember in the past that DGD's built in telnet support is a bit tricky. According to some docs there were compatibility issues with telnet clients to worry about.

Personally I always use binary mode connections and handle the telnet protocol myself in the LPC layer :P

nyankers commented 3 years ago

I'd be curious if there are any compatibility issues surrounding this in particular.

shentino commented 3 years ago

I'd be curious if there are any compatibility issues surrounding this in particular.

I honestly don't know, I just remember past discussions about it, probably on the DGD mailing list.

Nowadays might be different and I'm hardly likely to be the most qualified to offer an opinion on this, just mentioning what I remember from before

dworkin commented 3 years ago

This is a known issue, and for a short period in the past DGD has acted as you suggested, but it was such a problem for mud clients (varying from trying to show GA as a character to outright crashing) that I was forced to turn it off again.

The issue is not that GA and SGA are improperly implemented, but that clients ignore their existence entirely, and therefore DGD has to follow suit. Turning on SGA by default is a compromise that allows clients to explicitly request it.

dworkin commented 3 years ago

Note that even with your proposed change, DGD would not send IAC GA under all circumstances; it attempts to use IAC GA to make clear to the client that the characters following the last newline are a prompt and can be treated specially, which is already against the telnet standard.

nyankers commented 3 years ago

I'm curious what clients have issues with it. I should spend a day or so playing around with different clients sometime, and see how they work in practice. For now, I'll keep this as a local change for my own personal convenience until I can investigate it further. Thanks for the response!

rubyFeedback commented 2 years ago

Good old telnet ... reminds me of the 1990s. We accessed MUDs via green-font-colour on black background computers from the university. It even took me a while to figure out that I could echo-see my own commands!

In later years I switched to zmud and then tintin eventually - the latter mostly because it was simple. I kept all my aliases in a yaml file and autogenerated valid aliases via ruby. I think the young(er) whippersnappers today may not even use telnet anymore. Thus, they can never experience the joy and nostalgia of retro gaming... :)