On 28-Aug-2009, at 17:17, Fabio Forno wrote:
If the XMPP error is of type "cancel" (e.g., <item-not-found/>), or
the error condition is <gone/>, the pubsub service SHOULD terminate
the subscription of the entity to that node and MAY terminate the
subscription of that entity to all nodes hosted at the service.

This means if the subscriber is a component and that component is
temporary unavailable (e.g. we restart it or it goes down for
maintenance) it is likely that it gets unsubscribed, while the desired
behavior would rescheduling the event.

For the two examples you give, unsubscription makes sense, as they're authoritative permanent conditions. In fact, according to RFC3920 9.3.2, any error of type "cancel" is a permanent condition, in which case the above semantics make sense.

The problem, I think, is that <service-unavailable/>, potentially <remote-server-not-found/>, and maybe more might not make sense as type "cancel" since they're frequently generated for transient errors (the service is temporarily offline, as you say). I see two options off the top of my head (which hasn't had its coffee yet):

1) Add transient versions of at least <service-unavailable/> with an error of type "wait." To distinguish the permanent vs. transient conditions a server would only need to know if it's configured to allow for that component to connect although it might not be at the time (potentially <recipient-unavailable/> would due here), or,

2) Have the server which handles the component save the messages until the component connects, akin to offline delivery.

Another thing: I think that the option of delivering items via <iq/>
has already been discussed many times, but I don't find any reference

I don't remember seeing this. All I remember is retrieving items by iq, which is described in XEP-0060 s6.4.

-bjc

Reply via email to