diff --git a/pkg/rtsp/producer.go b/pkg/rtsp/producer.go index 0cd5efc7..764fb6ef 100644 --- a/pkg/rtsp/producer.go +++ b/pkg/rtsp/producer.go @@ -51,11 +51,19 @@ func (c *Conn) Start() (err error) { case StateConn: err = errors.New("start from CONN state") case StateSetup: - if err = c.Play(); err == nil { + switch c.mode { + case core.ModeActiveProducer: + err = c.Play() + case core.ModePassiveProducer: + err = nil + default: + err = errors.New("start from wrong mode: " + c.mode.String()) + } + + if err == nil { c.state = StatePlay ok = true } - case StatePlay: } c.stateMu.Unlock() diff --git a/pkg/rtsp/server.go b/pkg/rtsp/server.go index 574f445d..ce6658b6 100644 --- a/pkg/rtsp/server.go +++ b/pkg/rtsp/server.go @@ -151,10 +151,7 @@ func (c *Conn) Accept() error { case MethodRecord, MethodPlay: res := &tcp.Response{Request: req} - if err = c.WriteResponse(res); err == nil { - c.state = StatePlay - } - return err + return c.WriteResponse(res) case MethodTeardown: res := &tcp.Response{Request: req}