mirror of
https://github.com/octoleo/syncthing.git
synced 2024-11-18 02:55:16 +00:00
lib/discover: Respect the listen address scheme (fixes #3346)
This is a supplement patch to commit a58f69b
which only fixed global
discovery. This patch adds the missing parts for the local discovery.
If the listen address scheme is set to tcp4:// or tcp6:// and no
explicit host is specified, an address should not be considered if the
source address does not match this scheme.
This prevents invalid URIs like tcp4://<IPv6 address>:<port> or tcp6://<IPv4
address>:<port> for local discovery.
GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/3380
This commit is contained in:
parent
223e14b0d0
commit
223a835f33
@ -197,6 +197,21 @@ func (c *localClient) registerDevice(src net.Addr, device Device) bool {
|
||||
}
|
||||
|
||||
if len(tcpAddr.IP) == 0 || tcpAddr.IP.IsUnspecified() {
|
||||
srcAddr, err := net.ResolveTCPAddr("tcp", src.String())
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
// Do not use IPv6 source address if requested scheme is tcp4
|
||||
if u.Scheme == "tcp4" && srcAddr.IP.To4() == nil {
|
||||
continue
|
||||
}
|
||||
|
||||
// Do not use IPv4 source address if requested scheme is tcp6
|
||||
if u.Scheme == "tcp6" && srcAddr.IP.To4() != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
host, _, err := net.SplitHostPort(src.String())
|
||||
if err != nil {
|
||||
continue
|
||||
|
Loading…
Reference in New Issue
Block a user