From: Ian Jackson Date: Sat, 1 Aug 2020 00:58:14 +0000 (+0100) Subject: actually before we block X-Git-Tag: otter-0.2.0~1202 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=3f97884c40535026c1f9183470d9b0e48c681aaf;p=otter.git actually before we block --- diff --git a/src/sse.rs b/src/sse.rs index 9273cb36..20325ad7 100644 --- a/src/sse.rs +++ b/src/sse.rs @@ -66,13 +66,6 @@ impl Read for UpdateReader { let cv = pu.get_cv(); - if (||{ - (*ig).gs.players.get(self.player)?; - let client = ig.clients.get_mut(self.client)?; - client.lastseen = Instant::now(); - Some(()) - })() == None { return Ok(0) } - loop { let generated = orig_wanted - buf.len(); if generated > 0 { @@ -91,6 +84,13 @@ impl Read for UpdateReader { // xxx this endless stream is a leak // restart it occasionally + if (||{ + (*ig).gs.players.get(self.player)?; + let client = ig.clients.get_mut(self.client)?; + client.lastseen = Instant::now(); + Some(()) + })() == None { return Ok(0) } + ig.c = cv.wait_timeout(ig.c, UPDATE_KEEPALIVE) .map_err(|_| em("poison"))?.0;