diff options
author | Renato Botelho <renato@netgate.com> | 2016-02-28 10:08:29 -0300 |
---|---|---|
committer | Renato Botelho <renato@netgate.com> | 2016-02-28 10:08:29 -0300 |
commit | afdadc06a5da33ea6f46448ec5a8244cf6bf754d (patch) | |
tree | 0d5fcd0eacffb1f234a3c97e9ea66a4b6d28d973 /sys/netinet/sctp_input.c | |
parent | a0ada2282856db4c48a6cbeadba5e7c6d74d45cf (diff) | |
parent | 15dc3e2435d0a1243a7938c5eda77de938e4f5de (diff) | |
download | FreeBSD-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.c | 12 |
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); } |