mirror of
https://github.com/Blah-IM/blahrs.git
synced 2025-07-02 04:25:33 +00:00
Avoid unnecessary unwrap
This commit is contained in:
parent
81a566a097
commit
99d1311d63
9 changed files with 72 additions and 22 deletions
|
@ -13,6 +13,7 @@ ed25519-dalek = "2"
|
|||
futures-util = "0.3"
|
||||
hex = { version = "0.4", features = ["serde"] }
|
||||
humantime = "2"
|
||||
parking_lot = "0.12" # Maybe no better performance, just that we hate poisoning. ¯\_(ツ)_/¯
|
||||
rusqlite = { version = "0.32", features = ["uuid"] }
|
||||
sd-notify = "0.4"
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
|
|
|
@ -31,7 +31,7 @@ pub struct ServerConfig {
|
|||
pub listen: String,
|
||||
pub base_url: Url,
|
||||
|
||||
#[serde_inline_default(1024.try_into().unwrap())]
|
||||
#[serde_inline_default(1024.try_into().expect("not zero"))]
|
||||
pub max_page_len: NonZeroUsize,
|
||||
#[serde_inline_default(4096)] // 4KiB
|
||||
pub max_request_len: usize,
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
use std::ops::DerefMut;
|
||||
use std::sync::Mutex;
|
||||
|
||||
use anyhow::{ensure, Context, Result};
|
||||
use parking_lot::Mutex;
|
||||
use rusqlite::{params, Connection, OpenFlags};
|
||||
|
||||
use crate::config::DatabaseConfig;
|
||||
|
@ -57,7 +57,7 @@ impl Database {
|
|||
}
|
||||
|
||||
pub fn get(&self) -> impl DerefMut<Target = Connection> + '_ {
|
||||
self.conn.lock().unwrap()
|
||||
self.conn.lock()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ use std::collections::HashMap;
|
|||
use std::convert::Infallible;
|
||||
use std::fmt;
|
||||
use std::pin::Pin;
|
||||
use std::sync::{Arc, Mutex};
|
||||
use std::sync::Arc;
|
||||
use std::task::{Context, Poll};
|
||||
|
||||
use anyhow::{bail, Context as _, Result};
|
||||
|
@ -12,6 +12,7 @@ use blah::types::{AuthPayload, ChatItem, WithSig};
|
|||
use futures_util::future::Either;
|
||||
use futures_util::stream::SplitSink;
|
||||
use futures_util::{stream_select, SinkExt as _, Stream, StreamExt};
|
||||
use parking_lot::Mutex;
|
||||
use rusqlite::{params, OptionalExtension};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use tokio::sync::broadcast;
|
||||
|
@ -81,11 +82,10 @@ struct UserEventReceiver {
|
|||
impl Drop for UserEventReceiver {
|
||||
fn drop(&mut self) {
|
||||
tracing::debug!(%self.uid, "user disconnected");
|
||||
if let Ok(mut map) = self.st.event.user_listeners.lock() {
|
||||
if let Some(tx) = map.get_mut(&self.uid) {
|
||||
if tx.receiver_count() == 1 {
|
||||
map.remove(&self.uid);
|
||||
}
|
||||
let mut map = self.st.event.user_listeners.lock();
|
||||
if let Some(tx) = map.get_mut(&self.uid) {
|
||||
if tx.receiver_count() == 1 {
|
||||
map.remove(&self.uid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -133,7 +133,7 @@ pub async fn handle_ws(st: Arc<AppState>, ws: &mut WebSocket) -> Result<Infallib
|
|||
tracing::debug!(%uid, "user connected");
|
||||
|
||||
let event_rx = {
|
||||
let rx = match st.event.user_listeners.lock().unwrap().entry(uid) {
|
||||
let rx = match st.event.user_listeners.lock().entry(uid) {
|
||||
Entry::Occupied(ent) => ent.get().subscribe(),
|
||||
Entry::Vacant(ent) => {
|
||||
let (tx, rx) = broadcast::channel(st.config.server.ws_event_queue_len);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use std::num::NonZeroUsize;
|
||||
use std::path::PathBuf;
|
||||
use std::sync::{Arc, Mutex};
|
||||
use std::sync::Arc;
|
||||
use std::time::{Duration, SystemTime};
|
||||
|
||||
use anyhow::{Context, Result};
|
||||
|
@ -19,6 +19,7 @@ use config::Config;
|
|||
use database::Database;
|
||||
use ed25519_dalek::SIGNATURE_LENGTH;
|
||||
use middleware::{ApiError, OptionalAuth, SignedJson};
|
||||
use parking_lot::Mutex;
|
||||
use rusqlite::{named_params, params, Connection, OptionalExtension, Row, ToSql};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use url::Url;
|
||||
|
@ -122,12 +123,7 @@ impl AppState {
|
|||
"invalid timestamp, off by {timestamp_diff}s"
|
||||
));
|
||||
}
|
||||
if !self
|
||||
.used_nonces
|
||||
.lock()
|
||||
.unwrap()
|
||||
.try_insert(data.signee.nonce)
|
||||
{
|
||||
if !self.used_nonces.lock().try_insert(data.signee.nonce) {
|
||||
return Err(error_response!(
|
||||
StatusCode::BAD_REQUEST,
|
||||
"duplicated_nonce",
|
||||
|
@ -425,7 +421,7 @@ struct Pagination {
|
|||
impl Pagination {
|
||||
fn effective_page_len(&self, st: &AppState) -> usize {
|
||||
self.top
|
||||
.unwrap_or(usize::MAX.try_into().unwrap())
|
||||
.unwrap_or(usize::MAX.try_into().expect("not zero"))
|
||||
.min(st.config.server.max_page_len)
|
||||
.get()
|
||||
}
|
||||
|
@ -524,7 +520,9 @@ async fn room_get_feed(
|
|||
{
|
||||
let mut query = next_url.query_pairs_mut();
|
||||
let ser = serde_urlencoded::Serializer::new(&mut query);
|
||||
next_params.serialize(ser).unwrap();
|
||||
next_params
|
||||
.serialize(ser)
|
||||
.expect("serialization cannot fail");
|
||||
query.finish();
|
||||
}
|
||||
next_url
|
||||
|
@ -737,7 +735,7 @@ async fn room_post_item(
|
|||
WHERE `rid` = :rid
|
||||
",
|
||||
)?;
|
||||
let listeners = st.event.user_listeners.lock().unwrap();
|
||||
let listeners = st.event.user_listeners.lock();
|
||||
let txs = stmt
|
||||
.query_map(params![rid], |row| row.get::<_, u64>(0))?
|
||||
.filter_map(|ret| match ret {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue