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

Loading…
Cancel
Save