Alban Crequy wrote:
> Hi,
> 
> To start a link-local conversation with XEP-0174 between two clients,
> any of the 2 clients can initiate the stream. If the 2 contacts start
> to chat at the same time, we may have 2 streams initiated in both
> directions. It seems this case does not happen often because users
> usually don't start to chat precisely at the same time.
> 
> You suggested that having several streams between 2 clients was not a
> problem:
> 
> Le Thu, 14 Aug 2008 10:51:06 -0600,
> Peter Saint-Andre <[EMAIL PROTECTED]> a écrit :
>> Alban Crequy wrote:
>>> If we want the XEP to say there can be only one stream between two
>>> clients, we should define the correct behaviour when two clients
>>> initiate a TCP connection to each other at the same time. Do we
>>> want one connection to win and the second to be closed?
>> I don't think we need to restrict clients to one stream at a time.
> 
> However, if the 2 clients both implement XEP-030 Service Discovery and
> XEP-0115 Entity Capabilities, they will both initiate a stream in order
> to send a discovery request as soon as they appear online via DNS-SD,
> without user intervention.

Really? I thought we were advertising caps in DNS TXT. See the "ver"
record here:

http://xmpp.org/extensions/xep-0174.html#registrar-linklocal-reg

So I think that opening a stream to everyone who appears online via
DNS-SD is a bad idea.

Thus I would say that if you know the "ver", you'll know what the other
entity is. But if you don't know the "ver", don't automatically open a
stream to the other entity just to do all the caps lookup magic via disco.

> Do we want this to happen? 

No.

> Sjoerd suggested on IRC to add random slack
> time before initiating a stream to avoid it. >

That is one possibility.

> XEP-0174 can spec some
> guide-lines. Either how to avoid it, or spec that implementations MUST
> handle several streams correctly.
> 
> Should statefull stanza (iq requests/replies) always use the same
> stream, if there is several streams?
> 
> When a stream is closed because a timeout is reached, can we open a new
> stream to send the <iq type="result"> corresponding to the <iq
> type="get"> from the previous stream?
> 
> When someone joins a local network, we may receive plenty of TCP
> connections from local contacts. The XEP-00174 suggests that the
> implementation can wait user approval before accepting to open the
> stream: 
> 
> XEP-0174:
>> Your client then responds with a response stream header (perhaps
>> subject to user approval -- it's not always safe to chat with
>> strangers!).
> 
> It seems undesirable to ask user approval just to send contact
> capabilities.

Agreed. But I don't think that pinging everyone on the network is the
right thing to do in the first place.

Peter

-- 
Peter Saint-Andre
https://stpeter.im/

Reply via email to