From 2bd413058179602d438a308c221f080847d4ac6b Mon Sep 17 00:00:00 2001 From: Conner Fromknecht Date: Tue, 16 Jan 2018 17:14:26 -0800 Subject: [PATCH] chain/bitcoind: connect to zmq in Start() to return error --- chain/bitcoind.go | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/chain/bitcoind.go b/chain/bitcoind.go index 1f4d9f2..8a7fe1f 100644 --- a/chain/bitcoind.go +++ b/chain/bitcoind.go @@ -359,13 +359,20 @@ func (c *BitcoindClient) Start() error { return errors.New("mismatched networks") } + // Connect a ZMQ socket for block notifications + zmqClient, err := gozmq.Subscribe(c.zmqConnect, []string{"rawblock", + "rawtx"}, c.zmqPollInterval) + if err != nil { + return err + } + c.quitMtx.Lock() c.started = true c.quitMtx.Unlock() c.wg.Add(2) go c.handler() - go c.socketHandler() + go c.socketHandler(zmqClient) return nil } @@ -508,17 +515,10 @@ func (c *BitcoindClient) onRescanFinished(hash *chainhash.Hash, height int32, bl // socketHandler reads events from the ZMQ socket, processes them as // appropriate, and queues them as btcd or neutrino would. -func (c *BitcoindClient) socketHandler() { +func (c *BitcoindClient) socketHandler(zmqClient *gozmq.Conn) { defer c.wg.Done() - - // Connect a ZMQ socket for block notifications - zmqClient, err := gozmq.Subscribe(c.zmqConnect, []string{"rawblock", - "rawtx"}, c.zmqPollInterval) - if err != nil { - log.Error(err) - return - } defer zmqClient.Close() + log.Infof("Started listening for blocks via ZMQ on %s", c.zmqConnect) c.onClientConnect()