diff --git a/deltachat-jsonrpc/src/webserver.rs b/deltachat-jsonrpc/src/webserver.rs index d3dc7f743..dd2a3398d 100644 --- a/deltachat-jsonrpc/src/webserver.rs +++ b/deltachat-jsonrpc/src/webserver.rs @@ -8,17 +8,22 @@ mod api; use api::events::event_to_json_rpc_notification; use api::{Accounts, CommandApi}; -#[tokio::main] +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")) + .unwrap_or(DEFAULT_PORT); 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())); - let addr = SocketAddr::from(([127, 0, 0, 1], 20808)); + 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)