Fix memory leak on receiver callback
The callback function must free the dataBlock because this is not done on the librist C code. Currently the receiver application is eventually killed because of RAM depletion.
My fix is this (in RISTNet.cpp
):
int RISTNetReceiver::receiveData(void *pArg, rist_data_block *pDataBlock) {
RISTNetReceiver *lWeakSelf = (RISTNetReceiver *) pArg;
std::lock_guard<std::mutex> lLock(lWeakSelf->mClientListMtx);
auto netObj = lWeakSelf->mClientListReceiver.find(pDataBlock->peer);
if (netObj != lWeakSelf->mClientListReceiver.end()) {
auto netCon = netObj->second;
auto retVal = lWeakSelf->networkDataCallback((const uint8_t *) pDataBlock->payload, pDataBlock->payload_len, netCon, pDataBlock->peer, pDataBlock->flow_id);
rist_receiver_data_block_free2(&pDataBlock);
return retVal;
} else {
LOGGER(true, LOGG_ERROR, "receivesendDataData mClientListReceiver <-> peer mismatch.")
}
return -1;
}
(I tried to send a merge request but the mail was rejected)