Pārlūkot izejas kodu

Fixed user-negotiated DataChannels with odd ids

Paul-Louis Ageneau 3 gadi atpakaļ
vecāks
revīzija
7286c30a7a
2 mainītis faili ar 9 papildinājumiem un 5 dzēšanām
  1. 7 3
      src/impl/datachannel.cpp
  2. 2 2
      src/impl/datachannel.hpp

+ 7 - 3
src/impl/datachannel.cpp

@@ -182,9 +182,7 @@ size_t DataChannel::maxMessageSize() const {
 }
 
 void DataChannel::shiftStream() {
-	std::shared_lock lock(mMutex);
-	if (mStream % 2 == 1)
-		mStream -= 1;
+	// Ignore
 }
 
 void DataChannel::open(shared_ptr<SctpTransport> transport) {
@@ -267,6 +265,12 @@ NegotiatedDataChannel::NegotiatedDataChannel(weak_ptr<PeerConnection> pc, uint16
 
 NegotiatedDataChannel::~NegotiatedDataChannel() {}
 
+void NegotiatedDataChannel::shiftStream() {
+	std::shared_lock lock(mMutex);
+	if (mStream % 2 == 1)
+		mStream -= 1;
+}
+
 void NegotiatedDataChannel::open(shared_ptr<SctpTransport> transport) {
 	std::unique_lock lock(mMutex);
 	mSctpTransport = transport;

+ 2 - 2
src/impl/datachannel.hpp

@@ -59,8 +59,7 @@ struct DataChannel : Channel, std::enable_shared_from_this<DataChannel> {
 	bool isClosed(void) const;
 	size_t maxMessageSize() const;
 
-	void shiftStream();
-
+	virtual void shiftStream();
 	virtual void open(shared_ptr<SctpTransport> transport);
 	virtual void processOpenMessage(message_ptr);
 
@@ -86,6 +85,7 @@ struct NegotiatedDataChannel final : public DataChannel {
 	                      string protocol, Reliability reliability);
 	~NegotiatedDataChannel();
 
+	void shiftStream() override;
 	void open(shared_ptr<SctpTransport> transport) override;
 	void processOpenMessage(message_ptr message) override;
 };