388 session.to_host = attr.to and nameprep(attr.to); |
388 session.to_host = attr.to and nameprep(attr.to); |
389 session.from_host = attr.from and nameprep(attr.from); |
389 session.from_host = attr.from and nameprep(attr.from); |
390 |
390 |
391 session.streamid = uuid_gen(); |
391 session.streamid = uuid_gen(); |
392 (session.log or log)("debug", "incoming s2s received <stream:stream>"); |
392 (session.log or log)("debug", "incoming s2s received <stream:stream>"); |
393 if session.to_host and not hosts[session.to_host] then |
393 if session.to_host then |
394 -- Attempting to connect to a host we don't serve |
394 if not hosts[session.to_host] then |
395 session:close({ condition = "host-unknown"; text = "This host does not serve "..session.to_host }); |
395 -- Attempting to connect to a host we don't serve |
396 return; |
396 session:close({ |
|
397 condition = "host-unknown"; |
|
398 text = "This host does not serve "..session.to_host |
|
399 }); |
|
400 return; |
|
401 elseif hosts[session.to_host].disallow_s2s then |
|
402 -- Attempting to connect to a host that disallows s2s |
|
403 session:close({ |
|
404 condition = "policy-violation"; |
|
405 text = "Server-to-server communication is not allowed to this host"; |
|
406 }); |
|
407 return; |
|
408 end |
397 end |
409 end |
398 send("<?xml version='1.0'?>"); |
410 send("<?xml version='1.0'?>"); |
399 send(stanza("stream:stream", { xmlns='jabber:server', ["xmlns:db"]='jabber:server:dialback', |
411 send(stanza("stream:stream", { xmlns='jabber:server', ["xmlns:db"]='jabber:server:dialback', |
400 ["xmlns:stream"]='http://etherx.jabber.org/streams', id=session.streamid, from=session.to_host, to=session.from_host, version=(session.version > 0 and "1.0" or nil) }):top_tag()); |
412 ["xmlns:stream"]='http://etherx.jabber.org/streams', id=session.streamid, from=session.to_host, to=session.from_host, version=(session.version > 0 and "1.0" or nil) }):top_tag()); |
401 if session.version >= 1.0 then |
413 if session.version >= 1.0 then |