mirror of
https://github.com/ergochat/ergo.git
synced 2024-11-11 06:29:29 +01:00
fix race in idle timeout; fix some string trimming; fix some replies
This commit is contained in:
parent
1a7f56a903
commit
bd3ca4ae47
@ -95,6 +95,10 @@ func (client *Client) Touch() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ClientIdle struct {
|
||||||
|
BaseCommand
|
||||||
|
}
|
||||||
|
|
||||||
func (client *Client) Idle() {
|
func (client *Client) Idle() {
|
||||||
if client.quitTimer == nil {
|
if client.quitTimer == nil {
|
||||||
client.quitTimer = time.AfterFunc(QUIT_TIMEOUT, client.connectionTimeout)
|
client.quitTimer = time.AfterFunc(QUIT_TIMEOUT, client.connectionTimeout)
|
||||||
@ -102,7 +106,9 @@ func (client *Client) Idle() {
|
|||||||
client.quitTimer.Reset(QUIT_TIMEOUT)
|
client.quitTimer.Reset(QUIT_TIMEOUT)
|
||||||
}
|
}
|
||||||
|
|
||||||
client.Reply(RplPing(client.server, client))
|
cmd := &ClientIdle{}
|
||||||
|
cmd.SetClient(client)
|
||||||
|
client.server.commands <- cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func (client *Client) connectionTimeout() {
|
func (client *Client) connectionTimeout() {
|
||||||
|
@ -192,17 +192,17 @@ func RplKick(channel *Channel, client *Client, target *Client, comment string) R
|
|||||||
|
|
||||||
func RplWelcome(source Identifier, client *Client) Reply {
|
func RplWelcome(source Identifier, client *Client) Reply {
|
||||||
return NewNumericReply(source, RPL_WELCOME,
|
return NewNumericReply(source, RPL_WELCOME,
|
||||||
"Welcome to the Internet Relay Network %s", client.Id())
|
":Welcome to the Internet Relay Network %s", client.Id())
|
||||||
}
|
}
|
||||||
|
|
||||||
func RplYourHost(server *Server) Reply {
|
func RplYourHost(server *Server) Reply {
|
||||||
return NewNumericReply(server, RPL_YOURHOST,
|
return NewNumericReply(server, RPL_YOURHOST,
|
||||||
"Your host is %s, running version %s", server.name, VERSION)
|
":Your host is %s, running version %s", server.name, VERSION)
|
||||||
}
|
}
|
||||||
|
|
||||||
func RplCreated(server *Server) Reply {
|
func RplCreated(server *Server) Reply {
|
||||||
return NewNumericReply(server, RPL_CREATED,
|
return NewNumericReply(server, RPL_CREATED,
|
||||||
"This server was created %s", server.ctime.Format(time.RFC1123))
|
":This server was created %s", server.ctime.Format(time.RFC1123))
|
||||||
}
|
}
|
||||||
|
|
||||||
func RplMyInfo(server *Server) Reply {
|
func RplMyInfo(server *Server) Reply {
|
||||||
|
@ -9,6 +9,7 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -171,6 +172,8 @@ func (s *Server) tryRegister(c *Client) {
|
|||||||
if c.HasNick() && c.HasUsername() {
|
if c.HasNick() && c.HasUsername() {
|
||||||
c.phase = Normal
|
c.phase = Normal
|
||||||
c.loginTimer.Stop()
|
c.loginTimer.Stop()
|
||||||
|
c.AddFriend(c)
|
||||||
|
|
||||||
c.Reply(RplWelcome(s, c))
|
c.Reply(RplWelcome(s, c))
|
||||||
c.Reply(RplYourHost(s))
|
c.Reply(RplYourHost(s))
|
||||||
c.Reply(RplCreated(s))
|
c.Reply(RplCreated(s))
|
||||||
@ -199,6 +202,7 @@ func (server *Server) MOTD(client *Client) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
line = strings.TrimRight(line, "\r\n")
|
||||||
|
|
||||||
if len(line) > 80 {
|
if len(line) > 80 {
|
||||||
for len(line) > 80 {
|
for len(line) > 80 {
|
||||||
@ -613,3 +617,8 @@ func (msg *ListCommand) HandleServer(server *Server) {
|
|||||||
}
|
}
|
||||||
client.Reply(RplListEnd(server))
|
client.Reply(RplListEnd(server))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (msg *ClientIdle) HandleServer(server *Server) {
|
||||||
|
client := msg.Client()
|
||||||
|
client.Reply(RplPing(server, client))
|
||||||
|
}
|
||||||
|
@ -59,7 +59,7 @@ func (socket *Socket) readLines() {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
line = strings.TrimSpace(line)
|
line = strings.TrimRight(line, "\r\n")
|
||||||
if len(line) == 0 {
|
if len(line) == 0 {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user