diff --git a/cln_plugin/cln_plugin.go b/cln_plugin/cln_plugin.go index 3a8442f..e104f75 100644 --- a/cln_plugin/cln_plugin.go +++ b/cln_plugin/cln_plugin.go @@ -54,13 +54,6 @@ func (c *ClnPlugin) onInit(plugin *glightning.Plugin, options map[string]glightn log.Printf("ERROR Server stopped with error: %v", err) } }() - - //lightning server - clientcln := glightning.NewLightning() - clientcln.SetTimeout(60) - clientcln.StartUp(config.RpcFile, config.LightningDir) - - log.Printf("successfull clientcln.StartUp") } func (c *ClnPlugin) onHtlcAccepted(event *glightning.HtlcAcceptedEvent) (*glightning.HtlcAcceptedResponse, error) { diff --git a/cln_plugin/server.go b/cln_plugin/server.go index b677b96..7bf91ea 100644 --- a/cln_plugin/server.go +++ b/cln_plugin/server.go @@ -26,7 +26,6 @@ type server struct { subscription *subscription newSubscriber chan struct{} done chan struct{} - err chan error correlations map[uint64]chan *HtlcResolution index uint64 } @@ -35,8 +34,6 @@ func NewServer(listenAddress string) *server { return &server{ listenAddress: listenAddress, newSubscriber: make(chan struct{}, 1), - done: make(chan struct{}), - err: make(chan error, 1), correlations: make(map[uint64]chan *HtlcResolution), index: 0, } @@ -56,6 +53,7 @@ func (s *server) Start() error { return err } + s.done = make(chan struct{}) s.grpcServer = grpc.NewServer() s.startMtx.Unlock() RegisterClnPluginServer(s.grpcServer, s) @@ -110,18 +108,13 @@ func (s *server) HtlcStream(stream ClnPlugin_HtlcStreamServer) error { s.startMtx.Unlock() }() - for { - select { - case <-s.done: - log.Printf("HTLC server signalled done. Return EOF.") - return io.EOF - case err := <-s.err: - log.Printf("HTLC server signalled error: %v", err) - return err - case <-sb.done: - log.Printf("HTLC stream signalled done. Return EOF.") - return io.EOF - } + select { + case <-s.done: + log.Printf("HTLC server signalled done. Return EOF.") + return io.EOF + case <-sb.done: + log.Printf("HTLC stream signalled done. Return EOF.") + return io.EOF } } @@ -189,7 +182,12 @@ func (s *server) recv() *HtlcResolution { // TODO: close the subscription?? log.Printf("Recv() errored, waiting %v: %v", receiveWaitDelay, err) - <-time.After(receiveWaitDelay) + select { + case <-s.done: + log.Printf("Done signalled, stopping receive.") + return s.defaultResolution() + case <-time.After(receiveWaitDelay): + } } } @@ -199,9 +197,6 @@ func (s *server) listenHtlcResponses() { case <-s.done: log.Printf("listenHtlcResponses received done. Stopping listening.") return - case err := <-s.err: - log.Printf("listenHtlcResponses received error %v. Stopping listening.", err) - return default: response := s.recv() s.corrMtx.Lock()