|
|
|
|
@ -1326,6 +1326,9 @@ void kernelize(struct packet_stream *stream) {
|
|
|
|
|
else {
|
|
|
|
|
for (GList *l = sinks->head; l; l = l->next) {
|
|
|
|
|
struct sink_handler *sh = l->data;
|
|
|
|
|
struct packet_stream *sink = sh->sink;
|
|
|
|
|
if (PS_ISSET(sink, NAT_WAIT) && !PS_ISSET(sink, RECEIVED))
|
|
|
|
|
continue;
|
|
|
|
|
const char *err = kernelize_one(&reti, &outputs, stream, sh, sinks);
|
|
|
|
|
if (err)
|
|
|
|
|
ilog(LOG_WARNING, "No support for kernel packet forwarding available (%s)", err);
|
|
|
|
|
@ -1939,6 +1942,8 @@ static int media_packet_address_check(struct packet_handler_ctx *phc)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
PS_SET(phc->mp.stream, RECEIVED);
|
|
|
|
|
|
|
|
|
|
/* do not pay attention to source addresses of incoming packets for asymmetric streams */
|
|
|
|
|
if (MEDIA_ISSET(phc->mp.media, ASYMMETRIC) || rtpe_config.endpoint_learning == EL_OFF)
|
|
|
|
|
PS_SET(phc->mp.stream, CONFIRMED);
|
|
|
|
|
@ -2328,6 +2333,13 @@ static int stream_packet(struct packet_handler_ctx *phc) {
|
|
|
|
|
goto next;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (PS_ISSET(sh->sink, NAT_WAIT) && !PS_ISSET(sh->sink, RECEIVED)) {
|
|
|
|
|
ilog(LOG_DEBUG | LOG_FLAG_LIMIT,
|
|
|
|
|
"Media packet from %s%s%s discarded due to `NAT-wait` flag",
|
|
|
|
|
FMT_M(endpoint_print_buf(&phc->mp.fsin)));
|
|
|
|
|
goto next;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (G_UNLIKELY(!sh->sink->selected_sfd || !phc->out_srtp
|
|
|
|
|
|| !phc->out_srtp->selected_sfd || !phc->in_srtp->selected_sfd))
|
|
|
|
|
{
|
|
|
|
|
|