Commit dd3618c0 authored by nanahira's avatar nanahira

label all server kicked sockets

parent 613ecb31
...@@ -672,16 +672,23 @@ CLIENT_kick = global.CLIENT_kick = (client) -> ...@@ -672,16 +672,23 @@ CLIENT_kick = global.CLIENT_kick = (client) ->
if room if room
room.disconnect(client) room.disconnect(client)
else else
client.server.destroy() SERVER_kick(client.server)
else else
client.destroy() client.destroy()
return true return true
SERVER_kick = global.SERVER_kick = (server) ->
if !client
return false
server.system_kicked = true
server.destroy()
return true
release_disconnect = global.release_disconnect = (dinfo, reconnected) -> release_disconnect = global.release_disconnect = (dinfo, reconnected) ->
if dinfo.old_client and !reconnected if dinfo.old_client and !reconnected
dinfo.old_client.destroy() dinfo.old_client.destroy()
if dinfo.old_server and !reconnected if dinfo.old_server and !reconnected
dinfo.old_server.destroy() SERVER_kick(dinfo.old_server)
clearTimeout(dinfo.timeout) clearTimeout(dinfo.timeout)
return return
...@@ -721,7 +728,7 @@ CLIENT_reconnect_register = global.CLIENT_reconnect_register = (client, room_id, ...@@ -721,7 +728,7 @@ CLIENT_reconnect_register = global.CLIENT_reconnect_register = (client, room_id,
} }
tmot = setTimeout(() -> tmot = setTimeout(() ->
room.disconnect(client, error) room.disconnect(client, error)
#dinfo.old_server.destroy() #SERVER_kick(dinfo.old_server)
return return
, settings.modules.reconnect.wait_time) , settings.modules.reconnect.wait_time)
dinfo.timeout = tmot dinfo.timeout = tmot
...@@ -879,7 +886,7 @@ CLIENT_reconnect = global.CLIENT_reconnect = (client) -> ...@@ -879,7 +886,7 @@ CLIENT_reconnect = global.CLIENT_reconnect = (client) ->
dinfo.old_client.server = null dinfo.old_client.server = null
current_old_server.client = null current_old_server.client = null
current_old_server.had_new_reconnection = true current_old_server.had_new_reconnection = true
current_old_server.destroy() SERVER_kick(current_old_server)
client.established = true client.established = true
client.pre_establish_buffers = [] client.pre_establish_buffers = []
if room.random_type or room.arena if room.random_type or room.arena
...@@ -908,7 +915,7 @@ CLIENT_kick_reconnect = global.CLIENT_kick_reconnect = (client, deckbuf) -> ...@@ -908,7 +915,7 @@ CLIENT_kick_reconnect = global.CLIENT_kick_reconnect = (client, deckbuf) ->
CLIENT_kick(player) CLIENT_kick(player)
current_old_server.client = null current_old_server.client = null
current_old_server.had_new_reconnection = true current_old_server.had_new_reconnection = true
current_old_server.destroy() SERVER_kick(current_old_server)
client.established = true client.established = true
client.pre_establish_buffers = [] client.pre_establish_buffers = []
if room.random_type or room.arena if room.random_type or room.arena
...@@ -1388,7 +1395,7 @@ class Room ...@@ -1388,7 +1395,7 @@ class Room
index = _.indexOf(@watchers, client) index = _.indexOf(@watchers, client)
@watchers.splice(index, 1) unless index == -1 @watchers.splice(index, 1) unless index == -1
#client.room = null #client.room = null
client.server.destroy() SERVER_kick(client.server)
else else
#log.info(client.name, @duel_stage != ygopro.constants.DUEL_STAGE.BEGIN, @disconnector, @random_type, @players.length) #log.info(client.name, @duel_stage != ygopro.constants.DUEL_STAGE.BEGIN, @disconnector, @random_type, @players.length)
if @arena and @duel_stage == ygopro.constants.DUEL_STAGE.BEGIN and @disconnector != 'server' and !@arena_score_handled if @arena and @duel_stage == ygopro.constants.DUEL_STAGE.BEGIN and @disconnector != 'server' and !@arena_score_handled
...@@ -1423,7 +1430,7 @@ class Room ...@@ -1423,7 +1430,7 @@ class Room
#client.room = null #client.room = null
this.delete() this.delete()
if !CLIENT_reconnect_unregister(client, false, true) if !CLIENT_reconnect_unregister(client, false, true)
client.server.destroy() SERVER_kick(client.server)
return return
start_death: () -> start_death: () ->
...@@ -1508,7 +1515,7 @@ net.createServer (client) -> ...@@ -1508,7 +1515,7 @@ net.createServer (client) ->
if !CLIENT_reconnect_register(client, client.rid) if !CLIENT_reconnect_register(client, client.rid)
room.disconnect(client) room.disconnect(client)
else if !client.had_new_reconnection else if !client.had_new_reconnection
client.server.destroy() SERVER_kick(client.server)
return return
client.on 'error', (error)-> client.on 'error', (error)->
...@@ -1525,7 +1532,7 @@ net.createServer (client) -> ...@@ -1525,7 +1532,7 @@ net.createServer (client) ->
if !CLIENT_reconnect_register(client, client.rid, error) if !CLIENT_reconnect_register(client, client.rid, error)
room.disconnect(client, error) room.disconnect(client, error)
else if !client.had_new_reconnection else if !client.had_new_reconnection
client.server.destroy() SERVER_kick(client.server)
return return
client.on 'timeout', ()-> client.on 'timeout', ()->
...@@ -1540,7 +1547,7 @@ net.createServer (client) -> ...@@ -1540,7 +1547,7 @@ net.createServer (client) ->
#log.info "server closed", server.client.name, had_error #log.info "server closed", server.client.name, had_error
room=ROOM_all[server.client.rid] room=ROOM_all[server.client.rid]
#log.info "server close", server.client.ip, ROOM_connected_ip[server.client.ip] #log.info "server close", server.client.ip, ROOM_connected_ip[server.client.ip]
room.disconnector = 'server' if room room.disconnector = 'server' if room and !server.system_kicked
unless server.client.closed unless server.client.closed
ygopro.stoc_send_chat(server.client, "${server_closed}", ygopro.constants.COLORS.RED) ygopro.stoc_send_chat(server.client, "${server_closed}", ygopro.constants.COLORS.RED)
#if room and settings.modules.replay_delay #if room and settings.modules.replay_delay
...@@ -1556,7 +1563,7 @@ net.createServer (client) -> ...@@ -1556,7 +1563,7 @@ net.createServer (client) ->
#log.info "server error", client.name, error #log.info "server error", client.name, error
room=ROOM_all[server.client.rid] room=ROOM_all[server.client.rid]
#log.info "server err close", client.ip, ROOM_connected_ip[client.ip] #log.info "server err close", client.ip, ROOM_connected_ip[client.ip]
room.disconnector = 'server' if room room.disconnector = 'server' if room and !server.system_kicked
unless server.client.closed unless server.client.closed
ygopro.stoc_send_chat(server.client, "${server_error}: #{error}", ygopro.constants.COLORS.RED) ygopro.stoc_send_chat(server.client, "${server_error}: #{error}", ygopro.constants.COLORS.RED)
#if room and settings.modules.replay_delay #if room and settings.modules.replay_delay
...@@ -1750,7 +1757,7 @@ net.createServer (client) -> ...@@ -1750,7 +1757,7 @@ net.createServer (client) ->
#log.info(looplimit) #log.info(looplimit)
if looplimit > 800 if looplimit > 800
log.info("error stoc", server.client.name) log.info("error stoc", server.client.name)
server.destroy() SERVER_kick(server)
break break
if server.client and !server.client.closed if server.client and !server.client.closed
server.client.write buffer for buffer in datas server.client.write buffer for buffer in datas
......
// Generated by CoffeeScript 1.12.7 // Generated by CoffeeScript 1.12.7
(function() { (function() {
var CLIENT_get_authorize_key, CLIENT_get_kick_reconnect_target, CLIENT_heartbeat_register, CLIENT_heartbeat_unregister, CLIENT_import_data, CLIENT_is_able_to_kick_reconnect, CLIENT_is_able_to_reconnect, CLIENT_is_banned_by_mc, CLIENT_is_player, CLIENT_kick, CLIENT_kick_reconnect, CLIENT_pre_reconnect, CLIENT_reconnect, CLIENT_reconnect_register, CLIENT_reconnect_unregister, CLIENT_send_pre_reconnect_info, CLIENT_send_reconnect_info, CLIENT_send_replays, Cloud_replay_ids, ROOM_all, ROOM_bad_ip, ROOM_ban_player, ROOM_clear_disconnect, ROOM_connected_ip, ROOM_find_by_name, ROOM_find_by_pid, ROOM_find_by_port, ROOM_find_by_title, ROOM_find_or_create_ai, ROOM_find_or_create_by_name, ROOM_find_or_create_random, ROOM_player_flee, ROOM_player_get_score, ROOM_player_lose, ROOM_player_win, ROOM_players_banned, ROOM_players_oppentlist, ROOM_players_scores, ROOM_unwelcome, ROOM_validate, Room, SERVER_clear_disconnect, SOCKET_flush_data, _, addCallback, auth, badwords, ban_user, bunyan, challonge, challonge_cache, challonge_module_name, challonge_queue_callbacks, chat_color, config, cppversion, crypto, date, deck_name_match, default_config, default_data, dialogues, disconnect_list, dns, duel_log, e, exec, execFile, fs, geoip, get_callback, get_memory_usage, http, http_server, https, https_server, import_datas, imported, is_requesting, j, l, len, len1, len2, lflists, list, loadJSON, load_dialogues, load_tips, log, long_resolve_cards, m, memory_usage, merge, moment, net, oldbadwords, oldconfig, olddialogues, oldduellog, oldtips, options, os, path, pgClient, pg_client, pg_query, plugin_filename, plugin_list, plugin_path, real_windbot_server_ip, rebooted, redis, redisdb, ref, ref1, refresh_challonge_cache, release_disconnect, report_to_big_brother, request, requestListener, roomlist, setting_change, setting_save, settings, spawn, spawnSync, spawn_windbot, tips, url, users_cache, wait_room_start, wait_room_start_arena, windbot_looplimit, windbot_process, windbots, ygopro, zlib; var CLIENT_get_authorize_key, CLIENT_get_kick_reconnect_target, CLIENT_heartbeat_register, CLIENT_heartbeat_unregister, CLIENT_import_data, CLIENT_is_able_to_kick_reconnect, CLIENT_is_able_to_reconnect, CLIENT_is_banned_by_mc, CLIENT_is_player, CLIENT_kick, CLIENT_kick_reconnect, CLIENT_pre_reconnect, CLIENT_reconnect, CLIENT_reconnect_register, CLIENT_reconnect_unregister, CLIENT_send_pre_reconnect_info, CLIENT_send_reconnect_info, CLIENT_send_replays, Cloud_replay_ids, ROOM_all, ROOM_bad_ip, ROOM_ban_player, ROOM_clear_disconnect, ROOM_connected_ip, ROOM_find_by_name, ROOM_find_by_pid, ROOM_find_by_port, ROOM_find_by_title, ROOM_find_or_create_ai, ROOM_find_or_create_by_name, ROOM_find_or_create_random, ROOM_player_flee, ROOM_player_get_score, ROOM_player_lose, ROOM_player_win, ROOM_players_banned, ROOM_players_oppentlist, ROOM_players_scores, ROOM_unwelcome, ROOM_validate, Room, SERVER_clear_disconnect, SERVER_kick, SOCKET_flush_data, _, addCallback, auth, badwords, ban_user, bunyan, challonge, challonge_cache, challonge_module_name, challonge_queue_callbacks, chat_color, config, cppversion, crypto, date, deck_name_match, default_config, default_data, dialogues, disconnect_list, dns, duel_log, e, exec, execFile, fs, geoip, get_callback, get_memory_usage, http, http_server, https, https_server, import_datas, imported, is_requesting, j, l, len, len1, len2, lflists, list, loadJSON, load_dialogues, load_tips, log, long_resolve_cards, m, memory_usage, merge, moment, net, oldbadwords, oldconfig, olddialogues, oldduellog, oldtips, options, os, path, pgClient, pg_client, pg_query, plugin_filename, plugin_list, plugin_path, real_windbot_server_ip, rebooted, redis, redisdb, ref, ref1, refresh_challonge_cache, release_disconnect, report_to_big_brother, request, requestListener, roomlist, setting_change, setting_save, settings, spawn, spawnSync, spawn_windbot, tips, url, users_cache, wait_room_start, wait_room_start_arena, windbot_looplimit, windbot_process, windbots, ygopro, zlib;
net = require('net'); net = require('net');
...@@ -854,7 +854,7 @@ ...@@ -854,7 +854,7 @@
if (room) { if (room) {
room.disconnect(client); room.disconnect(client);
} else { } else {
client.server.destroy(); SERVER_kick(client.server);
} }
} }
} else { } else {
...@@ -863,12 +863,21 @@ ...@@ -863,12 +863,21 @@
return true; return true;
}; };
SERVER_kick = global.SERVER_kick = function(server) {
if (!client) {
return false;
}
server.system_kicked = true;
server.destroy();
return true;
};
release_disconnect = global.release_disconnect = function(dinfo, reconnected) { release_disconnect = global.release_disconnect = function(dinfo, reconnected) {
if (dinfo.old_client && !reconnected) { if (dinfo.old_client && !reconnected) {
dinfo.old_client.destroy(); dinfo.old_client.destroy();
} }
if (dinfo.old_server && !reconnected) { if (dinfo.old_server && !reconnected) {
dinfo.old_server.destroy(); SERVER_kick(dinfo.old_server);
} }
clearTimeout(dinfo.timeout); clearTimeout(dinfo.timeout);
}; };
...@@ -1137,7 +1146,7 @@ ...@@ -1137,7 +1146,7 @@
dinfo.old_client.server = null; dinfo.old_client.server = null;
current_old_server.client = null; current_old_server.client = null;
current_old_server.had_new_reconnection = true; current_old_server.had_new_reconnection = true;
current_old_server.destroy(); SERVER_kick(current_old_server);
client.established = true; client.established = true;
client.pre_establish_buffers = []; client.pre_establish_buffers = [];
if (room.random_type || room.arena) { if (room.random_type || room.arena) {
...@@ -1168,7 +1177,7 @@ ...@@ -1168,7 +1177,7 @@
CLIENT_kick(player); CLIENT_kick(player);
current_old_server.client = null; current_old_server.client = null;
current_old_server.had_new_reconnection = true; current_old_server.had_new_reconnection = true;
current_old_server.destroy(); SERVER_kick(current_old_server);
client.established = true; client.established = true;
client.pre_establish_buffers = []; client.pre_establish_buffers = [];
if (room.random_type || room.arena) { if (room.random_type || room.arena) {
...@@ -1801,7 +1810,7 @@ ...@@ -1801,7 +1810,7 @@
if (index !== -1) { if (index !== -1) {
this.watchers.splice(index, 1); this.watchers.splice(index, 1);
} }
client.server.destroy(); SERVER_kick(client.server);
} else { } else {
if (this.arena && this.duel_stage === ygopro.constants.DUEL_STAGE.BEGIN && this.disconnector !== 'server' && !this.arena_score_handled) { if (this.arena && this.duel_stage === ygopro.constants.DUEL_STAGE.BEGIN && this.disconnector !== 'server' && !this.arena_score_handled) {
if (settings.modules.arena_mode.punish_quit_before_match && this.players.length === 2 && !client.arena_quit_free) { if (settings.modules.arena_mode.punish_quit_before_match && this.players.length === 2 && !client.arena_quit_free) {
...@@ -1855,7 +1864,7 @@ ...@@ -1855,7 +1864,7 @@
this["delete"](); this["delete"]();
} }
if (!CLIENT_reconnect_unregister(client, false, true)) { if (!CLIENT_reconnect_unregister(client, false, true)) {
client.server.destroy(); SERVER_kick(client.server);
} }
} }
}; };
...@@ -1962,7 +1971,7 @@ ...@@ -1962,7 +1971,7 @@
room.disconnect(client); room.disconnect(client);
} }
} else if (!client.had_new_reconnection) { } else if (!client.had_new_reconnection) {
client.server.destroy(); SERVER_kick(client.server);
} }
} }
}); });
...@@ -1981,7 +1990,7 @@ ...@@ -1981,7 +1990,7 @@
room.disconnect(client, error); room.disconnect(client, error);
} }
} else if (!client.had_new_reconnection) { } else if (!client.had_new_reconnection) {
client.server.destroy(); SERVER_kick(client.server);
} }
} }
}); });
...@@ -1999,7 +2008,7 @@ ...@@ -1999,7 +2008,7 @@
return; return;
} }
room = ROOM_all[server.client.rid]; room = ROOM_all[server.client.rid];
if (room) { if (room && !server.system_kicked) {
room.disconnector = 'server'; room.disconnector = 'server';
} }
if (!server.client.closed) { if (!server.client.closed) {
...@@ -2015,7 +2024,7 @@ ...@@ -2015,7 +2024,7 @@
return; return;
} }
room = ROOM_all[server.client.rid]; room = ROOM_all[server.client.rid];
if (room) { if (room && !server.system_kicked) {
room.disconnector = 'server'; room.disconnector = 'server';
} }
if (!server.client.closed) { if (!server.client.closed) {
...@@ -2252,7 +2261,7 @@ ...@@ -2252,7 +2261,7 @@
looplimit++; looplimit++;
if (looplimit > 800) { if (looplimit > 800) {
log.info("error stoc", server.client.name); log.info("error stoc", server.client.name);
server.destroy(); SERVER_kick(server);
break; break;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment