|
|
|
@ -326,24 +326,24 @@ static int call_savp2avp_rtcp(str *s, struct streamrelay *r) { |
|
|
|
static int call_avpf2savp_rtcp(str *s, struct streamrelay *r) { |
|
|
|
int ret; |
|
|
|
ret = rtcp_avpf2avp(s); |
|
|
|
if (ret) |
|
|
|
if (ret < 0) |
|
|
|
return ret; |
|
|
|
return rtcp_avp2savp(s, &r->other->crypto.out); |
|
|
|
} |
|
|
|
static int call_savpf2avp_rtcp(str *s, struct streamrelay *r) { |
|
|
|
int ret; |
|
|
|
ret = rtcp_savp2avp(s, &r->crypto.in); |
|
|
|
if (ret) |
|
|
|
if (ret < 0) |
|
|
|
return ret; |
|
|
|
return rtcp_avpf2avp(s); |
|
|
|
} |
|
|
|
static int call_savpf2savp_rtcp(str *s, struct streamrelay *r) { |
|
|
|
int ret; |
|
|
|
ret = rtcp_savp2avp(s, &r->crypto.in); |
|
|
|
if (ret) |
|
|
|
if (ret < 0) |
|
|
|
return ret; |
|
|
|
ret = rtcp_avpf2avp(s); |
|
|
|
if (ret) |
|
|
|
if (ret < 0) |
|
|
|
return ret; |
|
|
|
return rtcp_avp2savp(s, &r->other->crypto.out); |
|
|
|
} |
|
|
|
@ -555,6 +555,11 @@ static int stream_packet(struct streamrelay *sr_incoming, str *s, struct sockadd |
|
|
|
determine_handler(sr_in_rtcp); |
|
|
|
if (sr_in_rtcp->handler->rewrite) |
|
|
|
handler_ret = sr_in_rtcp->handler->rewrite(s, sr_in_rtcp); |
|
|
|
/* return values are: 0 = forward packet, -1 = error/dont forward, |
|
|
|
* 1 = forward and push update to redis */ |
|
|
|
|
|
|
|
if (handler_ret > 0) |
|
|
|
update = 1; |
|
|
|
|
|
|
|
use_cand: |
|
|
|
if (p_incoming->confirmed || !p_incoming->filled || sr_incoming->idx != 0) |
|
|
|
@ -598,7 +603,7 @@ peerinfo: |
|
|
|
forward: |
|
|
|
if (is_addr_unspecified(&sr_incoming->peer_advertised.ip46) |
|
|
|
|| !sr_incoming->peer_advertised.port |
|
|
|
|| stun_ret || handler_ret) |
|
|
|
|| stun_ret || handler_ret < 0) |
|
|
|
goto drop; |
|
|
|
|
|
|
|
if (muxed_rtcp == 2) { |
|
|
|
|