mirror of
https://github.com/bluenviron/mediamtx.git
synced 2025-12-25 12:32:01 -08:00
fix: add SetWriteDeadline() and prevent timeout when receiving via tcp
This commit is contained in:
parent
d28a87ce3c
commit
a9799c7cf1
3 changed files with 10 additions and 6 deletions
|
|
@ -13,11 +13,6 @@ import (
|
|||
"gortc.io/sdp"
|
||||
)
|
||||
|
||||
const (
|
||||
_READ_TIMEOUT = 5 * time.Second
|
||||
_WRITE_TIMEOUT = 5 * time.Second
|
||||
)
|
||||
|
||||
func interleavedChannelToTrack(channel int) (int, trackFlow) {
|
||||
if (channel % 2) == 0 {
|
||||
return (channel / 2), _TRACK_FLOW_RTP
|
||||
|
|
|
|||
9
main.go
9
main.go
|
|
@ -8,12 +8,18 @@ import (
|
|||
"regexp"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"gopkg.in/alecthomas/kingpin.v2"
|
||||
)
|
||||
|
||||
var Version string = "v0.0.0"
|
||||
|
||||
const (
|
||||
_READ_TIMEOUT = 5 * time.Second
|
||||
_WRITE_TIMEOUT = 5 * time.Second
|
||||
)
|
||||
|
||||
type trackFlow int
|
||||
|
||||
const (
|
||||
|
|
@ -124,11 +130,13 @@ func (p *program) forwardTrack(path string, id int, flow trackFlow, frame []byte
|
|||
if c.path == path && c.state == _CLIENT_STATE_PLAY {
|
||||
if c.streamProtocol == _STREAM_PROTOCOL_UDP {
|
||||
if flow == _TRACK_FLOW_RTP {
|
||||
p.rtpl.nconn.SetWriteDeadline(time.Now().Add(_WRITE_TIMEOUT))
|
||||
p.rtpl.nconn.WriteTo(frame, &net.UDPAddr{
|
||||
IP: c.ip,
|
||||
Port: c.streamTracks[id].rtpPort,
|
||||
})
|
||||
} else {
|
||||
p.rtcpl.nconn.SetWriteDeadline(time.Now().Add(_WRITE_TIMEOUT))
|
||||
p.rtcpl.nconn.WriteTo(frame, &net.UDPAddr{
|
||||
IP: c.ip,
|
||||
Port: c.streamTracks[id].rtcpPort,
|
||||
|
|
@ -136,6 +144,7 @@ func (p *program) forwardTrack(path string, id int, flow trackFlow, frame []byte
|
|||
}
|
||||
|
||||
} else {
|
||||
c.conn.NetConn().SetWriteDeadline(time.Now().Add(_WRITE_TIMEOUT))
|
||||
c.conn.WriteInterleavedFrame(trackToInterleavedChannel(id, flow), frame)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ func (l *serverUdpListener) run() {
|
|||
l.p.mutex.RLock()
|
||||
defer l.p.mutex.RUnlock()
|
||||
|
||||
// find path and track id
|
||||
// find path and track id from ip and port
|
||||
path, trackId := func() (string, int) {
|
||||
for _, pub := range l.p.publishers {
|
||||
for i, t := range pub.streamTracks {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue