aggressively clean up client

This commit is contained in:
Jeremy Latt 2014-02-23 11:08:01 -08:00
parent 3b56b5bf42
commit ff5656fdb4
1 changed files with 22 additions and 11 deletions

View File

@ -183,31 +183,42 @@ func (client *Client) Idle() {
func (client *Client) Register() { func (client *Client) Register() {
client.phase = Normal client.phase = Normal
client.loginTimer.Stop() client.loginTimer.Stop()
client.loginTimer = nil
client.Touch() client.Touch()
} }
func (client *Client) destroy() { func (client *Client) destroy() {
// clean up self
client.loginTimer.Stop()
if client.idleTimer != nil {
client.idleTimer.Stop()
}
if client.quitTimer != nil {
client.quitTimer.Stop()
}
// clean up channels // clean up channels
for channel := range client.channels { for channel := range client.channels {
channel.Quit(client) channel.Quit(client)
} }
client.channels = nil
// clean up server // clean up server
client.server.clients.Remove(client) client.server.clients.Remove(client)
// clean up self
if client.loginTimer != nil {
client.loginTimer.Stop()
client.loginTimer = nil
}
if client.idleTimer != nil {
client.idleTimer.Stop()
client.idleTimer = nil
}
if client.quitTimer != nil {
client.quitTimer.Stop()
client.quitTimer = nil
}
client.lookups = nil
client.replies = nil
client.server = nil
client.socket = nil
if DEBUG_CLIENT { if DEBUG_CLIENT {
log.Printf("%s: destroyed", client) log.Printf("%s: destroyed", client)
} }