diff --git a/internal/core/webrtc_http_server.go b/internal/core/webrtc_http_server.go index f2d253e2..d6f9cdfc 100644 --- a/internal/core/webrtc_http_server.go +++ b/internal/core/webrtc_http_server.go @@ -358,9 +358,7 @@ func (s *webRTCHTTPServer) onRequest(ctx *gin.Context) { publish: (fname == "whip"), }) if res.err != nil { - if res.errStatusCode != 0 { - ctx.Writer.WriteHeader(res.errStatusCode) - } + ctx.Writer.WriteHeader(res.errStatusCode) return } diff --git a/internal/core/webrtc_session.go b/internal/core/webrtc_session.go index 47c47112..96f0a7f8 100644 --- a/internal/core/webrtc_session.go +++ b/internal/core/webrtc_session.go @@ -205,12 +205,9 @@ func (s *webRTCSession) runInner() error { errStatusCode, err := s.runInner2() if !s.answerSent { - select { - case s.req.res <- webRTCSessionNewRes{ + s.req.res <- webRTCSessionNewRes{ err: err, errStatusCode: errStatusCode, - }: - case <-s.ctx.Done(): } } @@ -294,10 +291,7 @@ func (s *webRTCSession) runPublish() (int, error) { tmp := pc.LocalDescription() answer = *tmp - err = s.writeAnswer(&answer) - if err != nil { - return http.StatusBadRequest, err - } + s.writeAnswer(&answer) go s.readRemoteCandidates(pc) @@ -401,10 +395,7 @@ func (s *webRTCSession) runRead() (int, error) { tmp := pc.LocalDescription() answer = *tmp - err = s.writeAnswer(&answer) - if err != nil { - return http.StatusBadRequest, err - } + s.writeAnswer(&answer) go s.readRemoteCandidates(pc) @@ -468,18 +459,12 @@ func (s *webRTCSession) waitGatheringDone(pc *peerConnection) error { } } -func (s *webRTCSession) writeAnswer(answer *webrtc.SessionDescription) error { - select { - case s.req.res <- webRTCSessionNewRes{ +func (s *webRTCSession) writeAnswer(answer *webrtc.SessionDescription) { + s.req.res <- webRTCSessionNewRes{ sx: s, answer: []byte(answer.SDP), - }: - s.answerSent = true - case <-s.ctx.Done(): - return fmt.Errorf("terminated") } - - return nil + s.answerSent = true } func (s *webRTCSession) waitUntilConnected(pc *peerConnection) error {