Commit 02302e3b authored by nanahira's avatar nanahira

Merge branch 'master' into tcg_random

parents 844c797d fc4a71ca
......@@ -780,16 +780,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
......@@ -829,7 +836,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
......@@ -987,7 +994,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
......@@ -1016,7 +1023,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
......@@ -1551,7 +1558,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
......@@ -1586,7 +1593,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: () ->
......@@ -1671,7 +1678,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)->
......@@ -1688,7 +1695,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', ()->
......@@ -1703,7 +1710,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 and !server.had_new_reconnection
unless server.client.closed
ygopro.stoc_send_chat(server.client, "${server_closed}", ygopro.constants.COLORS.RED)
#if room and settings.modules.replay_delay
......@@ -1719,7 +1726,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 and !server.had_new_reconnection
unless server.client.closed
ygopro.stoc_send_chat(server.client, "${server_error}: #{error}", ygopro.constants.COLORS.RED)
#if room and settings.modules.replay_delay
......@@ -1913,7 +1920,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_check_vip, CLIENT_get_absolute_pos, CLIENT_get_authorize_key, CLIENT_get_kick_reconnect_target, CLIENT_get_partner, 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, CLIENT_send_vip_status, CLIENT_use_cdkey, 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, VIP_generate_cdkeys, _, addCallback, auth, badwords, ban_user, bunyan, challonge, challonge_cache, challonge_module_name, challonge_queue_callbacks, chat_color, concat_name, 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, k, l, len, len1, len2, lflists, list, loadJSON, load_dialogues, load_dialogues_custom, load_tips, load_tips_zh, load_words, log, long_resolve_cards, m, memory_usage, merge, moment, net, oldbadwords, oldconfig, olddialogues, oldduellog, oldtips, oldwords, options, os, path, pgClient, pg_client, pg_query, plugin_filename, plugin_list, plugin_path, real_windbot_server_ip, rebooted, redis, redisdb, ref, ref1, ref2, 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, v, vip_info, wait_room_start, wait_room_start_arena, windbot_looplimit, windbot_process, windbots, words, ygopro, zlib;
var CLIENT_check_vip, CLIENT_get_absolute_pos, CLIENT_get_authorize_key, CLIENT_get_kick_reconnect_target, CLIENT_get_partner, 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, CLIENT_send_vip_status, CLIENT_use_cdkey, 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, VIP_generate_cdkeys, _, addCallback, auth, badwords, ban_user, bunyan, challonge, challonge_cache, challonge_module_name, challonge_queue_callbacks, chat_color, concat_name, 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, k, l, len, len1, len2, lflists, list, loadJSON, load_dialogues, load_dialogues_custom, load_tips, load_tips_zh, load_words, log, long_resolve_cards, m, memory_usage, merge, moment, net, oldbadwords, oldconfig, olddialogues, oldduellog, oldtips, oldwords, options, os, path, pgClient, pg_client, pg_query, plugin_filename, plugin_list, plugin_path, real_windbot_server_ip, rebooted, redis, redisdb, ref, ref1, ref2, 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, v, vip_info, wait_room_start, wait_room_start_arena, windbot_looplimit, windbot_process, windbots, words, ygopro, zlib;
net = require('net');
......@@ -1012,7 +1012,7 @@
if (room) {
room.disconnect(client);
} else {
client.server.destroy();
SERVER_kick(client.server);
}
}
} else {
......@@ -1021,12 +1021,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);
};
......@@ -1293,7 +1302,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) {
......@@ -1324,7 +1333,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) {
......@@ -2027,7 +2036,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) {
......@@ -2081,7 +2090,7 @@
this["delete"]();
}
if (!CLIENT_reconnect_unregister(client, false, true)) {
client.server.destroy();
SERVER_kick(client.server);
}
}
};
......@@ -2188,7 +2197,7 @@
room.disconnect(client);
}
} else if (!client.had_new_reconnection) {
client.server.destroy();
SERVER_kick(client.server);
}
}
});
......@@ -2207,7 +2216,7 @@
room.disconnect(client, error);
}
} else if (!client.had_new_reconnection) {
client.server.destroy();
SERVER_kick(client.server);
}
}
});
......@@ -2225,7 +2234,7 @@
return;
}
room = ROOM_all[server.client.rid];
if (room) {
if (room && !server.system_kicked && !server.had_new_reconnection) {
room.disconnector = 'server';
}
if (!server.client.closed) {
......@@ -2241,7 +2250,7 @@
return;
}
room = ROOM_all[server.client.rid];
if (room) {
if (room && !server.system_kicked && !server.had_new_reconnection) {
room.disconnector = 'server';
}
if (!server.client.closed) {
......@@ -2478,7 +2487,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