52 lines
2.1 KiB
Diff
52 lines
2.1 KiB
Diff
|
|
# HG changeset patch
|
||
|
|
# User Dan Minor <dminor@mozilla.com>
|
||
|
|
# Date 1600897949 0
|
||
|
|
# Wed Sep 23 21:52:29 2020 +0000
|
||
|
|
# Node ID ed2a659e965f27943d9b0c15d6e78d14e1ce9cb2
|
||
|
|
# Parent 7b2de9e57a768d949b569ac83fe5d58147e731b5
|
||
|
|
Bug 1666570 - Cherrypick ffed0925f27d404173c1e3e750d818f432d2c019 from usrsctp; r=drno
|
||
|
|
|
||
|
|
Differential Revision: https://phabricator.services.mozilla.com/D91047
|
||
|
|
|
||
|
|
diff -r 7b2de9e57a76 -r ed2a659e965f netwerk/sctp/src/netinet/sctp_indata.c
|
||
|
|
--- a/netwerk/sctp/src/netinet/sctp_indata.c Wed Sep 23 19:42:19 2020 +0000
|
||
|
|
+++ b/netwerk/sctp/src/netinet/sctp_indata.c Wed Sep 23 21:52:29 2020 +0000
|
||
|
|
@@ -1664,6 +1664,7 @@ sctp_process_a_data_chunk(struct sctp_tc
|
||
|
|
/* Process a data chunk */
|
||
|
|
/* struct sctp_tmit_chunk *chk; */
|
||
|
|
struct sctp_tmit_chunk *chk;
|
||
|
|
+ struct sctp_stream_in *strm;
|
||
|
|
uint32_t tsn, fsn, gap, mid;
|
||
|
|
struct mbuf *dmbuf;
|
||
|
|
int the_len;
|
||
|
|
@@ -2296,12 +2297,13 @@ finish_express_del:
|
||
|
|
/* All can be removed */
|
||
|
|
TAILQ_FOREACH_SAFE(control, &asoc->pending_reply_queue, next, ncontrol) {
|
||
|
|
TAILQ_REMOVE(&asoc->pending_reply_queue, control, next);
|
||
|
|
+ strm = &asoc->strmin[control->sinfo_stream];
|
||
|
|
sctp_queue_data_to_stream(stcb, asoc, control, abort_flag, &need_reasm_check);
|
||
|
|
if (*abort_flag) {
|
||
|
|
return (0);
|
||
|
|
}
|
||
|
|
if (need_reasm_check) {
|
||
|
|
- (void)sctp_deliver_reasm_check(stcb, asoc, &asoc->strmin[control->sinfo_stream], SCTP_READ_LOCK_NOT_HELD);
|
||
|
|
+ (void)sctp_deliver_reasm_check(stcb, asoc, strm, SCTP_READ_LOCK_NOT_HELD);
|
||
|
|
need_reasm_check = 0;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
@@ -2316,12 +2318,13 @@ finish_express_del:
|
||
|
|
* control->sinfo_tsn > liste->tsn
|
||
|
|
*/
|
||
|
|
TAILQ_REMOVE(&asoc->pending_reply_queue, control, next);
|
||
|
|
+ strm = &asoc->strmin[control->sinfo_stream];
|
||
|
|
sctp_queue_data_to_stream(stcb, asoc, control, abort_flag, &need_reasm_check);
|
||
|
|
if (*abort_flag) {
|
||
|
|
return (0);
|
||
|
|
}
|
||
|
|
if (need_reasm_check) {
|
||
|
|
- (void)sctp_deliver_reasm_check(stcb, asoc, &asoc->strmin[control->sinfo_stream], SCTP_READ_LOCK_NOT_HELD);
|
||
|
|
+ (void)sctp_deliver_reasm_check(stcb, asoc, strm, SCTP_READ_LOCK_NOT_HELD);
|
||
|
|
need_reasm_check = 0;
|
||
|
|
}
|
||
|
|
}
|