From f2dca8e3697bed705411343485e5b25fd9914ac0 Mon Sep 17 00:00:00 2001 From: nareix Date: Sun, 12 Jun 2016 10:00:40 +0800 Subject: [PATCH] fix rtp keep alive bug --- client.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/client.go b/client.go index be4886e..0c26075 100644 --- a/client.go +++ b/client.go @@ -123,12 +123,17 @@ func (self *Client) writeLine(line string) (err error) { func (self *Client) sendRtpKeepalive() (err error) { if self.RtpKeepAliveTimeout > 0 { - if !self.rtpKeepaliveTimer.IsZero() && time.Now().Sub(self.rtpKeepaliveTimer) > self.RtpKeepAliveTimeout { + if self.rtpKeepaliveTimer.IsZero() { + self.rtpKeepaliveTimer = time.Now() + } else if time.Now().Sub(self.rtpKeepaliveTimer) > self.RtpKeepAliveTimeout { + self.rtpKeepaliveTimer = time.Now() + if self.DebugConn { + fmt.Println("rtp: keep alive") + } if err = self.Options(); err != nil { return } } - self.rtpKeepaliveTimer = time.Now() } return } @@ -174,19 +179,18 @@ func (self *Client) ReadResponse() (res Response, err error) { } } } else if res.BlockLength > 0 { - if err = self.sendRtpKeepalive(); err != nil { - return - } self.conn.Timeout = self.RtpTimeout res.Block = make([]byte, res.BlockLength) if _, err = io.ReadFull(self.rconn, res.Block); err != nil { return } + if err = self.sendRtpKeepalive(); err != nil { + return + } } }() self.conn.Timeout = self.RtspTimeout - var h [4]byte if _, err = io.ReadFull(self.rconn, h[:]); err != nil { return