From 5068e5cf55d3fa82fef286b592bddedf19915b58 Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Wed, 22 Oct 2014 15:59:42 -0700 Subject: [PATCH] add "alert" handler. --- src/bitcoindjs.cc | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/bitcoindjs.cc b/src/bitcoindjs.cc index a76436d3..4d75b043 100644 --- a/src/bitcoindjs.cc +++ b/src/bitcoindjs.cc @@ -3704,7 +3704,28 @@ NAN_METHOD(HookPackets) { o->Set(NanNew("finished"), NanNew(false)); } } else if (strCommand == "alert") { - ; + CAlert alert; + cur->vRecv >> alert; + + uint256 alertHash = alert.GetHash(); + + o->Set(NanNew("hash"), NanNew(alertHash.GetHex().c_str())); + + if (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())); + o->Set(NanNew("misbehaving"), NanNew(false)); + } else { + // Small DoS penalty so peers that send us lots of + // duplicate/expired/invalid-signature/whatever alerts + // eventually get banned. + // This isn't a Misbehaving(100) (immediate ban) because the + // peer might be an older or different implementation with + // a different signature key, etc. + o->Set(NanNew("misbehaving"), NanNew(true)); + } + } } else if (strCommand == "filterload") { ; } else if (strCommand == "filteradd") {