Hi, For my application, I made some changes in switch_rtp to use poll to read from network instead of synchronising on timer, switch_rtp_clear_flag(rtp_session, SWITCH_RTP_FLAG_USE_TIMER); I observed a weird behaviour with regarding to switch_poll, it blocks with 20ms always even the timer value is 10 ms when there are no packet received on network. + pt = 10 * 1000; // 10ms+ switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(rtp_session->session), SWITCH_LOG_DEBUG, "+poll reading:%d\n", pt); } poll_status = switch_poll(rtp_session->read_pollfd, 1, &fdr, pt);+ switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(rtp_session->session), SWITCH_LOG_DEBUG, "-poll reading:%d:%d\n", pt, poll_status); The following is from the log, 0c19d3aa-429e-11e8-bbd0-fb8396b8383d 2018-04-17 20:21:31.453604 [DEBUG] [23807] switch_rtp.c:7001 +poll reading:100000c19d3aa-429e-11e8-bbd0-fb8396b8383d 2018-04-17 20:21:31.473649 [DEBUG] [23807] switch_rtp.c:7005 -poll reading:10000:2 Any idea? This is really weird, I expect switch_poll works as select. Many thanks for help. /Kaiduan