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. 8
      src/app/spreed-speakfreely-server/roomworker.go

8
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
if (ecuser != nil) {
user := ecuser.Data()
user.Type = "Online" user.Type = "Online"
ul = append(ul, user) ul = append(ul, user)
if len(ul) > maxUsersLength { if len(ul) > maxUsersLength {
log.Println("Limiting users response length in channel", r.Id) log.Println("Limiting users response length in channel", r.Id)
return false 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