server: stop sending frames immediately after ServerStream.Close() is called

This commit is contained in:
aler9
2021-08-10 17:34:40 +02:00
parent 3222472021
commit c45a1b3995

View File

@@ -67,6 +67,10 @@ func (st *ServerStream) Close() error {
} }
} }
for ss := range st.readers {
ss.Close()
}
if st.multicastListeners != nil { if st.multicastListeners != nil {
for _, l := range st.multicastListeners { for _, l := range st.multicastListeners {
l.rtpListener.close() l.rtpListener.close()
@@ -75,10 +79,8 @@ func (st *ServerStream) Close() error {
st.multicastListeners = nil st.multicastListeners = nil
} }
for ss := range st.readers {
ss.Close()
}
st.readers = nil st.readers = nil
st.readersUnicast = nil
return nil return nil
} }
@@ -123,10 +125,7 @@ func (st *ServerStream) readerAdd(ss *ServerSession, isMulticast bool) error {
} }
} }
if !isMulticast || st.multicastListeners != nil { if isMulticast && st.multicastListeners == nil {
return nil
}
st.multicastListeners = make([]*listenerPair, len(st.tracks)) st.multicastListeners = make([]*listenerPair, len(st.tracks))
for i := range st.tracks { for i := range st.tracks {
@@ -147,6 +146,7 @@ func (st *ServerStream) readerAdd(ss *ServerSession, isMulticast bool) error {
rtcpListener: rtcpListener, rtcpListener: rtcpListener,
} }
} }
}
return nil return nil
} }