Skip to content

Commit 9fe0702

Browse files
authored
Register response receiver before sending request. (#557)
Just in case very low latency links get the response before registering.
1 parent 01419b0 commit 9fe0702

File tree

1 file changed

+8
-10
lines changed

1 file changed

+8
-10
lines changed

localparticipant.go

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ func (p *LocalParticipant) PublishTrack(track webrtc.TrackLocal, opts *TrackPubl
6060
return nil, ErrNoPeerConnection
6161
}
6262

63+
pubChan := make(chan *livekit.TrackPublishedResponse, 1)
64+
p.engine.RegisterTrackPublishedListener(track.ID(), pubChan)
65+
defer p.engine.UnregisterTrackPublishedListener(track.ID())
66+
6367
pub := NewLocalTrackPublication(kind, track, *opts, p.engine.client)
6468
pub.onMuteChanged = p.onTrackMuted
6569

@@ -107,19 +111,14 @@ func (p *LocalParticipant) PublishTrack(track webrtc.TrackLocal, opts *TrackPubl
107111

108112
publisher.Negotiate()
109113

110-
pubChan := make(chan *livekit.TrackPublishedResponse, 1)
111-
p.engine.RegisterTrackPublishedListener(track.ID(), pubChan)
112-
113114
var pubRes *livekit.TrackPublishedResponse
114115
select {
115116
case pubRes = <-pubChan:
116117
break
117118
case <-time.After(trackPublishTimeout):
118-
p.engine.UnregisterTrackPublishedListener(track.ID())
119119
return nil, ErrTrackPublishTimeout
120120
}
121121

122-
p.engine.UnregisterTrackPublishedListener(track.ID())
123122
pub.updateInfo(pubRes.Track)
124123
p.addPublication(pub)
125124

@@ -163,6 +162,10 @@ func (p *LocalParticipant) PublishSimulcastTrack(tracks []*LocalTrack, opts *Tra
163162

164163
mainTrack := tracksCopy[len(tracksCopy)-1]
165164

165+
pubChan := make(chan *livekit.TrackPublishedResponse, 1)
166+
p.engine.RegisterTrackPublishedListener(mainTrack.ID(), pubChan)
167+
defer p.engine.UnregisterTrackPublishedListener(mainTrack.ID())
168+
166169
pub := NewLocalTrackPublication(KindFromRTPType(mainTrack.Kind()), nil, *opts, p.engine.client)
167170
pub.onMuteChanged = p.onTrackMuted
168171

@@ -193,19 +196,14 @@ func (p *LocalParticipant) PublishSimulcastTrack(tracks []*LocalTrack, opts *Tra
193196
return nil, err
194197
}
195198

196-
pubChan := make(chan *livekit.TrackPublishedResponse, 1)
197-
p.engine.RegisterTrackPublishedListener(mainTrack.ID(), pubChan)
198-
199199
var pubRes *livekit.TrackPublishedResponse
200200
select {
201201
case pubRes = <-pubChan:
202202
break
203203
case <-time.After(trackPublishTimeout):
204-
p.engine.UnregisterTrackPublishedListener(mainTrack.ID())
205204
return nil, ErrTrackPublishTimeout
206205
}
207206

208-
p.engine.UnregisterTrackPublishedListener(mainTrack.ID())
209207
publisher, ok := p.engine.Publisher()
210208
if !ok {
211209
return nil, ErrNoPeerConnection

0 commit comments

Comments
 (0)