From 1827b32d55b9ffc67a464014c10598ce27cc2268 Mon Sep 17 00:00:00 2001 From: Mikkel Krautz Date: Fri, 20 May 2011 22:01:43 +0200 Subject: [PATCH] Remove client from Server's internal state before shutting everything down (closing channels, sockets, etc.). Attempt to fix spurious cryptResync crash. --- client.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/client.go b/client.go index 22185a1..a39ab1e 100644 --- a/client.go +++ b/client.go @@ -142,6 +142,9 @@ func (client *Client) Panicf(format string, v ...interface{}) { func (client *Client) disconnect(kicked bool) { if !client.disconnected { client.disconnected = true + client.server.RemoveClient(client, kicked) + + // Close the client's UDP reciever goroutine. close(client.udprecv) // If the client paniced during authentication, before reaching @@ -163,9 +166,7 @@ func (client *Client) disconnect(kicked bool) { close(client.msgchan) client.Printf("Disconnected") - client.conn.Close() - client.server.RemoveClient(client, kicked) } }