From 8312253e77bf0a51dd76b84fc6d0925edacbf937 Mon Sep 17 00:00:00 2001 From: IntegratedQuantum Date: Sat, 7 Dec 2024 21:47:53 +0100 Subject: [PATCH] Fix deadlock on user reconnect. Also adds a space before chat messages. --- src/network.zig | 2 +- src/server/server.zig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/network.zig b/src/network.zig index b9ea7796..3aff027e 100644 --- a/src/network.zig +++ b/src/network.zig @@ -1685,9 +1685,9 @@ pub const Connection = struct { // MARK: Connection const id = std.mem.readInt(u32, data[1..5], .big); if(self.handShakeState.load(.monotonic) == Protocols.handShake.stepComplete and id == 0) { // Got a new "first" packet from client. So the client tries to reconnect, but we still think it's connected. if(self.user) |user| { + user.reinitialize(); self.mutex.lock(); defer self.mutex.unlock(); - user.reinitialize(); self.reinitialize(); } else { std.log.err("Server reconnected?", .{}); diff --git a/src/server/server.zig b/src/server/server.zig index cffaff08..32f72f5c 100644 --- a/src/server/server.zig +++ b/src/server/server.zig @@ -460,7 +460,7 @@ pub fn messageFrom(msg: []const u8, source: *User) void { // MARK: message std.log.info("User \"{s}\" executed command \"{s}\"", .{source.name, msg}); // TODO use color \033[0;32m command.execute(msg[1..], source); } else { - const newMessage = std.fmt.allocPrint(main.stackAllocator.allocator, "[{s}§#ffffff]{s}", .{source.name, msg}) catch unreachable; + const newMessage = std.fmt.allocPrint(main.stackAllocator.allocator, "[{s}§#ffffff] {s}", .{source.name, msg}) catch unreachable; defer main.stackAllocator.free(newMessage); main.server.mutex.lock(); defer main.server.mutex.unlock();