From d15bfa2bd318951c1fffe1cd58ebdb8c1c782e4e Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 2 Jul 2019 04:58:27 -1100 Subject: [PATCH] Stub messages --- src/init.cpp | 2 +- src/komodo_nSPV.h | 73 +++++++++++++++++++++++++++++++++-------------- src/net.cpp | 2 +- 3 files changed, 54 insertions(+), 23 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index a31ec56bd..7e131b759 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1067,7 +1067,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) if ( KOMODO_NSPV != 0 ) { fDisableWallet = true; - nLocalServices &= ~NODE_NETWORK; + nLocalServices = 0; } if (!fDisableWallet) RegisterWalletRPCCommands(tableRPC); diff --git a/src/komodo_nSPV.h b/src/komodo_nSPV.h index 133dcee48..7be895f83 100644 --- a/src/komodo_nSPV.h +++ b/src/komodo_nSPV.h @@ -21,37 +21,68 @@ #ifndef KOMODO_NSPV_H #define KOMODO_NSPV_H -void komodo_nSPVreq(CNode *pfrom,std::vector payload) // received a request -{ - -} +#define NSPV_INFO 0x00 +#define NSPV_INFORESP 0x01 +#define NSPV_UTXOS 0x02 +#define NSPV_UTXOSRESP 0x03 -void komodo_nSPVresp(CNode *pfrom,std::vector payload) // received a response -{ - -} -/*void komodo_sendnSPV(int32_t minpeers,int32_t maxpeers,const char *message,std::vector payload) +void komodo_nSPVreq(CNode *pfrom,std::vector request) // received a request { - int32_t numsent = 0; - LOCK(cs_vNodes); - BOOST_FOREACH(CNode* pnode, vNodes) + int32_t len; std::vector response; + if ( (len= request.size()) > 0 ) { - if ( pnode->hSocket == INVALID_SOCKET ) - continue; - if ( numsent < minpeers || (rand() % 10) == 0 ) + response.resize(1); + if ( len == 1 && request[0] == NSPV_INFO ) // info { - //fprintf(stderr,"pushmessage\n"); - pnode->PushMessage(message,payload); - if ( numsent++ > maxpeers ) + response[0] = NSPV_INFORESP; + pnode->PushMessage("nSPV",response); + } + else if ( request[0] == NSPV_UTXOS ) + { + response[0] = NSPV_UTXOSRESP; + pnode->PushMessage("nSPV",response); + } + } +} + +void komodo_nSPVresp(CNode *pfrom,std::vector response) // received a response +{ + int32_t len; + if ( (len= response.size()) > 0 ) + { + switch ( response[0] ) + { + case NSPV_INFORESP: + fprintf(stderr,"got info response\n"); + break; + case NSPV_UTXOSRESP: + fprintf(stderr,"got utxos response\n"); + break; + default: fprintf(stderr,"unexpected response %02x size.%d\n",response[0],(int32_t)response.size()); break; } } -}*/ +} -void komodo_nSPV(CNode *pto) // issue nSPV requests if has nServices +void komodo_nSPV(CNode *pto) { - + std::vector request; + // limit frequency! + if ( (pto->nServices & NODE_ADDRINDEX) != 0 ) + { + // get utxo since lastheight + payload.resize(1); + payload[0] = NSPV_UTXOS; + pnode->PushMessage("getnSPV",request); + } + else + { + // query current height, blockhash, notarization info + payload.resize(1); + payload[0] = NSPV_INFO; + pnode->PushMessage("getnSPV",request); + } } #endif // KOMODO_NSPV_H diff --git a/src/net.cpp b/src/net.cpp index 7181f8a95..1e5f11ee0 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -458,7 +458,7 @@ void CNode::PushVersion() LogPrint("net", "send version message: version %d, blocks=%d, us=%s, peer=%d\n", PROTOCOL_VERSION, nBestHeight, addrMe.ToString(), id); PushMessage("version", PROTOCOL_VERSION, nLocalServices, nTime, addrYou, addrMe, nLocalHostNonce, strSubVersion, nBestHeight, true); -fprintf(stderr,"PUSH services.%llx\n",(long long)nLocalServices); +//fprintf(stderr,"PUSH services.%llx\n",(long long)nLocalServices); }