comparison mod_ipcheck/mod_ipcheck.lua @ 1245:a1287d1f8a1f

mod_ipcheck: Workaround for differences between server_select and server_event
author Kim Alvefur <zash@zash.se>
date Wed, 04 Dec 2013 19:26:37 +0100
parents d1bc9a796daf
children e5039f14e2a7
comparison
equal deleted inserted replaced
1244:d1bc9a796daf 1245:a1287d1f8a1f
29 if stanza.attr.to then 29 if stanza.attr.to then
30 origin.send(st.error_reply(stanza, "auth", "forbidden", "You can only ask about your own IP address")); 30 origin.send(st.error_reply(stanza, "auth", "forbidden", "You can only ask about your own IP address"));
31 elseif origin.ip then 31 elseif origin.ip then
32 local reply = st.reply(stanza):tag("address", {xmlns='urn:xmpp:sic:0'}) 32 local reply = st.reply(stanza):tag("address", {xmlns='urn:xmpp:sic:0'})
33 :tag("ip"):text(origin.ip):up() 33 :tag("ip"):text(origin.ip):up()
34 if origin.conn and origin.conn.port then 34 if origin.conn and origin.conn.port then -- server_event
35 reply:tag("port"):text(tostring(origin.conn:port())) 35 reply:tag("port"):text(tostring(origin.conn:port()))
36 elseif origin.conn and origin.conn.clientport then -- server_select
37 reply:tag("port"):text(tostring(origin.conn:clientport()))
36 end 38 end
37 origin.send(reply); 39 origin.send(reply);
38 else 40 else
39 -- IP addresses should normally be available, but in case they are not 41 -- IP addresses should normally be available, but in case they are not
40 origin.send(st.error_reply(stanza, "cancel", "service-unavailable", "IP address for this session is not available")); 42 origin.send(st.error_reply(stanza, "cancel", "service-unavailable", "IP address for this session is not available"));