aboutsummaryrefslogtreecommitdiff
path: root/sys/netinet/sctp_structs.h
diff options
context:
space:
mode:
authorRandall Stewart <rrs@FreeBSD.org>2007-12-04 14:41:48 +0000
committerRandall Stewart <rrs@FreeBSD.org>2007-12-04 14:41:48 +0000
commit9f22f500397cb06749d541308f3974478f4cc143 (patch)
tree73a7f50c36c6c2f08aa3230750a203cea99ecaf3 /sys/netinet/sctp_structs.h
parent3affb6fb19252e3927f6e748d88ac50ef96f9e98 (diff)
downloadsrc-9f22f500397cb06749d541308f3974478f4cc143.tar.gz
src-9f22f500397cb06749d541308f3974478f4cc143.zip
- Found a problem in non-blocking sends. When
sending, once the locks are all unlocked to do the copy's in, its possible that other events could then raise the number of bytes outstanding pushing it so not all the message would fit. This would then cause us to send only part of the message. This fix makes it so we keep a "reserved" amount that can be kept in mind when making calculations to send. - rcv msg args with a NULL/NULL for to/tolen will return an error incorrectly for the 1-2-1 model. - We were not doing 0 len return correctly and not setting cantrcv more correctly. Previouly we "fixed" this area by taking out the socantrcv since we then could not get the data out. The correct rix is to still flag the socket but alow a by-pass route to continue to read until all data is consumed. MFC after: 1 week
Notes
Notes: svn path=/head/; revision=174257
Diffstat (limited to 'sys/netinet/sctp_structs.h')
-rw-r--r--sys/netinet/sctp_structs.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/netinet/sctp_structs.h b/sys/netinet/sctp_structs.h
index 1d145e245459..69b6f921f91b 100644
--- a/sys/netinet/sctp_structs.h
+++ b/sys/netinet/sctp_structs.h
@@ -800,6 +800,7 @@ struct sctp_association {
uint32_t total_output_queue_size;
uint32_t sb_cc; /* shadow of sb_cc */
+ uint32_t sb_send_resv; /* amount reserved on a send */
uint32_t my_rwnd_control_len; /* shadow of sb_mbcnt used for rwnd
* control */
/* 32 bit nonce stuff */