Panic in consumer.rs getStats with PipeConsumer::FillBufferStats

PipeConsumer::FillBuffer returns two FBS::RtpStream::CreateSendStats,

Consumer.rs getStats need a ConsumerStat and a ProducerStat

_ => {
     let consumer_stat = ConsumerStat::from_fbs(&data.stats[0]);
     let producer_stat = ProducerStat::from_fbs(&data.stats[1]);

     Ok(ConsumerStats::WithProducer((consumer_stat, producer_stat)))
}

Got panic in ProducerStat::from_fbs with rtp_stream::StatsData:SendStats

let rtp_stream::StatsData::RecvStats(ref stats) = stats.data else {
  error!("panic RecvStats data: {:?}", stats);
  panic!("Wrong message from worker");
};

PipeConsumer::FillBuffer only can returns some FBS::RtpStream::SendStats with this->rtpStreams .

flatbuffers::Offset<FBS::Consumer::GetStatsResponse> PipeConsumer::FillBufferStats(
	  flatbuffers::FlatBufferBuilder& builder)
	{
		MS_TRACE();

		std::vector<flatbuffers::Offset<FBS::RtpStream::Stats>> rtpStreams;
		rtpStreams.reserve(this->rtpStreams.size());

		// Add stats of our send streams.
		for (auto* rtpStream : this->rtpStreams)
		{
			rtpStreams.emplace_back(rtpStream->FillBufferStats(builder));
		}

		return FBS::Consumer::CreateGetStatsResponseDirect(builder, &rtpStreams);
	}

Log:

panicked at crates/mediasoup/rust/src/router/producer.rs:325:13:
Wrong message from worker"

panic RecvStats data: Stats { data: SendStats(SendStats { base: Stats { data: BaseStats(BaseStats { timestamp: 1845502334, ssrc: 862273841, kind: Video, mime_type: "video/H264", packets_lost: 0, fraction_lost: 0, packets_discarded: 0, packets_retransmitted: 0, packets_repaired_by_nack: 0, packets_repaired_by_red: 0, nack_count: 0, nack_packet_count: 0, pli_count: 0, fir_count: 0, score: 10, rid: None, rtx_ssrc: None, rtx_packets_discarded: 0, round_trip_time: 0.0 }) }, packet_count: 0, byte_count: 0, bitrate: 0, rtx_bitrate: 0, red_bitrate: 0 }) }

The root cause has been identified: when the video stream is configured with simulcast , there are multiple RTP streams. A panic occurs when processing the code let producer_stat = ProducerStat::from_fbs(&data.stats[1]); .