From 88d5e8a2af73c311af8d5d28c554da8a66da167e Mon Sep 17 00:00:00 2001 From: Nick Hainke Date: Mon, 31 Aug 2026 11:18:48 +0200 Subject: [PATCH] appservice/intent: allow setting avatar when profile field is missing Homeservers may return M_NOT_FOUND when avatar_url has not been set for a profile yet, for example Tuwunel. SetAvatarURL previously treated this valid response as a fatal error and returned before sending the new avatar. Treat M_NOT_FOUND as an empty avatar and continue with the PUT request. All other errors remain fatal. --- appservice/intent.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appservice/intent.go b/appservice/intent.go index 73e3f5ff..78390d31 100644 --- a/appservice/intent.go +++ b/appservice/intent.go @@ -502,9 +502,9 @@ func (intent *IntentAPI) SetAvatarURL(ctx context.Context, avatarURL id.ContentU return err } resp, err := intent.Client.GetOwnAvatarURL(ctx) - if err != nil { + if err != nil && !errors.Is(err, mautrix.MNotFound) { return fmt.Errorf("failed to check current avatar URL: %w", err) - } else if resp.FileID == avatarURL.FileID && resp.Homeserver == avatarURL.Homeserver { + } else if err == nil && resp.FileID == avatarURL.FileID && resp.Homeserver == avatarURL.Homeserver { // No need to update return nil }