diff --git a/deltachat-jsonrpc/src/webserver.rs b/deltachat-jsonrpc/src/webserver.rs index dd2a3398d..3f6b62702 100644 --- a/deltachat-jsonrpc/src/webserver.rs +++ b/deltachat-jsonrpc/src/webserver.rs @@ -13,6 +13,7 @@ const DEFAULT_PORT: u16 = 20808; #[tokio::main(flavor = "multi_thread")] async fn main() -> Result<(), std::io::Error> { env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")).init(); + let path = std::env::var("DC_ACCOUNTS_PATH").unwrap_or_else(|_| "./accounts".to_string()); let port = std::env::var("DC_PORT") .map(|port| port.parse::().expect("DC_PORT must be a number")) @@ -20,11 +21,16 @@ async fn main() -> Result<(), std::io::Error> { log::info!("Starting with accounts directory `{path}`."); let accounts = Accounts::new(PathBuf::from(&path)).await.unwrap(); let state = CommandApi::new(accounts); + let app = Router::new() .route("/ws", get(handler)) .layer(Extension(state.clone())); + + tokio::spawn(async move { + state.accounts.read().await.start_io().await; + }); + let addr = SocketAddr::from(([127, 0, 0, 1], port)); - state.accounts.read().await.start_io().await; log::info!("JSON-RPC WebSocket server listening on {}", addr); axum::Server::bind(&addr) .serve(app.into_make_service())