From e7e827ff39a00df7aeb0230797d31604eba46001 Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Wed, 1 Oct 2014 11:20:53 -0700 Subject: [PATCH] handle chain height. --- src/bitcoindjs.cc | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/bitcoindjs.cc b/src/bitcoindjs.cc index d4397057..e08e6f4f 100644 --- a/src/bitcoindjs.cc +++ b/src/bitcoindjs.cc @@ -298,8 +298,6 @@ typedef struct _poll_blocks_list { struct async_poll_blocks_data { std::string err_msg; - int poll_saved_height; - int poll_top_height; poll_blocks_list *head; Persistent result_array; Persistent callback; @@ -831,6 +829,8 @@ async_get_tx_after(uv_work_t *req) { * bitcoind.pollBlocks(callback) */ +static int block_poll_top_height = -1; + NAN_METHOD(PollBlocks) { NanScope(); @@ -842,8 +842,6 @@ NAN_METHOD(PollBlocks) { Local callback = Local::Cast(args[0]); async_poll_blocks_data *data = new async_poll_blocks_data(); - data->poll_saved_height = -1; - data->poll_top_height = -1; data->err_msg = std::string(""); data->callback = Persistent::New(callback); @@ -863,12 +861,12 @@ static void async_poll_blocks(uv_work_t *req) { async_poll_blocks_data* data = static_cast(req->data); - data->poll_saved_height = data->poll_top_height; + int poll_saved_height = block_poll_top_height; while (chainActive.Tip()) { int cur_height = chainActive.Height(); - if (cur_height != data->poll_top_height) { - data->poll_top_height = cur_height; + if (cur_height != block_poll_top_height) { + block_poll_top_height = cur_height; break; } // 100 milliseconds @@ -879,13 +877,12 @@ async_poll_blocks(uv_work_t *req) { poll_blocks_list *head = NULL; poll_blocks_list *cur = NULL; - for (int i = data->poll_saved_height; i < data->poll_top_height; i++) { + for (int i = poll_saved_height; i < block_poll_top_height; i++) { if (i == -1) continue; CBlockIndex *pindex = chainActive[i]; if (pindex != NULL) { CBlock block; if (ReadBlockFromDisk(block, pindex)) { - // poll_blocks_list *next = (poll_blocks_list *)malloc(1 * sizeof(poll_blocks_list)); poll_blocks_list *next = new poll_blocks_list(); next->next = NULL; if (cur == NULL) { @@ -922,7 +919,6 @@ async_poll_blocks_after(uv_work_t *req) { const unsigned argc = 2; Local blocks = NanNew(); - //poll_blocks_list *cur = data->head; poll_blocks_list *cur = static_cast(data->head); poll_blocks_list *next; int i = 0;