Improve nick change handling
This commit is contained in:
parent
0a6d8bfb20
commit
e84f2dd993
@ -64,6 +64,12 @@ func (c *Client) GetNick() string {
|
|||||||
return c.nick
|
return c.nick
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *Client) setNick(nick string) {
|
||||||
|
c.lock.Lock()
|
||||||
|
c.nick = nick
|
||||||
|
c.lock.Unlock()
|
||||||
|
}
|
||||||
|
|
||||||
func (c *Client) Connected() bool {
|
func (c *Client) Connected() bool {
|
||||||
c.lock.Lock()
|
c.lock.Lock()
|
||||||
defer c.lock.Unlock()
|
defer c.lock.Unlock()
|
||||||
@ -73,10 +79,6 @@ func (c *Client) Connected() bool {
|
|||||||
|
|
||||||
func (c *Client) Nick(nick string) {
|
func (c *Client) Nick(nick string) {
|
||||||
c.Write("NICK " + nick)
|
c.Write("NICK " + nick)
|
||||||
|
|
||||||
c.lock.Lock()
|
|
||||||
c.nick = nick
|
|
||||||
c.lock.Unlock()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) Oper(name, password string) {
|
func (c *Client) Oper(name, password string) {
|
||||||
|
15
irc/conn.go
15
irc/conn.go
@ -175,7 +175,6 @@ func (c *Client) recv() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
msg := parseMessage(line)
|
msg := parseMessage(line)
|
||||||
c.Messages <- msg
|
|
||||||
|
|
||||||
switch msg.Command {
|
switch msg.Command {
|
||||||
case Ping:
|
case Ping:
|
||||||
@ -186,14 +185,24 @@ func (c *Client) recv() {
|
|||||||
c.addChannel(msg.Params[0])
|
c.addChannel(msg.Params[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case Nick:
|
||||||
|
if msg.Nick == c.GetNick() {
|
||||||
|
c.setNick(msg.LastParam())
|
||||||
|
}
|
||||||
|
|
||||||
case ReplyWelcome:
|
case ReplyWelcome:
|
||||||
c.once.Do(c.ready.Done)
|
c.once.Do(c.ready.Done)
|
||||||
|
|
||||||
case ErrNicknameInUse:
|
case ErrNicknameInUse:
|
||||||
if c.HandleNickInUse != nil {
|
if c.HandleNickInUse != nil {
|
||||||
c.nick = c.HandleNickInUse(c.nick)
|
newNick := c.HandleNickInUse(msg.Params[1])
|
||||||
c.writeNick(c.nick)
|
// Set the nick here aswell incase this happens during registration
|
||||||
|
// since there will be no NICK message to confirm it then
|
||||||
|
c.setNick(newNick)
|
||||||
|
go c.writeNick(newNick)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
c.Messages <- msg
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -63,6 +63,10 @@ func (i *ircHandler) nick(msg *irc.Message) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
channelStore.RenameUser(msg.Nick, msg.LastParam(), i.client.Host)
|
channelStore.RenameUser(msg.Nick, msg.LastParam(), i.client.Host)
|
||||||
|
|
||||||
|
if msg.LastParam() == i.client.GetNick() {
|
||||||
|
go i.session.user.SetNick(msg.LastParam(), i.client.Host)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *ircHandler) join(msg *irc.Message) {
|
func (i *ircHandler) join(msg *irc.Message) {
|
||||||
|
@ -171,7 +171,6 @@ func (h *wsHandler) nick(b []byte) {
|
|||||||
|
|
||||||
if i, ok := h.session.getIRC(data.Server); ok {
|
if i, ok := h.session.getIRC(data.Server); ok {
|
||||||
i.Nick(data.New)
|
i.Nick(data.New)
|
||||||
go h.session.user.SetNick(data.New, data.Server)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user