From: Scott Worley Date: Tue, 10 Oct 2023 23:57:22 +0000 (-0700) Subject: server: Bind port before messing with log files as a lock X-Git-Tag: v0.1.0~7 X-Git-Url: http://git.scottworley.com/tattlekey/commitdiff_plain/5f5768318f897a20464ca177b5de64157afe0938?ds=sidebyside;hp=0d4f2aa67ed92add9c371a49cc45daad8e529301 server: Bind port before messing with log files as a lock Rather than messing with flock, fnctl-F_SETLK, etc., just bind the port before touching the log file & let the failure to bind the port keep two instances of the server from stepping on each others' log i/o. --- diff --git a/server/src/main.rs b/server/src/main.rs index 5edadbb..e7351db 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -93,9 +93,9 @@ fn open_log_for_writing() -> csv::Writer { } fn main() { - let mut log = open_log_for_writing(); - let mut presses = HashMap::::new(); let socket = UdpSocket::bind("0.0.0.0:29803").expect("couldn't bind to address"); + let mut presses = HashMap::::new(); + let mut log = open_log_for_writing(); loop { let mut buf = [0; MESSAGE_SIZE]; match socket.recv_from(&mut buf) {