|
|
@ -1326,6 +1326,9 @@ void kernelize(struct packet_stream *stream) { |
|
|
else { |
|
|
else { |
|
|
for (GList *l = sinks->head; l; l = l->next) { |
|
|
for (GList *l = sinks->head; l; l = l->next) { |
|
|
struct sink_handler *sh = l->data; |
|
|
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); |
|
|
const char *err = kernelize_one(&reti, &outputs, stream, sh, sinks); |
|
|
if (err) |
|
|
if (err) |
|
|
ilog(LOG_WARNING, "No support for kernel packet forwarding available (%s)", 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 */ |
|
|
/* 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) |
|
|
if (MEDIA_ISSET(phc->mp.media, ASYMMETRIC) || rtpe_config.endpoint_learning == EL_OFF) |
|
|
PS_SET(phc->mp.stream, CONFIRMED); |
|
|
PS_SET(phc->mp.stream, CONFIRMED); |
|
|
@ -2328,6 +2333,13 @@ static int stream_packet(struct packet_handler_ctx *phc) { |
|
|
goto next; |
|
|
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 |
|
|
if (G_UNLIKELY(!sh->sink->selected_sfd || !phc->out_srtp |
|
|
|| !phc->out_srtp->selected_sfd || !phc->in_srtp->selected_sfd)) |
|
|
|| !phc->out_srtp->selected_sfd || !phc->in_srtp->selected_sfd)) |
|
|
{ |
|
|
{ |
|
|
|