mirror of
https://github.com/jlu5/PyLink.git
synced 2025-01-23 10:44:09 +01:00
relay: experimental fix for #183
This commit is contained in:
parent
2169a9be28
commit
d21344342d
@ -237,7 +237,6 @@ def getRemoteSid(irc, remoteirc):
|
||||
except ValueError: # Network not initialized yet.
|
||||
log.exception('(%s) Failed to spawn server for %r:',
|
||||
irc.name, remoteirc.name)
|
||||
irc.disconnect()
|
||||
return
|
||||
else:
|
||||
irc.servers[sid].remote = remoteirc.name
|
||||
@ -1178,36 +1177,38 @@ def handle_disconnect(irc, numeric, command, args):
|
||||
"""Handles IRC network disconnections (internal hook)."""
|
||||
# Quit all of our users' representations on other nets, and remove
|
||||
# them from our relay clients index.
|
||||
for k, v in relayusers.copy().items():
|
||||
if irc.name in v:
|
||||
del relayusers[k][irc.name]
|
||||
if k[0] == irc.name:
|
||||
try:
|
||||
handle_quit(irc, k[1], 'PYLINK_DISCONNECT', {'text': 'Relay network lost connection.'})
|
||||
del relayusers[k]
|
||||
except KeyError:
|
||||
pass
|
||||
with spawnlocks[irc.name]:
|
||||
for k, v in relayusers.copy().items():
|
||||
if irc.name in v:
|
||||
del relayusers[k][irc.name]
|
||||
if k[0] == irc.name:
|
||||
try:
|
||||
handle_quit(irc, k[1], 'PYLINK_DISCONNECT', {'text': 'Relay network lost connection.'})
|
||||
del relayusers[k]
|
||||
except KeyError:
|
||||
pass
|
||||
# SQUIT all relay pseudoservers spawned for us, and remove them
|
||||
# from our relay subservers index.
|
||||
for name, ircobj in world.networkobjects.copy().items():
|
||||
if name != irc.name and ircobj.connected.is_set():
|
||||
with spawnlocks_servers[irc.name]:
|
||||
for name, ircobj in world.networkobjects.copy().items():
|
||||
if name != irc.name and ircobj.connected.is_set():
|
||||
try:
|
||||
rsid = relayservers[name][irc.name]
|
||||
except KeyError:
|
||||
continue
|
||||
else:
|
||||
ircobj.proto.squit(ircobj.sid, rsid, text='Relay network lost connection.')
|
||||
|
||||
try:
|
||||
rsid = relayservers[name][irc.name]
|
||||
del relayservers[name][irc.name]
|
||||
except KeyError:
|
||||
continue
|
||||
else:
|
||||
ircobj.proto.squit(ircobj.sid, rsid, text='Relay network lost connection.')
|
||||
pass
|
||||
|
||||
try:
|
||||
del relayservers[name][irc.name]
|
||||
del relayservers[irc.name]
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
try:
|
||||
del relayservers[irc.name]
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
utils.add_hook(handle_disconnect, "PYLINK_DISCONNECT")
|
||||
|
||||
def handle_save(irc, numeric, command, args):
|
||||
|
Loading…
Reference in New Issue
Block a user