1 files changed, 6 insertions(+), 4 deletions(-)
M bulletin.rkt
M bulletin.rkt => bulletin.rkt +6 -4
@@ 285,10 285,12 @@
(transition 'registering)
(reset)]
['kick (if (eq? state 'closed)
- (for ([(token peer) _peers]
- #:when (equal? (hash-ref peer 'username)
- (~a (read sp))))
- (hash-remove! _peers token))
+ (let ([username (~a (read sp))])
+ ; only need to find the first peer with the username
+ (for/first ([(token peer) _peers]
+ #:when (equal? (hash-ref peer 'username)
+ username))
+ (hash-remove! _peers token)))
(displayln "close the election first"))]
['state (displayln (symbol->string state))]
[else (displayln "unknown command")])