diff options
author | Michael Tuexen <tuexen@FreeBSD.org> | 2016-08-07 12:51:13 +0000 |
---|---|---|
committer | Michael Tuexen <tuexen@FreeBSD.org> | 2016-08-07 12:51:13 +0000 |
commit | 4d58b0c3a9bcead24d81492638f38564f48e9316 (patch) | |
tree | bf1d57e8fe7b25aa8140b2d4d796f9e21f2fc5d1 /sys/netinet/sctp_input.c | |
parent | df28d191fa2f20588a79b8280bea9e3ecd838087 (diff) | |
download | src-4d58b0c3a9bcead24d81492638f38564f48e9316.tar.gz src-4d58b0c3a9bcead24d81492638f38564f48e9316.zip |
Notes
Diffstat (limited to 'sys/netinet/sctp_input.c')
-rw-r--r-- | sys/netinet/sctp_input.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/netinet/sctp_input.c b/sys/netinet/sctp_input.c index c07019c965c6..8dacea7067eb 100644 --- a/sys/netinet/sctp_input.c +++ b/sys/netinet/sctp_input.c @@ -260,6 +260,7 @@ sctp_is_there_unsent_data(struct sctp_tcb *stcb, int so_locked } atomic_subtract_int(&stcb->asoc.stream_queue_cnt, 1); TAILQ_REMOVE(&stcb->asoc.strmout[i].outqueue, sp, next); + stcb->asoc.ss_functions.sctp_ss_remove_from_stream(stcb, asoc, &asoc->strmout[i], sp, 1); if (sp->net) { sctp_free_remote_addr(sp->net); sp->net = NULL; @@ -341,8 +342,9 @@ sctp_process_init(struct sctp_init_chunk *cp, struct sctp_tcb *stcb) for (i = newcnt; i < asoc->pre_open_streams; i++) { outs = &asoc->strmout[i]; TAILQ_FOREACH_SAFE(sp, &outs->outqueue, next, nsp) { + atomic_subtract_int(&stcb->asoc.stream_queue_cnt, 1); TAILQ_REMOVE(&outs->outqueue, sp, next); - asoc->stream_queue_cnt--; + stcb->asoc.ss_functions.sctp_ss_remove_from_stream(stcb, asoc, outs, sp, 1); sctp_ulp_notify(SCTP_NOTIFY_SPECIAL_SP_FAIL, stcb, 0, sp, SCTP_SO_NOT_LOCKED); if (sp->data) { |