readlock fix
This commit is contained in:
parent
ab5624c6fa
commit
cfadd73096
1 changed files with 83 additions and 33 deletions
116
src/core/chat.rs
116
src/core/chat.rs
|
@ -247,6 +247,52 @@ impl Chat {
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
Use
|
||||||
|
pub async fn getspecialuserroles(
|
||||||
|
&self,
|
||||||
|
chattername: String,
|
||||||
|
channel: Option<Channel>,
|
||||||
|
) -> Vec<UserRole> {
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
// let params_clone = params.clone();
|
||||||
|
|
||||||
|
let botclone = Arc::clone(¶ms.bot);
|
||||||
|
let botlock = botclone.read().await;
|
||||||
|
let id = botlock.get_identity();
|
||||||
|
let id = Arc::clone(&id);
|
||||||
|
let idlock = id.read().await; // <-- [ ] 03.24 - seems to work
|
||||||
|
let user_roles = idlock.getspecialuserroles(
|
||||||
|
params.get_sender(),
|
||||||
|
Some(Channel(channel_login.clone()))
|
||||||
|
).await;
|
||||||
|
|
||||||
|
// [ ] If user has any of the following target roles, they will be allowed - otherwise, they will not be allowed to send
|
||||||
|
// - Otherwise if not (checked here) , this will not run
|
||||||
|
// - NOTE : For now, I've removed BotAdmin just for curiosity - BotAdmins can always elevate themselves if they want
|
||||||
|
|
||||||
|
if !(user_roles.contains(&identity::UserRole::Mod(Channel(channel_login.clone())))
|
||||||
|
|| user_roles.contains(&identity::UserRole::SupMod(Channel(channel_login.clone())))
|
||||||
|
|| user_roles.contains(&identity::UserRole::Broadcaster))
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
self.say_in_reply_to(
|
||||||
|
¶ms.msg,
|
||||||
|
format!("uuh You do not have the right roles to send to {}",
|
||||||
|
channel_login.clone(),
|
||||||
|
),
|
||||||
|
params.clone()
|
||||||
|
).await;
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
Use the following
|
Use the following
|
||||||
|
@ -261,6 +307,8 @@ impl Chat {
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
botlog::trace(
|
botlog::trace(
|
||||||
"BEFORE Permissibility checks",
|
"BEFORE Permissibility checks",
|
||||||
Some("chat.rs > send_botmsg ".to_string()),
|
Some("chat.rs > send_botmsg ".to_string()),
|
||||||
|
@ -360,6 +408,7 @@ impl Chat {
|
||||||
// Permissible::Block => (),
|
// Permissible::Block => (),
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
botlog::trace(
|
botlog::trace(
|
||||||
format!("permisibility check : {:?}",permissability).as_str(),
|
format!("permisibility check : {:?}",permissability).as_str(),
|
||||||
Some("chat.rs > send_botmsg ".to_string()),
|
Some("chat.rs > send_botmsg ".to_string()),
|
||||||
|
@ -387,6 +436,7 @@ impl Chat {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
let rl = Arc::clone(&self.ratelimiters);
|
let rl = Arc::clone(&self.ratelimiters);
|
||||||
let mut rllock = rl.lock().await;
|
let mut rllock = rl.lock().await;
|
||||||
|
@ -464,58 +514,58 @@ impl Chat {
|
||||||
|
|
||||||
|
|
||||||
// pub async fn say_in_reply_to(&self, msg: &PrivmsgMessage, outmsg: String) {
|
// pub async fn say_in_reply_to(&self, msg: &PrivmsgMessage, outmsg: String) {
|
||||||
// #[async_recursion]
|
#[async_recursion]
|
||||||
pub async fn say_in_reply_to(&self, msg: &PrivmsgMessage, outmsg: String , params : ExecBodyParams) {
|
pub async fn say_in_reply_to(&self, msg: &PrivmsgMessage, outmsg: String , params : ExecBodyParams) {
|
||||||
|
|
||||||
let params_clone = params.clone();
|
// let params_clone = params.clone();
|
||||||
|
|
||||||
let botclone = Arc::clone(¶ms_clone.bot);
|
// let botclone = Arc::clone(¶ms_clone.bot);
|
||||||
let botlock = botclone.read().await;
|
// let botlock = botclone.read().await;
|
||||||
let id = botlock.get_identity();
|
// let id = botlock.get_identity();
|
||||||
let id = Arc::clone(&id);
|
// let id = Arc::clone(&id);
|
||||||
|
|
||||||
|
// // botlog::trace(
|
||||||
|
// // "ACQUIRING WRITE LOCK : ID",
|
||||||
|
// // Some("Chat > send_botmsg".to_string()),
|
||||||
|
// // Some(¶ms.msg),
|
||||||
|
// // );
|
||||||
|
// // Log::flush();
|
||||||
|
|
||||||
// botlog::trace(
|
// botlog::trace(
|
||||||
// "ACQUIRING WRITE LOCK : ID",
|
// "ACQUIRING READ LOCK : ID",
|
||||||
// Some("Chat > send_botmsg".to_string()),
|
// Some("Chat > send_botmsg".to_string()),
|
||||||
// Some(¶ms.msg),
|
// Some(¶ms.msg),
|
||||||
// );
|
// );
|
||||||
// Log::flush();
|
// Log::flush();
|
||||||
|
|
||||||
botlog::trace(
|
|
||||||
"ACQUIRING READ LOCK : ID",
|
|
||||||
Some("Chat > send_botmsg".to_string()),
|
|
||||||
Some(¶ms.msg),
|
|
||||||
);
|
|
||||||
Log::flush();
|
|
||||||
|
|
||||||
|
|
||||||
// let idlock = id.write().await; // <-- [ ] 03.24 - This is definitely locking it
|
// // let idlock = id.write().await; // <-- [ ] 03.24 - This is definitely locking it
|
||||||
let idlock = id.read().await; // <-- [ ] 03.24 - seems to work
|
// let idlock = id.read().await; // <-- [ ] 03.24 - seems to work
|
||||||
let a = idlock.getspecialuserroles(params.get_sender(), Some(Channel(msg.channel_login.clone()))).await;
|
// let a = idlock.getspecialuserroles(params.get_sender(), Some(Channel(msg.channel_login.clone()))).await;
|
||||||
botlog::trace(
|
|
||||||
format!("GETSPECIALUSERROLES RESULT : {:?}",a).as_str(),
|
|
||||||
Some("Chat > send_botmsg".to_string()),
|
|
||||||
Some(¶ms.msg),
|
|
||||||
);
|
|
||||||
Log::flush();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// botlog::trace(
|
// botlog::trace(
|
||||||
// "ACQUIRED WRITE LOCK : ID",
|
// format!("GETSPECIALUSERROLES RESULT : {:?}",a).as_str(),
|
||||||
// Some("Chat > send_botmsg".to_string()),
|
// Some("Chat > send_botmsg".to_string()),
|
||||||
// Some(¶ms.msg),
|
// Some(¶ms.msg),
|
||||||
// );
|
// );
|
||||||
// Log::flush();
|
// Log::flush();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// // botlog::trace(
|
||||||
|
// // "ACQUIRED WRITE LOCK : ID",
|
||||||
|
// // Some("Chat > send_botmsg".to_string()),
|
||||||
|
// // Some(¶ms.msg),
|
||||||
|
// // );
|
||||||
|
// // Log::flush();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
botlog::trace(
|
// botlog::trace(
|
||||||
"ACQUIRED READ LOCK : ID",
|
// "ACQUIRED READ LOCK : ID",
|
||||||
Some("Chat > send_botmsg".to_string()),
|
// Some("Chat > send_botmsg".to_string()),
|
||||||
Some(¶ms.msg),
|
// Some(¶ms.msg),
|
||||||
);
|
// );
|
||||||
Log::flush();
|
// Log::flush();
|
||||||
|
|
||||||
|
|
||||||
self.send_botmsg(BotMsgType::SayInReplyTo(msg, outmsg) , params).await;
|
self.send_botmsg(BotMsgType::SayInReplyTo(msg, outmsg) , params).await;
|
||||||
|
|
Loading…
Reference in a new issue