1
0
Fork 0
forked from External/grumble

Fix send on closed channel error.

This commit is contained in:
Mikkel Krautz 2011-06-23 00:46:15 +02:00
parent 190316b0a1
commit 4ca0fd3c55

View file

@ -277,8 +277,7 @@ func (server *Server) NewClient(conn net.Conn) (err os.Error) {
// internal representation. // internal representation.
func (server *Server) RemoveClient(client *Client, kicked bool) { func (server *Server) RemoveClient(client *Client, kicked bool) {
server.hmutex.Lock() server.hmutex.Lock()
if client.udpaddr != nil { host := client.tcpaddr.IP.String()
host := client.udpaddr.IP.String()
oldclients := server.hclients[host] oldclients := server.hclients[host]
newclients := []*Client{} newclients := []*Client{}
for _, hostclient := range oldclients { for _, hostclient := range oldclients {
@ -287,6 +286,7 @@ func (server *Server) RemoveClient(client *Client, kicked bool) {
} }
} }
server.hclients[host] = newclients server.hclients[host] = newclients
if client.udpaddr != nil {
server.hpclients[client.udpaddr.String()] = nil, false server.hpclients[client.udpaddr.String()] = nil, false
} }
server.hmutex.Unlock() server.hmutex.Unlock()