fix race in idle timeout; fix some string trimming; fix some replies

This commit is contained in:
Jeremy Latt 2014-02-17 18:10:52 -08:00
parent 1a7f56a903
commit bd3ca4ae47
4 changed files with 20 additions and 5 deletions

View File

@ -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() {

View File

@ -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 {

View File

@ -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))
}

View File

@ -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
} }