diff options
author | (no author) <(no author)@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2005-01-27 15:53:28 +0000 |
---|---|---|
committer | (no author) <(no author)@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2005-01-27 15:53:28 +0000 |
commit | 8f3d851c422e444510b659a2f4f850cb5036e604 (patch) | |
tree | 95655c033a5c9b4ff4f88d1738899ea703918305 /src | |
parent | 33794f0169fff0884af02c9487a8660572de94d5 (diff) | |
download | hercules-8f3d851c422e444510b659a2f4f850cb5036e604.tar.gz hercules-8f3d851c422e444510b659a2f4f850cb5036e604.tar.bz2 hercules-8f3d851c422e444510b659a2f4f850cb5036e604.tar.xz hercules-8f3d851c422e444510b659a2f4f850cb5036e604.zip |
Kick all characters when the char server disconnects from the map server
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@1005 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src')
-rw-r--r-- | src/map/chrif.c | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/src/map/chrif.c b/src/map/chrif.c index cda7b42e2..185fe307d 100644 --- a/src/map/chrif.c +++ b/src/map/chrif.c @@ -992,6 +992,27 @@ int chrif_char_online(struct map_session_data *sd) return 0; } +/*========================================== + * + *------------------------------------------ + */ +int chrif_disconnect_sub(struct map_session_data* sd,va_list va) { + clif_authfail_fd(sd->fd,1); + map_quit(sd); + return 0; +} + +int chrif_disconnect(int fd) { + if(fd == char_fd) { + char_fd = -1; + sprintf(tmp_output,"Map Server disconnected from Char Server.\n\n"); + ShowWarning(tmp_output); + clif_foreachclient(chrif_disconnect_sub); + chrif_connected = 0; + } + close(fd); + return 0; +} /*========================================== * @@ -1003,13 +1024,8 @@ int chrif_parse(int fd) // only char-server can have an access to here. // so, if it isn't the char-server, we disconnect the session (fd != char_fd). if (fd != char_fd || session[fd]->eof) { - if (fd == char_fd) { - if (chrif_connected == 1) { - sprintf(tmp_output,"Map Server disconnected from Char Server.\n\n"); - ShowWarning(tmp_output); - chrif_connected=0; - } - char_fd = -1; + if (fd == char_fd && chrif_connected == 1) { + chrif_disconnect (fd); // check_connect_char_server(0, 0, 0, 0); } close(fd); |