|
@@ -5899,12 +5899,6 @@ static int sctp_eat_data(const struct sctp_association *asoc,
|
|
|
return SCTP_IERROR_NO_DATA;
|
|
|
}
|
|
|
|
|
|
- /* If definately accepting the DATA chunk, record its TSN, otherwise
|
|
|
- * wait for renege processing.
|
|
|
- */
|
|
|
- if (SCTP_CMD_CHUNK_ULP == deliver)
|
|
|
- sctp_add_cmd_sf(commands, SCTP_CMD_REPORT_TSN, SCTP_U32(tsn));
|
|
|
-
|
|
|
chunk->data_accepted = 1;
|
|
|
|
|
|
/* Note: Some chunks may get overcounted (if we drop) or overcounted
|
|
@@ -5924,6 +5918,9 @@ static int sctp_eat_data(const struct sctp_association *asoc,
|
|
|
* and discard the DATA chunk.
|
|
|
*/
|
|
|
if (ntohs(data_hdr->stream) >= asoc->c.sinit_max_instreams) {
|
|
|
+ /* Mark tsn as received even though we drop it */
|
|
|
+ sctp_add_cmd_sf(commands, SCTP_CMD_REPORT_TSN, SCTP_U32(tsn));
|
|
|
+
|
|
|
err = sctp_make_op_error(asoc, chunk, SCTP_ERROR_INV_STRM,
|
|
|
&data_hdr->stream,
|
|
|
sizeof(data_hdr->stream));
|