@@ -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