mirror of
https://github.com/aler9/gortsplib
synced 2025-10-27 09:11:17 +08:00
server: return error in case of unexpected interleaved frames
This commit is contained in:
@@ -210,21 +210,27 @@ func (sc *ServerConn) readFuncStandard(readRequest chan readReq) error {
|
||||
sc.nconn.SetReadDeadline(time.Time{})
|
||||
|
||||
for {
|
||||
req, err := sc.conn.ReadRequest()
|
||||
any, err := sc.conn.ReadInterleavedFrameOrRequest()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
cres := make(chan error)
|
||||
select {
|
||||
case readRequest <- readReq{req: req, res: cres}:
|
||||
err = <-cres
|
||||
if err != nil {
|
||||
return err
|
||||
switch what := any.(type) {
|
||||
case *base.Request:
|
||||
cres := make(chan error)
|
||||
select {
|
||||
case readRequest <- readReq{req: what, res: cres}:
|
||||
err = <-cres
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
case <-sc.ctx.Done():
|
||||
return liberrors.ErrServerTerminated{}
|
||||
}
|
||||
|
||||
case <-sc.ctx.Done():
|
||||
return liberrors.ErrServerTerminated{}
|
||||
default:
|
||||
return liberrors.ErrServerUnexpectedFrame{}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user