From a95ea74f1516a5330f65a4bba3d5a924140a4234 Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Fri, 17 Oct 2014 12:06:40 -0700 Subject: [PATCH] allow rpc server as an option. --- src/bitcoindjs.cc | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/bitcoindjs.cc b/src/bitcoindjs.cc index a33c1446..fa322995 100644 --- a/src/bitcoindjs.cc +++ b/src/bitcoindjs.cc @@ -286,6 +286,7 @@ init(Handle); static volatile bool shutdown_complete = false; static int block_poll_top_height = -1; static char *g_data_dir = NULL; +static bool g_rpc = false; /** * Private Structs @@ -301,6 +302,7 @@ struct async_node_data { std::string err_msg; std::string result; std::string datadir; + bool rpc; Persistent callback; }; @@ -427,6 +429,7 @@ NAN_METHOD(StartBitcoind) { Local callback; std::string datadir = std::string(""); + bool rpc = false; if (args.Length() >= 2 && args[0]->IsObject() && args[1]->IsFunction()) { Local options = Local::Cast(args[0]); @@ -434,6 +437,9 @@ NAN_METHOD(StartBitcoind) { String::Utf8Value datadir_(options->Get(NanNew("datadir"))->ToString()); datadir = std::string(*datadir_); } + if (options->Get(NanNew("rpc"))->IsBoolean()) { + rpc = options->Get(NanNew("rpc"))->ToBoolean()->IsTrue(); + } callback = Local::Cast(args[1]); } else if (args.Length() >= 2 && (args[0]->IsUndefined() || args[0]->IsNull()) @@ -454,6 +460,7 @@ NAN_METHOD(StartBitcoind) { data->err_msg = std::string(""); data->result = std::string(""); data->datadir = datadir; + data->rpc = rpc; data->callback = Persistent::New(callback); uv_work_t *req = new uv_work_t(); @@ -479,6 +486,7 @@ async_start_node(uv_work_t *req) { if (!data->datadir.empty()) { g_data_dir = (char *)data->datadir.c_str(); } + g_rpc = (bool)data->rpc; start_node(); data->result = std::string("start_node(): bitcoind opened."); } @@ -576,7 +584,11 @@ start_node_thread(void) { argv = (char **)malloc((argc + 1) * sizeof(char **)); argv[0] = (char *)"bitcoind"; argv[1] = arg; - argv[2] = NULL; + if (g_rpc) { + argv[argc] = (char *)"-server"; + argc++; + } + argv[argc] = NULL; } else { argc = 1; argv = (char **)malloc((argc + 1) * sizeof(char **));