summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoas Schilling <213943+nickvergessen@users.noreply.github.com>2021-06-07 15:26:34 +0200
committerGitHub <noreply@github.com>2021-06-07 15:26:34 +0200
commit0cd2c2247131d62a995063dc0264bc9a56795ebc (patch)
treedec205d31cc3a477b69d3e7128ee5b9bb9287560
parent1b4e1d121751e33cf0edc9d6ee5108c551817100 (diff)
parente8225cce7603169c8c609bbf72217022cac1e5a6 (diff)
Merge pull request #5659 from nextcloud/do-not-add-tracks-for-receiver-only-peers
Do not add tracks for receiver only peers
-rw-r--r--src/utils/webrtc/simplewebrtc/peer.js38
-rw-r--r--src/utils/webrtc/simplewebrtc/simplewebrtc.js1
2 files changed, 21 insertions, 18 deletions
diff --git a/src/utils/webrtc/simplewebrtc/peer.js b/src/utils/webrtc/simplewebrtc/peer.js
index 3fdfd1864..7acaf4cb8 100644
--- a/src/utils/webrtc/simplewebrtc/peer.js
+++ b/src/utils/webrtc/simplewebrtc/peer.js
@@ -61,26 +61,28 @@ function Peer(options) {
this.pc.addEventListener('signalingstatechange', this.emit.bind(this, 'signalingStateChange'))
this.logger = this.parent.logger
- // handle screensharing/broadcast mode
- if (options.type === 'screen') {
- if (this.parent.localScreen && this.sharemyscreen) {
- this.logger.log('adding local screen stream to peer connection')
- this.pc.addStream(this.parent.localScreen)
- this.broadcaster = options.broadcaster
- }
- } else {
- this.parent.localStreams.forEach(function(stream) {
- stream.getTracks().forEach(function(track) {
- if (track.kind !== 'video' || self.sendVideoIfAvailable) {
- self.pc.addTrack(track, stream)
- }
+ if (!options.receiverOnly) {
+ // handle screensharing/broadcast mode
+ if (options.type === 'screen') {
+ if (this.parent.localScreen && this.sharemyscreen) {
+ this.logger.log('adding local screen stream to peer connection')
+ this.pc.addStream(this.parent.localScreen)
+ this.broadcaster = options.broadcaster
+ }
+ } else {
+ this.parent.localStreams.forEach(function(stream) {
+ stream.getTracks().forEach(function(track) {
+ if (track.kind !== 'video' || self.sendVideoIfAvailable) {
+ self.pc.addTrack(track, stream)
+ }
+ })
})
- })
- this.handleLocalTrackReplacedBound = this.handleLocalTrackReplaced.bind(this)
- // TODO What would happen if the track is replaced while the peer is
- // still negotiating the offer and answer?
- this.parent.on('localTrackReplaced', this.handleLocalTrackReplacedBound)
+ this.handleLocalTrackReplacedBound = this.handleLocalTrackReplaced.bind(this)
+ // TODO What would happen if the track is replaced while the peer is
+ // still negotiating the offer and answer?
+ this.parent.on('localTrackReplaced', this.handleLocalTrackReplacedBound)
+ }
}
// proxy events to parent
diff --git a/src/utils/webrtc/simplewebrtc/simplewebrtc.js b/src/utils/webrtc/simplewebrtc/simplewebrtc.js
index b70baa8b2..ab919828e 100644
--- a/src/utils/webrtc/simplewebrtc/simplewebrtc.js
+++ b/src/utils/webrtc/simplewebrtc/simplewebrtc.js
@@ -104,6 +104,7 @@ function SimpleWebRTC(opts) {
sharemyscreen: message.roomType === 'screen' && !message.broadcaster,
broadcaster: message.roomType === 'screen' && !message.broadcaster ? self.connection.getSessionId() : null,
sendVideoIfAvailable: self.connection.getSendVideoIfAvailable(),
+ receiverOnly: self.connection.hasFeature('mcu'),
})
self.emit('createdPeer', peer)
}