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) ->
if room
room.disconnect(client)
else
client.server.destroy()
SERVER_kick(client.server)
else
client.destroy()
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) ->
if dinfo.old_client and !reconnected
dinfo.old_client.destroy()
if dinfo.old_server and !reconnected
dinfo.old_server.destroy()
SERVER_kick(dinfo.old_server)
clearTimeout(dinfo.timeout)
return
......@@ -721,7 +728,7 @@ CLIENT_reconnect_register = global.CLIENT_reconnect_register = (client, room_id,
}
tmot = setTimeout(() ->
room.disconnect(client, error)
#dinfo.old_server.destroy()
#SERVER_kick(dinfo.old_server)
return
, settings.modules.reconnect.wait_time)
dinfo.timeout = tmot
......@@ -879,7 +886,7 @@ CLIENT_reconnect = global.CLIENT_reconnect = (client) ->
dinfo.old_client.server = null
current_old_server.client = null
current_old_server.had_new_reconnection = true
current_old_server.destroy()
SERVER_kick(current_old_server)
client.established = true
client.pre_establish_buffers = []
if room.random_type or room.arena
......@@ -908,7 +915,7 @@ CLIENT_kick_reconnect = global.CLIENT_kick_reconnect = (client, deckbuf) ->
CLIENT_kick(player)
current_old_server.client = null
current_old_server.had_new_reconnection = true
current_old_server.destroy()
SERVER_kick(current_old_server)
client.established = true
client.pre_establish_buffers = []
if room.random_type or room.arena
......@@ -1388,7 +1395,7 @@ class Room
index = _.indexOf(@watchers, client)
@watchers.splice(index, 1) unless index == -1
#client.room = null
client.server.destroy()
SERVER_kick(client.server)
else
#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
......@@ -1423,7 +1430,7 @@ class Room
#client.room = null
this.delete()
if !CLIENT_reconnect_unregister(client, false, true)
client.server.destroy()
SERVER_kick(client.server)
return
start_death: () ->
......@@ -1508,7 +1515,7 @@ net.createServer (client) ->
if !CLIENT_reconnect_register(client, client.rid)
room.disconnect(client)
else if !client.had_new_reconnection
client.server.destroy()
SERVER_kick(client.server)
return
client.on 'error', (error)->
......@@ -1525,7 +1532,7 @@ net.createServer (client) ->
if !CLIENT_reconnect_register(client, client.rid, error)
room.disconnect(client, error)
else if !client.had_new_reconnection
client.server.destroy()
SERVER_kick(client.server)
return
client.on 'timeout', ()->
......@@ -1540,7 +1547,7 @@ net.createServer (client) ->
#log.info "server closed", server.client.name, had_error
room=ROOM_all[server.client.rid]
#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
ygopro.stoc_send_chat(server.client, "${server_closed}", ygopro.constants.COLORS.RED)
#if room and settings.modules.replay_delay
......@@ -1556,7 +1563,7 @@ net.createServer (client) ->
#log.info "server error", client.name, error
room=ROOM_all[server.client.rid]
#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
ygopro.stoc_send_chat(server.client, "${server_error}: #{error}", ygopro.constants.COLORS.RED)
#if room and settings.modules.replay_delay
......@@ -1750,7 +1757,7 @@ net.createServer (client) ->
#log.info(looplimit)
if looplimit > 800
log.info("error stoc", server.client.name)
server.destroy()
SERVER_kick(server)
break
if server.client and !server.client.closed
server.client.write buffer for buffer in datas
......
// Generated by CoffeeScript 1.12.7
(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');
......@@ -854,7 +854,7 @@
if (room) {
room.disconnect(client);
} else {
client.server.destroy();
SERVER_kick(client.server);
}
}
} else {
......@@ -863,12 +863,21 @@
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) {
if (dinfo.old_client && !reconnected) {
dinfo.old_client.destroy();
}
if (dinfo.old_server && !reconnected) {
dinfo.old_server.destroy();
SERVER_kick(dinfo.old_server);
}
clearTimeout(dinfo.timeout);
};
......@@ -1137,7 +1146,7 @@
dinfo.old_client.server = null;
current_old_server.client = null;
current_old_server.had_new_reconnection = true;
current_old_server.destroy();
SERVER_kick(current_old_server);
client.established = true;
client.pre_establish_buffers = [];
if (room.random_type || room.arena) {
......@@ -1168,7 +1177,7 @@
CLIENT_kick(player);
current_old_server.client = null;
current_old_server.had_new_reconnection = true;
current_old_server.destroy();
SERVER_kick(current_old_server);
client.established = true;
client.pre_establish_buffers = [];
if (room.random_type || room.arena) {
......@@ -1801,7 +1810,7 @@
if (index !== -1) {
this.watchers.splice(index, 1);
}
client.server.destroy();
SERVER_kick(client.server);
} else {
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) {
......@@ -1855,7 +1864,7 @@
this["delete"]();
}
if (!CLIENT_reconnect_unregister(client, false, true)) {
client.server.destroy();
SERVER_kick(client.server);
}
}
};
......@@ -1962,7 +1971,7 @@
room.disconnect(client);
}
} else if (!client.had_new_reconnection) {
client.server.destroy();
SERVER_kick(client.server);
}
}
});
......@@ -1981,7 +1990,7 @@
room.disconnect(client, error);
}
} else if (!client.had_new_reconnection) {
client.server.destroy();
SERVER_kick(client.server);
}
}
});
......@@ -1999,7 +2008,7 @@
return;
}
room = ROOM_all[server.client.rid];
if (room) {
if (room && !server.system_kicked) {
room.disconnector = 'server';
}
if (!server.client.closed) {
......@@ -2015,7 +2024,7 @@
return;
}
room = ROOM_all[server.client.rid];
if (room) {
if (room && !server.system_kicked) {
room.disconnector = 'server';
}
if (!server.client.closed) {
......@@ -2252,7 +2261,7 @@
looplimit++;
if (looplimit > 800) {
log.info("error stoc", server.client.name);
server.destroy();
SERVER_kick(server);
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