server: rename session id into secretID

This commit is contained in:
aler9
2021-08-04 17:21:25 +02:00
parent 15425ca26e
commit 2914af3fda
3 changed files with 16 additions and 16 deletions

View File

@@ -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:

View File

@@ -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

View File

@@ -120,7 +120,7 @@ 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
@@ -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 {