Closed benlangfeld closed 10 years ago
This problem also applies to creating components. We should probably apply whatever solution we choose here to component creation also.
@crienzo prefers option 1 here for its relative simplicity. I think I'm happy with this. I'll wait on thoughts from @mpermar.
Hi guys,
I'm fine with either 1. or 2. as long as it is not 3. which overcomplicates things and adds some lag too. As long as it is optional I think everyone is happy.
Cheers, Martin
On Wed, Feb 26, 2014 at 7:11 PM, Ben Langfeld notifications@github.comwrote:
This problem also applies to creating components. We should probably apply whatever solution we choose here to component creation also.
Reply to this email directly or view it on GitHubhttps://github.com/rayo/xmpp/issues/89#issuecomment-36156823 .
Martín Pérez
Founder, http://www.jobsket.com
Between option 1 and 2, I prefer 1.
I'll get option 1 specified shortly.
This will be in Rayo v0.4
FS support requested at http://jira.freeswitch.org/browse/FS-6282
Requests for creation of an outbound call via the
<dial/>
command suffer from the same race condition as Asterisk suffers from, documented in this thread.The conclusion of the Asterisk discussion was that the API would support providing an ID in the origination request, which the resultant call would assume for its lifetime. This allows the client to guarantee that it knows the ID that events will come from before they will ever arrive.
It's my belief that Rayo needs to adopt the same thing, and that this could take two forms:
uri
attribute to<dial/>
. The call should be created at this URI if possible, or an error returned if not.<dial/>
command to a call JID which doesn't yet exist, causing it to come online and assume the role of the requested call. This requires minimal spec changes, not affecting the model, and simply explaining this explicit resource creation behaviour. @mpermar originally objected to this idea when it was raised several years ago on the basis that PRISM Rayo call IDs had a special format used for sharding purposes in the gateway implementation. If that is a real concern for any current implementations, I guess there is a third solution:All of these options can be implemented in the server in a backward-compatible manner, falling back to the current behaviour. The issue lies in clients exploiting this feature. I would consider adding a special entry to capabilities info on the server indicating support for it, but since we're pre-1.0 and experimental still, this seems inappropriate spec-bloat.
My preference right now is option 2 for its simplicity, but I'm willing to be convinced of option 3. Any objections to this change to the spec? Anyone have any objection to implementing this functionality?
/cc @mpermar @crienzo