mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-07-24 05:02:10 +00:00
FSRTP-14
This commit is contained in:
committed by
Brian West
parent
9a74958b22
commit
70d73cafb7
@@ -802,6 +802,7 @@ static switch_status_t sofia_read_frame(switch_core_session_t *session, switch_f
|
||||
switch_channel_t *channel = switch_core_session_get_channel(session);
|
||||
int payload = 0;
|
||||
uint32_t sanity = 1000;
|
||||
switch_rtcp_frame_t rtcp_frame;
|
||||
|
||||
switch_assert(tech_pvt != NULL);
|
||||
|
||||
@@ -859,6 +860,50 @@ static switch_status_t sofia_read_frame(switch_core_session_t *session, switch_f
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
/* Try to read an RTCP frame, if successful raise an event */
|
||||
if (switch_rtcp_zerocopy_read_frame(tech_pvt->rtp_session, &rtcp_frame) == SWITCH_STATUS_SUCCESS) {
|
||||
switch_event_t *event;
|
||||
|
||||
if (switch_event_create(&event, SWITCH_EVENT_RECV_RTCP_MESSAGE) == SWITCH_STATUS_SUCCESS) {
|
||||
char buf[30];
|
||||
|
||||
char* uuid = switch_core_session_get_uuid(session);
|
||||
if (uuid) {
|
||||
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Unique-ID", switch_core_session_get_uuid(session));
|
||||
}
|
||||
|
||||
snprintf(buf, sizeof(buf), "%.8x", rtcp_frame.ssrc);
|
||||
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "SSRC", buf);
|
||||
|
||||
snprintf(buf, sizeof(buf), "%u", rtcp_frame.ntp_msw);
|
||||
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "NTP-Most-Significant-Word", buf);
|
||||
|
||||
snprintf(buf, sizeof(buf), "%u", rtcp_frame.ntp_lsw);
|
||||
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "NTP-Least-Significant-Word", buf);
|
||||
|
||||
snprintf(buf, sizeof(buf), "%u", rtcp_frame.timestamp);
|
||||
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "RTP-Timestamp", buf);
|
||||
|
||||
snprintf(buf, sizeof(buf), "%u", rtcp_frame.packet_count);
|
||||
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Sender-Packet-Count", buf);
|
||||
|
||||
snprintf(buf, sizeof(buf), "%u", rtcp_frame.octect_count);
|
||||
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Octect-Packet-Count", buf);
|
||||
|
||||
snprintf(buf, sizeof(buf), "%lu", tech_pvt->read_frame.timestamp);
|
||||
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Last-RTP-Timestamp", buf);
|
||||
|
||||
snprintf(buf, sizeof(buf), "%u", tech_pvt->read_frame.rate);
|
||||
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "RTP-Rate", buf);
|
||||
|
||||
snprintf(buf, sizeof(buf), "%lu", switch_time_now());
|
||||
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Capture-Time", buf);
|
||||
|
||||
switch_event_fire(&event);
|
||||
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG10, "Dispatched RTCP event\n");
|
||||
}
|
||||
}
|
||||
|
||||
/* Fast PASS! */
|
||||
if (switch_test_flag((&tech_pvt->read_frame), SFF_PROXY_PACKET)) {
|
||||
|
||||
Reference in New Issue
Block a user