From 66997b37f9fb70dd4c65976be0b97801bbccb693 Mon Sep 17 00:00:00 2001 From: David Zhao Date: Sat, 11 Sep 2021 23:33:35 -0700 Subject: [PATCH] improve reliability of data publish test --- test/client/client.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/test/client/client.go b/test/client/client.go index 4a2ab5944..56f72ea9c 100644 --- a/test/client/client.go +++ b/test/client/client.go @@ -547,6 +547,14 @@ func (c *RTCClient) ensurePublisherConnected() error { c.publisher.Negotiate() } + dcOpen := utils.AtomicFlag{} + c.lossyDC.OnOpen(func() { + dcOpen.TrySet(true) + }) + if c.lossyDC.ReadyState() == webrtc.DataChannelStateOpen { + dcOpen.TrySet(true) + } + // wait until connected ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) defer cancel() @@ -555,9 +563,7 @@ func (c *RTCClient) ensurePublisherConnected() error { case <-ctx.Done(): return fmt.Errorf("could not connect publisher after timeout") case <-time.After(10 * time.Millisecond): - if c.publisherConnected.Get() { - // TODO: pion seem to have a timing issue here. data channel is not actually open at this moment - time.Sleep(100 * time.Millisecond) + if c.publisherConnected.Get() && dcOpen.Get() { return nil } }