Browse Source

TT#99621 allow RTCP handlers to discard the packet

Change-Id: Ia48a0fa375afc46d9d2ef639ab55538b4b8a5e51
pull/1163/head
Richard Fuchs 5 years ago
parent
commit
195542a4ec
2 changed files with 10 additions and 3 deletions
  1. +5
    -2
      daemon/media_socket.c
  2. +5
    -1
      daemon/rtcp.c

+ 5
- 2
daemon/media_socket.c View File

@ -1764,16 +1764,19 @@ static int do_rtcp(struct packet_handler_ctx *phc) {
int ret = -1;
GQueue rtcp_list = G_QUEUE_INIT;
if (rtcp_parse(&rtcp_list, &phc->mp))
int rtcp_ret = rtcp_parse(&rtcp_list, &phc->mp);
if (rtcp_ret < 0)
goto out;
if (rtcp_ret == 1)
goto ok;
if (phc->rtcp_filter)
if (phc->rtcp_filter(&phc->mp, &rtcp_list))
goto out;
// queue for output
codec_add_raw_packet(&phc->mp);
ok:
ret = 0;
out:
rtcp_list_free(&rtcp_list);
return ret;


+ 5
- 1
daemon/rtcp.c View File

@ -247,6 +247,9 @@ struct rtcp_process_ctx {
// Homer stats
GString *json;
int json_init_len;
// verdict
int discard:1;
};
// all available methods
struct rtcp_handler {
@ -646,6 +649,7 @@ void rtcp_list_free(GQueue *q) {
// returns: 0 = ok, forward, -1 = error, drop, 1 = ok, but discard (no forward)
int rtcp_parse(GQueue *q, struct media_packet *mp) {
struct rtcp_header *hdr;
struct rtcp_chain_element *el;
@ -714,7 +718,7 @@ next:
CAH(finish, c, &mp->fsin, &mp->sfd->socket.local, &mp->tv);
CAH(destroy);
return 0;
return log_ctx->discard ? 1 : 0;
error:
CAH(finish, c, &mp->fsin, &mp->sfd->socket.local, &mp->tv);


Loading…
Cancel
Save