defanorFWIW, "Received" headers usually contain timestamps, so you may be able to track when it went where, according to the servers adding those headers, and compare to user-set "Date".
defanorI happened to receive a reply to a message from April just yesterday, maybe it's the delayed message delivery day.
ZashPerhaps it was triggered by the configuration change mentioned in https://mail.jabber.org/pipermail/council/2021-November/004520.html
Martin> Received: from NAM12-DM6-obe.outbound.protection.outlook.com
> (mail-dm6nam12olkn2074.outbound.protection.outlook.com [126.96.36.199])
> by atlas.jabber.org (Postfix) with ESMTPS id BBAF089D
> for <email@example.com>; Tue, 29 Dec 2020 19:15:31 +0000 (UTC)
lovetoxi find it really ugly
lovetoxthat resource binding is done via IQ
lovetoxwhy though, i mean there was probably a history or story behind this
ZashWelcome to the sensible camp! Let's give angry stares to those who think everything in session startup should be iq stanzas 😉
Zashlovetox, behold this horror: https://xmpp.org/extensions/xep-0078.html
ZashI remember doing that with telnet 900 years ago
lovetoxbut it makes no sense, reading the rfc, its only nonzas all the way, and then suddenly they start with stanzas BEFORE WE HAVE A JID :D
ZashI think "nonzas" were invented at the time of IETF standardization
lovetoxtitle is enough for me, to not read that
ZashScroll down to https://xmpp.org/extensions/xep-0078.html#example-3 and cry
ZashTho it was easier to type that into telnet than doing SCRAM in your head 😉
Zashor even PLAIN
Zashlovetox, do you have a moment to talk about our lord and savior, https://xmpp.org/extensions/xep-0386.html ? ;)
Zashthe holy trinity of XMPP 2.0 connection establishing
lovetoxyes, im interested in that, is there some working support in prosody for that?
ZashI had a prototype / WIP somewhere
ZashHopefully there'll be more time to work on that after Prosody 0.12 gets out the door.
lovetoxalso something very ugly
lovetoxevery stanza has a type attribute with a value
lovetoxexcept presence, it can just be absent
Zashonly iq is strict
lovetoxno with message its just an optimization
lovetoxyou can leave it out but that means "normal"
lovetoxfor presence there is no default
ZashOnly having to send `<presence/>` to go online is nice tho.
lovetoxmakes writing stanza handlers fun, now you need to add code for the single case, where you want to match on the absence of an attribute
lovetoxZash, no problem with that, just assign a default like with message
Zashhow about 'available' to mirror 'unavailable' ?
Zashand then hide that in abstractions so it serializes out to None or whathaveyou
lovetoxactually i do that, with show
jonas’and that broke everything?
lovetoxno works quite well
lovetoxi simply have a added, Show.AVAILABLE
lovetoxbut yeah this is the next ugly thing with presence
lovetoxyou commnicate your state with show
lovetoxbut not if you are available
lovetoxthen its absent
lovetoxnow you need everytime to check 2 things, actually type must be absent AND show must be absent
lovetoxand no problem with optimizations on the stream with default values etc
lovetoxbut to have nothing, puts library developers in the situation to add stuff thats not in the standard to make things sane
ZashAbstractions gonna abstract
lovetoxi really just wonder, that rfc was written over some weeks or months whatever, some inital idea and it was like
Ok most things can be absent, we dont need defaults, just the absence is enough
Nothing is allowed to be absent
Lets allow something to be absent, but we define a default
ZashThe initial RFCs were written years after Jabber was already a thing
lovetoxok so this was like some thing that needed to be backwards compatible from the start
ZashJabber was launched in 1999, the IETF standardization happened around 2002-2005 I think (I wasn't involved in any of this back then)