From 994d30c1068912c8fcd02fd06fe46329b754f256 Mon Sep 17 00:00:00 2001 From: evoskuil Date: Sun, 5 Mar 2017 13:24:07 -0800 Subject: [PATCH 1/3] Fix missing handling of server return codes and watch-address calls. --- src/commands/send-tx.cpp | 3 ++- src/commands/validate-tx.cpp | 6 +++--- src/commands/watch-address.cpp | 18 ++++++++++-------- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/commands/send-tx.cpp b/src/commands/send-tx.cpp index eaf769425..f5e34fd00 100644 --- a/src/commands/send-tx.cpp +++ b/src/commands/send-tx.cpp @@ -50,7 +50,8 @@ console_result send_tx::invoke(std::ostream& output, std::ostream& error) auto on_done = [&state](const code& error) { - state.output(BX_SEND_TX_OUTPUT); + if (state.succeeded(error)) + state.output(BX_SEND_TX_OUTPUT); }; auto on_error = [&state](const code& error) diff --git a/src/commands/validate-tx.cpp b/src/commands/validate-tx.cpp index ad03b8601..ecae54dbf 100644 --- a/src/commands/validate-tx.cpp +++ b/src/commands/validate-tx.cpp @@ -52,10 +52,10 @@ console_result validate_tx::invoke(std::ostream& output, auto on_done = [&state](const code& error) { - if (error) - state.output(format(BX_VALIDATE_TX_INVALID) % error.message()); - else + if (state.succeeded(error)) state.output(BX_VALIDATE_TX_VALID); + else + state.output(format(BX_VALIDATE_TX_INVALID) % error.message()); }; auto on_error = [&state](const code& error) diff --git a/src/commands/watch-address.cpp b/src/commands/watch-address.cpp index 7adedf739..b27c07364 100644 --- a/src/commands/watch-address.cpp +++ b/src/commands/watch-address.cpp @@ -66,8 +66,11 @@ console_result watch_address::invoke(std::ostream& output, std::ostream& error) auto on_subscribed = [&state, &address](const code& error) { - state.output(format(BX_WATCH_ADDRESS_WAITING) % address); - ++state; + if (state.succeeded(error)) + { + state.output(format(BX_WATCH_ADDRESS_WAITING) % address); + ++state; + } }; auto on_error = [&state](const code& error) @@ -75,12 +78,6 @@ console_result watch_address::invoke(std::ostream& output, std::ostream& error) state.succeeded(error); }; - client.address_subscribe(on_error, on_subscribed, address); - client.wait(); - - if (state.stopped()) - return state.get_result(); - // This enables json-style array formatting. const auto json = encoding == encoding_engine::json; @@ -92,6 +89,11 @@ console_result watch_address::invoke(std::ostream& output, std::ostream& error) }; client.set_on_update(on_update); + client.address_subscribe(on_error, on_subscribed, address); + client.wait(); + + if (state.stopped()) + return state.get_result(); // Catch C signals for stopping the program before monitoring timeout. signal(SIGTERM, handle_signal); From e6cc02ffd7ce01b047129f2a3c0c09bb7d51afc1 Mon Sep 17 00:00:00 2001 From: evoskuil Date: Mon, 6 Mar 2017 11:22:28 -0800 Subject: [PATCH 2/3] Update watch-address notification handler confirm to client changes. --- src/commands/watch-address.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/commands/watch-address.cpp b/src/commands/watch-address.cpp index b27c07364..dbfce77e9 100644 --- a/src/commands/watch-address.cpp +++ b/src/commands/watch-address.cpp @@ -81,11 +81,15 @@ console_result watch_address::invoke(std::ostream& output, std::ostream& error) // This enables json-style array formatting. const auto json = encoding == encoding_engine::json; - auto on_update = [&output, &state, json](const payment_address& address, - size_t, const hash_digest& block_hash, const tx_type& tx) + auto on_update = [&output, &state, &address, json](const code& error, + uint16_t /*sequence*/, size_t /*height*/, + const hash_digest& block_hash, const tx_type& tx) { - state.output(prop_tree(tx, block_hash, address, json)); - output << std::endl; + if (state.succeeded(error)) + { + state.output(prop_tree(tx, block_hash, address, json)); + output << std::endl; + } }; client.set_on_update(on_update); From 5a0f5baca24aeb01711af8ee78a95c9dc7cd01ec Mon Sep 17 00:00:00 2001 From: evoskuil Date: Mon, 6 Mar 2017 11:22:39 -0800 Subject: [PATCH 3/3] Disable p2p network test. --- test/commands/send-tx-p2p.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/test/commands/send-tx-p2p.cpp b/test/commands/send-tx-p2p.cpp index 871e97a93..26deb093b 100644 --- a/test/commands/send-tx-p2p.cpp +++ b/test/commands/send-tx-p2p.cpp @@ -24,16 +24,16 @@ BX_USING_NAMESPACES() BOOST_AUTO_TEST_SUITE(network) BOOST_AUTO_TEST_SUITE(send_tx_p2p__invoke) -#define SEND_TX_P2P_A \ -"0100000001b3807042c92f449bbf79b33ca59d7dfec7f4cc71096704a9c526dddf496ee097010000006a473044022039a36013301597daef41fbe593a02cc513d0b55527ec2df1050e2e8ff49c85c202201035fe810e283bcf394485c6a9dfd117ad9f684cdd83d36453718f5d0491b9dd012103c40cbd64c9c608df2c9730f49b0888c4db1c436e8b2b74aead6c6afbd10428c0ffffffff01905f0100000000001976a91418c0bd8d1818f1bf99cb1df2269c645318ef7b7388ac00000000" - -BOOST_AUTO_TEST_CASE(send_tx_p2p__invoke__nodes_3__okay) -{ - BX_DECLARE_PEER_COMMAND(send_tx_p2p); - command.set_nodes_option(3); - command.set_transaction_argument({ SEND_TX_P2P_A }); - BX_REQUIRE_OKAY(command.invoke(output, error)); -} +////#define SEND_TX_P2P_A \ +////"0100000001b3807042c92f449bbf79b33ca59d7dfec7f4cc71096704a9c526dddf496ee097010000006a473044022039a36013301597daef41fbe593a02cc513d0b55527ec2df1050e2e8ff49c85c202201035fe810e283bcf394485c6a9dfd117ad9f684cdd83d36453718f5d0491b9dd012103c40cbd64c9c608df2c9730f49b0888c4db1c436e8b2b74aead6c6afbd10428c0ffffffff01905f0100000000001976a91418c0bd8d1818f1bf99cb1df2269c645318ef7b7388ac00000000" +//// +////BOOST_AUTO_TEST_CASE(send_tx_p2p__invoke__nodes_3__okay) +////{ +//// BX_DECLARE_PEER_COMMAND(send_tx_p2p); +//// command.set_nodes_option(3); +//// command.set_transaction_argument({ SEND_TX_P2P_A }); +//// BX_REQUIRE_OKAY(command.invoke(output, error)); +////} BOOST_AUTO_TEST_SUITE_END() BOOST_AUTO_TEST_SUITE_END()