mirror of
https://github.com/1f349/dendrite.git
synced 2024-11-26 13:41:33 +00:00
Fix roomserver deadlock (#380)
Move the mutex lock outside the loop so that we don't lock up if there is more than one event
This commit is contained in:
parent
ec30d143cd
commit
899f267c47
@ -61,11 +61,10 @@ func (r *RoomserverInputAPI) InputRoomEvents(
|
|||||||
request *api.InputRoomEventsRequest,
|
request *api.InputRoomEventsRequest,
|
||||||
response *api.InputRoomEventsResponse,
|
response *api.InputRoomEventsResponse,
|
||||||
) error {
|
) error {
|
||||||
|
// We lock as processRoomEvent can only be called once at a time
|
||||||
|
r.mutex.Lock()
|
||||||
|
defer r.mutex.Unlock()
|
||||||
for i := range request.InputRoomEvents {
|
for i := range request.InputRoomEvents {
|
||||||
// We lock as processRoomEvent can ony be called once at a time
|
|
||||||
r.mutex.Lock()
|
|
||||||
defer r.mutex.Unlock()
|
|
||||||
|
|
||||||
if err := processRoomEvent(ctx, r.DB, r, request.InputRoomEvents[i]); err != nil {
|
if err := processRoomEvent(ctx, r.DB, r, request.InputRoomEvents[i]); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user