diff --git a/src/client_server.rs b/src/client_server.rs
index 6e0c40a26b219e31005c620737d2f50d9e7a0bb1..b0542044e2844342a86e9c767254d6eeb7783a89 100644
--- a/src/client_server.rs
+++ b/src/client_server.rs
@@ -58,7 +58,7 @@
     },
     identifiers::{RoomAliasId, RoomId, RoomVersionId, UserId},
 };
-use serde_json::{json, value::RawValue};
+use serde_json::json;
 
 const GUEST_NAME_LENGTH: usize = 10;
 const DEVICE_ID_LENGTH: usize = 10;
@@ -2904,13 +2904,13 @@ pub fn delete_device_route(
     let device_id = body.device_id.as_ref().expect("user is authenticated");
 
     // UIAA
-    let uiaainfo = UiaaInfo {
+    let mut uiaainfo = UiaaInfo {
         flows: vec![AuthFlow {
             stages: vec!["m.login.password".to_owned()],
         }],
         completed: Vec::new(),
         params: Default::default(),
-        session: Some(utils::random_string(SESSION_ID_LENGTH)),
+        session: None,
         auth_error: None,
     };
 
@@ -2931,6 +2931,7 @@ pub fn delete_device_route(
         }
     // Success!
     } else {
+        uiaainfo.session = Some(utils::random_string(SESSION_ID_LENGTH));
         db.uiaa.create(&user_id, &device_id, &uiaainfo).unwrap();
         return MatrixResult(Err(UiaaResponse::AuthResponse(uiaainfo)));
     }
diff --git a/src/database/uiaa.rs b/src/database/uiaa.rs
index 6cd25b99aa7b1a4ea51d7f59a1bcd581ceb5bb8e..9851e841d44f7da02ead94347e192065857874c0 100644
--- a/src/database/uiaa.rs
+++ b/src/database/uiaa.rs
@@ -1,20 +1,12 @@
-use crate::{utils, Error, Result};
-use js_int::UInt;
+use crate::{Error, Result};
 use log::debug;
 use ruma::{
     api::client::{
         error::ErrorKind,
-        r0::{
-            device::Device,
-            keys::{AlgorithmAndDeviceId, DeviceKeys, KeyAlgorithm, OneTimeKey},
-            uiaa::{AuthData, AuthFlow, UiaaInfo, UiaaResponse},
-        },
+        r0::uiaa::{AuthData, UiaaInfo},
     },
-    events::{to_device::AnyToDeviceEvent, EventJson, EventType},
     identifiers::UserId,
 };
-use serde_json::value::RawValue;
-use std::{collections::BTreeMap, convert::TryFrom, time::SystemTime};
 
 pub struct Uiaa {
     pub(super) userdeviceid_uiaainfo: sled::Tree, // User-interactive authentication
@@ -44,7 +36,7 @@ pub fn try_auth(
             let mut uiaainfo = session
                 .as_ref()
                 .map(|session| {
-                    Ok::<_, Error>(self.get_uiaa_session(&user_id, &"".to_owned(), session)?)
+                    Ok::<_, Error>(self.get_uiaa_session(&user_id, &device_id, session)?)
                 })
                 .unwrap_or(Ok(uiaainfo.clone()))?;