support ipv6 link-local addresses; fix #6

This commit is contained in:
aler9
2020-05-03 23:26:41 +02:00
parent 6cb36ab4e6
commit 0b38b3c75a
3 changed files with 13 additions and 7 deletions
+4 -2
View File
@@ -199,7 +199,8 @@ func (p *program) forwardTrack(path string, id int, flow trackFlow, frame []byte
if flow == _TRACK_FLOW_RTP {
p.rtpl.chanWrite <- &udpWrite{
addr: &net.UDPAddr{
IP: c.ip,
IP: c.ip(),
Zone: c.zone(),
Port: c.streamTracks[id].rtpPort,
},
buf: frame,
@@ -207,7 +208,8 @@ func (p *program) forwardTrack(path string, id int, flow trackFlow, frame []byte
} else {
p.rtcpl.chanWrite <- &udpWrite{
addr: &net.UDPAddr{
IP: c.ip,
IP: c.ip(),
Zone: c.zone(),
Port: c.streamTracks[id].rtcpPort,
},
buf: frame,
+8 -4
View File
@@ -107,7 +107,6 @@ type serverClient struct {
p *program
conn *gortsplib.ConnServer
state clientState
ip net.IP
path string
as *gortsplib.AuthServer
streamSdpText []byte // filled only if publisher
@@ -164,6 +163,14 @@ func (c *serverClient) log(format string, args ...interface{}) {
fmt.Sprintf(format, args...))
}
func (c *serverClient) ip() net.IP {
return c.conn.NetConn().RemoteAddr().(*net.TCPAddr).IP
}
func (c *serverClient) zone() string {
return c.conn.NetConn().RemoteAddr().(*net.TCPAddr).Zone
}
func (c *serverClient) run() {
defer func() {
if c.p.postScript != "" {
@@ -183,9 +190,6 @@ func (c *serverClient) run() {
c.close()
}()
ipstr, _, _ := net.SplitHostPort(c.conn.NetConn().RemoteAddr().String())
c.ip = net.ParseIP(ipstr)
c.log("connected")
if c.p.preScript != "" {
+1 -1
View File
@@ -68,7 +68,7 @@ func (l *serverUdpListener) run() {
path, trackId := func() (string, int) {
for _, pub := range l.p.publishers {
for i, t := range pub.streamTracks {
if !pub.ip.Equal(addr.IP) {
if !pub.ip().Equal(addr.IP) {
continue
}