Taylor Brandstetter c2128738a8 Relanding: Fix data channel message integrity violation
Patch originally submitted by Lennart Grahl:
https://webrtc-review.googlesource.com/c/src/+/177527

SCTP message chunks and notifications are being delivered interleaved.
However, the way the code was structured previously, a notification
would interrupt reassembly of a message chunk and hand out the partial
message, thereby violating message integrity. This patch separates the
handling of notifications and reassembly of messages.

Additional changes:

- Remove illegal cast from non-validated u32 to enum (PPID)
- Drop partial messages if the SID has been changed but EOR not yet
  received instead of delivering them. (This should never happen
  anyway.)
- Don't treat TSN as timestamp (wat)
- Replace "usrsctplib/usrsctp.h" with <usrsctp.h>, allowing a hack
  to be removed from media/BUILD.gn

Bug: webrtc:11708
Change-Id: I29733b03f67a3d840104b8608a7f0083466c2d0f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/178469
Commit-Queue: Taylor <deadbeef@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31641}
2020-07-07 03:06:24 +00:00
..