From fd115395f9e80ed0d4079d3a20fc4216d4e306bb Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 12 May 2009 16:46:16 +0000 Subject: [PATCH] FSCORE-365 git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@13286 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/switch_apr.c | 14 +++++++++++--- src/switch_rtp.c | 5 +++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/switch_apr.c b/src/switch_apr.c index a24dc361e8..55ddea5cd0 100644 --- a/src/switch_apr.c +++ b/src/switch_apr.c @@ -786,15 +786,23 @@ SWITCH_DECLARE(switch_status_t) switch_pollset_create(switch_pollset_t **pollset 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; diff --git a/src/switch_rtp.c b/src/switch_rtp.c index 2bf5465646..713835841d 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -1475,7 +1475,8 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_ 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; } @@ -1487,7 +1488,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_ 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); }