summaryrefslogtreecommitdiffstats
path: root/sys/netinet/sctp_var.h
diff options
context:
space:
mode:
authorrrs <rrs@FreeBSD.org>2009-03-14 13:42:13 +0000
committerrrs <rrs@FreeBSD.org>2009-03-14 13:42:13 +0000
commitf25b21ac98dbffc3d1acd140518821747cfa758e (patch)
tree17dfefc898960aceecf005749d75a25787d70736 /sys/netinet/sctp_var.h
parent7cd47702cc3b729fa8002cb2c9c16a4d908c7636 (diff)
downloadFreeBSD-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.h4
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) \
OpenPOWER on IntegriCloud