add rtpKeepaliveEnterCnt to fix keepalive reenter problem

This commit is contained in:
nareix 2016-06-14 11:55:44 +08:00
parent 199ccf8ec0
commit 4fb78f9e74

View File

@ -34,6 +34,7 @@ type Client struct {
RtpTimeout time.Duration
RtpKeepAliveTimeout time.Duration
rtpKeepaliveTimer time.Time
rtpKeepaliveEnterCnt int
setupCalled bool
setupIdx []int
@ -117,7 +118,11 @@ func (self *Client) Streams() (streams []av.CodecData, err error) {
}
func (self *Client) sendRtpKeepalive() (err error) {
if self.RtpKeepAliveTimeout > 0 {
if self.RtpKeepAliveTimeout > 0 && self.rtpKeepaliveEnterCnt == 0 {
self.rtpKeepaliveEnterCnt++
defer func() {
self.rtpKeepaliveEnterCnt--
}()
if self.rtpKeepaliveTimer.IsZero() {
self.rtpKeepaliveTimer = time.Now()
} else if time.Now().Sub(self.rtpKeepaliveTimer) > self.RtpKeepAliveTimeout {