On 21/12/2022 14.49, Peter Waher wrote:
Hello

This specification defines a way for an XMPP entity to announce the
limits it will enforce for data received on a stream.

URL: https://xmpp.org/extensions/inbox/xep-sla.html
<https://xmpp.org/extensions/inbox/xep-sla.html>

This is a sorely needed extension. However, the proposal does not solve the more general problem of knowing the limitations when you communicate with another, only the size and time limits between immediately connected entities. A sender (client1) who needs to send something to another client (client2) passes one or two brokers (broker[1, broker2]), each one in this path might have different size limitations. A notification in the stream element does not resolve this more general problem. Furthermore, being constantly advertised in every request, creates a lot of extra bytes being communicated, with not added value, as the information is only needed once per limitation (best case).

Would it not be better with a statement in a service discovery response? There, each server/component/client can declare their limitations. Any change in limitation would change the hash in entities capabilities, which is already sent. So a change would be detected by all participants, without the added bytes each time an entity connects. Also, a service discovery mechanism, would allow an entity to query all participants in a route, to figure out what the limitations are along that particular route.

I can see the appeal of entities announcing the stanza size limit as part of their disco#info.

However, I wonder if many implementations would really put that information to a good use and implement a maximum stanza size discovery for a given path and adjust their behavior accordingly.

Really, the only robust way to deal with the stanza size limit is to take the lower bound for the maximum stanza size of 10 000 bytes, provided by the RFC, into account. Give a "little" room for stanza modifications on the path, allowing for additional elements to be added on the way, and send only stanzas of say, 4 KiB in size and you should be fine.

This, of course, requires that XMPP and its extensions is able to split request and result sets, and messages/notifications into smaller chunks. RSM certainly is helpful here, but I believe not everything we defined allows for a RSM-ish behavior.

For example, what if you discovered that the maximum stanza size of a path is M, but the user just typed a message with M+1 bytes? Split the user message into two message stanzas? What if the user later wants to revert or correct the message? What about reactions on that message?

I think the only reason we did not yet discuss those issues is that the maximum stanza size limit of most implementations is rather generous (I hear 128 KiB). And we can just live with the inadequateness of XMPP in this regard.

Zash's proposal is, as far as I understand it, just an optimization allowing a sending entity to determine if a stanza will hit the limit or not, without trying to actually send it.

And this goal is achieved with the proposed specification.

- Flow
_______________________________________________
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
_______________________________________________

Reply via email to