support ipv6 link-local addresses; fix #6
This commit is contained in:
@@ -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
@@ -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
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user