diff options
author | rrs <rrs@FreeBSD.org> | 2009-03-14 13:42:13 +0000 |
---|---|---|
committer | rrs <rrs@FreeBSD.org> | 2009-03-14 13:42:13 +0000 |
commit | f25b21ac98dbffc3d1acd140518821747cfa758e (patch) | |
tree | 17dfefc898960aceecf005749d75a25787d70736 /sys/netinet/sctp_var.h | |
parent | 7cd47702cc3b729fa8002cb2c9c16a4d908c7636 (diff) | |
download | FreeBSD-src-f25b21ac98dbffc3d1acd140518821747cfa758e.zip FreeBSD-src-f25b21ac98dbffc3d1acd140518821747cfa758e.tar.gz |
Fixes several PR-SCTP releated bugs.
- When sending large PR-SCTP messages over a
lossy link we would incorrectly calculate the fwd-tsn
- When receiving large multipart pr-sctp packets we would
incorrectly send back a SACK that would renege improperly
on already received packets thus causing unneeded retransmissions.
Diffstat (limited to 'sys/netinet/sctp_var.h')
-rw-r--r-- | sys/netinet/sctp_var.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/netinet/sctp_var.h b/sys/netinet/sctp_var.h index 934af00..1ccccf3 100644 --- a/sys/netinet/sctp_var.h +++ b/sys/netinet/sctp_var.h @@ -96,7 +96,8 @@ extern struct pr_usrreqs sctp_usrreqs; #define sctp_alloc_a_strmoq(_stcb, _strmoq) { \ (_strmoq) = SCTP_ZONE_GET(SCTP_BASE_INFO(ipi_zone_strmoq), struct sctp_stream_queue_pending); \ - if ((_strmoq)) { \ + if ((_strmoq)) { \ + memset(_strmoq, 0, sizeof(struct sctp_stream_queue_pending)); \ SCTP_INCR_STRMOQ_COUNT(); \ (_strmoq)->holds_key_ref = 0; \ } \ @@ -267,6 +268,7 @@ extern struct pr_usrreqs sctp_usrreqs; #else #define sctp_total_flight_decrease(stcb, tp1) do { \ + tp1->window_probe = 0; \ if (stcb->asoc.total_flight >= tp1->book_size) { \ stcb->asoc.total_flight -= tp1->book_size; \ if (stcb->asoc.total_flight_count > 0) \ |