-
@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).
-
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>
-
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?
-
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. -
@wojtek What do you think?
-
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:
- 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 useTYPE
AFAIR) - 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
vsMUST
). 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? - 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?
- Beagle's cache - I think we could ignore lack of
-
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)
-
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>
-
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. -
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>
-
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
notvcard
!As for
fenny
the advertised photo hash in presence is0be49ce1725b0648dfbdc9cf50b66d272aab9f38
:<!-- 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 withnickname
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.
-
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
-
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.
Type |
Bug
|
Priority |
Normal
|
Assignee | |
Version |
4.1
|
Spent time |
0
|
(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):
Which resulted in query for actual photo payload:
Today, during same flow for the same user with the same photo hash the photo was queried again:
(binval is about 10K)