summary refs log tree commit diff
path: root/bounce.c
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2019-10-31 17:51:27 -0400
committerJune McEnroe <june@causal.agency>2019-10-31 17:51:27 -0400
commit0e4973936b8d0884f7ab4bc3a2c3e68aba371e46 (patch)
tree68fba322c3194f73ef11d548a508f5a06c5cd81e /bounce.c
parentClear passwords from memory with memset_s (diff)
downloadpounce-0e4973936b8d0884f7ab4bc3a2c3e68aba371e46.tar.gz
pounce-0e4973936b8d0884f7ab4bc3a2c3e68aba371e46.zip
Iterator over pollfds in reverse
This has two advantages:

1. When removing a client, we don't need to break the loop, since the
   swap-remove will replace the current pollfd with one we've already
   handled and we can safely move on to the next (previous) one.
2. If a new client connects for the same consumer (for example if the
   previous one is going to time out), it will start consuming messages
   for that consumer, rather than them being sent to the old client.
Diffstat (limited to 'bounce.c')
-rw-r--r--bounce.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/bounce.c b/bounce.c
index cc6b34f..18b205e 100644
--- a/bounce.c
+++ b/bounce.c
@@ -232,7 +232,7 @@ int main(int argc, char *argv[]) {
 		}
 
 		if (nfds < 0) continue;
-		for (size_t i = 0; i < event.len; ++i) {
+		for (size_t i = event.len - 1; i < event.len; --i) {
 			short revents = event.fds[i].revents;
 			if (!revents) continue;
 
@@ -268,7 +268,6 @@ int main(int argc, char *argv[]) {
 				close(event.fds[i].fd);
 				eventRemove(i);
 				if (!--clients) serverFormat("AWAY :%s\r\n", away);
-				break;
 			}
 		}
 
17/src/bin/day07.rs?id=8d15d581c8ec4bd2e811f331e10e939f72b8f319&follow=1'>Day 7, part 2June McEnroe I don't even know what this is. Don't look at it. 2020-11-22Day 7June McEnroe 2020-11-22Day 6, part 2June McEnroe 2020-11-22Day 6June McEnroe 2020-11-22Day 5, part 2June McEnroe 2020-11-22Day 5June McEnroe 2020-11-22Day 4, part 2June McEnroe That ugly sort map though. 2020-11-22Day 4June McEnroe 2020-11-22Day 3, part 2June McEnroe I am super surprised that worked on the first try. 2020-11-22Day 3, clean upJune McEnroe 2020-11-22Day 3June McEnroe This is fucking awful and I'm angry. 2020-11-22Day 2, part 2June McEnroe 2020-11-22Day 2June McEnroe 2020-11-22Day 1, part 2June McEnroe 2020-11-22Day 1June McEnroe 2020-11-22Move to 2016 directoryJune McEnroe