3
0
mirror of https://github.com/jlu5/PyLink.git synced 2025-01-11 20:52:42 +01:00

clientbot: return existing PUIDs in spawnClient if nick exists

This fixes some silly UID duplication with FNC handling.
This commit is contained in:
James Lu 2016-08-31 23:22:24 -07:00
parent ae63f72cf9
commit 113fbf9eb8

View File

@ -84,18 +84,22 @@ class ClientbotWrapperProtocol(Protocol):
"""
server = server or self.irc.sid
uid = self.uidgen.next_uid()
ts = ts or int(time.time())
log.debug('(%s) spawnClient stub called, saving nick %s as PUID %s', self.irc.name, nick, uid)
u = self.irc.users[uid] = IrcUser(nick, ts, uid, ident=ident, host=host, realname=realname,
manipulatable=manipulatable, realhost=realhost, ip=ip)
self.irc.servers[server].users.add(uid)
self.irc.applyModes(uid, modes)
return u
# First, check if the pseudouser we want already exists. If so, return their UID.
uid = self.irc.nickToUid(nick)
if uid:
log.debug('(%s) spawnClient stub called, returning existing PUID %s for %s',
self.irc.name, uid, nick)
return self.irc.users[uid]
else:
uid = self.uidgen.next_uid()
ts = ts or int(time.time())
log.debug('(%s) spawnClient stub called, saving nick %s as PUID %s', self.irc.name, nick, uid)
u = self.irc.users[uid] = IrcUser(nick, ts, uid, ident=ident, host=host, realname=realname,
manipulatable=manipulatable, realhost=realhost, ip=ip)
self.irc.servers[server].users.add(uid)
self.irc.applyModes(uid, modes)
return u
def spawnServer(self, name, sid=None, uplink=None, desc=None, endburst_delay=0, internal=True):
"""
@ -576,7 +580,6 @@ class ClientbotWrapperProtocol(Protocol):
oldnick = self.irc.serverdata['pylink_nick']
self.irc.serverdata['pylink_nick'] = self.conf_nick = args[0]
log.debug('(%s) Pre-auth FNC: Forcing configured nick to %s from %s', self.irc.name, args[0], oldnick)
return
oldnick = self.irc.users[source].nick
self.irc.users[source].nick = args[0]