Fix message duplication due to a race-condition

This commit is contained in:
Alex 2020-03-13 10:49:42 +01:00
parent 06929747d6
commit 6292303a31
3 changed files with 8 additions and 0 deletions

1
.gitignore vendored
View File

@ -2,3 +2,4 @@ easybridge
config.json
registration.yaml
easybridge.db
__pycache__

View File

@ -453,6 +453,9 @@ func (a *Account) eventInternal(event *Event) error {
var cache_key string
if event.Id != "" {
dbLockSlot(mx_room_id)
defer dbUnlockSlot(mx_room_id)
// If the event has an ID, make sure it is processed only once
cache_key = fmt.Sprintf("%s/event_seen/%s/%s",
a.Protocol, mx_room_id, event.Id)

View File

@ -165,6 +165,10 @@ func handleTxnEvent(e *mxlib.Event) error {
if acct != nil {
ev.Author = acct.Conn.User()
ev.Room = room.RoomID
dbLockSlot(e.RoomId)
defer dbUnlockSlot(e.RoomId)
created_ev_id, err := acct.Conn.Send(ev)
if err == nil && created_ev_id != "" {
cache_key := fmt.Sprintf("%s/event_seen/%s/%s",