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. diff --git a/utils/networkresolver.go b/utils/networkresolver.go index 9395773..e2873d8 100644 --- a/utils/networkresolver.go +++ b/utils/networkresolver.go @@ -40,7 +40,7 @@ func (nr *NetworkResolver) Resolve(hostname string) (net.Conn, string, error) { torDialer, err := proxy.SOCKS5("tcp", "127.0.0.1:9050", nil, proxy.Direct) if err != nil { - return nil,"", err + return nil, "", err } conn, err := torDialer.Dial("tcp", resolvedHostname+".onion:9878")