diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 3ff38b4209..bae718cf6d 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,9 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. 2006/07/07 + * Now, when the login-char connection is cut, the char-server won't set + everyone offline on reconnect, instead it will send the list of online + accounts to the login server. [Skotlex] * Modified the error on the char-sql server to set chars online when it receives a save packet from a character tagged as offline (until it can be figured out why this is happening) [Skotlex] diff --git a/src/char/char.c b/src/char/char.c index 7745540371..1556c10a33 100644 --- a/src/char/char.c +++ b/src/char/char.c @@ -1826,6 +1826,8 @@ static int char_delete(struct mmo_charstatus *cs) { return 0; } +int send_accounts_tologin(int tid, unsigned int tick, int id, int data); + int parse_tologin(int fd) { int i; struct char_session_data *sd; @@ -1862,8 +1864,15 @@ int parse_tologin(int fd) { exit(1); } else { ShowStatus("Connected to login-server (connection #%d).\n", fd); - if (kick_on_disconnect) - set_all_offline(); +// Don't set them offline as there's no packet to tell the map server +// to kick everyone out. Also, a disconnection from the login server is +// NOT something serious to the data integrity as a char-map disconnect +// is. [Skotlex] +// if (kick_on_disconnect) +// set_all_offline(); +// However, on reconnect, DO send our connected accounts to login. + send_accounts_tologin(-1, gettick(), 0, 0); + // if no map-server already connected, display a message... for(i = 0; i < MAX_MAP_SERVERS; i++) if (server_fd[i] >= 0 && server[i].map[0]) // if map-server online and at least 1 map diff --git a/src/char_sql/char.c b/src/char_sql/char.c index 7c031bf163..fb024a4eaa 100644 --- a/src/char_sql/char.c +++ b/src/char_sql/char.c @@ -1771,6 +1771,8 @@ int mmo_char_send006b(int fd, struct char_session_data *sd) { return 0; } +int send_accounts_tologin(int tid, unsigned int tick, int id, int data); + int parse_tologin(int fd) { int i; struct char_session_data *sd; @@ -1810,8 +1812,15 @@ int parse_tologin(int fd) { //exit(1); //fixed for server shutdown. }else { ShowStatus("Connected to login-server (connection #%d).\n", fd); - if (kick_on_disconnect) - set_all_offline(); +// Don't set them offline as there's no packet to tell the map server +// to kick everyone out. Also, a disconnection from the login server is +// NOT something serious to the data integrity as a char-map disconnect +// is. [Skotlex] +// if (kick_on_disconnect) +// set_all_offline(); +// However, on reconnect, DO send our connected accounts to login. + send_accounts_tologin(-1, gettick(), 0, 0); + // if no map-server already connected, display a message... for(i = 0; i < MAX_MAP_SERVERS; i++) if (server_fd[i] > 0 && server[i].map[0]) // if map-server online and at least 1 map