Просмотр исходного кода

ircd/protocol_privmsg: remedy race lock on seen messages

aggstam 4 лет назад
Родитель
Сommit
ad800d67f3
1 измененных файлов с 7 добавлено и 4 удалено
  1. 7 4
      bin/ircd/src/protocol_privmsg.rs

+ 7 - 4
bin/ircd/src/protocol_privmsg.rs

@@ -67,11 +67,14 @@ impl ProtocolPrivmsg {
                 msg.nickname = msg.nickname[..MAXIMUM_LENGTH_OF_NICKNAME].to_string();
                 msg.nickname = msg.nickname[..MAXIMUM_LENGTH_OF_NICKNAME].to_string();
             }
             }
 
 
-            if self.msg_ids.lock().await.contains(&msg.id) {
-                continue
-            }
+            {
+                let msg_ids = &mut self.msg_ids.lock().await;
+                if msg_ids.contains(&msg.id) {
+                    continue
+                }
 
 
-            self.msg_ids.lock().await.push(msg.id);
+                msg_ids.push(msg.id);
+            }
 
 
             // add the msg to the buffer
             // add the msg to the buffer
             self.msgs.lock().await.push(msg.clone());
             self.msgs.lock().await.push(msg.clone());