mirror of
https://github.com/aler9/gortsplib
synced 2025-10-04 14:52:46 +08:00
server: rename session id into secretID
This commit is contained in:
12
server.go
12
server.go
@@ -29,7 +29,7 @@ func extractPort(address string) (int, error) {
|
|||||||
return int(tmp2), nil
|
return int(tmp2), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func newSessionID(sessions map[string]*ServerSession) (string, error) {
|
func newSessionSecretID(sessions map[string]*ServerSession) (string, error) {
|
||||||
for {
|
for {
|
||||||
b := make([]byte, 4)
|
b := make([]byte, 4)
|
||||||
_, err := rand.Read(b)
|
_, err := rand.Read(b)
|
||||||
@@ -372,7 +372,7 @@ outer:
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
id, err := newSessionID(s.sessions)
|
secretID, err := newSessionSecretID(s.sessions)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
req.res <- sessionRequestRes{
|
req.res <- sessionRequestRes{
|
||||||
res: &base.Response{
|
res: &base.Response{
|
||||||
@@ -383,8 +383,8 @@ outer:
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
ss := newServerSession(s, id, req.sc)
|
ss := newServerSession(s, secretID, req.sc)
|
||||||
s.sessions[id] = ss
|
s.sessions[secretID] = ss
|
||||||
|
|
||||||
select {
|
select {
|
||||||
case ss.request <- req:
|
case ss.request <- req:
|
||||||
@@ -399,10 +399,10 @@ outer:
|
|||||||
}
|
}
|
||||||
|
|
||||||
case ss := <-s.sessionClose:
|
case ss := <-s.sessionClose:
|
||||||
if sss, ok := s.sessions[ss.id]; !ok || sss != ss {
|
if sss, ok := s.sessions[ss.secretID]; !ok || sss != ss {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
delete(s.sessions, ss.id)
|
delete(s.sessions, ss.secretID)
|
||||||
ss.Close()
|
ss.Close()
|
||||||
|
|
||||||
case st := <-s.streamAdd:
|
case st := <-s.streamAdd:
|
||||||
|
@@ -227,8 +227,8 @@ func (sc *ServerConn) run() {
|
|||||||
return err
|
return err
|
||||||
|
|
||||||
case ss := <-sc.sessionRemove:
|
case ss := <-sc.sessionRemove:
|
||||||
if _, ok := sc.sessions[ss.id]; ok {
|
if _, ok := sc.sessions[ss.secretID]; ok {
|
||||||
delete(sc.sessions, ss.id)
|
delete(sc.sessions, ss.secretID)
|
||||||
|
|
||||||
select {
|
select {
|
||||||
case ss.connRemove <- sc:
|
case ss.connRemove <- sc:
|
||||||
@@ -285,7 +285,7 @@ func (sc *ServerConn) handleRequest(req *base.Request) (*base.Response, error) {
|
|||||||
// the connection can't communicate with another session
|
// the connection can't communicate with another session
|
||||||
// if it's receiving or sending TCP frames.
|
// if it's receiving or sending TCP frames.
|
||||||
if sc.tcpSession != nil &&
|
if sc.tcpSession != nil &&
|
||||||
sxID != sc.tcpSession.id {
|
sxID != sc.tcpSession.secretID {
|
||||||
return &base.Response{
|
return &base.Response{
|
||||||
StatusCode: base.StatusBadRequest,
|
StatusCode: base.StatusBadRequest,
|
||||||
}, liberrors.ErrServerLinkedToOtherSession{}
|
}, liberrors.ErrServerLinkedToOtherSession{}
|
||||||
@@ -589,7 +589,7 @@ func (sc *ServerConn) handleRequestInSession(
|
|||||||
case sc.s.sessionRequest <- sreq:
|
case sc.s.sessionRequest <- sreq:
|
||||||
res := <-cres
|
res := <-cres
|
||||||
if res.ss != nil {
|
if res.ss != nil {
|
||||||
sc.sessions[res.ss.id] = res.ss
|
sc.sessions[res.ss.secretID] = res.ss
|
||||||
}
|
}
|
||||||
|
|
||||||
return res.ss, res.res, res.err
|
return res.ss, res.res, res.err
|
||||||
|
@@ -119,9 +119,9 @@ type ServerSessionAnnouncedTrack struct {
|
|||||||
|
|
||||||
// ServerSession is a server-side RTSP session.
|
// ServerSession is a server-side RTSP session.
|
||||||
type ServerSession struct {
|
type ServerSession struct {
|
||||||
s *Server
|
s *Server
|
||||||
id string // do not export, allows to take ownership of the session
|
secretID string // must not be shared, allows to take ownership of the session
|
||||||
author *ServerConn
|
author *ServerConn
|
||||||
|
|
||||||
ctx context.Context
|
ctx context.Context
|
||||||
ctxCancel func()
|
ctxCancel func()
|
||||||
@@ -149,14 +149,14 @@ type ServerSession struct {
|
|||||||
|
|
||||||
func newServerSession(
|
func newServerSession(
|
||||||
s *Server,
|
s *Server,
|
||||||
id string,
|
secretID string,
|
||||||
author *ServerConn,
|
author *ServerConn,
|
||||||
) *ServerSession {
|
) *ServerSession {
|
||||||
ctx, ctxCancel := context.WithCancel(s.ctx)
|
ctx, ctxCancel := context.WithCancel(s.ctx)
|
||||||
|
|
||||||
ss := &ServerSession{
|
ss := &ServerSession{
|
||||||
s: s,
|
s: s,
|
||||||
id: id,
|
secretID: secretID,
|
||||||
author: author,
|
author: author,
|
||||||
ctx: ctx,
|
ctx: ctx,
|
||||||
ctxCancel: ctxCancel,
|
ctxCancel: ctxCancel,
|
||||||
@@ -250,7 +250,7 @@ func (ss *ServerSession) run() {
|
|||||||
if res.Header == nil {
|
if res.Header == nil {
|
||||||
res.Header = make(base.Header)
|
res.Header = make(base.Header)
|
||||||
}
|
}
|
||||||
res.Header["Session"] = base.HeaderValue{ss.id}
|
res.Header["Session"] = base.HeaderValue{ss.secretID}
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, ok := err.(liberrors.ErrServerSessionTeardown); ok {
|
if _, ok := err.(liberrors.ErrServerSessionTeardown); ok {
|
||||||
|
Reference in New Issue
Block a user