void CBFreeVersion(void * vself){ CBVersion * self = vself; if (self->addRecv) CBReleaseObject(self->addRecv); if (self->addSource) CBReleaseObject(self->addSource); if (self->userAgent) CBReleaseObject(self->userAgent); CBFreeMessage(self); }
void CBFreeBlockHeaders(void * vself) { CBBlockHeaders * self = vself; for (uint16_t x = 0; x < self->headerNum; x++) { CBReleaseObject(self->blockHeaders[x]); } free(self->blockHeaders); CBFreeMessage(self); }
void CBFreeChainDescriptor(void * vself){ CBChainDescriptor * self = vself; for (uint16_t x = 0; x < self->hashNum; x++) { CBReleaseObject(self->hashes[x]); } free(self->hashes); CBFreeMessage(self); }
void CBFreeInventoryBroadcast(void * vself){ CBInventoryBroadcast * self = vself; for (uint16_t x = 0; x < self->itemNum; x++) { CBReleaseObject(self->items[x]); // Free item } free(self->items); // Free item pointer memory block. CBFreeMessage(self); }
void CBFreeTransaction(void * vself){ CBTransaction * self = vself; for (uint32_t x = 0; x < self->inputNum; x++) CBReleaseObject(self->inputs[x]); free(self->inputs); for (uint32_t x = 0; x < self->outputNum; x++) CBReleaseObject(self->outputs[x]); free(self->outputs); CBFreeMessage(CBGetObject(self)); }
void BRSendPong(BRConnection *c, CBByteArray *nonce, uint32_t length) { if (length != 8) { fprintf(stderr, "Ping nonce size %d not 8\n", length); exit(1); } printf("Sending pong reply\n"); CBMessage *m = CBNewMessageByObject(); CBInitMessageByData(m, nonce); BRSendMessage(c, m, "pong"); CBFreeMessage(m); }
void CBFreeBlock(void * vself){ CBBlock * self = vself; if(self->prevBlockHash) CBReleaseObject(self->prevBlockHash); if(self->merkleRoot) CBReleaseObject(self->merkleRoot); if (self->transactions) { // Check for the loop since the transaction number can be set without having any transactions. for (uint32_t x = 0; x < self->transactionNum; x++) if(self->transactions[x]) CBReleaseObject(self->transactions[x]); free(self->transactions); } if(self->hash) CBReleaseObject(self->hash); CBFreeMessage(CBGetObject(self)); }
void BRSendPing(BRConnection *c) { printf("Sending ping\n"); CBMessage *m = CBNewMessageByObject(); uint64_t nonce = rand(); CBByteArray *ba = CBNewByteArrayWithDataCopy((uint8_t *) &nonce, 8); CBInitMessageByData(m, ba); BRSendMessage(c, m, "ping"); CBReleaseObject(ba); CBFreeMessage(m); }
void CBFreeTransactionOutput(void * vself){ CBTransactionOutput * self = vself; if (self->scriptObject) CBReleaseObject(self->scriptObject); CBFreeMessage(self); }
void CBFreeNetworkAddress(void * vself){ CBNetworkAddress * self = vself; if (self->ip) CBReleaseObject(self->ip); CBFreeMessage(self); }
void CBFreeInventoryItem(void * vself){ CBInventoryItem * self = vself; CBReleaseObject(self->hash); CBFreeMessage(self); }
void CBFreeTransactionInput(void * vself){ CBTransactionInput * self = vself; if (self->scriptObject) CBReleaseObject(self->scriptObject); if (self->prevOut.hash) CBReleaseObject(self->prevOut.hash); CBFreeMessage(self); }
void BRSendVerack(BRConnection *c) { printf("Sending verack reply\n"); CBMessage *m = CBNewMessageByObject(); BRSendMessage(c, m, "verack"); CBFreeMessage(m); }
void BRSendGetAddr(BRConnection *c) { printf("Sending getaddr\n"); CBMessage *m = CBNewMessageByObject(); BRSendMessage(c, m, "getaddr"); CBFreeMessage(m); }