diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2015-09-11 17:20:03 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2015-09-11 17:20:03 +0000 | 
| commit | 0e1e5c22c20e636264ff1284083c6af7a1b282cb (patch) | |
| tree | 09add9017de3c98451b1eaf85a24b608cf228e4b /sys/netinet/sctp_input.c | |
| parent | 6160f3cfcac58513eef46e925b0bf15681e88512 (diff) | |
| parent | 92392e798859a0d87094d6c0b22afee48fde7881 (diff) | |
Notes
Diffstat (limited to 'sys/netinet/sctp_input.c')
| -rw-r--r-- | sys/netinet/sctp_input.c | 22 | 
1 files changed, 8 insertions, 14 deletions
| diff --git a/sys/netinet/sctp_input.c b/sys/netinet/sctp_input.c index a1e2055171f2..9f8d032888bf 100644 --- a/sys/netinet/sctp_input.c +++ b/sys/netinet/sctp_input.c @@ -4819,13 +4819,11 @@ process_control_chunks:  			/* The INIT chunk must be the only chunk. */  			if ((num_chunks > 1) ||  			    (length - *offset > (int)SCTP_SIZE32(chk_length))) { -				op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code), -				    "INIT not the only chunk"); -				sctp_abort_association(inp, stcb, m, iphlen, -				    src, dst, sh, op_err, -				    mflowtype, mflowid, -				    vrf_id, port); +				/* RFC 4960 requires that no ABORT is sent */  				*offset = length; +				if (locked_tcb) { +					SCTP_TCB_UNLOCK(locked_tcb); +				}  				return (NULL);  			}  			/* Honor our resource limit. */ @@ -5604,16 +5602,12 @@ process_control_chunks:  					SCTP_BUF_LEN(mm) = sizeof(*phd);  					SCTP_BUF_NEXT(mm) = SCTP_M_COPYM(m, *offset, len, M_NOWAIT);  					if (SCTP_BUF_NEXT(mm)) { -						if (sctp_pad_lastmbuf(SCTP_BUF_NEXT(mm), SCTP_SIZE32(len) - len, NULL) == NULL) { -							sctp_m_freem(mm); -						} else {  #ifdef SCTP_MBUF_LOGGING -							if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { -								sctp_log_mbc(SCTP_BUF_NEXT(mm), SCTP_MBUF_ICOPY); -							} -#endif -							sctp_queue_op_err(stcb, mm); +						if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { +							sctp_log_mbc(SCTP_BUF_NEXT(mm), SCTP_MBUF_ICOPY);  						} +#endif +						sctp_queue_op_err(stcb, mm);  					} else {  						sctp_m_freem(mm);  					} | 
