]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Turns out we would reset the TSN seq counter during
authorRandall Stewart <rrs@FreeBSD.org>
Sat, 11 Nov 2006 15:59:01 +0000 (15:59 +0000)
committerRandall Stewart <rrs@FreeBSD.org>
Sat, 11 Nov 2006 15:59:01 +0000 (15:59 +0000)
commit6a91f103b64d8463a120389a49116fee196beff3
treead54f2c4385045522d51df03b3f6502d25221456
parent9f3b75b7b4eaf13bdcbf2f1d9262ac5265289934
Turns out we would reset the TSN seq counter during
a colliding INIT. This if fine except when we have
data outstanding... we basically reset it to the
previous value it was.. so then we end up assigning
the same TSN to two different data chunks.
This patch:

1) Finds a missing lock for when we change the stream
   numbers during COOKIE and INIT-ACK processing.. we
   were NOT locking the send_buffer.. which COULD cause
   problems (found by inspection looking for <2>)

2) Fixes a case during a colliding INIT where we incorrectly
   reset the sending Sequence thus in some cases duplicately
   assigning a TSN.

3) Additional enhancments to logging so we can see strm/tsn in
   the receiver AND new tracking to watch what the sender
   is doing with TSN and STRM seq's.

Approved by: gnn
sys/netinet/sctp_constants.h
sys/netinet/sctp_indata.c
sys/netinet/sctp_input.c
sys/netinet/sctp_output.c
sys/netinet/sctp_uio.h
sys/netinet/sctputil.c
sys/netinet/sctputil.h