Avatars don't seem to be cache (#281)
wojciech.kapcia@tigase.net opened 4 years ago

(maybe related to #issue #143)

I noticed that BeagleIM is still somewhat "chatty" in the XML console. I took a look and it seems that avatar cache is not working correctly (?!).

Yesterday following stanza exchange took place (connect to conversations room, receive presence from participants with photo info):

<!--   2020-09-01T16:47:30Z   <<<<   -->
<presence from='conversations@conference.siacs.eu/briest' xml:lang='en' to='wojtek@tigase.org/1702398793-tigase-3' xmlns='jabber:client'>
<c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='http://conversations.im' ver='pL5gGuMAbpPTKzKf/uTiQZYet90='/>
<x xmlns='vcard-temp:x:update'>
<photo>759c48fabeed2e40006055e340e0882c2692d0bb</photo>
</x>
<x xmlns='http://jabber.org/protocol/muc#user'>
<item affiliation='none' role='participant'/>
</x>
</presence>

Which resulted in query for actual photo payload:

<!--   2020-09-01T16:47:30Z   >>>>   -->
<iq id='2689627B-6083-4B14-BA54-548736AFB1AC' type='get' to='conversations@conference.siacs.eu/briest'>
<vcard xmlns='urn:ietf:params:xml:ns:vcard-4.0'/>
</iq>

<!--   2020-09-01T16:47:30Z   >>>>   -->
<iq id='61F098C3-DF8C-4946-A65E-753542D3B59D' type='get' to='conversations@conference.siacs.eu/briest'>
<vCard xmlns='vcard-temp'/>
</iq>


<!--   2020-09-01T16:47:46Z   <<<<   -->
<iq type='result' xmlns='jabber:client' id='61F098C3-DF8C-4946-A65E-753542D3B59D' from='conversations@conference.siacs.eu/briest' to='wojtek@tigase.org/1702398793-tigase-3'>
<vCard xmlns='vcard-temp'>
<PHOTO>
<BINVAL>UklGRp4dAABXRUJQVlA4IJIdA  …   PAAwFcAAA</BINVAL>
</PHOTO>
<NICKNAME>briest</NICKNAME>
</vCard>
</iq>

Today, during same flow for the same user with the same photo hash the photo was queried again:

<!--   2020-09-02T15:49:16Z   <<<<   -->
<presence xml:lang='en' from='conversations@conference.siacs.eu/briest' xmlns='jabber:client' to='wojtek@tigase.org/1702398793-tigase-4'>
<c xmlns='http://jabber.org/protocol/caps' node='http://conversations.im' ver='pL5gGuMAbpPTKzKf/uTiQZYet90=' hash='sha-1'/>
<x xmlns='vcard-temp:x:update'>
<photo>759c48fabeed2e40006055e340e0882c2692d0bb</photo>
</x>
<x xmlns='http://jabber.org/protocol/muc#user'>
<item role='participant' affiliation='none'/>
</x>
</presence>



<!--   2020-09-02T15:49:16Z   >>>>   -->
<iq to='conversations@conference.siacs.eu/briest' id='6971703A-9D77-41A0-8050-A9D14DE395A7' type='get'>
<vcard xmlns='urn:ietf:params:xml:ns:vcard-4.0'/>
</iq>

<!--   2020-09-02T15:49:16Z   >>>>   -->
<iq to='conversations@conference.siacs.eu/briest' id='A44B6E06-4F2B-4508-907F-9A3807CAF612' type='get'>
<vCard xmlns='vcard-temp'/>
</iq>



<!--   2020-09-02T15:49:48Z   <<<<   -->
<iq from='conversations@conference.siacs.eu/briest' id='A44B6E06-4F2B-4508-907F-9A3807CAF612' xmlns='jabber:client' type='result' to='wojtek@tigase.org/1702398793-tigase-4'>
<vCard xmlns='vcard-temp'>
<PHOTO>
<BINVAL>UklGRp4dAABXRUJQVlA4IJIdAAASXwCdASrAAMAAP … PVESvhO+qkc/zBmd8Hsh1y9Qka/PAAwFcAAA</BINVAL>
</PHOTO>
<NICKNAME>briest</NICKNAME>
</vCard>
</iq>

(binval is about 10K)

Andrzej Wójcik (Tigase) commented 4 years ago

@wojtek it looks like there is some issue that make unable for Beagle to know that it already has that avatar. I'm checking if file is on disk, so it would suggest that it is removed what is possible as macOS may occasionally clean this temporary folder. Another thing may be that the image data do not match hash calculated by Beagle. Could you check that for this people avatars are shown? (if not, that would suggest hash do not match data).

wojciech.kapcia@tigase.net commented 4 years ago

It seems that the avatar is not there:

wojtek@atlantiscity.local ~/dev $ ls -lah /Users/wojtek/Library/Containers/org.tigase.messenger.BeagleIM/Data/Library/Caches/org.tigase.messenger.BeagleIM/avatars | wc -l
1493
wojtek@atlantiscity.local ~/dev $ ls -lah /Users/wojtek/Library/Containers/org.tigase.messenger.BeagleIM/Data/Library/Caches/org.tigase.messenger.BeagleIM/avatars | grep 759c48fabeed2e40006055e340e0882c2692d0bb | wc -l
0

Full payload.

<!--   2020-09-02T15:49:48Z   <<<<   -->
<iq from='conversations@conference.siacs.eu/briest' id='A44B6E06-4F2B-4508-907F-9A3807CAF612' xmlns='jabber:client' type='result' to='wojtek@tigase.org/1702398793-tigase-4'>
<vCard xmlns='vcard-temp'>
<PHOTO>
<BINVAL>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</BINVAL>
</PHOTO>
<NICKNAME>briest</NICKNAME>
</vCard>
</iq>
wojciech.kapcia@tigase.net commented 4 years ago

Just out curiosity I checked if the image matches the hash and it does:

$ base64 -d avatar > avatar.webp
$ sha1sum avatar.webp
759c48fabeed2e40006055e340e0882c2692d0bb  avatar.webp

Btw. Can Beagle handle webp? and wouldn't the format prevent it from saving it and thus skipping being cached?

Andrzej Wójcik (Tigase) commented 4 years ago

The issue is not even with BeagleIM being able to handle a format of a file but the XML which is sent as a vcard. (I'm saving data without checking if I can present the image).

According to XEP-0153:

The <PHOTO/> element SHOULD contain a <TYPE/> child whose XML character data specifies the content-type of the image data. The XML character data SHOULD be "image/gif", "image/jpeg", or "image/png".

I suppose that, as I require <TYPE/> tag if <BINVAL/> is used is what is causing the issue as without it, <PHOTO/> is considered invalid. However, I should as well enforce specifying <TYPE/> when publishing the vcard... that makes it difficult to actually enforce if I need to allow a null value.

However, XEP has SHOULD as it is expected from the clients to send <TYPE/> and they are allowed no to do so, only for a good reasons.

Moreover, our VCard4<->VCardTemp converter in Tigase also requires <TYPE/> as it is unable to work without it (it cannot convert base64 encoded data to data URI without knowing the image type).

So the question here is, how to solve it. On one side, it is allowed but not recommended to send <BINVAL/> without <TYPE/> on the other side people just don't obey the rules and do whatever they want.

Andrzej Wójcik (Tigase) commented 4 years ago

@wojtek What do you think?

wojciech.kapcia@tigase.net commented 4 years ago

OK, we have a couple of issues here and it boils down to user using non-standard filetype - it's not on the list in specification -> <TYPE/> should not be present ("If the is something other than image/gif, image/jpeg, or image/png, it SHOULD be ignored.")

What we could/should do:

  1. Beagle's cache - I think we could ignore lack of <TYPE/> here - you have the hash and can calculate it, you can save the image (and most likely even display it as you don't use TYPE AFAIR)
  2. Setting avatar in Beagle - you said " I should as well enforce specifying…" but considering the XEP, TYPE is optional and format is not limited to those (SHOULD vs MUST). To be compatible we could limit types only to those listed in the XEP but I sense that there is some issue with enforcing it here and NOT checking it in (1) -- same verifier used perhaps?
  3. I think that in this case (considering reluctance from (2)) it doesn't matter that much as users may use different clients with Tigase Server (so they could send whatever vcard avatar and that would be out of our hands as we don't control those clients); however - it should be possible to determine type of the image from the binary data itself (in the end it has to be embedded in the file header to properly handle it by the OS). Btw why exactly do we require it for the conversion?
Andrzej Wójcik (Tigase) commented 4 years ago

We need this type (mimetype) to create data URI from base64 encoded binary data, ie. from type image/jpeg and data AAAAAAAAAA we need to construct data:image/jpeg;base64,AAAAAAAAAA as this is required by vcard4.

wojciech.kapcia@tigase.net commented 4 years ago

OK, but as I said (regarding (3)) - in the worst case scenario (someone not sending <TYPE/>) if we want to make the conversion viable it could be derived from file signature from the payload itself (see List of file signatures) - slightly inefficient but considering we are inly interested in image files and cases when no TYPE was send it could be used as a fallback.

However, the gist of this issue is (1) (and to some extend (2)). I'm not sure if we should dedicate time to (3)

wojciech.kapcia@tigase.net commented 4 years ago

OK, I just noticed another thing (which seems to discard theory about missing TYPE) - even with payloads that have TYPE the avatar/picture is not stored:

This morning presence was received, Beagle queried for avatar and got it. After restart it happened again (and nothing was saved in cache path)

<!--   2020-09-03T16:17:34Z   <<<<   -->
<presence xml:lang='en' to='wojtek@tigase.org/1702398793-tigase-5' xmlns='jabber:client' from='conversations@conference.siacs.eu/koimoji'>
<c xmlns='http://jabber.org/protocol/caps' ver='KWQQsqlerqQGIyKLIQTBsn7Adho=' hash='sha-1' node='http://conversations.im'/>
<x xmlns='vcard-temp:x:update'>
<photo>511bd87905a55d659ee6c17b74fdb5caff9af614</photo>
</x>
<x xmlns='http://jabber.org/protocol/muc#user'>
<item affiliation='none' role='participant'/>
</x>
</presence>

<!--   2020-09-03T16:18:04Z   <<<<   -->
<iq type='result' xmlns='jabber:client' to='wojtek@tigase.org/1702398793-tigase-5' from='conversations@conference.siacs.eu/koimoji' id='1C1DD962-97C4-4DFE-86E8-A7B112697CE7'>
<vCard xmlns='vcard-temp'>
<PHOTO>
<BINVAL>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</BINVAL>
<TYPE>image/jpeg</TYPE>
</PHOTO>
</vCard>
</iq>
<!--   2020-09-04T00:24:51Z   <<<<   -->
<iq xmlns='jabber:client' from='conversations@conference.siacs.eu/koimoji' to='wojtek@tigase.org/507983899-tigase-7' type='result' id='3749CAB0-A83D-4C17-8514-22517604572C'>
<vCard xmlns='vcard-temp'>
<PHOTO>
<BINVAL>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</BINVAL>
<TYPE>image/jpeg</TYPE>
</PHOTO>
</vCard>
</iq>
Andrzej Wójcik (Tigase) commented 4 years ago

I'm not sure why this file was not created, however I suppose that there could be a case when file could be removed (I do not know how or when, but I see that this could be possible).

I've improved VCard API to return more details to the client and improved logging so we could always check. I've also relaxed restriction related to requirement of TYPE tag by TigaseSwfit. That should improve behaviour of BeagleIM.

wojciech.kapcia@tigase.net commented 4 years ago

It seems to still be happening with version Version 4.1 (104)

<!--   2020-10-02T15:19:34Z   <<<<   -->
<presence xmlns='jabber:client' id='88e6892f-971a-46d8-abbe-a32d81216378' xml:lang='en' to='wojtek@tigase.org/1009101153-tigase-31' from='conversations@conference.siacs.eu/gabriel'>
<c hash='sha-1' ver='oApYKkYpnFqaD/yVS4CyldPwg9A=' xmlns='http://jabber.org/protocol/caps' node='https://gajim.org'/>
<x xmlns='vcard-temp:x:update'>
<photo>d1ab474eb8cbb2b0e4609aa9c66af1ac02434828</photo>
</x>
<x xmlns='http://jabber.org/protocol/muc#user'>
<item role='participant' affiliation='none'/>
</x>
</presence>

<!--   2020-10-02T15:19:35Z   >>>>   -->
<iq type='get' to='conversations@conference.siacs.eu/gabriel' id='5682A0CF-17E4-4295-9347-AA328B665EEB'>
<vCard xmlns='vcard-temp'/>
</iq>

<!--   2020-10-02T15:19:37Z   <<<<   -->
<iq xmlns='jabber:client' type='result' to='wojtek@tigase.org/1009101153-tigase-31' from='conversations@conference.siacs.eu/gabriel' id='5682A0CF-17E4-4295-9347-AA328B665EEB'>
<vcard xmlns='vcard-temp'>
<PHOTO>
<TYPE>image/jpeg</TYPE>
<BINVAL>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
</BINVAL>
</PHOTO>
</vcard>
</iq>

Yet no file is saved:

wojtek@atlantiscity.local ~/dev $ ls -lah /Users/wojtek/Library/Containers/org.tigase.messenger.BeagleIM/Data/Library/Caches/org.tigase.messenger.BeagleIM/avatars | wc -l
1602
wojtek@atlantiscity.local ~/dev $ ls -lah /Users/wojtek/Library/Containers/org.tigase.messenger.BeagleIM/Data/Library/Caches/org.tigase.messenger.BeagleIM/avatars | grep d1ab474eb8cbb2b0e4609aa9c66af1ac02434828
wojtek@atlantiscity.local ~/dev

This particular account was queried at:

<!--   2020-10-02T15:19:37Z   <<<<   -->
<!--   2020-10-05T15:50:39Z   <<<<   -->
<!--   2020-10-06T15:35:21Z   <<<<   -->

I noticed this one is also not stored

<!--   2020-10-06T15:35:20Z   <<<<   -->
<iq from='conversations@conference.siacs.eu/fenny' type='result' id='8399A286-6E23-4506-9E86-409E21DC1AF1' xmlns='jabber:client' to='wojtek@tigase.org/1009101153-tigase-57'>
<vCard xmlns='vcard-temp'>
<PHOTO>
<BINVAL>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</BINVAL>
<TYPE>image/png</TYPE>
</PHOTO>
</vCard>
</iq>

And there is also one with empty vcard, but I'd say it's an outlier (and I'm not sure we should handle it):

<!--   2020-10-06T15:35:19Z   <<<<   -->
<presence to='wojtek@tigase.org/1009101153-tigase-57' from='conversations@conference.siacs.eu/chema' xmlns='jabber:client' xml:lang='en'>
<c node='http://conversations.im' ver='KWQQsqlerqQGIyKLIQTBsn7Adho=' xmlns='http://jabber.org/protocol/caps' hash='sha-1'/>
<x xmlns='vcard-temp:x:update'>
<photo>da39a3ee5e6b4b0d3255bfef95601890afd80709</photo>
</x>
<x xmlns='http://jabber.org/protocol/muc#user'>
<item role='participant' affiliation='none'/>
</x>
</presence>

<!--   2020-10-06T15:35:19Z   >>>>   -->
<iq type='get' to='conversations@conference.siacs.eu/chema' id='A90A6400-387B-4648-A349-EB35578BCD82'>
<vCard xmlns='vcard-temp'/>
</iq>

<!--   2020-10-06T15:35:20Z   <<<<   -->
<iq to='wojtek@tigase.org/1009101153-tigase-57' from='conversations@conference.siacs.eu/chema' id='A90A6400-387B-4648-A349-EB35578BCD82' xmlns='jabber:client' type='result'>
<vCard xmlns='vcard-temp'>
<PHOTO>
<TYPE>image/jpeg</TYPE>
<BINVAL/>
</PHOTO>
</vCard>
</iq>
Andrzej Wójcik (Tigase) commented 4 years ago

I'm going to start with some answers for each example and then sum up.

For gabriel the issue is in the following part of the XML:

<vcard xmlns='vcard-temp'>

Namespace is correct but the element name is not. It should be vCard not vcard!

As for fenny the advertised photo hash in presence is 0be49ce1725b0648dfbdc9cf50b66d272aab9f38:

<!--   2020-10-07T12:14:50Z   <<<<   -->
<presence from='conversations@conference.siacs.eu/fenny' to='andrzej@hi-low.eu/iMac (Andrzej)' xmlns='jabber:client'>
<c ver='AhE2lHombaVuLH+aGV2OP7ARqCY=' hash='sha-1' node='http://conversations.im' xmlns='http://jabber.org/protocol/caps'/>
<x xmlns='vcard-temp:x:update'>
<photo>0be49ce1725b0648dfbdc9cf50b66d272aab9f38</photo>
</x>
<x xmlns='http://jabber.org/protocol/muc#user'>
<item role='participant' affiliation='none'/>
</x>
</presence>

while extracted photo from fetched vCard returns: a2f7903c6278123c33faeae60b759e838488a5c6:

➜ base64 --decode -i fenny.base64.txt -o fenny.png

➜ sha1sum fenny.png 
a2f7903c6278123c33faeae60b759e838488a5c6  fenny.png

as you can see a2f7903c6278123c33faeae60b759e838488a5c6 != 0be49ce1725b0648dfbdc9cf50b66d272aab9f38.


As you can see we have 2 cases which can be generalized to a single case: User's client advertises photo hash of vCard photo which does not match!.

It does not matter if there is invalid vCard or a vCard without photo or a vCard without photo which hash matches. It basically means that I do not have anything to display and as I'm receiving photo hash of unknown photo I need to query those JIDs for vCard every damn time. That is an issue with vCard-temp protocol and it cannot be easily overcome. I cannot cache photo hash for invalid photos even in pair with nickname of a sender as someone else may join with the same nickname with the same photo hash and it can be there!

If you wish, we can discuss this, but current behaviour is correct.

btw. I've even encountered some clients sending UUID as a photo hash, so I've added validation if photo hash is a correct SHA1 result.

Andrzej Wójcik (Tigase) commented 4 years ago

btw. You can run following command from the console and it will return avatars photo hashes which it looks for and number of photos found in the vCard (not a number of matching photos):

sudo log show --start "2020-10-07 05:00:00" --predicate 'subsystem == "org.tigase.messenger.BeagleIM"' --debug
wojciech.kapcia@tigase.net commented 4 years ago

Regarding lowercase: https://github.com/maranda/metronome/issues/526 Regarding mismatch in published and calculated hash: I brought the topic in jdev MUC but without much discussion / nothing conclusive (this is how things works/doesn't work, period).

Let's consider it "done" as it works now according to the specification. We can't help with misbehaving clients.

Andrzej Wójcik (Tigase) commented 4 years ago

I agree. We could close it.

issue 1 of 1
Type
Bug
Priority
Normal
Assignee
Version
4.1
Spent time
10h
Issue Votes (0)
Watchers (0)
Reference
tigase/_clients/beagle-im#281
Please wait...
Page is in error, reload to recover