Handle PING

This commit is contained in:
Simon Ser 2020-02-06 12:18:37 +01:00
parent f8a03a25df
commit 3ccc1bb4e8
No known key found for this signature in database
GPG Key ID: 0FDE7BE0E88F5E48

View File

@ -63,6 +63,23 @@ func (c *conn) WriteMessage(msg *irc.Message) error {
return c.irc.WriteMessage(msg) return c.irc.WriteMessage(msg)
} }
func (c *conn) handleMessage(msg *irc.Message) error {
switch msg.Command {
case "PING":
// TODO: handle params
return c.WriteMessage(&irc.Message{
Command: "PONG",
Params: []string{c.srv.Hostname},
})
default:
if c.registered {
return c.handleMessageRegistered(msg)
} else {
return c.handleMessageUnregistered(msg)
}
}
}
func (c *conn) handleMessageUnregistered(msg *irc.Message) error { func (c *conn) handleMessageUnregistered(msg *irc.Message) error {
switch msg.Command { switch msg.Command {
case "NICK": case "NICK":
@ -133,7 +150,7 @@ func (c *conn) register() error {
return nil return nil
} }
func (c *conn) handleMessage(msg *irc.Message) error { func (c *conn) handleMessageRegistered(msg *irc.Message) error {
switch msg.Command { switch msg.Command {
case "NICK", "USER": case "NICK", "USER":
return ircError{&irc.Message{ return ircError{&irc.Message{
@ -170,11 +187,7 @@ func (s *Server) handleConn(netConn net.Conn) error {
} }
log.Println(msg) log.Println(msg)
if c.registered { err = c.handleMessage(msg)
err = c.handleMessage(msg)
} else {
err = c.handleMessageUnregistered(msg)
}
if ircErr, ok := err.(ircError); ok { if ircErr, ok := err.(ircError); ok {
ircErr.Message.Prefix = s.prefix() ircErr.Message.Prefix = s.prefix()
if err := c.WriteMessage(ircErr.Message); err != nil { if err := c.WriteMessage(ircErr.Message); err != nil {