summaryrefslogtreecommitdiffstats
path: root/sys/netinet/sctp_output.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/netinet/sctp_output.c')
-rw-r--r--sys/netinet/sctp_output.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/sys/netinet/sctp_output.c b/sys/netinet/sctp_output.c
index cb8b93f..430f853 100644
--- a/sys/netinet/sctp_output.c
+++ b/sys/netinet/sctp_output.c
@@ -9653,7 +9653,7 @@ sctp_send_packet_dropped(struct sctp_tcb *stcb, struct sctp_nets *net,
int len;
int was_trunc = 0;
struct ip *iph;
- int fullsz = 0, trimby = 0;
+ int fullsz = 0, extra = 0;
long spc;
asoc = &stcb->asoc;
@@ -9674,6 +9674,7 @@ sctp_send_packet_dropped(struct sctp_tcb *stcb, struct sctp_nets *net,
chk->copy_by_ref = 0;
iph = mtod(m, struct ip *);
if (iph == NULL) {
+ sctp_free_a_chunk(stcb, chk);
return;
}
if (iph->ip_v == IPVERSION) {
@@ -9691,10 +9692,8 @@ sctp_send_packet_dropped(struct sctp_tcb *stcb, struct sctp_nets *net,
/*
* only send 1 mtu worth, trim off the excess on the end.
*/
- fullsz = len + SCTP_MAX_OVERHEAD;
+ fullsz = len - extra;
len = min(stcb->asoc.smallest_mtu, MCLBYTES) - SCTP_MAX_OVERHEAD;
- trimby = len - fullsz;
- m_adj(m, trimby);
was_trunc = 1;
}
chk->asoc = &stcb->asoc;
OpenPOWER on IntegriCloud