mirror of
https://github.com/aler9/gortsplib
synced 2025-10-05 07:06:58 +08:00
server: stop sending frames immediately after ServerStream.Close() is called
This commit is contained in:
@@ -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,28 +125,26 @@ 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 {
|
||||||
|
rtpListener, rtcpListener, err := newServerUDPListenerMulticastPair(st.s)
|
||||||
for i := range st.tracks {
|
if err != nil {
|
||||||
rtpListener, rtcpListener, err := newServerUDPListenerMulticastPair(st.s)
|
for _, l := range st.multicastListeners {
|
||||||
if err != nil {
|
if l != nil {
|
||||||
for _, l := range st.multicastListeners {
|
l.rtpListener.close()
|
||||||
if l != nil {
|
l.rtcpListener.close()
|
||||||
l.rtpListener.close()
|
}
|
||||||
l.rtcpListener.close()
|
|
||||||
}
|
}
|
||||||
|
st.multicastListeners = nil
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
st.multicastListeners = nil
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
st.multicastListeners[i] = &listenerPair{
|
st.multicastListeners[i] = &listenerPair{
|
||||||
rtpListener: rtpListener,
|
rtpListener: rtpListener,
|
||||||
rtcpListener: rtcpListener,
|
rtcpListener: rtcpListener,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user