diff --git a/rpcserver.go b/rpcserver.go index 5d947c59..727268f3 100644 --- a/rpcserver.go +++ b/rpcserver.go @@ -613,7 +613,11 @@ func (r *rpcServer) CloseChannel(in *lnrpc.CloseChannelRequest, r.server.htlcSwitch.RemoveLink(chanID) } - r.server.breachArbiter.settledContracts <- chanPoint + select { + case r.server.breachArbiter.settledContracts <- chanPoint: + case <-r.quit: + return fmt.Errorf("server shutting down") + } // With the necessary indexes cleaned up, we'll now force close // the channel. diff --git a/server.go b/server.go index fdb19e89..b201a7be 100644 --- a/server.go +++ b/server.go @@ -165,6 +165,7 @@ func newServer(listenAddrs []string, chanDB *channeldb.DB, cc *chainControl, s.htlcSwitch = htlcswitch.New(htlcswitch.Config{ LocalChannelClose: func(pubKey []byte, request *htlcswitch.ChanClose) { + s.peersMtx.RLock() peer, ok := s.peersByPub[string(pubKey)] s.peersMtx.RUnlock()