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

This commit is contained in:
Gabe Kangas 2021-01-13 21:58:34 -08:00
parent acd546ce6c
commit 2b81fcef53

View file

@ -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)
}