Commit 6f525172 authored by nanahira's avatar nanahira

protect heatbeat after reconnect

parent ec57be97
...@@ -656,7 +656,7 @@ CLIENT_heartbeat_unregister = (client) -> ...@@ -656,7 +656,7 @@ CLIENT_heartbeat_unregister = (client) ->
return true return true
CLIENT_heartbeat_register = (client, send) -> CLIENT_heartbeat_register = (client, send) ->
if !settings.modules.heartbeat_detection.enabled or client.closed or client.is_post_watcher or client.pre_reconnecting or client.reconnecting or client.pos > 3 or client.confirming_cards if !settings.modules.heartbeat_detection.enabled or client.closed or client.is_post_watcher or client.pre_reconnecting or client.reconnecting or client.pos > 3 or client.heartbeat_protected
return false return false
if client.heartbeat_timeout if client.heartbeat_timeout
CLIENT_heartbeat_unregister(client) CLIENT_heartbeat_unregister(client)
...@@ -1896,7 +1896,7 @@ ygopro.stoc_follow 'GAME_MSG', true, (buffer, info, client, server)-> ...@@ -1896,7 +1896,7 @@ ygopro.stoc_follow 'GAME_MSG', true, (buffer, info, client, server)->
room.turn = 0 room.turn = 0
if settings.modules.heartbeat_detection.enabled if settings.modules.heartbeat_detection.enabled
for player in room.players for player in room.players
player.confirming_cards = false player.heartbeat_protected = false
if room and !room.finished and room.dueling_players[pos] if room and !room.finished and room.dueling_players[pos]
room.winner_name = room.dueling_players[pos].name room.winner_name = room.dueling_players[pos].name
#log.info room.dueling_players, pos #log.info room.dueling_players, pos
...@@ -2001,7 +2001,7 @@ ygopro.stoc_follow 'GAME_MSG', true, (buffer, info, client, server)-> ...@@ -2001,7 +2001,7 @@ ygopro.stoc_follow 'GAME_MSG', true, (buffer, info, client, server)->
break break
if check if check
#console.log("Confirming cards:" + client.name) #console.log("Confirming cards:" + client.name)
client.confirming_cards = true client.heartbeat_protected = true
#登场台词 #登场台词
if settings.modules.dialogues.enabled if settings.modules.dialogues.enabled
...@@ -2110,10 +2110,15 @@ ygopro.stoc_follow 'HS_PLAYER_CHANGE', false, (buffer, info, client, server)-> ...@@ -2110,10 +2110,15 @@ ygopro.stoc_follow 'HS_PLAYER_CHANGE', false, (buffer, info, client, server)->
setTimeout (()-> wait_room_start(ROOM_all[client.rid], 20);return), 1000 setTimeout (()-> wait_room_start(ROOM_all[client.rid], 20);return), 1000
return return
ygopro.ctos_follow 'REQUEST_FIELD', true, (buffer, info, client, server)->
return true
ygopro.stoc_follow 'FIELD_FINISH', true, (buffer, info, client, server)-> ygopro.stoc_follow 'FIELD_FINISH', true, (buffer, info, client, server)->
room=ROOM_all[client.rid] room=ROOM_all[client.rid]
return unless room return unless room
client.reconnecting = false client.reconnecting = false
if settings.modules.heartbeat_detection.enabled
client.heartbeat_protected = true
if !client.last_game_msg if !client.last_game_msg
return true return true
if client.last_game_msg_title != 'WAITING' if client.last_game_msg_title != 'WAITING'
...@@ -2559,7 +2564,7 @@ ygopro.ctos_follow 'TIME_CONFIRM', false, (buffer, info, client, server)-> ...@@ -2559,7 +2564,7 @@ ygopro.ctos_follow 'TIME_CONFIRM', false, (buffer, info, client, server)->
if settings.modules.reconnect.enabled if settings.modules.reconnect.enabled
client.time_confirm_required = false client.time_confirm_required = false
return unless settings.modules.heartbeat_detection.enabled return unless settings.modules.heartbeat_detection.enabled
client.confirming_cards = false client.heartbeat_protected = false
client.heartbeat_responsed = true client.heartbeat_responsed = true
CLIENT_heartbeat_unregister(client) CLIENT_heartbeat_unregister(client)
return return
......
...@@ -841,7 +841,7 @@ ...@@ -841,7 +841,7 @@
}; };
CLIENT_heartbeat_register = function(client, send) { CLIENT_heartbeat_register = function(client, send) {
if (!settings.modules.heartbeat_detection.enabled || client.closed || client.is_post_watcher || client.pre_reconnecting || client.reconnecting || client.pos > 3 || client.confirming_cards) { if (!settings.modules.heartbeat_detection.enabled || client.closed || client.is_post_watcher || client.pre_reconnecting || client.reconnecting || client.pos > 3 || client.heartbeat_protected) {
return false; return false;
} }
if (client.heartbeat_timeout) { if (client.heartbeat_timeout) {
...@@ -2287,7 +2287,7 @@ ...@@ -2287,7 +2287,7 @@
ref2 = room.players; ref2 = room.players;
for (m = 0, len2 = ref2.length; m < len2; m++) { for (m = 0, len2 = ref2.length; m < len2; m++) {
player = ref2[m]; player = ref2[m];
player.confirming_cards = false; player.heartbeat_protected = false;
} }
} }
if (room && !room.finished && room.dueling_players[pos]) { if (room && !room.finished && room.dueling_players[pos]) {
...@@ -2432,7 +2432,7 @@ ...@@ -2432,7 +2432,7 @@
} }
} }
if (check) { if (check) {
client.confirming_cards = true; client.heartbeat_protected = true;
} }
} }
if (settings.modules.dialogues.enabled) { if (settings.modules.dialogues.enabled) {
...@@ -2590,6 +2590,10 @@ ...@@ -2590,6 +2590,10 @@
} }
}); });
ygopro.ctos_follow('REQUEST_FIELD', true, function(buffer, info, client, server) {
return true;
});
ygopro.stoc_follow('FIELD_FINISH', true, function(buffer, info, client, server) { ygopro.stoc_follow('FIELD_FINISH', true, function(buffer, info, client, server) {
var room; var room;
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
...@@ -2597,6 +2601,9 @@ ...@@ -2597,6 +2601,9 @@
return; return;
} }
client.reconnecting = false; client.reconnecting = false;
if (settings.modules.heartbeat_detection.enabled) {
client.heartbeat_protected = true;
}
if (!client.last_game_msg) { if (!client.last_game_msg) {
return true; return true;
} }
...@@ -3212,7 +3219,7 @@ ...@@ -3212,7 +3219,7 @@
if (!settings.modules.heartbeat_detection.enabled) { if (!settings.modules.heartbeat_detection.enabled) {
return; return;
} }
client.confirming_cards = false; client.heartbeat_protected = false;
client.heartbeat_responsed = true; client.heartbeat_responsed = true;
CLIENT_heartbeat_unregister(client); CLIENT_heartbeat_unregister(client);
}); });
......
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