quality-of-life improvements, lower client slave thread stack to 512KB (maybe still too much), dynamic fullverify - freeing transactions after verification
This commit is contained in:
@@ -85,7 +85,7 @@ bool Transaction_Verify(const signed_transaction_t* tx) {
|
||||
// If all checks pass, verify the signature
|
||||
return Crypto_VerifySignature(
|
||||
txHash,
|
||||
sizeof(transaction_t),
|
||||
32,
|
||||
tx->signature.signature,
|
||||
tx->transaction.compressedPublicKey
|
||||
);
|
||||
|
||||
@@ -416,6 +416,11 @@ static bool VerifyChainFully(blockchain_t* chain) {
|
||||
if (memcmp(blk->header.merkleRoot, expectedMerkle, sizeof(expectedMerkle)) != 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Transactions are persisted on disk. Once this block is fully verified,
|
||||
// release its in-memory transaction list to reduce peak memory usage.
|
||||
DynArr_destroy(blk->transactions);
|
||||
blk->transactions = NULL;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@@ -126,12 +126,18 @@ int TcpClient_Connect(
|
||||
client->on_connect(conn);
|
||||
}
|
||||
|
||||
if (pthread_create(&conn->ioThread, NULL, TcpClient_ThreadProc, client) != 0) {
|
||||
pthread_attr_t attr;
|
||||
pthread_attr_init(&attr);
|
||||
pthread_attr_setstacksize(&attr, TCP_THREAD_STACK_SIZE);
|
||||
|
||||
if (pthread_create(&conn->ioThread, &attr, TcpClient_ThreadProc, client) != 0) {
|
||||
TcpConnection_Destroy(conn);
|
||||
free(conn);
|
||||
client->connection = NULL;
|
||||
pthread_attr_destroy(&attr);
|
||||
return -1;
|
||||
}
|
||||
pthread_attr_destroy(&attr);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -144,11 +144,17 @@ static void* TcpServer_threadprocess(void* ptr) {
|
||||
arg->clientPtr = heapCli;
|
||||
arg->serverPtr = svr;
|
||||
|
||||
if (pthread_create(&heapCli->ioThread, NULL, TcpServer_clientthreadprocess, arg) != 0) {
|
||||
pthread_attr_t attr;
|
||||
pthread_attr_init(&attr);
|
||||
pthread_attr_setstacksize(&attr, TCP_THREAD_STACK_SIZE);
|
||||
|
||||
if (pthread_create(&heapCli->ioThread, &attr, TcpServer_clientthreadprocess, arg) != 0) {
|
||||
free(arg);
|
||||
TcpServer_Disconnect(svr, heapCli);
|
||||
pthread_attr_destroy(&attr);
|
||||
continue;
|
||||
}
|
||||
pthread_attr_destroy(&attr);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
||||
Reference in New Issue
Block a user