From cddc43a30f9edf9e05f099b4efbd63903133e591 Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Wed, 22 Oct 2014 16:56:29 -0700 Subject: [PATCH] "alert" compiling. work on filter packets. --- src/bitcoindjs.cc | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/src/bitcoindjs.cc b/src/bitcoindjs.cc index b1c933cd..0507f09e 100644 --- a/src/bitcoindjs.cc +++ b/src/bitcoindjs.cc @@ -3716,7 +3716,6 @@ NAN_METHOD(HookPackets) { } else { o->Set(NanNew("finished"), NanNew(false)); } -#if 0 } else if (strCommand == "alert") { CAlert alert; *cur->vRecv >> alert; @@ -3727,8 +3726,10 @@ NAN_METHOD(HookPackets) { if (cur->pfrom->setKnown.count(alertHash) == 0) { if (alert.ProcessAlert()) { - o->Set(NanNew("message"), NanNew(alert.vchMsg.c_str())); - o->Set(NanNew("signature"), NanNew(alert.vchSig.c_str())); + std::string vchMsg(alert.vchMsg.begin(), alert.vchMsg.end()); + std::string vchSig(alert.vchSig.begin(), alert.vchSig.end()); + o->Set(NanNew("message"), NanNew(vchMsg.c_str())); + o->Set(NanNew("signature"), NanNew(vchSig.c_str())); o->Set(NanNew("misbehaving"), NanNew(false)); } else { // Small DoS penalty so peers that send us lots of @@ -3740,6 +3741,7 @@ NAN_METHOD(HookPackets) { o->Set(NanNew("misbehaving"), NanNew(true)); } } +#if 0 } else if (strCommand == "filterload") { CBloomFilter filter; *cur->vRecv >> filter; @@ -3750,8 +3752,18 @@ NAN_METHOD(HookPackets) { } else { LOCK(cur->pfrom->cs_filter); filter.UpdateEmptyFull(); + // std::vector vData; - o->Set(NanNew("data"), NanNew(filter.vData.GetHex().c_str())); + std::string svData(filter.vData.begin(), filter.vData.end()); + char *cvData = svData.c_str(); + int vDataHexLen = sizeof(char) * (strlen(cvData) * 2) + 1; + char *vDataHex = (char *)malloc(vDataHexLen); + int written = snprintf(vDataHex, vDataHexLen, "%x", cvData); + // assert(written == vDataHexLen); + vDataHex[written] = '\0'; + + o->Set(NanNew("data"), NanNew(vDataHex)); + free(vDataHex); o->Set(NanNew("full"), NanNew(filter.isFull)); o->Set(NanNew("empty"), NanNew(filter.isEmpty)); o->Set(NanNew("hashFuncs"), NanNew(filter.nHashFuncs)); @@ -3769,7 +3781,17 @@ NAN_METHOD(HookPackets) { } else { LOCK(cur->pfrom->cs_filter); if (cur->pfrom->pfilter) { - o->Set(NanNew("data"), NanNew(vData.GetHex().c_str())); + + std::string svData(vData.begin(), vData.end()); + char *cvData = svData.c_str(); + int vDataHexLen = sizeof(char) * (strlen(cvData) * 2) + 1; + char *vDataHex = (char *)malloc(vDataHexLen); + int written = snprintf(vDataHex, vDataHexLen, "%x", cvData); + // assert(written == vDataHexLen); + vDataHex[written] = '\0'; + + o->Set(NanNew("data"), NanNew(vDataHex)); + free(vDataHex); } else { o->Set(NanNew("misbehaving"), NanNew(true)); }