SWITCH_DECLARE(switch_status_t) switch_pollset_add(switch_pollset_t *pollset, const switch_pollfd_t *descriptor)
{
+ if (!pollset) {
+ return SWITCH_STATUS_FALSE;
+ }
+
return apr_pollset_add((apr_pollset_t *)pollset, (const apr_pollfd_t *)descriptor);
}
SWITCH_DECLARE(switch_status_t) switch_poll(switch_pollfd_t *aprset, int32_t numsock, int32_t *nsds, switch_interval_time_t timeout)
{
- apr_status_t st = apr_poll((apr_pollfd_t *)aprset, numsock, nsds, timeout);
+ apr_status_t st = SWITCH_STATUS_FALSE;
+
+ if (aprset) {
+ st = apr_poll((apr_pollfd_t *)aprset, numsock, nsds, timeout);
- if (st == APR_TIMEUP) {
- st = SWITCH_STATUS_TIMEOUT;
+ if (st == APR_TIMEUP) {
+ st = SWITCH_STATUS_TIMEOUT;
+ }
}
return st;
int do_cng = 0;
if (rtp_session->timer.interval) {
- if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_AUTOFLUSH) || switch_test_flag(rtp_session, SWITCH_RTP_FLAG_STICKY_FLUSH)) {
+ if ((switch_test_flag(rtp_session, SWITCH_RTP_FLAG_AUTOFLUSH) || switch_test_flag(rtp_session, SWITCH_RTP_FLAG_STICKY_FLUSH)) &&
+ rtp_session->read_pollfd) {
if (switch_poll(rtp_session->read_pollfd, 1, &fdr, 1) == SWITCH_STATUS_SUCCESS) {
hot_socket = 1;
}
recvfrom:
- if (!rtp_session->timer.interval) {
+ if (!rtp_session->timer.interval && rtp_session->read_pollfd) {
poll_status = switch_poll(rtp_session->read_pollfd, 1, &fdr, poll_sec * 1000000);
}