summaryrefslogtreecommitdiff
path: root/src/map/intif.c
diff options
context:
space:
mode:
authorHaru <haru@dotalux.com>2018-08-27 01:14:09 +0200
committerHaru <haru@dotalux.com>2018-08-27 01:14:09 +0200
commit5bb417009a0e8d6f0ed05a4007ea0248f7cb4138 (patch)
tree2e43dd174d737006e2bc109deabde25521a8f7c1 /src/map/intif.c
parent483341747ac3ecec9998d989b3f05af05474ea34 (diff)
downloadhercules-5bb417009a0e8d6f0ed05a4007ea0248f7cb4138.tar.gz
hercules-5bb417009a0e8d6f0ed05a4007ea0248f7cb4138.tar.bz2
hercules-5bb417009a0e8d6f0ed05a4007ea0248f7cb4138.tar.xz
hercules-5bb417009a0e8d6f0ed05a4007ea0248f7cb4138.zip
Fix a race condition in the storage saving code
Signed-off-by: Haru <haru@dotalux.com>
Diffstat (limited to 'src/map/intif.c')
-rw-r--r--src/map/intif.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/map/intif.c b/src/map/intif.c
index 84fad6c6f..ed4c0e2d2 100644
--- a/src/map/intif.c
+++ b/src/map/intif.c
@@ -513,7 +513,7 @@ static void intif_parse_account_storage(int fd)
* @packet 0x3011 [out] <packet_len>.W <account_id>.L <struct item[]>.P
* @param sd [in] pointer to session data.
*/
-static void intif_send_account_storage(const struct map_session_data *sd)
+static void intif_send_account_storage(struct map_session_data *sd)
{
int len = 0, i = 0, c = 0;
@@ -541,6 +541,8 @@ static void intif_send_account_storage(const struct map_session_data *sd)
}
WFIFOSET(inter_fd, len);
+
+ sd->storage.save = false; // Save request has been sent
}
/**
@@ -562,10 +564,9 @@ static void intif_parse_account_storage_save_ack(int fd)
if (saved == 0) {
ShowError("intif_parse_account_storage_save_ack: Storage has not been saved! (AID: %d)\n", account_id);
+ sd->storage.save = true; // Flag it as unsaved, to re-attempt later
return;
}
-
- sd->storage.save = false; // Storage has been saved.
}
//=================================================================