On 7/25/12, Vlad Yasevich <vyasevich@xxxxxxxxx> wrote: >> And after take a moment to look into the relative codes, I think we >> can implement it >> by below way: >> 1). Add a flag(isi_err_needed) in the embedded struct peer of struct >> struct sctp_association >> just like sack_needed flag. >> 2). When "invalid stream identifier" ERROR happens in sctp_eat_data() >> function, we just >> set isi_err_needed flag and don't create ERROR chunk and also don't >> insert SCTP_CMD_REPLY command. >> 3). In sctp_gen_sack() function, we create ERROR chunk and also insert >> SCTP_CMD_REPLY command if isi_err_needed flag is set. >> >> Is this way proper? >> > > So, I looked at the code, and it looks very simple to do. We already > return a specific status from sctp_eat_data() when the error was > generated. All you have to do is take the code that generates the error > and adds it to the command list and give it its own small function that > you can then call if SCTP_IERROR_BAD_STREAM error was returned. No, it will still has the same problem by just doing this. SCTP_CMD_GEN_SACK command actually don't enqueue SACK to outqueue, sctp_gen_sack() do this things when processing SCTP_CMD_GEN_SACK command in sctp_cmd_interpreter(). So it's not enough if we just insert SCTP_ERROR_INV_STRM command after sctp_eat_data() return SCTP_IERROR_BAD_STREAM in sctp_sf_eat_data_6_2(). Thanks, Xufeng Zhang > > -vlad > >> >> Thanks, >> Xufeng Zhang >>> >>> >>> >>> Thanks, >>> Xufeng Zhang >>>> >>>> -vlad >>>>> >>>>> Thanks, >>>>> Xufeng Zhang >>>>>> >>>>>> -vlad >>>> >>>> >>>> -- >>>> Sent from my Android phone with SkitMail. Please excuse my brevity. >>>> >>> > > > -- To unsubscribe from this list: send the line "unsubscribe linux-sctp" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html