Browse Source

Fixed panic when users disconnect while they were looped for Users request.

pull/3/head
Simon Eisenmann 12 years ago
parent
commit
8534be0312
  1. 18
      src/app/spreed-speakfreely-server/roomworker.go

18
src/app/spreed-speakfreely-server/roomworker.go

@ -134,18 +134,22 @@ func (r *RoomWorker) usersHandler(c *Connection) { @@ -134,18 +134,22 @@ func (r *RoomWorker) usersHandler(c *Connection) {
worker := func() {
users := &DataUsers{Type: "Users"}
ul := users.Users
var ul []*DataUser
appender := func(ec *Connection) bool {
user := ec.User.Data()
user.Type = "Online"
ul = append(ul, user)
if len(ul) > maxUsersLength {
log.Println("Limiting users response length in channel", r.Id)
return false
ecuser := ec.User
if (ecuser != nil) {
user := ecuser.Data()
user.Type = "Online"
ul = append(ul, user)
if len(ul) > maxUsersLength {
log.Println("Limiting users response length in channel", r.Id)
return false
}
}
return true
}
r.mutex.RLock()
ul = make([]*DataUser, 0, len(r.connections))
// Include connections in this room.
for _, ec := range r.connections {
if !appender(ec) {

Loading…
Cancel
Save