mirror of
https://github.com/jambonz/freeswitch-modules.git
synced 2026-01-25 02:08:27 +00:00
bug: fix crashing race condition in mod_dub
This commit is contained in:
@@ -58,7 +58,7 @@ AudioProducerFile::AudioProducerFile(
|
|||||||
std::mutex& mutex,
|
std::mutex& mutex,
|
||||||
CircularBuffer_t& circularBuffer,
|
CircularBuffer_t& circularBuffer,
|
||||||
int sampleRate
|
int sampleRate
|
||||||
) : AudioProducer(mutex, circularBuffer, sampleRate), _timer(io_service), _mh(nullptr) {
|
) : AudioProducer(mutex, circularBuffer, sampleRate), _timer(io_service), _mh(nullptr), _fp(nullptr) {
|
||||||
|
|
||||||
AudioProducerFile::_init();
|
AudioProducerFile::_init();
|
||||||
}
|
}
|
||||||
@@ -176,16 +176,19 @@ void AudioProducerFile::stop() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void AudioProducerFile::reset() {
|
void AudioProducerFile::reset() {
|
||||||
|
{
|
||||||
|
std::lock_guard<std::mutex> lock(_mutex);
|
||||||
if (_fp) {
|
if (_fp) {
|
||||||
fclose(_fp);
|
fclose(_fp);
|
||||||
_fp = nullptr;
|
_fp = nullptr;
|
||||||
|
}
|
||||||
|
if (_mh) {
|
||||||
|
mpg123_close(_mh);
|
||||||
|
mpg123_delete(_mh);
|
||||||
|
_mh = nullptr;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (_mh) {
|
_timer.cancel();
|
||||||
mpg123_close(_mh);
|
|
||||||
mpg123_delete(_mh);
|
|
||||||
_mh = nullptr;
|
|
||||||
}
|
|
||||||
_timer.cancel();
|
|
||||||
_status = Status_t::STATUS_NONE;
|
_status = Status_t::STATUS_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -636,15 +636,18 @@ void AudioProducerHttp::stop() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void AudioProducerHttp::reset() {
|
void AudioProducerHttp::reset() {
|
||||||
if (_easy) {
|
{
|
||||||
curl_multi_remove_handle(global.multi, _easy);
|
std::lock_guard<std::mutex> lock(_mutex);
|
||||||
curl_easy_cleanup(_easy);
|
if (_easy) {
|
||||||
_easy = nullptr;
|
curl_multi_remove_handle(global.multi, _easy);
|
||||||
}
|
curl_easy_cleanup(_easy);
|
||||||
if (_mh) {
|
_easy = nullptr;
|
||||||
mpg123_close(_mh);
|
}
|
||||||
mpg123_delete(_mh);
|
if (_mh) {
|
||||||
_mh = nullptr;
|
mpg123_close(_mh);
|
||||||
|
mpg123_delete(_mh);
|
||||||
|
_mh = nullptr;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
_err_msg.clear();
|
_err_msg.clear();
|
||||||
_response_code = 0;
|
_response_code = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user