Skip to content

Commit

Permalink
lock around callbacks which can be invoked from multiple threads so w…
Browse files Browse the repository at this point in the history
…e don't get tsan data races
  • Loading branch information
hassanctech committed Jan 26, 2024
1 parent 493eb1d commit 834e336
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions tst/ProducerTestFixture.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -561,6 +561,7 @@ STATUS ProducerClientTestBase::curlEasyPerformHookFunc(PCurlResponse pCurlRespon

// Get the test object
ProducerClientTestBase* pTest = (ProducerClientTestBase*) pCurlResponse->pCurlRequest->pCurlApiCallbacks->hookCustomData;
MUTEX_LOCK(pTest->mTestCallbackLock);

DLOGV("Curl perform hook for %s", pCurlResponse->pCurlRequest->requestInfo.url);

Expand Down Expand Up @@ -623,6 +624,7 @@ STATUS ProducerClientTestBase::curlEasyPerformHookFunc(PCurlResponse pCurlRespon
pTest->mPutMediaCallResult = SERVICE_CALL_RESULT_OK;
}
}
MUTEX_UNLOCK(pTest->mTestCallbackLock);

return retStatus;
}
Expand All @@ -640,13 +642,15 @@ STATUS ProducerClientTestBase::curlWriteCallbackHookFunc(PCurlResponse pCurlResp

// Get the test object
ProducerClientTestBase* pTest = (ProducerClientTestBase*) pCurlResponse->pCurlRequest->pCurlApiCallbacks->hookCustomData;
MUTEX_LOCK(pTest->mTestCallbackLock);

pTest->mWriteCallbackFnCount++;

if (!pTest->mCurlWriteCallbackPassThrough) {
*ppRetBuffer = pTest->mWriteBuffer;
*pRetDataSize = pTest->mWriteDataSize;
}
MUTEX_UNLOCK(pTest->mTestCallbackLock);

return pTest->mWriteStatus;
}
Expand All @@ -671,6 +675,7 @@ STATUS ProducerClientTestBase::curlReadCallbackHookFunc(PCurlResponse pCurlRespo

// Get the test object
ProducerClientTestBase* pTest = (ProducerClientTestBase*) pCurlResponse->pCurlRequest->pCurlApiCallbacks->hookCustomData;
MUTEX_LOCK(pTest->mTestCallbackLock);

pTest->mReadCallbackFnCount++;

Expand All @@ -679,6 +684,7 @@ STATUS ProducerClientTestBase::curlReadCallbackHookFunc(PCurlResponse pCurlRespo
} else {
pTest->mReadStatus = status;
}
MUTEX_UNLOCK(pTest->mTestCallbackLock);

return pTest->mReadStatus;
}
Expand Down

0 comments on commit 834e336

Please sign in to comment.