From 54e4e35c899c2772b93c40ff8a3282b80e65b39b Mon Sep 17 00:00:00 2001 From: Victor Boivie Date: Wed, 15 Sep 2021 10:42:26 +0200 Subject: [PATCH] dcsctp: Add consistency check for assembled msgs The buffer of reassembled messages in ReassemblyQueue is only to be used while processing a DATA/I-DATA or FORWARD-TSN as processing these chunks may result in assembling messages. When the socket is idle - between API calls - it's supposed to be empty. Instead of having it as a member in ReassemblyQueue, it could be provided as an argument to ReassemblyQueue::Add and ReassemblyQueue::Handle(ForwardTSN), but that would be a quite big refactoring. That will be investigated separately. Bug: None Change-Id: I41238de28f32f2a622c1d045debe3ea11e7c23f6 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/232000 Reviewed-by: Florent Castelli Commit-Queue: Victor Boivie Cr-Commit-Position: refs/heads/main@{#35014} --- net/dcsctp/socket/dcsctp_socket.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/dcsctp/socket/dcsctp_socket.cc b/net/dcsctp/socket/dcsctp_socket.cc index 2983b0f5c7..5211cca350 100644 --- a/net/dcsctp/socket/dcsctp_socket.cc +++ b/net/dcsctp/socket/dcsctp_socket.cc @@ -184,6 +184,9 @@ std::string DcSctpSocket::log_prefix() const { } bool DcSctpSocket::IsConsistent() const { + if (tcb_ != nullptr && tcb_->reassembly_queue().HasMessages()) { + return false; + } switch (state_) { case State::kClosed: return (tcb_ == nullptr && !t1_init_->is_running() &&