Skip to content

Commit 8c6495c

Browse files
authored
server: prevent wrong OnSetup / OnDescribe usage (#732)
1 parent 304c38b commit 8c6495c

File tree

3 files changed

+218
-207
lines changed

3 files changed

+218
-207
lines changed

internal/highleveltests/server_test.go

+6
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,12 @@ func TestServerRecordRead(t *testing.T) {
352352
}, nil, fmt.Errorf("invalid query (%s)", ctx.Query)
353353
}
354354

355+
if ctx.Session.State() == gortsplib.ServerSessionStatePreRecord {
356+
return &base.Response{
357+
StatusCode: base.StatusOK,
358+
}, nil, nil
359+
}
360+
355361
if stream == nil {
356362
return &base.Response{
357363
StatusCode: base.StatusNotFound,

server_conn.go

+6-4
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,10 @@ func (sc *ServerConn) handleRequestInner(req *base.Request) (*base.Response, err
328328
})
329329

330330
if res.StatusCode == base.StatusOK {
331+
if stream == nil {
332+
panic("stream cannot be nil when StatusCode is StatusOK")
333+
}
334+
331335
if res.Header == nil {
332336
res.Header = make(base.Header)
333337
}
@@ -347,10 +351,8 @@ func (sc *ServerConn) handleRequestInner(req *base.Request) (*base.Response, err
347351
}
348352
}
349353

350-
if stream != nil {
351-
byts, _ := serverSideDescription(stream.Desc).Marshal(multicast)
352-
res.Body = byts
353-
}
354+
byts, _ := serverSideDescription(stream.Desc).Marshal(multicast)
355+
res.Body = byts
354356
}
355357

356358
return res, err

0 commit comments

Comments
 (0)