More PR-SCTP bugs:
- Make sure that when you kick the streams you add correctly using a 16 bit unsigned. - Make sure when sending out you allow FWD-TSN to skip over and list the ACKED chunks in the stream/seq list (so the rcv will kick the stream) MFC after: 3 days
This commit is contained in:
parent
7cd75bfd82
commit
83128708b4
@ -3750,7 +3750,8 @@ sctp_try_advance_peer_ack_point(struct sctp_tcb *stcb,
|
||||
* the chunk, advance our peer ack point and we can check
|
||||
* the next chunk.
|
||||
*/
|
||||
if (tp1->sent == SCTP_FORWARD_TSN_SKIP) {
|
||||
if ((tp1->sent == SCTP_FORWARD_TSN_SKIP) ||
|
||||
(tp1->sent == SCTP_DATAGRAM_ACKED)) {
|
||||
/* advance PeerAckPoint goes forward */
|
||||
if (compare_with_wrap(tp1->rec.data.TSN_seq,
|
||||
asoc->advanced_peer_ack_point,
|
||||
@ -5351,7 +5352,7 @@ sctp_kick_prsctp_reorder_queue(struct sctp_tcb *stcb,
|
||||
{
|
||||
struct sctp_queued_to_read *ctl, *nctl;
|
||||
struct sctp_association *asoc;
|
||||
int tt;
|
||||
uint16_t tt;
|
||||
|
||||
asoc = &stcb->asoc;
|
||||
tt = strmin->last_sequence_delivered;
|
||||
|
@ -9707,7 +9707,6 @@ send_forward_tsn(struct sctp_tcb *stcb,
|
||||
chk->rec.chunk_id.can_take_data = 0;
|
||||
chk->asoc = asoc;
|
||||
chk->whoTo = NULL;
|
||||
|
||||
chk->data = sctp_get_mbuf_for_msg(MCLBYTES, 0, M_DONTWAIT, 1, MT_DATA);
|
||||
if (chk->data == NULL) {
|
||||
sctp_free_a_chunk(stcb, chk);
|
||||
@ -9734,7 +9733,8 @@ send_forward_tsn(struct sctp_tcb *stcb,
|
||||
unsigned int cnt_of_skipped = 0;
|
||||
|
||||
TAILQ_FOREACH(at, &asoc->sent_queue, sctp_next) {
|
||||
if (at->sent != SCTP_FORWARD_TSN_SKIP) {
|
||||
if ((at->sent != SCTP_FORWARD_TSN_SKIP) &&
|
||||
(at->sent != SCTP_DATAGRAM_ACKED)) {
|
||||
/* no more to look at */
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user