Skip to content

Commit 98f2776

Browse files
authored
Fix encoding of MXIDs when creating devices in Synapse (#4542)
2 parents 7309d1e + 29fb7d2 commit 98f2776

File tree

1 file changed

+22
-19
lines changed
  • crates/matrix-synapse/src

1 file changed

+22
-19
lines changed

crates/matrix-synapse/src/lib.rs

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -179,10 +179,10 @@ impl HomeserverConnection for SynapseConnection {
179179
err(Debug),
180180
)]
181181
async fn query_user(&self, mxid: &str) -> Result<MatrixUser, anyhow::Error> {
182-
let mxid = urlencoding::encode(mxid);
182+
let encoded_mxid = urlencoding::encode(mxid);
183183

184184
let response = self
185-
.get(&format!("_synapse/admin/v2/users/{mxid}"))
185+
.get(&format!("_synapse/admin/v2/users/{encoded_mxid}"))
186186
.send_traced()
187187
.await
188188
.context("Failed to query user from Synapse")?;
@@ -293,9 +293,9 @@ impl HomeserverConnection for SynapseConnection {
293293
);
294294
});
295295

296-
let mxid = urlencoding::encode(request.mxid());
296+
let encoded_mxid = urlencoding::encode(request.mxid());
297297
let response = self
298-
.put(&format!("_synapse/admin/v2/users/{mxid}"))
298+
.put(&format!("_synapse/admin/v2/users/{encoded_mxid}"))
299299
.json(&body)
300300
.send_traced()
301301
.await
@@ -379,10 +379,11 @@ impl HomeserverConnection for SynapseConnection {
379379
device_id: &str,
380380
display_name: &str,
381381
) -> Result<(), anyhow::Error> {
382+
let encoded_mxid = urlencoding::encode(mxid);
382383
let device_id = urlencoding::encode(device_id);
383384
let response = self
384385
.put(&format!(
385-
"_synapse/admin/v2/users/{mxid}/devices/{device_id}"
386+
"_synapse/admin/v2/users/{encoded_mxid}/devices/{device_id}"
386387
))
387388
.json(&SynapseUpdateDeviceRequest {
388389
display_name: Some(display_name),
@@ -417,12 +418,12 @@ impl HomeserverConnection for SynapseConnection {
417418
err(Debug),
418419
)]
419420
async fn delete_device(&self, mxid: &str, device_id: &str) -> Result<(), anyhow::Error> {
420-
let mxid = urlencoding::encode(mxid);
421-
let device_id = urlencoding::encode(device_id);
421+
let encoded_mxid = urlencoding::encode(mxid);
422+
let encoded_device_id = urlencoding::encode(device_id);
422423

423424
let response = self
424425
.delete(&format!(
425-
"_synapse/admin/v2/users/{mxid}/devices/{device_id}"
426+
"_synapse/admin/v2/users/{encoded_mxid}/devices/{encoded_device_id}"
426427
))
427428
.send_traced()
428429
.await
@@ -458,10 +459,10 @@ impl HomeserverConnection for SynapseConnection {
458459
devices: HashSet<String>,
459460
) -> Result<(), anyhow::Error> {
460461
// Get the list of current devices
461-
let mxid_url = urlencoding::encode(mxid);
462+
let encoded_mxid = urlencoding::encode(mxid);
462463

463464
let response = self
464-
.get(&format!("_synapse/admin/v2/users/{mxid_url}/devices"))
465+
.get(&format!("_synapse/admin/v2/users/{encoded_mxid}/devices"))
465466
.send_traced()
466467
.await
467468
.context("Failed to query devices from Synapse")?;
@@ -492,7 +493,7 @@ impl HomeserverConnection for SynapseConnection {
492493

493494
let response = self
494495
.post(&format!(
495-
"_synapse/admin/v2/users/{mxid_url}/delete_devices"
496+
"_synapse/admin/v2/users/{encoded_mxid}/delete_devices"
496497
))
497498
.json(&SynapseDeleteDevicesRequest { devices: to_delete })
498499
.send_traced()
@@ -531,10 +532,10 @@ impl HomeserverConnection for SynapseConnection {
531532
err(Debug),
532533
)]
533534
async fn delete_user(&self, mxid: &str, erase: bool) -> Result<(), anyhow::Error> {
534-
let mxid = urlencoding::encode(mxid);
535+
let encoded_mxid = urlencoding::encode(mxid);
535536

536537
let response = self
537-
.post(&format!("_synapse/admin/v1/deactivate/{mxid}"))
538+
.post(&format!("_synapse/admin/v1/deactivate/{encoded_mxid}"))
538539
.json(&SynapseDeactivateUserRequest { erase })
539540
// Deactivation can take a while, so we set a longer timeout
540541
.timeout(Duration::from_secs(60 * 5))
@@ -567,9 +568,9 @@ impl HomeserverConnection for SynapseConnection {
567568
err(Debug),
568569
)]
569570
async fn reactivate_user(&self, mxid: &str) -> Result<(), anyhow::Error> {
570-
let mxid = urlencoding::encode(mxid);
571+
let encoded_mxid = urlencoding::encode(mxid);
571572
let response = self
572-
.put(&format!("_synapse/admin/v2/users/{mxid}"))
573+
.put(&format!("_synapse/admin/v2/users/{encoded_mxid}"))
573574
.json(&SynapseUser {
574575
deactivated: Some(false),
575576
..SynapseUser::default()
@@ -600,9 +601,11 @@ impl HomeserverConnection for SynapseConnection {
600601
err(Debug),
601602
)]
602603
async fn set_displayname(&self, mxid: &str, displayname: &str) -> Result<(), anyhow::Error> {
603-
let mxid = urlencoding::encode(mxid);
604+
let encoded_mxid = urlencoding::encode(mxid);
604605
let response = self
605-
.put(&format!("_matrix/client/v3/profile/{mxid}/displayname"))
606+
.put(&format!(
607+
"_matrix/client/v3/profile/{encoded_mxid}/displayname"
608+
))
606609
.json(&SetDisplayNameRequest { displayname })
607610
.send_traced()
608611
.await
@@ -646,11 +649,11 @@ impl HomeserverConnection for SynapseConnection {
646649
err(Debug),
647650
)]
648651
async fn allow_cross_signing_reset(&self, mxid: &str) -> Result<(), anyhow::Error> {
649-
let mxid = urlencoding::encode(mxid);
652+
let encoded_mxid = urlencoding::encode(mxid);
650653

651654
let response = self
652655
.post(&format!(
653-
"_synapse/admin/v1/users/{mxid}/_allow_cross_signing_replacement_without_uia"
656+
"_synapse/admin/v1/users/{encoded_mxid}/_allow_cross_signing_replacement_without_uia"
654657
))
655658
.json(&SynapseAllowCrossSigningResetRequest {})
656659
.send_traced()

0 commit comments

Comments
 (0)