diff --git a/rtpconn/webclient.go b/rtpconn/webclient.go index fada36c..721c642 100644 --- a/rtpconn/webclient.go +++ b/rtpconn/webclient.go @@ -554,12 +554,17 @@ func gotAnswer(c *webClient, id string, sdp string) error { if down == nil { return ErrUnknownId } - err := down.pc.SetRemoteDescription(webrtc.SessionDescription{ - Type: webrtc.SDPTypeAnswer, - SDP: sdp, - }) - if err != nil { - return err + + if down.pc.SignalingState() == webrtc.SignalingStateStable { + log.Printf("Got answer in stable state -- this shouldn't happen") + } else { + err := down.pc.SetRemoteDescription(webrtc.SessionDescription{ + Type: webrtc.SDPTypeAnswer, + SDP: sdp, + }) + if err != nil { + return err + } } for _, t := range down.tracks { @@ -571,7 +576,7 @@ func gotAnswer(c *webClient, id string, sdp string) error { } } - err = down.flushICECandidates() + err := down.flushICECandidates() if err != nil { log.Printf("ICE: %v", err) }