Browse Source

Add a read timeout when reading rtmp to handle connections that have dropped. Closes #564

pull/629/head
Gabe Kangas 4 years ago
parent
commit
2b81fcef53
  1. 11
      core/rtmp/rtmp.go

11
core/rtmp/rtmp.go

@ -114,12 +114,23 @@ func HandleConn(c *rtmp.Conn, nc net.Conn) { @@ -114,12 +114,23 @@ func HandleConn(c *rtmp.Conn, nc net.Conn) {
break
}
// If we don't get a readable packet in 10 seconds give up and disconnect
_rtmpConnection.SetReadDeadline(time.Now().Add(10 * time.Second))
pkt, err := c.ReadPacket()
// Broadcaster disconnected
if err == io.EOF {
handleDisconnect(nc)
break
}
// Read timeout. Disconnect.
if neterr, ok := err.(net.Error); ok && neterr.Timeout() {
log.Debugln("Timeout reading the inbound stream from the broadcaster. Assuming that they disconnected and ending the stream.")
handleDisconnect(nc)
break
}
if err := w.WritePacket(pkt); err != nil {
panic(err)
}

Loading…
Cancel
Save