mirror of
https://github.com/ergochat/ergo.git
synced 2025-04-13 11:27:52 +02:00
fix another race
This commit is contained in:
parent
ae02596214
commit
213afc0481
@ -186,16 +186,22 @@ func (channel *Channel) ModeString() (str string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (channel *Channel) Join(client *Client) {
|
func (channel *Channel) withMutex(f func()) {
|
||||||
channel.mutex.Lock()
|
channel.mutex.Lock()
|
||||||
channel.members.Add(client)
|
defer channel.mutex.Unlock()
|
||||||
if len(channel.members) == 1 {
|
f()
|
||||||
channel.members[client][ChannelCreator] = true
|
}
|
||||||
channel.members[client][ChannelOperator] = true
|
|
||||||
}
|
func (channel *Channel) Join(client *Client) {
|
||||||
channel.mutex.Unlock()
|
channel.withMutex(func() {
|
||||||
|
channel.members.Add(client)
|
||||||
|
if len(channel.members) == 1 {
|
||||||
|
channel.members[client][ChannelCreator] = true
|
||||||
|
channel.members[client][ChannelOperator] = true
|
||||||
|
}
|
||||||
|
client.channels.Add(channel)
|
||||||
|
})
|
||||||
|
|
||||||
client.channels.Add(channel)
|
|
||||||
channel.Reply(RplJoin(client, channel))
|
channel.Reply(RplJoin(client, channel))
|
||||||
channel.GetTopic(client)
|
channel.GetTopic(client)
|
||||||
channel.GetUsers(client)
|
channel.GetUsers(client)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user