mirror of
https://github.com/9001/copyparty.git
synced 2025-08-17 09:02:15 -06:00
some failsafes
This commit is contained in:
parent
8ef4a0aa71
commit
c573a780e9
|
@ -8,7 +8,7 @@ import ipaddress
|
||||||
from ipaddress import IPv4Address, IPv4Network, IPv6Address, IPv6Network
|
from ipaddress import IPv4Address, IPv4Network, IPv6Address, IPv6Network
|
||||||
|
|
||||||
from .__init__ import TYPE_CHECKING
|
from .__init__ import TYPE_CHECKING
|
||||||
from .util import Netdev, min_ex, spack
|
from .util import MACOS, Netdev, min_ex, spack
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from .svchub import SvcHub
|
from .svchub import SvcHub
|
||||||
|
@ -216,6 +216,9 @@ class MCast(object):
|
||||||
|
|
||||||
grp = self.grp6 if srv.idx else ""
|
grp = self.grp6 if srv.idx else ""
|
||||||
try:
|
try:
|
||||||
|
if MACOS:
|
||||||
|
raise Exception()
|
||||||
|
|
||||||
sck.bind((grp, self.port, 0, srv.idx))
|
sck.bind((grp, self.port, 0, srv.idx))
|
||||||
except:
|
except:
|
||||||
sck.bind(("", self.port, 0, srv.idx))
|
sck.bind(("", self.port, 0, srv.idx))
|
||||||
|
@ -243,6 +246,9 @@ class MCast(object):
|
||||||
|
|
||||||
grp = self.grp4 if srv.idx else ""
|
grp = self.grp4 if srv.idx else ""
|
||||||
try:
|
try:
|
||||||
|
if MACOS:
|
||||||
|
raise Exception()
|
||||||
|
|
||||||
sck.bind((grp, self.port))
|
sck.bind((grp, self.port))
|
||||||
except:
|
except:
|
||||||
sck.bind(("", self.port))
|
sck.bind(("", self.port))
|
||||||
|
@ -289,6 +295,8 @@ class MCast(object):
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
# t = "joining {} from ip {} idx {} with mreq {}"
|
||||||
|
# self.log(t.format(srv.grp, srv.ip, srv.idx, repr(srv.mreq)), 6)
|
||||||
sck.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, req)
|
sck.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, req)
|
||||||
|
|
||||||
def map_client(self, cip: str) -> Optional[MC_Sck]:
|
def map_client(self, cip: str) -> Optional[MC_Sck]:
|
||||||
|
|
|
@ -280,7 +280,16 @@ class TcpSrv(object):
|
||||||
# browsers dont impl linklocal
|
# browsers dont impl linklocal
|
||||||
continue
|
continue
|
||||||
|
|
||||||
eps[sip] = Netdev(sip, nic.index or 0, nic.nice_name, "")
|
nd = Netdev(sip, nic.index or 0, nic.nice_name, "")
|
||||||
|
eps[sip] = nd
|
||||||
|
try:
|
||||||
|
idx = socket.if_nametoindex(nd.name)
|
||||||
|
if idx and idx != nd.idx:
|
||||||
|
t = "netdev idx mismatch; ifaddr={} cpython={}"
|
||||||
|
self.log("tcpsrv", t.format(nd.idx, idx), 3)
|
||||||
|
nd.idx = idx
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
if "0.0.0.0" not in listen_ips and "::" not in listen_ips:
|
if "0.0.0.0" not in listen_ips and "::" not in listen_ips:
|
||||||
eps = {k: v for k, v in eps.items() if k.split("/")[0] in listen_ips}
|
eps = {k: v for k, v in eps.items() if k.split("/")[0] in listen_ips}
|
||||||
|
|
Loading…
Reference in a new issue