summaryrefslogtreecommitdiffstats
path: root/sys/netinet/sctp_input.c
diff options
context:
space:
mode:
authorRenato Botelho <renato@netgate.com>2016-02-28 10:08:29 -0300
committerRenato Botelho <renato@netgate.com>2016-02-28 10:08:29 -0300
commitafdadc06a5da33ea6f46448ec5a8244cf6bf754d (patch)
tree0d5fcd0eacffb1f234a3c97e9ea66a4b6d28d973 /sys/netinet/sctp_input.c
parenta0ada2282856db4c48a6cbeadba5e7c6d74d45cf (diff)
parent15dc3e2435d0a1243a7938c5eda77de938e4f5de (diff)
downloadFreeBSD-src-afdadc06a5da33ea6f46448ec5a8244cf6bf754d.zip
FreeBSD-src-afdadc06a5da33ea6f46448ec5a8244cf6bf754d.tar.gz
Merge remote-tracking branch 'origin/stable/10' into devel
Diffstat (limited to 'sys/netinet/sctp_input.c')
-rw-r--r--sys/netinet/sctp_input.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/sys/netinet/sctp_input.c b/sys/netinet/sctp_input.c
index 4c1a98c..4cd9a9b 100644
--- a/sys/netinet/sctp_input.c
+++ b/sys/netinet/sctp_input.c
@@ -365,8 +365,10 @@ sctp_process_init(struct sctp_init_chunk *cp, struct sctp_tcb *stcb)
}
SCTP_TCB_SEND_UNLOCK(stcb);
asoc->streamoutcnt = asoc->pre_open_streams;
- for (i = 0; i < asoc->streamoutcnt; i++) {
- asoc->strmout[i].state = SCTP_STREAM_OPEN;
+ if (asoc->strmout) {
+ for (i = 0; i < asoc->streamoutcnt; i++) {
+ asoc->strmout[i].state = SCTP_STREAM_OPEN;
+ }
}
/* EY - nr_sack: initialize highest tsn in nr_mapping_array */
asoc->highest_tsn_inside_nr_map = asoc->highest_tsn_inside_map;
@@ -909,7 +911,9 @@ sctp_handle_shutdown(struct sctp_shutdown_chunk *cp,
return;
}
#endif
- sctp_sorwakeup(stcb->sctp_ep, stcb->sctp_socket);
+ if (stcb->sctp_socket) {
+ sctp_sorwakeup(stcb->sctp_ep, stcb->sctp_socket);
+ }
#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING)
SCTP_SOCKET_UNLOCK(so, 1);
#endif
@@ -4858,7 +4862,7 @@ process_control_chunks:
if ((stcb) && (stcb->asoc.total_output_queue_size)) {
;
} else {
- if (locked_tcb != stcb) {
+ if ((locked_tcb != NULL) && (locked_tcb != stcb)) {
/* Very unlikely */
SCTP_TCB_UNLOCK(locked_tcb);
}
OpenPOWER on IntegriCloud