diff --git a/gpcm/friend.go b/gpcm/friend.go index 9ccb057..3040ced 100644 --- a/gpcm/friend.go +++ b/gpcm/friend.go @@ -222,7 +222,7 @@ func (g *GameSpySession) setStatus(command common.GameSpyCommand) { g.Status = statusMsg if !g.StatusSet && g.User.OpenHost { - g.openHostEnabled(false) + g.openHostEnabled(false, false) } g.StatusSet = true @@ -318,9 +318,11 @@ func (g *GameSpySession) sendLogoutStatus() { } } -func (g *GameSpySession) openHostEnabled(sendStatus bool) { - mutex.Lock() - defer mutex.Unlock() +func (g *GameSpySession) openHostEnabled(sendStatus bool, lock bool) { + if lock { + mutex.Lock() + defer mutex.Unlock() + } for _, session := range sessions { if session.LoggedIn && session.isFriendAdded(g.User.ProfileId) && !session.isFriendAuthorized(g.User.ProfileId) { diff --git a/gpcm/profile.go b/gpcm/profile.go index 75463f5..3844e60 100644 --- a/gpcm/profile.go +++ b/gpcm/profile.go @@ -85,7 +85,7 @@ func (g *GameSpySession) updateProfile(command common.GameSpyCommand) { if openHost, ok := command.OtherValues["wwfc_openhost"]; ok { enabled := openHost != "0" if !g.User.OpenHost && enabled { - g.openHostEnabled(true) + g.openHostEnabled(true, true) } else if g.User.OpenHost && !enabled { g.openHostDisabled() }