ID:260939
 
Love:
Zoom
-Although it really does highlight how weak DM's icon editor is when used on larger than 32x32 arranges.
GREY (FINALLY ENGLISH PEOPLE ARE TAKING OVER)
ID Issue fixed on winclone()
The ability to force shutdown DD after the world is closed.


Have issues with:

Mainly just the first two

The check against possible DoS attacks on the server will no longer be done if the connection comes from world.internet_address or world.address. (Gakumerasara)

world.OpenPort() is now called after a reboot if the world is being hosted. (SuperAntx)


Couldn't these of both been made optional? Now I'm going to need to re-write a large portion of my Server Manager, since world.OpenPort() right on reboot causes infinite loops, and DoS protection (Part of it anyway) relied on the built in one, even when sent from the world.interet_address, since my system leaves a reply param which is read and re-sent around parts of my Server Manager, now anyone can set up a 1,000,000 Export call loop and crash me.
Sigh.

-El Wookie.
I mean this in the most respectful way possible, but if you're re-writing big old chunks of code because of a change to OpenPort(), you may want to invest a little time in separating out your functional areas a bit more. I would expect that it would be more effort for them to make an option for this (configured how?) than it should take for all serious users of the hook to change their bits and bobs.

As for the reply / DoS thing, can you share the design in more detail? I have no doubt it could be improved quite easily.
In response to Stephen001
Well I've been experiencing VERY weird results since the 481 build.

Previously there was an option to completely reject OpenPort() calls unless it could correctly connect to the Server Manager, this allowed me to prevent pirate servers easily, well since 481, all kinds of loopy business has been happening, and it directly relates to the DoS issue too, here's a breif breakdown of what happens:

First: User hosts after the world is booted up, and it sends it to the Server Manager, which has no knowledge of the server up until that point.

Second: The Server Manager reads this, and makes a new World entry for it, along with replying to give the A-Ok on finishing up with OpenPort().

Here's where things go a little insane, and I don't even understand how.

Third: Host reboots, and OpenPort() is re-called, and the information sent again to the Server Manager.

Fourth: For whatever bat**** reason, it completely bypasses my pre-existing check for duplicate worlds, and spawns a new one, but never sends the reply because the world, to the Manager, is already hosted.

Fifth: The game re-sends the call after a minute of no reply, just to double check, here's where the real insane stuff happens.

Sixth: For reasons I cannot fathom, the world Reboots again.

Seventh: Now with that world infinitly Rebooting, the Server Manager is getting spammed with Export calls, which, when detected as being overflow, my Server Manager sends out to null space and retrieves it after a set period of time, and repeats this until there's no more Exports floating around. Unfortunatly since there's no more world.internet_address DoS protection, this fails and the Server Manager starts to come to a crippling slowdown.

Eigth: Somehow during all of this, a Reboot call is fired at the Server Manager, which is hooked up to itself, and hence we proceed from step Three again. Since the Server Manager rebooted, it sends that same mysterious Reboot call to all connected games, putting them all in the infinite Reboot loop too.

Weirdness: It's not actually Reboot() being called, if I re-define Reboot() to do nothing, the worlds still reboot.



All of this for two features which, while I can see the practicality, aren't completely required in any way?
In response to El Wookie
The server manager spam issue would have been identical in older versions prior to the DoS check, and having the DoS check trigger in this case would be just as bad, so that change is really irrelevant.

The only issue you seem to be having is with world.OpenPort() now being called on reboot. It seems you have some kind of logic error present that's causing most of the problems. You mentioned the world is rebooting for reasons you can't pin down. If the reboots are not being initiated by your code, then that has to be done by some kind of signal--I assume this is a Linux server, since Windows doesn't do signals as such. If your server is being sent a reboot signal, you need to find out what part of your OS is responsible for that.

Lummox JR
El Wookie wrote:
Love:
GREY (FINALLY ENGLISH PEOPLE ARE TAKING OVER)
This 'bug' (and documentation error) has existed for so long, I don't know why I'm the first one to submit it.
Byond is looking really nice with the icon editor zooming.