diff options
author | Randall Stewart <rrs@FreeBSD.org> | 2007-12-04 14:41:48 +0000 |
---|---|---|
committer | Randall Stewart <rrs@FreeBSD.org> | 2007-12-04 14:41:48 +0000 |
commit | 9f22f500397cb06749d541308f3974478f4cc143 (patch) | |
tree | 73a7f50c36c6c2f08aa3230750a203cea99ecaf3 /sys/netinet/sctp_structs.h | |
parent | 3affb6fb19252e3927f6e748d88ac50ef96f9e98 (diff) | |
download | src-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.h | 1 |
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 */ |