mediasoup 3.19.18 → 3.19.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/node/lib/Worker.d.ts +1 -1
- package/node/lib/Worker.d.ts.map +1 -1
- package/node/lib/Worker.js +8 -2
- package/node/lib/WorkerTypes.d.ts +8 -4
- package/node/lib/WorkerTypes.d.ts.map +1 -1
- package/node/lib/index.d.ts +1 -1
- package/node/lib/index.d.ts.map +1 -1
- package/node/lib/index.js +2 -1
- package/node/lib/sctpParametersTypes.d.ts +3 -13
- package/node/lib/sctpParametersTypes.d.ts.map +1 -1
- package/node/lib/test/test-PlainTransport.js +8 -3
- package/node/lib/test/test-WebRtcTransport.js +9 -4
- package/package.json +12 -12
- package/worker/Makefile +9 -5
- package/worker/fuzzer/src/FuzzerUtils.cpp +26 -22
- package/worker/fuzzer/src/RTC/ICE/FuzzerStunPacket.cpp +3 -3
- package/worker/fuzzer/src/RTC/RTCP/FuzzerPacket.cpp +10 -6
- package/worker/fuzzer/src/RTC/SCTP/{FuzzerStateCookie.cpp → association/FuzzerStateCookie.cpp} +13 -13
- package/worker/fuzzer/src/fuzzer.cpp +6 -1
- package/worker/include/RTC/DataConsumer.hpp +5 -9
- package/worker/include/RTC/DirectTransport.hpp +1 -1
- package/worker/include/RTC/DtlsTransport.hpp +2 -1
- package/worker/include/RTC/ICE/IceCandidate.hpp +20 -8
- package/worker/include/RTC/ICE/StunPacket.hpp +6 -1
- package/worker/include/RTC/PipeTransport.hpp +1 -1
- package/worker/include/RTC/PlainTransport.hpp +1 -1
- package/worker/include/RTC/RTCP/Feedback.hpp +6 -1
- package/worker/include/RTC/RTCP/FeedbackPsFir.hpp +4 -0
- package/worker/include/RTC/RTCP/FeedbackPsLei.hpp +4 -0
- package/worker/include/RTC/RTCP/FeedbackPsRpsi.hpp +4 -0
- package/worker/include/RTC/RTCP/FeedbackPsSli.hpp +4 -0
- package/worker/include/RTC/RTCP/FeedbackPsTst.hpp +5 -0
- package/worker/include/RTC/RTCP/FeedbackPsVbcm.hpp +4 -0
- package/worker/include/RTC/RTCP/FeedbackRtpEcn.hpp +4 -0
- package/worker/include/RTC/RTCP/FeedbackRtpNack.hpp +4 -0
- package/worker/include/RTC/RTCP/FeedbackRtpTllei.hpp +4 -0
- package/worker/include/RTC/RTCP/FeedbackRtpTmmb.hpp +4 -0
- package/worker/include/RTC/RTCP/Packet.hpp +6 -1
- package/worker/include/RTC/RTCP/ReceiverReport.hpp +6 -1
- package/worker/include/RTC/RTCP/Sdes.hpp +8 -0
- package/worker/include/RTC/RTCP/SenderReport.hpp +6 -1
- package/worker/include/RTC/RTCP/XR.hpp +9 -4
- package/worker/include/RTC/RTCP/XrDelaySinceLastRr.hpp +4 -0
- package/worker/include/RTC/RTCP/XrReceiverReferenceTime.hpp +4 -0
- package/worker/include/RTC/RTP/Codecs/DependencyDescriptor.hpp +0 -2
- package/worker/include/RTC/RTP/Packet.hpp +31 -0
- package/worker/include/RTC/RateCalculator.hpp +0 -1
- package/worker/include/RTC/SCTP/TODO_SCTP.md +37 -8
- package/worker/include/RTC/SCTP/association/Association.hpp +499 -0
- package/worker/include/RTC/SCTP/association/AssociationListenerDeferrer.hpp +98 -0
- package/worker/include/RTC/SCTP/association/HeartbeatHandler.hpp +77 -0
- package/worker/include/RTC/SCTP/{NegotiatedCapabilities.hpp → association/NegotiatedCapabilities.hpp} +17 -13
- package/worker/include/RTC/SCTP/association/PacketSender.hpp +51 -0
- package/worker/include/RTC/SCTP/{StateCookie.hpp → association/StateCookie.hpp} +4 -4
- package/worker/include/RTC/SCTP/association/StreamResetHandler.hpp +272 -0
- package/worker/include/RTC/SCTP/association/TCBContext.hpp +67 -0
- package/worker/include/RTC/SCTP/association/TransmissionControlBlock.hpp +248 -0
- package/worker/include/RTC/SCTP/common/UnwrappedSequenceNumber.hpp +274 -0
- package/worker/include/RTC/SCTP/packet/Chunk.hpp +73 -35
- package/worker/include/RTC/SCTP/packet/ErrorCause.hpp +4 -1
- package/worker/include/RTC/SCTP/packet/Packet.hpp +53 -6
- package/worker/include/RTC/SCTP/packet/Parameter.hpp +4 -1
- package/worker/include/RTC/SCTP/packet/TLV.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/UserData.hpp +141 -0
- package/worker/include/RTC/SCTP/packet/chunks/AbortAssociationChunk.hpp +5 -0
- package/worker/include/RTC/SCTP/packet/chunks/AnyDataChunk.hpp +85 -0
- package/worker/include/RTC/SCTP/packet/chunks/AnyForwardTsnChunk.hpp +80 -0
- package/worker/include/RTC/SCTP/packet/chunks/AnyInitChunk.hpp +37 -0
- package/worker/include/RTC/SCTP/packet/chunks/CookieAckChunk.hpp +10 -0
- package/worker/include/RTC/SCTP/packet/chunks/CookieEchoChunk.hpp +10 -0
- package/worker/include/RTC/SCTP/packet/chunks/DataChunk.hpp +65 -18
- package/worker/include/RTC/SCTP/packet/chunks/ForwardTsnChunk.hpp +25 -12
- package/worker/include/RTC/SCTP/packet/chunks/HeartbeatAckChunk.hpp +5 -0
- package/worker/include/RTC/SCTP/packet/chunks/HeartbeatRequestChunk.hpp +5 -0
- package/worker/include/RTC/SCTP/packet/chunks/IDataChunk.hpp +58 -19
- package/worker/include/RTC/SCTP/packet/chunks/IForwardTsnChunk.hpp +29 -16
- package/worker/include/RTC/SCTP/packet/chunks/InitAckChunk.hpp +13 -8
- package/worker/include/RTC/SCTP/packet/chunks/InitChunk.hpp +12 -7
- package/worker/include/RTC/SCTP/packet/chunks/OperationErrorChunk.hpp +5 -0
- package/worker/include/RTC/SCTP/packet/chunks/ReConfigChunk.hpp +8 -3
- package/worker/include/RTC/SCTP/packet/chunks/SackChunk.hpp +67 -23
- package/worker/include/RTC/SCTP/packet/chunks/ShutdownAckChunk.hpp +10 -0
- package/worker/include/RTC/SCTP/packet/chunks/ShutdownChunk.hpp +10 -0
- package/worker/include/RTC/SCTP/packet/chunks/ShutdownCompleteChunk.hpp +10 -0
- package/worker/include/RTC/SCTP/packet/chunks/UnknownChunk.hpp +10 -0
- package/worker/include/RTC/SCTP/packet/errorCauses/ProtocolViolationErrorCause.hpp +0 -1
- package/worker/include/RTC/SCTP/packet/errorCauses/UserInitiatedAbortErrorCause.hpp +10 -7
- package/worker/include/RTC/SCTP/packet/parameters/IncomingSsnResetRequestParameter.hpp +14 -10
- package/worker/include/RTC/SCTP/packet/parameters/OutgoingSsnResetRequestParameter.hpp +14 -10
- package/worker/include/RTC/SCTP/packet/parameters/StateCookieParameter.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/parameters/ZeroChecksumAcceptableParameter.hpp +13 -2
- package/worker/include/RTC/SCTP/public/AssociationInterface.hpp +178 -0
- package/worker/include/RTC/SCTP/public/AssociationListener.hpp +255 -0
- package/worker/include/RTC/SCTP/public/AssociationMetrics.hpp +136 -0
- package/worker/include/RTC/SCTP/{Message.hpp → public/Message.hpp} +12 -3
- package/worker/include/RTC/SCTP/{SocketOptions.hpp → public/SctpOptions.hpp} +25 -25
- package/worker/include/RTC/SCTP/public/SctpTypes.hpp +338 -0
- package/worker/include/RTC/SCTP/tx/RetransmissionErrorCounter.hpp +63 -0
- package/worker/include/RTC/SCTP/tx/RetransmissionTimeout.hpp +66 -0
- package/worker/include/RTC/SctpAssociation.hpp +2 -2
- package/worker/include/RTC/Serializable.hpp +1 -1
- package/worker/include/RTC/SrtpSession.hpp +0 -1
- package/worker/include/RTC/Transport.hpp +33 -2
- package/worker/include/RTC/TransportTuple.hpp +7 -3
- package/worker/include/RTC/WebRtcServer.hpp +3 -1
- package/worker/include/RTC/WebRtcTransport.hpp +1 -1
- package/worker/include/Settings.hpp +2 -1
- package/worker/include/Utils.hpp +130 -7
- package/worker/include/common.hpp +10 -10
- package/worker/include/handles/BackoffTimerHandle.hpp +21 -24
- package/worker/include/handles/TimerHandle.hpp +1 -0
- package/worker/meson.build +69 -77
- package/worker/meson_options.txt +1 -1
- package/worker/scripts/get-dep.sh +1 -25
- package/worker/scripts/package-lock.json +6 -6
- package/worker/src/Channel/ChannelSocket.cpp +5 -2
- package/worker/src/DepLibUring.cpp +4 -4
- package/worker/src/RTC/ActiveSpeakerObserver.cpp +10 -4
- package/worker/src/RTC/Consumer.cpp +6 -2
- package/worker/src/RTC/DataConsumer.cpp +17 -21
- package/worker/src/RTC/DirectTransport.cpp +3 -1
- package/worker/src/RTC/DtlsTransport.cpp +10 -8
- package/worker/src/RTC/ICE/StunPacket.cpp +8 -8
- package/worker/src/RTC/NackGenerator.cpp +3 -1
- package/worker/src/RTC/PipeTransport.cpp +21 -4
- package/worker/src/RTC/PlainTransport.cpp +20 -43
- package/worker/src/RTC/RTCP/FeedbackRtpNack.cpp +1 -0
- package/worker/src/RTC/RTCP/Packet.cpp +1 -1
- package/worker/src/RTC/RTP/Codecs/DependencyDescriptor.cpp +3 -1
- package/worker/src/RTC/RTP/Packet.cpp +2 -4
- package/worker/src/RTC/RTP/ProbationGenerator.cpp +2 -1
- package/worker/src/RTC/RTP/RetransmissionBuffer.cpp +5 -5
- package/worker/src/RTC/RTP/RtpStream.cpp +2 -2
- package/worker/src/RTC/RTP/RtpStreamRecv.cpp +2 -1
- package/worker/src/RTC/RTP/RtpStreamSend.cpp +2 -1
- package/worker/src/RTC/RTP/RtxStream.cpp +1 -1
- package/worker/src/RTC/RTP/SharedPacket.cpp +8 -3
- package/worker/src/RTC/RateCalculator.cpp +8 -6
- package/worker/src/RTC/SCTP/association/Association.cpp +2828 -0
- package/worker/src/RTC/SCTP/association/AssociationListenerDeferrer.cpp +274 -0
- package/worker/src/RTC/SCTP/association/HeartbeatHandler.cpp +244 -0
- package/worker/src/RTC/SCTP/association/NegotiatedCapabilities.cpp +90 -0
- package/worker/src/RTC/SCTP/association/PacketSender.cpp +51 -0
- package/worker/src/RTC/SCTP/{StateCookie.cpp → association/StateCookie.cpp} +14 -14
- package/worker/src/RTC/SCTP/association/StreamResetHandler.cpp +512 -0
- package/worker/src/RTC/SCTP/association/TransmissionControlBlock.cpp +251 -0
- package/worker/src/RTC/SCTP/packet/Chunk.cpp +61 -22
- package/worker/src/RTC/SCTP/packet/Packet.cpp +41 -11
- package/worker/src/RTC/SCTP/packet/TLV.cpp +1 -1
- package/worker/src/RTC/SCTP/packet/UserData.cpp +56 -0
- package/worker/src/RTC/SCTP/packet/chunks/DataChunk.cpp +15 -15
- package/worker/src/RTC/SCTP/packet/chunks/ForwardTsnChunk.cpp +25 -7
- package/worker/src/RTC/SCTP/packet/chunks/IDataChunk.cpp +17 -18
- package/worker/src/RTC/SCTP/packet/chunks/IForwardTsnChunk.cpp +26 -8
- package/worker/src/RTC/SCTP/packet/chunks/InitAckChunk.cpp +3 -1
- package/worker/src/RTC/SCTP/packet/chunks/InitChunk.cpp +2 -1
- package/worker/src/RTC/SCTP/packet/chunks/SackChunk.cpp +121 -10
- package/worker/src/RTC/SCTP/packet/errorCauses/InvalidStreamIdentifierErrorCause.cpp +1 -0
- package/worker/src/RTC/SCTP/packet/errorCauses/MissingMandatoryParameterErrorCause.cpp +1 -0
- package/worker/src/RTC/SCTP/packet/errorCauses/NoUserDataErrorCause.cpp +1 -0
- package/worker/src/RTC/SCTP/packet/errorCauses/StaleCookieErrorCause.cpp +1 -0
- package/worker/src/RTC/SCTP/packet/errorCauses/UserInitiatedAbortErrorCause.cpp +19 -13
- package/worker/src/RTC/SCTP/packet/parameters/IncomingSsnResetRequestParameter.cpp +22 -5
- package/worker/src/RTC/SCTP/packet/parameters/OutgoingSsnResetRequestParameter.cpp +22 -5
- package/worker/src/RTC/SCTP/packet/parameters/StateCookieParameter.cpp +2 -2
- package/worker/src/RTC/SCTP/public/AssociationMetrics.cpp +45 -0
- package/worker/src/RTC/SCTP/{Message.cpp → public/Message.cpp} +2 -3
- package/worker/src/RTC/SCTP/tx/RetransmissionErrorCounter.cpp +82 -0
- package/worker/src/RTC/SCTP/tx/RetransmissionTimeout.cpp +97 -0
- package/worker/src/RTC/SctpAssociation.cpp +7 -4
- package/worker/src/RTC/SenderBandwidthEstimator.cpp +5 -2
- package/worker/src/RTC/SeqManager.cpp +4 -4
- package/worker/src/RTC/Serializable.cpp +1 -1
- package/worker/src/RTC/SrtpSession.cpp +2 -2
- package/worker/src/RTC/TcpConnection.cpp +5 -1
- package/worker/src/RTC/TcpServer.cpp +5 -2
- package/worker/src/RTC/Transport.cpp +525 -92
- package/worker/src/RTC/TransportCongestionControlClient.cpp +4 -2
- package/worker/src/RTC/UdpSocket.cpp +2 -1
- package/worker/src/RTC/WebRtcTransport.cpp +14 -45
- package/worker/src/Settings.cpp +21 -1
- package/worker/src/Worker.cpp +13 -4
- package/worker/src/handles/BackoffTimerHandle.cpp +21 -27
- package/worker/src/handles/TimerHandle.cpp +33 -0
- package/worker/src/handles/UdpSocketHandle.cpp +5 -1
- package/worker/src/lib.cpp +11 -2
- package/worker/subprojects/catch2.wrap +6 -6
- package/worker/subprojects/liburing.wrap +10 -9
- package/worker/tasks.py +50 -39
- package/worker/test/include/RTC/SCTP/sctpCommon.hpp +1 -0
- package/worker/test/src/RTC/ICE/TestStunPacket.cpp +4 -4
- package/worker/test/src/RTC/ICE/iceCommon.cpp +8 -6
- package/worker/test/src/RTC/RTCP/TestBye.cpp +3 -3
- package/worker/test/src/RTC/RTCP/TestFeedbackPsAfb.cpp +2 -2
- package/worker/test/src/RTC/RTCP/TestFeedbackPsFir.cpp +7 -2
- package/worker/test/src/RTC/RTCP/TestFeedbackPsLei.cpp +7 -2
- package/worker/test/src/RTC/RTCP/TestFeedbackPsPli.cpp +2 -2
- package/worker/test/src/RTC/RTCP/TestFeedbackPsRemb.cpp +2 -2
- package/worker/test/src/RTC/RTCP/TestFeedbackPsRpsi.cpp +7 -2
- package/worker/test/src/RTC/RTCP/TestFeedbackPsSli.cpp +2 -2
- package/worker/test/src/RTC/RTCP/TestFeedbackPsTst.cpp +8 -2
- package/worker/test/src/RTC/RTCP/TestFeedbackPsVbcm.cpp +7 -2
- package/worker/test/src/RTC/RTCP/TestFeedbackRtpEcn.cpp +7 -2
- package/worker/test/src/RTC/RTCP/TestFeedbackRtpNack.cpp +7 -2
- package/worker/test/src/RTC/RTCP/TestFeedbackRtpSrReq.cpp +2 -2
- package/worker/test/src/RTC/RTCP/TestFeedbackRtpTllei.cpp +7 -2
- package/worker/test/src/RTC/RTCP/TestFeedbackRtpTmmb.cpp +8 -2
- package/worker/test/src/RTC/RTCP/TestFeedbackRtpTransport.cpp +17 -17
- package/worker/test/src/RTC/RTCP/TestPacket.cpp +10 -1
- package/worker/test/src/RTC/RTCP/TestReceiverReport.cpp +8 -3
- package/worker/test/src/RTC/RTCP/TestSdes.cpp +15 -10
- package/worker/test/src/RTC/RTCP/TestSenderReport.cpp +9 -4
- package/worker/test/src/RTC/RTCP/TestXr.cpp +17 -10
- package/worker/test/src/RTC/RTP/TestPacket.cpp +26 -34
- package/worker/test/src/RTC/RTP/rtpCommon.cpp +9 -5
- package/worker/test/src/RTC/SCTP/{TestNegotiatedCapabilities.cpp → association/TestNegotiatedCapabilities.cpp} +23 -22
- package/worker/test/src/RTC/SCTP/{TestStateCookie.cpp → association/TestStateCookie.cpp} +35 -35
- package/worker/test/src/RTC/SCTP/common/TestUnwrappedSequenceNumber.cpp +210 -0
- package/worker/test/src/RTC/SCTP/packet/TestChunk.cpp +117 -0
- package/worker/test/src/RTC/SCTP/packet/TestErrorCause.cpp +11 -0
- package/worker/test/src/RTC/SCTP/packet/TestPacket.cpp +81 -28
- package/worker/test/src/RTC/SCTP/packet/TestParameter.cpp +11 -0
- package/worker/test/src/RTC/SCTP/packet/chunks/TestAbortAssociationChunk.cpp +3 -3
- package/worker/test/src/RTC/SCTP/packet/chunks/TestCookieAckChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestCookieEchoChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestDataChunk.cpp +130 -63
- package/worker/test/src/RTC/SCTP/packet/chunks/TestForwardTsnChunk.cpp +32 -32
- package/worker/test/src/RTC/SCTP/packet/chunks/TestHeartbeatAckChunk.cpp +10 -5
- package/worker/test/src/RTC/SCTP/packet/chunks/TestHeartbeatRequestChunk.cpp +7 -2
- package/worker/test/src/RTC/SCTP/packet/chunks/TestIDataChunk.cpp +131 -63
- package/worker/test/src/RTC/SCTP/packet/chunks/TestIForwardTsnChunk.cpp +33 -53
- package/worker/test/src/RTC/SCTP/packet/chunks/TestInitAckChunk.cpp +2 -2
- package/worker/test/src/RTC/SCTP/packet/chunks/TestInitChunk.cpp +6 -6
- package/worker/test/src/RTC/SCTP/packet/chunks/TestOperationErrorChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestReConfigChunk.cpp +20 -21
- package/worker/test/src/RTC/SCTP/packet/chunks/TestSackChunk.cpp +41 -58
- package/worker/test/src/RTC/SCTP/packet/chunks/TestShutdownAckChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestShutdownChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestShutdownCompleteChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestUnknownChunk.cpp +4 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestCookieReceivedWhileShuttingDownErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestInvalidMandatoryParameterErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestInvalidStreamIdentifierErrorCause.cpp +5 -5
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestMissingMandatoryParameterErrorCause.cpp +4 -4
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestNoUserDataErrorCause.cpp +5 -5
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestOutOfResourceErrorCause.cpp +4 -4
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestProtocolViolationErrorCause.cpp +3 -3
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestRestartOfAnAssociationWithNewAddressesErrorCause.cpp +3 -3
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestStaleCookieErrorCause.cpp +5 -5
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestUnknownErrorCause.cpp +6 -3
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestUnrecognizedChunkTypeErrorCause.cpp +3 -3
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestUnrecognizedParametersErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestUnresolvableAddressErrorCause.cpp +3 -3
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestUserInitiatedAbortErrorCause.cpp +19 -64
- package/worker/test/src/RTC/SCTP/packet/parameters/TestAddIncomingStreamsRequestParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestAddOutgoingStreamsRequestParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestCookiePreservativeParameter.cpp +5 -5
- package/worker/test/src/RTC/SCTP/packet/parameters/TestForwardTsnSupportedParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestHeartbeatInfoParameter.cpp +4 -4
- package/worker/test/src/RTC/SCTP/packet/parameters/TestIPv4AddressParameter.cpp +5 -5
- package/worker/test/src/RTC/SCTP/packet/parameters/TestIPv6AddressParameter.cpp +5 -5
- package/worker/test/src/RTC/SCTP/packet/parameters/TestIncomingSsnResetRequestParameter.cpp +25 -28
- package/worker/test/src/RTC/SCTP/packet/parameters/TestOutgoingSsnResetRequestParameter.cpp +26 -31
- package/worker/test/src/RTC/SCTP/packet/parameters/TestReconfigurationResponseParameter.cpp +4 -4
- package/worker/test/src/RTC/SCTP/packet/parameters/TestSsnTsnResetRequestParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestStateCookieParameter.cpp +11 -9
- package/worker/test/src/RTC/SCTP/packet/parameters/TestSupportedAddressTypesParameter.cpp +2 -2
- package/worker/test/src/RTC/SCTP/packet/parameters/TestSupportedExtensionsParameter.cpp +13 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestUnknownParameter.cpp +3 -3
- package/worker/test/src/RTC/SCTP/packet/parameters/TestUnrecognizedParameterParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestZeroChecksumAcceptableParameter.cpp +6 -9
- package/worker/test/src/RTC/SCTP/sctpCommon.cpp +8 -5
- package/worker/test/src/RTC/SCTP/tx/TestRetransmissionErrorCounter.cpp +74 -0
- package/worker/test/src/RTC/SCTP/tx/TestRetransmissionTimeout.cpp +233 -0
- package/worker/test/src/RTC/TestNackGenerator.cpp +7 -3
- package/worker/test/src/RTC/TestSimpleConsumer.cpp +3 -2
- package/worker/test/src/RTC/TestTransportCongestionControlServer.cpp +1 -1
- package/worker/test/src/Utils/TestByte.cpp +25 -29
- package/worker/test/src/Utils/TestNumber.cpp +119 -49
- package/worker/test/src/tests.cpp +11 -2
- package/node/lib/fbs/consumer/degrade-request.d.ts +0 -30
- package/node/lib/fbs/consumer/degrade-request.d.ts.map +0 -1
- package/node/lib/fbs/consumer/degrade-request.js +0 -91
- package/node/lib/fbs/consumer/enable-delay-and-loss-request.d.ts +0 -24
- package/node/lib/fbs/consumer/enable-delay-and-loss-request.d.ts.map +0 -1
- package/node/lib/fbs/consumer/enable-delay-and-loss-request.js +0 -69
- package/node/lib/fbs/producer/degrade-request.d.ts +0 -30
- package/node/lib/fbs/producer/degrade-request.d.ts.map +0 -1
- package/node/lib/fbs/producer/degrade-request.js +0 -91
- package/node/lib/fbs/worker/close-notification.d.ts +0 -18
- package/node/lib/fbs/worker/close-notification.d.ts.map +0 -1
- package/node/lib/fbs/worker/close-notification.js +0 -45
- package/node/lib/fbs/worker/close-request.d.ts +0 -18
- package/node/lib/fbs/worker/close-request.d.ts.map +0 -1
- package/node/lib/fbs/worker/close-request.js +0 -45
- package/node/lib/fbs/worker/close-worker-notification.d.ts +0 -18
- package/node/lib/fbs/worker/close-worker-notification.d.ts.map +0 -1
- package/node/lib/fbs/worker/close-worker-notification.js +0 -45
- package/worker/include/RTC/SCTP/Socket.hpp +0 -194
- package/worker/include/RTC/SCTP/SocketDeferredListener.hpp +0 -100
- package/worker/include/RTC/SCTP/SocketListener.hpp +0 -242
- package/worker/include/RTC/SCTP/SocketMetrics.hpp +0 -78
- package/worker/include/RTC/SCTP/TransmissionControlBlock.hpp +0 -108
- package/worker/include/RTC/SCTP/Types.hpp +0 -149
- package/worker/src/RTC/SCTP/NegotiatedCapabilities.cpp +0 -96
- package/worker/src/RTC/SCTP/Socket.cpp +0 -1045
- package/worker/src/RTC/SCTP/SocketDeferredListener.cpp +0 -247
- package/worker/src/RTC/SCTP/SocketMetrics.cpp +0 -39
- package/worker/src/RTC/SCTP/TransmissionControlBlock.cpp +0 -52
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
[![][github-actions-shield-mediasoup-rust]][github-actions-mediasoup-rust]
|
|
14
14
|
[![][github-actions-shield-mediasoup-worker-fuzzer]][github-actions-mediasoup-worker-fuzzer]
|
|
15
15
|
[![][github-actions-shield-mediasoup-worker-prebuild]][github-actions-mediasoup-worker-prebuild]
|
|
16
|
-
[![][codeql-shield-mediasoup]][codeql-mediasoup]
|
|
16
|
+
[![][github-actions-mediasoup-codeql-shield-mediasoup]][github-actions-mediasoup-codeql-mediasoup]
|
|
17
17
|
|
|
18
18
|
## Website and Documentation
|
|
19
19
|
|
|
@@ -104,9 +104,9 @@ You can support mediasoup by [sponsoring][sponsor] it. Thanks!
|
|
|
104
104
|
[github-actions-mediasoup-worker-fuzzer]: https://github.com/versatica/mediasoup/actions/workflows/mediasoup-worker-fuzzer.yaml?query=branch%3Av3
|
|
105
105
|
[github-actions-shield-mediasoup-worker-prebuild]: https://github.com/versatica/mediasoup/actions/workflows/mediasoup-worker-prebuild.yaml/badge.svg?event=release
|
|
106
106
|
[github-actions-mediasoup-worker-prebuild]: https://github.com/versatica/mediasoup/actions/workflows/mediasoup-worker-prebuild.yaml?query=event%3Arelease
|
|
107
|
-
[codeql-shield-mediasoup]: https://github.com/versatica/mediasoup/actions/workflows/codeql.yaml/badge.svg?branch=v3
|
|
108
|
-
[codeql-mediasoup]: https://github.com/versatica/mediasoup/actions/workflows/codeql.yaml?query=branch%3Av3
|
|
107
|
+
[github-actions-mediasoup-codeql-shield-mediasoup]: https://github.com/versatica/mediasoup/actions/workflows/mediasoup-codeql.yaml/badge.svg?branch=v3
|
|
108
|
+
[github-actions-mediasoup-codeql-mediasoup]: https://github.com/versatica/mediasoup/actions/workflows/mediasoup-codeql.yaml?query=branch%3Av3
|
|
109
109
|
[sponsor]: https://mediasoup.org/sponsor
|
|
110
|
-
[mediasoup-architecture]: /art/mediasoup-v3-architecture-
|
|
110
|
+
[mediasoup-architecture]: /art/mediasoup-v3-architecture-02.png
|
|
111
111
|
[mediasoup-demo-screenshot]: /art/mediasoup-v3.png
|
|
112
112
|
[mediasoup-demo]: https://v3demo.mediasoup.org
|
package/node/lib/Worker.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ import type { AppData } from './types';
|
|
|
6
6
|
export declare const defaultWorkerBin: string;
|
|
7
7
|
export declare class WorkerImpl<WorkerAppData extends AppData = AppData> extends EnhancedEventEmitter<WorkerEvents> implements Worker {
|
|
8
8
|
#private;
|
|
9
|
-
constructor({ logLevel, logTags, rtcMinPort, rtcMaxPort, dtlsCertificateFile, dtlsPrivateKeyFile, workerBin, libwebrtcFieldTrials, disableLiburing, appData, }: WorkerSettings<WorkerAppData>);
|
|
9
|
+
constructor({ logLevel, logTags, rtcMinPort, rtcMaxPort, dtlsCertificateFile, dtlsPrivateKeyFile, workerBin, libwebrtcFieldTrials, disableLiburing, useBuiltInSctpStack, appData, }: WorkerSettings<WorkerAppData>);
|
|
10
10
|
get pid(): number;
|
|
11
11
|
get closed(): boolean;
|
|
12
12
|
get died(): boolean;
|
package/node/lib/Worker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Worker.d.ts","sourceRoot":"","sources":["../src/Worker.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,KAAK,EACX,MAAM,EACN,cAAc,EACd,wBAAwB,EACxB,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,cAAc,EAEd,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE7E,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAM3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAWvC,eAAO,MAAM,gBAAgB,EAAE,MAA8B,CAAC;AAE9D,qBAAa,UAAU,CAAC,aAAa,SAAS,OAAO,GAAG,OAAO,CAC9D,SAAQ,oBAAoB,CAAC,YAAY,CACzC,YAAW,MAAM;;gBAiCL,EACX,QAAQ,EACR,OAAO,EACP,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EACpB,eAAe,EACf,OAAO,GACP,EAAE,cAAc,CAAC,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"Worker.d.ts","sourceRoot":"","sources":["../src/Worker.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,KAAK,EACX,MAAM,EACN,cAAc,EACd,wBAAwB,EACxB,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,cAAc,EAEd,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE7E,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAM3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAWvC,eAAO,MAAM,gBAAgB,EAAE,MAA8B,CAAC;AAE9D,qBAAa,UAAU,CAAC,aAAa,SAAS,OAAO,GAAG,OAAO,CAC9D,SAAQ,oBAAoB,CAAC,YAAY,CACzC,YAAW,MAAM;;gBAiCL,EACX,QAAQ,EACR,OAAO,EACP,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,OAAO,GACP,EAAE,cAAc,CAAC,aAAa,CAAC;IAmNhC,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,IAAI,IAAI,OAAO,CAElB;IAED,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,IAAI,OAAO,IAAI,aAAa,CAE3B;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,aAAa,EAEjC;IAED,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAED;;OAEG;IACH,IAAI,uBAAuB,IAAI,GAAG,CAAC,YAAY,CAAC,CAE/C;IAED;;OAEG;IACH,IAAI,iBAAiB,IAAI,GAAG,CAAC,MAAM,CAAC,CAEnC;IAED,KAAK,IAAI,IAAI;IA+BP,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;IAc3B,gBAAgB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAkChD,cAAc,CAAC,EACpB,QAAQ,EACR,OAAO,GACP,GAAE,wBAAwB,CAAC,aAAa,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBzD,kBAAkB,CAAC,mBAAmB,SAAS,OAAO,GAAG,OAAO,EAAE,EACvE,WAAW,EACX,OAAO,GACP,EAAE,mBAAmB,CAAC,mBAAmB,CAAC,GAAG,OAAO,CACpD,YAAY,CAAC,mBAAmB,CAAC,CACjC;IA0DK,YAAY,CAAC,aAAa,SAAS,OAAO,GAAG,OAAO,EAAE,EAC3D,WAAW,EACX,OAAO,GACP,GAAE,aAAa,CAAC,aAAa,CAAM,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAgDrE,OAAO,CAAC,UAAU;IAmClB,OAAO,CAAC,mBAAmB;CAQ3B"}
|
package/node/lib/Worker.js
CHANGED
|
@@ -44,7 +44,7 @@ class WorkerImpl extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
44
44
|
#routers = new Set();
|
|
45
45
|
// Observer instance.
|
|
46
46
|
#observer = new enhancedEvents_1.EnhancedEventEmitter();
|
|
47
|
-
constructor({ logLevel, logTags, rtcMinPort, rtcMaxPort, dtlsCertificateFile, dtlsPrivateKeyFile, workerBin, libwebrtcFieldTrials, disableLiburing, appData, }) {
|
|
47
|
+
constructor({ logLevel, logTags, rtcMinPort, rtcMaxPort, dtlsCertificateFile, dtlsPrivateKeyFile, workerBin, libwebrtcFieldTrials, disableLiburing, useBuiltInSctpStack, appData, }) {
|
|
48
48
|
super();
|
|
49
49
|
logger.debug('constructor()');
|
|
50
50
|
workerBin = workerBin ?? exports.defaultWorkerBin;
|
|
@@ -81,7 +81,13 @@ class WorkerImpl extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
81
81
|
spawnArgs.push(`--libwebrtcFieldTrials=${libwebrtcFieldTrials}`);
|
|
82
82
|
}
|
|
83
83
|
if (disableLiburing) {
|
|
84
|
-
spawnArgs.push(
|
|
84
|
+
spawnArgs.push('--disableLiburing=true');
|
|
85
|
+
}
|
|
86
|
+
if (useBuiltInSctpStack) {
|
|
87
|
+
spawnArgs.push('--useBuiltInSctpStack=true');
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
spawnArgs.push('--useBuiltInSctpStack=false');
|
|
85
91
|
}
|
|
86
92
|
logger.debug(`spawning worker process: ${spawnBin} ${spawnArgs.join(' ')}`);
|
|
87
93
|
this.#child = (0, node_child_process_1.spawn)(
|
|
@@ -18,11 +18,13 @@ export type WorkerSettings<WorkerAppData extends AppData = AppData> = {
|
|
|
18
18
|
logTags?: WorkerLogTag[];
|
|
19
19
|
/**
|
|
20
20
|
* Minimun RTC port for ICE, DTLS, RTP, etc. Default 10000.
|
|
21
|
+
*
|
|
21
22
|
* @deprecated Use |portRange| in TransportListenInfo object instead.
|
|
22
23
|
*/
|
|
23
24
|
rtcMinPort?: number;
|
|
24
25
|
/**
|
|
25
26
|
* Maximum RTC port for ICE, DTLS, RTP, etc. Default 59999.
|
|
27
|
+
*
|
|
26
28
|
* @deprecated Use |portRange| in TransportListenInfo object instead.
|
|
27
29
|
*/
|
|
28
30
|
rtcMaxPort?: number;
|
|
@@ -44,17 +46,19 @@ export type WorkerSettings<WorkerAppData extends AppData = AppData> = {
|
|
|
44
46
|
workerBin?: string;
|
|
45
47
|
/**
|
|
46
48
|
* Field trials for libwebrtc.
|
|
47
|
-
* @private
|
|
48
49
|
*
|
|
49
|
-
*
|
|
50
|
-
* Default value is
|
|
51
|
-
* "WebRTC-Bwe-AlrLimitedBackoff/Enabled/".
|
|
50
|
+
* @remarks For advanced users only. An invalid value will make the worker
|
|
51
|
+
* crash. Default value is "WebRTC-Bwe-AlrLimitedBackoff/Enabled/".
|
|
52
52
|
*/
|
|
53
53
|
libwebrtcFieldTrials?: string;
|
|
54
54
|
/**
|
|
55
55
|
* Disable liburing (io_uring) despite it's supported in current host.
|
|
56
56
|
*/
|
|
57
57
|
disableLiburing?: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Use the mediasoup built-in SCTP stack instead usrsctp.
|
|
60
|
+
*/
|
|
61
|
+
useBuiltInSctpStack?: boolean;
|
|
58
62
|
/**
|
|
59
63
|
* Custom application data.
|
|
60
64
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkerTypes.d.ts","sourceRoot":"","sources":["../src/WorkerTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAEjE,MAAM,MAAM,YAAY,GACrB,MAAM,GACN,KAAK,GACL,MAAM,GACN,KAAK,GACL,MAAM,GACN,MAAM,GACN,KAAK,GACL,KAAK,GACL,OAAO,GACP,WAAW,GACX,KAAK,GACL,MAAM,GACN,SAAS,CAAC;AAEb,MAAM,MAAM,cAAc,CAAC,aAAa,SAAS,OAAO,GAAG,OAAO,IAAI;IACrE;;;;OAIG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IAEzB
|
|
1
|
+
{"version":3,"file":"WorkerTypes.d.ts","sourceRoot":"","sources":["../src/WorkerTypes.ts"],"names":[],"mappings":"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"}
|
package/node/lib/index.d.ts
CHANGED
|
@@ -44,7 +44,7 @@ export declare function setLogEventListeners(listeners?: LogEventListeners): voi
|
|
|
44
44
|
/**
|
|
45
45
|
* Create a Worker.
|
|
46
46
|
*/
|
|
47
|
-
export declare function createWorker<WorkerAppData extends AppData = AppData>({ logLevel, logTags, rtcMinPort, rtcMaxPort, dtlsCertificateFile, dtlsPrivateKeyFile, workerBin, libwebrtcFieldTrials, disableLiburing, appData, }?: WorkerSettings<WorkerAppData>): Promise<Worker<WorkerAppData>>;
|
|
47
|
+
export declare function createWorker<WorkerAppData extends AppData = AppData>({ logLevel, logTags, rtcMinPort, rtcMaxPort, dtlsCertificateFile, dtlsPrivateKeyFile, workerBin, libwebrtcFieldTrials, disableLiburing, useBuiltInSctpStack, appData, }?: WorkerSettings<WorkerAppData>): Promise<Worker<WorkerAppData>>;
|
|
48
48
|
/**
|
|
49
49
|
* Get a cloned copy of the mediasoup supported RTP capabilities.
|
|
50
50
|
*/
|
package/node/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,QAAQ,EAER,iBAAiB,EAEjB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC;;GAEG;AACH,YAAY,KAAK,KAAK,MAAM,SAAS,CAAC;AAEtC;;GAEG;AAEH,eAAO,MAAM,OAAO,EAAE,MAA8C,CAAC;AAErE,QAAA,MAAM,QAAQ,EAAE,QAAqD,CAAC;AAEtE;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB;;GAEG;AACH,OAAO,EAAE,gBAAgB,IAAI,SAAS,EAAE,MAAM,UAAU,CAAC;AAIzD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,CAAC,EAAE,iBAAiB,GAAG,IAAI,CA0BxE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,aAAa,SAAS,OAAO,GAAG,OAAO,EAAE,EAC3E,QAAkB,EAClB,OAAO,EACP,UAAkB,EAClB,UAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAElB,SAAS,EACT,oBAAoB,EACpB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,QAAQ,EAER,iBAAiB,EAEjB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC;;GAEG;AACH,YAAY,KAAK,KAAK,MAAM,SAAS,CAAC;AAEtC;;GAEG;AAEH,eAAO,MAAM,OAAO,EAAE,MAA8C,CAAC;AAErE,QAAA,MAAM,QAAQ,EAAE,QAAqD,CAAC;AAEtE;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB;;GAEG;AACH,OAAO,EAAE,gBAAgB,IAAI,SAAS,EAAE,MAAM,UAAU,CAAC;AAIzD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,CAAC,EAAE,iBAAiB,GAAG,IAAI,CA0BxE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,aAAa,SAAS,OAAO,GAAG,OAAO,EAAE,EAC3E,QAAkB,EAClB,OAAO,EACP,UAAkB,EAClB,UAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAElB,SAAS,EACT,oBAAoB,EACpB,eAAuB,EACvB,mBAA2B,EAC3B,OAAO,GACP,GAAE,cAAc,CAAC,aAAa,CAAM,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CA+BrE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,qBAAqB,CAEnE;AAED;;GAEG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D;;GAEG;AACH,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAE/B;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC"}
|
package/node/lib/index.js
CHANGED
|
@@ -68,7 +68,7 @@ function setLogEventListeners(listeners) {
|
|
|
68
68
|
*/
|
|
69
69
|
async function createWorker({ logLevel = 'error', logTags, rtcMinPort = 10000, rtcMaxPort = 59999, dtlsCertificateFile, dtlsPrivateKeyFile,
|
|
70
70
|
// eslint-disable-next-line no-shadow
|
|
71
|
-
workerBin, libwebrtcFieldTrials, disableLiburing, appData, } = {}) {
|
|
71
|
+
workerBin, libwebrtcFieldTrials, disableLiburing = false, useBuiltInSctpStack = false, appData, } = {}) {
|
|
72
72
|
logger.debug('createWorker()');
|
|
73
73
|
if (appData && typeof appData !== 'object') {
|
|
74
74
|
throw new TypeError('if given, appData must be an object');
|
|
@@ -83,6 +83,7 @@ workerBin, libwebrtcFieldTrials, disableLiburing, appData, } = {}) {
|
|
|
83
83
|
workerBin,
|
|
84
84
|
libwebrtcFieldTrials,
|
|
85
85
|
disableLiburing,
|
|
86
|
+
useBuiltInSctpStack,
|
|
86
87
|
appData,
|
|
87
88
|
});
|
|
88
89
|
return new Promise((resolve, reject) => {
|
|
@@ -7,21 +7,11 @@ export type SctpCapabilities = {
|
|
|
7
7
|
* (to be used by DataConsumers), while MIS refers to the maximum number of
|
|
8
8
|
* incoming SCTP streams that the server side transport can receive (to be used
|
|
9
9
|
* by DataProducers). So, if the server side transport will just be used to
|
|
10
|
-
* create data producers (but no data consumers), OS can be low (~1).
|
|
11
|
-
* if data consumers are desired on the server side transport, OS must have a
|
|
12
|
-
* proper value and such a proper value depends on whether the remote endpoint
|
|
13
|
-
* supports SCTP_ADD_STREAMS extension or not.
|
|
14
|
-
*
|
|
15
|
-
* libwebrtc (Chrome, Safari, etc) does not enable SCTP_ADD_STREAMS so, if data
|
|
16
|
-
* consumers are required, OS should be 1024 (the maximum number of DataChannels
|
|
17
|
-
* that libwebrtc enables).
|
|
18
|
-
*
|
|
19
|
-
* Firefox does enable SCTP_ADD_STREAMS so, if data consumers are required, OS
|
|
20
|
-
* can be lower (16 for instance). The mediasoup transport will allocate and
|
|
21
|
-
* announce more outgoing SCTM streams when needed.
|
|
10
|
+
* create data producers (but no data consumers), OS can be low (~1).
|
|
22
11
|
*
|
|
23
12
|
* mediasoup-client provides specific per browser/version OS and MIS values via
|
|
24
|
-
* the device.sctpCapabilities getter.
|
|
13
|
+
* the device.sctpCapabilities getter. However those values must be reversed
|
|
14
|
+
* when provided to the mediasoup server transport.
|
|
25
15
|
*/
|
|
26
16
|
export type NumSctpStreams = {
|
|
27
17
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sctpParametersTypes.d.ts","sourceRoot":"","sources":["../src/sctpParametersTypes.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG;IAC9B,UAAU,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"sctpParametersTypes.d.ts","sourceRoot":"","sources":["../src/sctpParametersTypes.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG;IAC9B,UAAU,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,cAAc,GAAG;IAC5B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC5B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAClC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;CACvB,CAAC"}
|
|
@@ -6,6 +6,7 @@ const mediasoup = require("../");
|
|
|
6
6
|
const enhancedEvents_1 = require("../enhancedEvents");
|
|
7
7
|
const utils = require("../utils");
|
|
8
8
|
const IS_WINDOWS = os.platform() === 'win32';
|
|
9
|
+
const USE_BUILD_IN_SCTP_STACK = false;
|
|
9
10
|
const ctx = {
|
|
10
11
|
mediaCodecs: utils.deepFreeze([
|
|
11
12
|
{
|
|
@@ -38,7 +39,9 @@ const ctx = {
|
|
|
38
39
|
]),
|
|
39
40
|
};
|
|
40
41
|
beforeEach(async () => {
|
|
41
|
-
ctx.worker = await mediasoup.createWorker(
|
|
42
|
+
ctx.worker = await mediasoup.createWorker({
|
|
43
|
+
useBuiltInSctpStack: USE_BUILD_IN_SCTP_STACK,
|
|
44
|
+
});
|
|
42
45
|
ctx.router = await ctx.worker.createRouter({ mediaCodecs: ctx.mediaCodecs });
|
|
43
46
|
});
|
|
44
47
|
afterEach(async () => {
|
|
@@ -86,8 +89,10 @@ test('router.createPlainTransport() succeeds', async () => {
|
|
|
86
89
|
expect(plainTransport2.rtcpTuple).toBeUndefined();
|
|
87
90
|
expect(plainTransport2.sctpParameters).toMatchObject({
|
|
88
91
|
port: 5000,
|
|
89
|
-
|
|
90
|
-
|
|
92
|
+
// NOTE: When using the built-in SCTP stack, `numSctpStreams` given to the
|
|
93
|
+
// transport is ignored.
|
|
94
|
+
OS: USE_BUILD_IN_SCTP_STACK ? 65535 : 1024,
|
|
95
|
+
MIS: USE_BUILD_IN_SCTP_STACK ? 65535 : 1024,
|
|
91
96
|
maxMessageSize: 262144,
|
|
92
97
|
});
|
|
93
98
|
expect(plainTransport2.sctpState).toBe('new');
|
|
@@ -9,6 +9,7 @@ const utils = require("../utils");
|
|
|
9
9
|
const notification_1 = require("../fbs/notification");
|
|
10
10
|
const FbsTransport = require("../fbs/transport");
|
|
11
11
|
const FbsWebRtcTransport = require("../fbs/web-rtc-transport");
|
|
12
|
+
const USE_BUILD_IN_SCTP_STACK = false;
|
|
12
13
|
const ctx = {
|
|
13
14
|
mediaCodecs: utils.deepFreeze([
|
|
14
15
|
{
|
|
@@ -40,7 +41,9 @@ const ctx = {
|
|
|
40
41
|
]),
|
|
41
42
|
};
|
|
42
43
|
beforeEach(async () => {
|
|
43
|
-
ctx.worker = await mediasoup.createWorker(
|
|
44
|
+
ctx.worker = await mediasoup.createWorker({
|
|
45
|
+
useBuiltInSctpStack: USE_BUILD_IN_SCTP_STACK,
|
|
46
|
+
});
|
|
44
47
|
ctx.router = await ctx.worker.createRouter({ mediaCodecs: ctx.mediaCodecs });
|
|
45
48
|
});
|
|
46
49
|
afterEach(async () => {
|
|
@@ -97,7 +100,7 @@ test('router.createWebRtcTransport() succeeds', async () => {
|
|
|
97
100
|
enableTcp: true,
|
|
98
101
|
preferUdp: true,
|
|
99
102
|
enableSctp: true,
|
|
100
|
-
numSctpStreams: { OS: 2048, MIS:
|
|
103
|
+
numSctpStreams: { OS: 2048, MIS: 4096 },
|
|
101
104
|
maxSctpMessageSize: 1000000,
|
|
102
105
|
appData: { foo: 'bar' },
|
|
103
106
|
});
|
|
@@ -117,8 +120,10 @@ test('router.createWebRtcTransport() succeeds', async () => {
|
|
|
117
120
|
expect(typeof webRtcTransport.iceParameters.password).toBe('string');
|
|
118
121
|
expect(webRtcTransport.sctpParameters).toMatchObject({
|
|
119
122
|
port: 5000,
|
|
120
|
-
|
|
121
|
-
|
|
123
|
+
// NOTE: When using the built-in SCTP stack, `numSctpStreams` given to the
|
|
124
|
+
// transport is ignored.
|
|
125
|
+
OS: USE_BUILD_IN_SCTP_STACK ? 65535 : 2048,
|
|
126
|
+
MIS: USE_BUILD_IN_SCTP_STACK ? 65535 : 4096,
|
|
122
127
|
maxMessageSize: 1000000,
|
|
123
128
|
});
|
|
124
129
|
expect(Array.isArray(webRtcTransport.iceCandidates)).toBe(true);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mediasoup",
|
|
3
|
-
"version": "3.19.
|
|
3
|
+
"version": "3.19.20",
|
|
4
4
|
"description": "Cutting Edge WebRTC Video Conferencing",
|
|
5
5
|
"contributors": [
|
|
6
6
|
"Iñaki Baz Castillo <ibc@aliax.net> (https://inakibaz.me)",
|
|
@@ -102,30 +102,30 @@
|
|
|
102
102
|
"h264-profile-level-id": "^2.3.2",
|
|
103
103
|
"node-fetch": "^3.3.2",
|
|
104
104
|
"supports-color": "^10.2.2",
|
|
105
|
-
"tar": "^7.5.
|
|
105
|
+
"tar": "^7.5.13"
|
|
106
106
|
},
|
|
107
107
|
"devDependencies": {
|
|
108
108
|
"@eslint/js": "^10.0.1",
|
|
109
109
|
"@octokit/rest": "^22.0.1",
|
|
110
|
-
"@types/debug": "^4.1.
|
|
110
|
+
"@types/debug": "^4.1.13",
|
|
111
111
|
"@types/ini": "^4.1.1",
|
|
112
112
|
"@types/jest": "^30.0.0",
|
|
113
113
|
"@types/node": "^24.10.1",
|
|
114
|
-
"eslint": "^10.
|
|
114
|
+
"eslint": "^10.2.1",
|
|
115
115
|
"eslint-config-prettier": "^10.1.8",
|
|
116
|
-
"eslint-plugin-jest": "^29.15.
|
|
116
|
+
"eslint-plugin-jest": "^29.15.2",
|
|
117
117
|
"eslint-plugin-prettier": "^5.5.5",
|
|
118
|
-
"globals": "^17.
|
|
118
|
+
"globals": "^17.5.0",
|
|
119
119
|
"ini": "^6.0.0",
|
|
120
120
|
"jest": "^30.3.0",
|
|
121
|
-
"knip": "^
|
|
122
|
-
"marked": "^
|
|
123
|
-
"open-cli": "^
|
|
121
|
+
"knip": "^6.4.1",
|
|
122
|
+
"marked": "^18.0.2",
|
|
123
|
+
"open-cli": "^9.0.0",
|
|
124
124
|
"pick-port": "^2.2.0",
|
|
125
|
-
"prettier": "^3.8.
|
|
126
|
-
"ts-jest": "^29.4.
|
|
125
|
+
"prettier": "^3.8.3",
|
|
126
|
+
"ts-jest": "^29.4.9",
|
|
127
127
|
"typescript": "^5.9.3",
|
|
128
|
-
"typescript-eslint": "^8.
|
|
128
|
+
"typescript-eslint": "^8.58.2",
|
|
129
129
|
"werift-sctp": "^0.0.11"
|
|
130
130
|
}
|
|
131
131
|
}
|
package/worker/Makefile
CHANGED
|
@@ -36,13 +36,14 @@ endif
|
|
|
36
36
|
test \
|
|
37
37
|
test-asan-address \
|
|
38
38
|
test-asan-undefined \
|
|
39
|
-
test-asan-thread \
|
|
40
39
|
fuzzer \
|
|
41
40
|
fuzzer-run-all \
|
|
42
41
|
docker \
|
|
43
42
|
docker-run \
|
|
44
43
|
docker-alpine \
|
|
45
|
-
docker-alpine-run
|
|
44
|
+
docker-alpine-run \
|
|
45
|
+
docker-386 \
|
|
46
|
+
docker-386-run
|
|
46
47
|
|
|
47
48
|
default: mediasoup-worker
|
|
48
49
|
|
|
@@ -111,9 +112,6 @@ test-asan-address: invoke
|
|
|
111
112
|
test-asan-undefined: invoke
|
|
112
113
|
"$(PYTHON)" -m invoke test-asan-undefined
|
|
113
114
|
|
|
114
|
-
test-asan-thread: invoke
|
|
115
|
-
"$(PYTHON)" -m invoke test-asan-thread
|
|
116
|
-
|
|
117
115
|
fuzzer: invoke
|
|
118
116
|
"$(PYTHON)" -m invoke fuzzer
|
|
119
117
|
|
|
@@ -131,3 +129,9 @@ docker-alpine: invoke
|
|
|
131
129
|
|
|
132
130
|
docker-alpine-run: invoke
|
|
133
131
|
"$(PYTHON)" -m invoke docker-alpine-run
|
|
132
|
+
|
|
133
|
+
docker-386: invoke
|
|
134
|
+
"$(PYTHON)" -m invoke docker-386
|
|
135
|
+
|
|
136
|
+
docker-386-run: invoke
|
|
137
|
+
"$(PYTHON)" -m invoke docker-386-run
|
|
@@ -1,33 +1,37 @@
|
|
|
1
1
|
#include "FuzzerUtils.hpp"
|
|
2
2
|
#include "MediaSoupErrors.hpp"
|
|
3
3
|
#include "Utils.hpp"
|
|
4
|
-
#include <cstring> // std::
|
|
4
|
+
#include <cstring> // std::memcpy()
|
|
5
5
|
#include <string>
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
namespace
|
|
8
8
|
{
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
alignas(4) thread_local uint8_t DataBuffer[65536];
|
|
10
|
+
}
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
void FuzzerUtils::Fuzz(const uint8_t* data, size_t len)
|
|
13
|
+
{
|
|
14
|
+
// NOTE: We need to copy given data into another buffer because we are gonna
|
|
15
|
+
// write into it.
|
|
16
|
+
std::memcpy(DataBuffer, data, len);
|
|
13
17
|
|
|
14
18
|
/* IP class. */
|
|
15
19
|
|
|
16
20
|
std::string ip;
|
|
17
21
|
|
|
18
|
-
ip = std::string(reinterpret_cast<const char*>(
|
|
22
|
+
ip = std::string(reinterpret_cast<const char*>(DataBuffer), INET6_ADDRSTRLEN / 2);
|
|
19
23
|
Utils::IP::GetFamily(ip);
|
|
20
24
|
|
|
21
|
-
ip = std::string(reinterpret_cast<const char*>(
|
|
25
|
+
ip = std::string(reinterpret_cast<const char*>(DataBuffer), INET6_ADDRSTRLEN);
|
|
22
26
|
Utils::IP::GetFamily(ip);
|
|
23
27
|
|
|
24
|
-
ip = std::string(reinterpret_cast<const char*>(
|
|
28
|
+
ip = std::string(reinterpret_cast<const char*>(DataBuffer), INET6_ADDRSTRLEN * 2);
|
|
25
29
|
Utils::IP::GetFamily(ip);
|
|
26
30
|
|
|
27
31
|
// Protect with try/catch since throws are legit.
|
|
28
32
|
try
|
|
29
33
|
{
|
|
30
|
-
auto ip = std::string(reinterpret_cast<const char*>(
|
|
34
|
+
auto ip = std::string(reinterpret_cast<const char*>(DataBuffer), len);
|
|
31
35
|
|
|
32
36
|
Utils::IP::NormalizeIp(ip);
|
|
33
37
|
}
|
|
@@ -37,16 +41,16 @@ void FuzzerUtils::Fuzz(const uint8_t* data, size_t len)
|
|
|
37
41
|
|
|
38
42
|
/* Byte class. */
|
|
39
43
|
|
|
40
|
-
Utils::Byte::Get1Byte(
|
|
41
|
-
Utils::Byte::Get2Bytes(
|
|
42
|
-
Utils::Byte::Get3Bytes(
|
|
43
|
-
Utils::Byte::Get4Bytes(
|
|
44
|
-
Utils::Byte::Get8Bytes(
|
|
45
|
-
Utils::Byte::Set1Byte(
|
|
46
|
-
Utils::Byte::Set2Bytes(
|
|
47
|
-
Utils::Byte::Set3Bytes(
|
|
48
|
-
Utils::Byte::Set4Bytes(
|
|
49
|
-
Utils::Byte::Set8Bytes(
|
|
44
|
+
Utils::Byte::Get1Byte(DataBuffer, len);
|
|
45
|
+
Utils::Byte::Get2Bytes(DataBuffer, len);
|
|
46
|
+
Utils::Byte::Get3Bytes(DataBuffer, len);
|
|
47
|
+
Utils::Byte::Get4Bytes(DataBuffer, len);
|
|
48
|
+
Utils::Byte::Get8Bytes(DataBuffer, len);
|
|
49
|
+
Utils::Byte::Set1Byte(DataBuffer, len, uint8_t{ 6u });
|
|
50
|
+
Utils::Byte::Set2Bytes(DataBuffer, len, uint16_t{ 66u });
|
|
51
|
+
Utils::Byte::Set3Bytes(DataBuffer, len, uint32_t{ 666u });
|
|
52
|
+
Utils::Byte::Set4Bytes(DataBuffer, len, uint32_t{ 666u });
|
|
53
|
+
Utils::Byte::Set8Bytes(DataBuffer, len, uint64_t{ 6666u });
|
|
50
54
|
Utils::Byte::PadTo4Bytes(static_cast<uint8_t>(len));
|
|
51
55
|
Utils::Byte::PadTo4Bytes(static_cast<uint16_t>(len));
|
|
52
56
|
Utils::Byte::PadTo4Bytes(static_cast<uint32_t>(len));
|
|
@@ -70,7 +74,7 @@ void FuzzerUtils::Fuzz(const uint8_t* data, size_t len)
|
|
|
70
74
|
static_cast<uint64_t>(len), static_cast<uint64_t>(len + 1000000));
|
|
71
75
|
Utils::Crypto::GetRandomUInt<size_t>(len, len + 1000000);
|
|
72
76
|
Utils::Crypto::GetRandomString(len);
|
|
73
|
-
Utils::Crypto::GetCRC32(
|
|
77
|
+
Utils::Crypto::GetCRC32(DataBuffer, len);
|
|
74
78
|
|
|
75
79
|
/* String class. */
|
|
76
80
|
|
|
@@ -79,8 +83,8 @@ void FuzzerUtils::Fuzz(const uint8_t* data, size_t len)
|
|
|
79
83
|
{
|
|
80
84
|
size_t outLen;
|
|
81
85
|
|
|
82
|
-
Utils::String::Base64Encode(
|
|
83
|
-
Utils::String::Base64Decode(
|
|
86
|
+
Utils::String::Base64Encode(DataBuffer, len);
|
|
87
|
+
Utils::String::Base64Decode(DataBuffer, len, outLen);
|
|
84
88
|
}
|
|
85
89
|
catch (const MediaSoupError& error) // NOLINT(bugprone-empty-catch)
|
|
86
90
|
{
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
#include <string_view>
|
|
4
4
|
|
|
5
5
|
static constexpr size_t ResponseFactoryBufferLength{ 65536 };
|
|
6
|
-
thread_local uint8_t ResponseFactoryBuffer[ResponseFactoryBufferLength];
|
|
6
|
+
alignas(4) thread_local uint8_t ResponseFactoryBuffer[ResponseFactoryBufferLength];
|
|
7
7
|
static constexpr size_t SerializeBufferLength{ 65536 };
|
|
8
|
-
thread_local uint8_t SerializeBuffer[SerializeBufferLength];
|
|
8
|
+
alignas(4) thread_local uint8_t SerializeBuffer[SerializeBufferLength];
|
|
9
9
|
static constexpr size_t CloneBufferLength{ 65536 };
|
|
10
|
-
thread_local uint8_t CloneBuffer[CloneBufferLength];
|
|
10
|
+
alignas(4) thread_local uint8_t CloneBuffer[CloneBufferLength];
|
|
11
11
|
|
|
12
12
|
void FuzzerRtcIceStunPacket::Fuzz(const uint8_t* data, size_t len)
|
|
13
13
|
{
|
|
@@ -7,6 +7,12 @@
|
|
|
7
7
|
#include "RTC/RTCP/FuzzerSenderReport.hpp"
|
|
8
8
|
#include "RTC/RTCP/FuzzerXr.hpp"
|
|
9
9
|
#include "RTC/RTCP/Packet.hpp"
|
|
10
|
+
#include <cstring> // std::memcpy()
|
|
11
|
+
|
|
12
|
+
namespace
|
|
13
|
+
{
|
|
14
|
+
alignas(4) thread_local uint8_t DataBuffer[65536];
|
|
15
|
+
} // namespace
|
|
10
16
|
|
|
11
17
|
void FuzzerRtcRtcpPacket::Fuzz(const uint8_t* data, size_t len)
|
|
12
18
|
{
|
|
@@ -15,13 +21,11 @@ void FuzzerRtcRtcpPacket::Fuzz(const uint8_t* data, size_t len)
|
|
|
15
21
|
return;
|
|
16
22
|
}
|
|
17
23
|
|
|
18
|
-
// We need to
|
|
19
|
-
//
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
std::memcpy(data2.get(), data, len);
|
|
24
|
+
// NOTE: We need to copy given data into another buffer because we are gonna
|
|
25
|
+
// write into it.
|
|
26
|
+
std::memcpy(DataBuffer, data, len);
|
|
23
27
|
|
|
24
|
-
RTC::RTCP::Packet* packet = RTC::RTCP::Packet::Parse(
|
|
28
|
+
RTC::RTCP::Packet* packet = RTC::RTCP::Packet::Parse(DataBuffer, len);
|
|
25
29
|
|
|
26
30
|
if (!packet)
|
|
27
31
|
{
|
package/worker/fuzzer/src/RTC/SCTP/{FuzzerStateCookie.cpp → association/FuzzerStateCookie.cpp}
RENAMED
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
#include "RTC/SCTP/FuzzerStateCookie.hpp"
|
|
2
2
|
#include "Utils.hpp"
|
|
3
|
-
#include "RTC/SCTP/StateCookie.hpp"
|
|
4
|
-
#include <cstdlib> // std::malloc(), std::free()
|
|
3
|
+
#include "RTC/SCTP/association/StateCookie.hpp"
|
|
5
4
|
#include <cstring> // std::memcpy()
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
namespace
|
|
7
|
+
{
|
|
8
|
+
alignas(4) thread_local uint8_t DataBuffer[65536];
|
|
9
|
+
alignas(4) thread_local uint8_t StateCookieSerializeBuffer[65536];
|
|
10
|
+
alignas(4) thread_local uint8_t StateCookieCloneBuffer[65536];
|
|
11
|
+
} // namespace
|
|
9
12
|
|
|
10
13
|
void FuzzerRtcSctpStateCookie::Fuzz(const uint8_t* data, size_t len)
|
|
11
14
|
{
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
std::memcpy(
|
|
15
|
+
// NOTE: We need to copy given data into another buffer because we are gonna
|
|
16
|
+
// write into it.
|
|
17
|
+
std::memcpy(DataBuffer, data, len);
|
|
15
18
|
|
|
16
19
|
// We need to force `data` to be a StateCookie since it's too hard that
|
|
17
20
|
// random data matches it.
|
|
@@ -22,20 +25,18 @@ void FuzzerRtcSctpStateCookie::Fuzz(const uint8_t* data, size_t len)
|
|
|
22
25
|
|
|
23
26
|
if (len < RTC::SCTP::StateCookie::StateCookieLength + 5)
|
|
24
27
|
{
|
|
25
|
-
Utils::Byte::Set8Bytes(
|
|
28
|
+
Utils::Byte::Set8Bytes(DataBuffer, 0, RTC::SCTP::StateCookie::Magic1);
|
|
26
29
|
Utils::Byte::Set2Bytes(
|
|
27
|
-
|
|
30
|
+
DataBuffer,
|
|
28
31
|
RTC::SCTP::StateCookie::NegotiatedCapabilitiesOffset,
|
|
29
32
|
RTC::SCTP::StateCookie::Magic2);
|
|
30
33
|
}
|
|
31
34
|
}
|
|
32
35
|
|
|
33
|
-
RTC::SCTP::StateCookie* stateCookie = RTC::SCTP::StateCookie::Parse(
|
|
36
|
+
RTC::SCTP::StateCookie* stateCookie = RTC::SCTP::StateCookie::Parse(DataBuffer, len);
|
|
34
37
|
|
|
35
38
|
if (!stateCookie)
|
|
36
39
|
{
|
|
37
|
-
std::free(clonedData);
|
|
38
|
-
|
|
39
40
|
return;
|
|
40
41
|
}
|
|
41
42
|
|
|
@@ -71,6 +72,5 @@ void FuzzerRtcSctpStateCookie::Fuzz(const uint8_t* data, size_t len)
|
|
|
71
72
|
|
|
72
73
|
clonedStateCookie->Serialize(StateCookieSerializeBuffer, len);
|
|
73
74
|
|
|
74
|
-
std::free(clonedData);
|
|
75
75
|
delete clonedStateCookie;
|
|
76
76
|
}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
#include "DepLibUV.hpp"
|
|
6
6
|
#include "DepLibWebRTC.hpp"
|
|
7
7
|
#include "DepOpenSSL.hpp"
|
|
8
|
+
// TODO: Remove once we only use built-in SCTP stack.
|
|
8
9
|
#include "DepUsrSCTP.hpp"
|
|
9
10
|
#include "FuzzerUtils.hpp"
|
|
10
11
|
#include "Settings.hpp"
|
|
@@ -145,7 +146,11 @@ namespace
|
|
|
145
146
|
DepLibUV::ClassInit();
|
|
146
147
|
DepOpenSSL::ClassInit();
|
|
147
148
|
DepLibSRTP::ClassInit();
|
|
148
|
-
|
|
149
|
+
// TODO: Remove once we only use built-in SCTP stack.
|
|
150
|
+
if (!Settings::configuration.useBuiltInSctpStack)
|
|
151
|
+
{
|
|
152
|
+
DepUsrSCTP::ClassInit();
|
|
153
|
+
}
|
|
149
154
|
DepLibWebRTC::ClassInit();
|
|
150
155
|
Utils::Crypto::ClassInit();
|
|
151
156
|
RTC::DtlsTransport::ClassInit();
|
|
@@ -11,10 +11,6 @@
|
|
|
11
11
|
|
|
12
12
|
namespace RTC
|
|
13
13
|
{
|
|
14
|
-
// Define class here such that we can use it even though we don't know what it looks like yet
|
|
15
|
-
// (this is to avoid circular dependencies).
|
|
16
|
-
class SctpAssociation;
|
|
17
|
-
|
|
18
14
|
class DataConsumer : public Channel::ChannelSocket::RequestHandler
|
|
19
15
|
{
|
|
20
16
|
protected:
|
|
@@ -32,7 +28,9 @@ namespace RTC
|
|
|
32
28
|
const uint8_t* msg,
|
|
33
29
|
size_t len,
|
|
34
30
|
uint32_t ppid,
|
|
35
|
-
onQueuedCallback* cb)
|
|
31
|
+
onQueuedCallback* cb) = 0;
|
|
32
|
+
virtual void OnDataConsumerNeedBufferedAmount(
|
|
33
|
+
RTC::DataConsumer* dataConsumer, uint32_t& bufferedAmount) = 0;
|
|
36
34
|
virtual void OnDataConsumerDataProducerClosed(RTC::DataConsumer* dataConsumer) = 0;
|
|
37
35
|
};
|
|
38
36
|
|
|
@@ -48,7 +46,6 @@ namespace RTC
|
|
|
48
46
|
RTC::Shared* shared,
|
|
49
47
|
const std::string& id,
|
|
50
48
|
const std::string& dataProducerId,
|
|
51
|
-
RTC::SctpAssociation* sctpAssociation,
|
|
52
49
|
RTC::DataConsumer::Listener* listener,
|
|
53
50
|
const FBS::Transport::ConsumeDataRequest* data,
|
|
54
51
|
size_t maxMessageSize);
|
|
@@ -95,10 +92,10 @@ namespace RTC
|
|
|
95
92
|
void DataProducerResumed();
|
|
96
93
|
void SctpAssociationConnected();
|
|
97
94
|
void SctpAssociationClosed();
|
|
98
|
-
void
|
|
95
|
+
void SetSctpAssociationBufferedAmount(uint32_t bufferedAmount);
|
|
99
96
|
void SctpAssociationSendBufferFull();
|
|
100
97
|
void DataProducerClosed();
|
|
101
|
-
|
|
98
|
+
bool SendMessage(
|
|
102
99
|
const uint8_t* msg,
|
|
103
100
|
size_t len,
|
|
104
101
|
uint32_t ppid,
|
|
@@ -118,7 +115,6 @@ namespace RTC
|
|
|
118
115
|
private:
|
|
119
116
|
// Passed by argument.
|
|
120
117
|
RTC::Shared* shared{ nullptr };
|
|
121
|
-
RTC::SctpAssociation* sctpAssociation{ nullptr };
|
|
122
118
|
RTC::DataConsumer::Listener* listener{ nullptr };
|
|
123
119
|
size_t maxMessageSize{ 0u };
|
|
124
120
|
// Others.
|
|
@@ -36,7 +36,7 @@ namespace RTC
|
|
|
36
36
|
size_t len,
|
|
37
37
|
uint32_t ppid,
|
|
38
38
|
onQueuedCallback* cb = nullptr) override;
|
|
39
|
-
|
|
39
|
+
bool SendSctpData(const uint8_t* data, size_t len) override;
|
|
40
40
|
void RecvStreamClosed(uint32_t ssrc) override;
|
|
41
41
|
void SendStreamClosed(uint32_t ssrc) override;
|
|
42
42
|
|
|
@@ -151,7 +151,8 @@ namespace RTC
|
|
|
151
151
|
{
|
|
152
152
|
return this->localRole;
|
|
153
153
|
}
|
|
154
|
-
|
|
154
|
+
// Returns a boolean indicating whether the data could be sent.
|
|
155
|
+
bool SendApplicationData(const uint8_t* data, size_t len);
|
|
155
156
|
// This method must be public since it's called within an OpenSSL callback.
|
|
156
157
|
void SendDtlsData(const uint8_t* data, size_t len);
|
|
157
158
|
|