diff --git a/ricochet.go b/ricochet.go index b2036ab..ca78446 100644 --- a/ricochet.go +++ b/ricochet.go @@ -93,10 +93,19 @@ func (r *Ricochet) processNewConnection(conn net.Conn, service RicochetService) func (r *Ricochet) ProcessMessages(service RicochetService) { for { oc := <-r.newconns + if oc == nil { + return + } go r.processConnection(oc, service) } } +// Request that the ProcessMessages loop is stopped after handling all currently +// queued new connections. +func (r *Ricochet) RequestStopMessageLoop() { + r.newconns <- nil +} + // ProcessConnection starts a blocking process loop which continually waits for // new messages to arrive from the connection and uses the given RicochetService // to process them.