MT#55283 change return type

Return the skb or NULL instead of true/false.

Take ownership of the passed skb and move the free into the inner
function on failure.

No functional change.

Change-Id: Ifb4f2f34f85f7c8b93accd781dc309f4dfa794b6
pull/2149/head
Richard Fuchs 2 weeks ago
parent 6e68c9ee01
commit df8cb30a84

@ -6625,7 +6625,7 @@ static uint32_t proxy_packet_srtp_encrypt(struct sk_buff *skb, struct re_crypto_
#include "extmap_filter.inc.c"
static bool proxy_packet_output_rtXp(struct sk_buff *skb, struct rtpengine_output *o,
static struct sk_buff *proxy_packet_output_rtXp(struct sk_buff *skb, struct rtpengine_output *o,
int rtp_pt_idx,
struct rtp_parsed *rtp, int ssrc_idx)
{
@ -6634,7 +6634,7 @@ static bool proxy_packet_output_rtXp(struct sk_buff *skb, struct rtpengine_outpu
if (!rtp->ok) {
proxy_packet_output_rtcp(skb, o, rtp, ssrc_idx);
return true;
return skb;
}
if (o->output.extmap)
@ -6643,12 +6643,12 @@ static bool proxy_packet_output_rtXp(struct sk_buff *skb, struct rtpengine_outpu
if (rtp_pt_idx >= 0) {
// blackhole?
if (o->output.pt_output[rtp_pt_idx].blackhole)
return false;
goto drop;
// pattern rewriting
if (o->output.pt_output[rtp_pt_idx].min_payload_len
&& rtp->payload_len < o->output.pt_output[rtp_pt_idx].min_payload_len)
return false;
goto drop;
if (o->output.pt_output[rtp_pt_idx].replace_pattern_len) {
if (o->output.pt_output[rtp_pt_idx].replace_pattern_len == 1)
@ -6682,7 +6682,11 @@ static bool proxy_packet_output_rtXp(struct sk_buff *skb, struct rtpengine_outpu
atomic_set(&o->output.ssrc_stats[ssrc_idx]->timestamp, ntohl(rtp->rtp_header->timestamp));
}
return true;
return skb;
drop:
kfree_skb(skb);
return NULL;
}
static int send_proxy_packet_output(struct sk_buff *skb, struct rtpengine_target *g,
@ -6690,11 +6694,9 @@ static int send_proxy_packet_output(struct sk_buff *skb, struct rtpengine_target
struct rtpengine_output *o, struct rtp_parsed *rtp, int ssrc_idx,
struct net *net)
{
bool send_or_not = proxy_packet_output_rtXp(skb, o, rtp_pt_idx, rtp, ssrc_idx);
if (!send_or_not) {
kfree_skb(skb);
skb = proxy_packet_output_rtXp(skb, o, rtp_pt_idx, rtp, ssrc_idx);
if (!skb)
return 0;
}
return send_proxy_packet(skb, &o->output.src_addr, &o->output.dst_addr, o->output.tos, net);
}

Loading…
Cancel
Save