What is Nostr?
Red Rozenglass /
npub1aj0…4pgc
2025-03-12 19:22:29

Red Rozenglass on Nostr: The Real Grunfink Hello, Grünfink, I've been facing an issue where friends from ...

The Real Grunfink (nprofile…73zh) Hello, Grünfink, I've been facing an issue where friends from different instances (Pleroma mostly?) appear to unfollow me, but they confirm that they really didn't. I suspect commit e9f391e "Added a special check for Undo + Follow.", in which activitypub.c is modified as follows:

if (strcmp(type, "Undo") == 0) { /** **/
+ if (xs_type(object) != XSTYPE_DICT)
+ utype = "Follow";
+
It seems that it treats all messages of type 'Undo', where 'object' is not a dict, to be a utype 'Follow' by default. But that does not seem to be necessarily correct; there are messages that are not like that. This notification JSON for example shows a message that was likely overridden to be utype 'Follow', but originally wasn't. I confirmed with friendo that they didn't unfollow me. My account is not even in the 'to' field, which is a thing I noticed with all such mistaken unfollows (I have some 5 or 6 so far, in a few days):

https://dreamscape.link/vault/public/debug/snac2/1741791872.179863.json

Compare with this object, which is a real Pleroma unfollow I intentionally made:

https://dreamscape.link/vault/public/debug/snac2/1741805474.188476.json

Any thoughts or ideas? I'm familiar with C, but not enough with ActivityPub to know what is happening in this case. A quick solution that comes to mind, based on the handful of objects I've seen so far, is to check whether we're in the 'to' field before overriding the utype, but I have no idea why this whole utype override exists in the first place.
Author Public Key
npub1aj05n6h74ys35hfujyddczfcmr4drhs79xtrfdxw8sutdq2gnw9q994pgc