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