Commit b8d7105a authored by nanahira's avatar nanahira

fix compare buffer

parent 60afe884
Pipeline #1236 failed with stage
in 5 minutes and 41 seconds
...@@ -1970,9 +1970,9 @@ ...@@ -1970,9 +1970,9 @@
"integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=" "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po="
}, },
"underscore": { "underscore": {
"version": "1.10.2", "version": "1.11.0",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.10.2.tgz", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.11.0.tgz",
"integrity": "sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg==" "integrity": "sha512-xY96SsN3NA461qIRKZ/+qox37YXPtSBswMGfiNptr+wrt6ds4HaMw23TP612fEyGekRE6LNRiLYr/aqbHXNedw=="
}, },
"underscore.string": { "underscore.string": {
"version": "3.3.5", "version": "3.3.5",
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
"sqlite3": "latest", "sqlite3": "latest",
"typeorm": "^0.2.29", "typeorm": "^0.2.29",
"typescript": "^4.0.5", "typescript": "^4.0.5",
"underscore": "^1.10.2", "underscore": "^1.11.0",
"underscore.string": "latest", "underscore.string": "latest",
"ws": "^1.1.1" "ws": "^1.1.1"
}, },
......
...@@ -972,13 +972,13 @@ CLIENT_is_able_to_reconnect = global.CLIENT_is_able_to_reconnect = (client, deck ...@@ -972,13 +972,13 @@ CLIENT_is_able_to_reconnect = global.CLIENT_is_able_to_reconnect = (client, deck
if !room if !room
CLIENT_reconnect_unregister(client) CLIENT_reconnect_unregister(client)
return false return false
if deckbuf and !_.isEqual(deckbuf, disconnect_info.deckbuf) if deckbuf and deckbuf.compare(disconnect_info.deckbuf) != 0
return false return false
return true return true
CLIENT_get_kick_reconnect_target = global.CLIENT_get_kick_reconnect_target = (client, deckbuf) -> CLIENT_get_kick_reconnect_target = global.CLIENT_get_kick_reconnect_target = (client, deckbuf) ->
for room in ROOM_all when room and room.duel_stage != ygopro.constants.DUEL_STAGE.BEGIN and !room.windbot for room in ROOM_all when room and room.duel_stage != ygopro.constants.DUEL_STAGE.BEGIN and !room.windbot
for player in room.get_playing_player() when !player.closed and player.name == client.name and (settings.modules.challonge.enabled or player.pass == client.pass) and (settings.modules.mycard.enabled or settings.modules.tournament_mode.enabled or player.ip == client.ip or (client.vpass and client.vpass == player.vpass)) and (!deckbuf or _.isEqual(player.start_deckbuf, deckbuf)) for player in room.get_playing_player() when !player.closed and player.name == client.name and (settings.modules.challonge.enabled or player.pass == client.pass) and (settings.modules.mycard.enabled or settings.modules.tournament_mode.enabled or player.ip == client.ip or (client.vpass and client.vpass == player.vpass)) and (!deckbuf or deckbuf.compare(player.start_deckbuf) == 0)
return player return player
return null return null
...@@ -3318,7 +3318,7 @@ ygopro.ctos_follow 'UPDATE_DECK', true, (buffer, info, client, server, datas)-> ...@@ -3318,7 +3318,7 @@ ygopro.ctos_follow 'UPDATE_DECK', true, (buffer, info, client, server, datas)->
room.last_active_time = moment() room.last_active_time = moment()
if room.duel_stage == ygopro.constants.DUEL_STAGE.BEGIN and room.recovering if room.duel_stage == ygopro.constants.DUEL_STAGE.BEGIN and room.recovering
recover_player_data = _.find(room.recover_duel_log.players, (player) -> recover_player_data = _.find(room.recover_duel_log.players, (player) ->
return player.realName == client.name_vpass and _.isEqual(buffer, Buffer.from(player.startDeckBuffer, "base64")) return player.realName == client.name_vpass and buffer.compare(Buffer.from(player.startDeckBuffer, "base64")) == 0
) )
if recover_player_data if recover_player_data
recoveredDeck = recover_player_data.getCurrentDeck() recoveredDeck = recover_player_data.getCurrentDeck()
......
...@@ -1309,7 +1309,7 @@ ...@@ -1309,7 +1309,7 @@
CLIENT_reconnect_unregister(client); CLIENT_reconnect_unregister(client);
return false; return false;
} }
if (deckbuf && !_.isEqual(deckbuf, disconnect_info.deckbuf)) { if (deckbuf && deckbuf.compare(disconnect_info.deckbuf) !== 0) {
return false; return false;
} }
return true; return true;
...@@ -1323,7 +1323,7 @@ ...@@ -1323,7 +1323,7 @@
ref = room.get_playing_player(); ref = room.get_playing_player();
for (l = 0, len1 = ref.length; l < len1; l++) { for (l = 0, len1 = ref.length; l < len1; l++) {
player = ref[l]; player = ref[l];
if (!player.closed && player.name === client.name && (settings.modules.challonge.enabled || player.pass === client.pass) && (settings.modules.mycard.enabled || settings.modules.tournament_mode.enabled || player.ip === client.ip || (client.vpass && client.vpass === player.vpass)) && (!deckbuf || _.isEqual(player.start_deckbuf, deckbuf))) { if (!player.closed && player.name === client.name && (settings.modules.challonge.enabled || player.pass === client.pass) && (settings.modules.mycard.enabled || settings.modules.tournament_mode.enabled || player.ip === client.ip || (client.vpass && client.vpass === player.vpass)) && (!deckbuf || deckbuf.compare(player.start_deckbuf) === 0)) {
return player; return player;
} }
} }
...@@ -4438,7 +4438,7 @@ ...@@ -4438,7 +4438,7 @@
} }
if (room.duel_stage === ygopro.constants.DUEL_STAGE.BEGIN && room.recovering) { if (room.duel_stage === ygopro.constants.DUEL_STAGE.BEGIN && room.recovering) {
recover_player_data = _.find(room.recover_duel_log.players, function(player) { recover_player_data = _.find(room.recover_duel_log.players, function(player) {
return player.realName === client.name_vpass && _.isEqual(buffer, Buffer.from(player.startDeckBuffer, "base64")); return player.realName === client.name_vpass && buffer.compare(Buffer.from(player.startDeckBuffer, "base64")) === 0;
}); });
if (recover_player_data) { if (recover_player_data) {
recoveredDeck = recover_player_data.getCurrentDeck(); recoveredDeck = recover_player_data.getCurrentDeck();
......
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