Merge pull request #1797 in FS/freeswitch from bugfix/FS-11981-freeswitch-crash-any-time-in-switch_timer.c-when-high-throughput to master
* commit '48b8fa5864548322944bdcdad0671ffbdc32cffb': FS-11981: [Core] Fix FreeSWITCH crash when timerfd is initialized with an error.
This commit is contained in:
commit
8f4b522293
|
@ -479,6 +479,10 @@ static switch_status_t _timerfd_next(switch_timer_t *timer)
|
|||
interval_timer_t *it = timer->private_info;
|
||||
uint64_t u64 = 0;
|
||||
|
||||
if (!it) {
|
||||
return SWITCH_STATUS_GENERR;
|
||||
}
|
||||
|
||||
if (read(it->fd, &u64, sizeof(u64)) < 0) {
|
||||
return SWITCH_STATUS_GENERR;
|
||||
} else {
|
||||
|
@ -495,6 +499,10 @@ static switch_status_t _timerfd_check(switch_timer_t *timer, switch_bool_t step)
|
|||
struct itimerspec val;
|
||||
int diff;
|
||||
|
||||
if (!it) {
|
||||
return SWITCH_STATUS_GENERR;
|
||||
}
|
||||
|
||||
timerfd_gettime(it->fd, &val);
|
||||
diff = val.it_interval.tv_nsec / 1000;
|
||||
|
||||
|
@ -515,9 +523,12 @@ static switch_status_t _timerfd_check(switch_timer_t *timer, switch_bool_t step)
|
|||
static switch_status_t _timerfd_destroy(switch_timer_t *timer)
|
||||
{
|
||||
interval_timer_t *it = timer->private_info;
|
||||
int rc;
|
||||
int rc = SWITCH_STATUS_GENERR;
|
||||
|
||||
if (it) {
|
||||
rc = timerfd_stop_interval(it);
|
||||
}
|
||||
|
||||
rc = timerfd_stop_interval(it);
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue