I know I posted on this a while back, but I think I've figured out an accurate way to describe the problem. When I copyover, and everything works, then all players stay connected and are just fine, but the mud stop's opening new connections, thus not allowing players to connect upon warm boot. Anyways, do you know of anyways this could be linked to anything, or where to look at least. Its kinda getting on my nerves, but not using copyover wouldn't be the worst thing in the world.
As always, thanks for the help.
The ability to allow new players to connect is handled by the single socket that the MUD is "listening" on. Look very closely at how that is handled after a copyover.
In fact, although I don't know the copyover code at all, that is a socket that could simply be re-established.
look for a line similar to this in your copyover code:
execl( EXE_FILE, "smaug", buf, "copyover", buf2, buf3, (char *)NULL );
If you only have one connection port, it'll likely look almost identical to my line. buf and buf2 (they may be called 'port' and 'control') are the important arguments. Those vars are passed on to your new instance of smaug to use as the port and control respectively. Without them, or if they are set to the wrong values, the mud will be listening on the wrong port for new connections. Hopefully that helps. Also, check comm.c for init_socket this should NOT be executed on copyover.
That helps me spark some ideas. I just have another question.
execl( EXE_FILE, "smaug", buf, "copyover", buf2, buf3, (char *)NULL );
In that line, in my copyover code, I changed the smaug. Is the smaug the name of the top folder or name of the exe file? I'm running SWR, so mine has a few more buf's, such as buf4, and buf5, but I don't think those would harm anything. Should I take them out since I'm not using them? And should I changed the smaug to my exe filename or top folder?
As always, you have my thanks for all the help. :)
It's the executable. Look directly above the execl line to see what those bufs are being set too. Again, buf and buf2 are the important ones. Here's my modified code.
sprintf( buf, "%d", port );
sprintf( buf2, "%d", control );
strcpy ( buf3, "-1" );
execl( EXE_FILE, "swreality", buf, "copyover", buf2, buf3, (char *)NULL );
Well, I played with it a bit, and both the folder and the executable work, but I left it with the executable. Anyways, the problem turned out to be the extra bufs, such as buf3, buf4, and buf5. All I did is comment out the lines above that gave them values and it worked fine. I completely forgot that since I don't use them, it was assigning values that are nothing since it just copys values from before. I know thats like a jumble of words, but if finally works. Thanks!