Software / code / prosody
Comparison
plugins/mod_proxy65.lua @ 3006:a3580f556c27
mod_proxy65: Send error reply to activation stanza if one or both parties were not connected to the proxy
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Wed, 05 May 2010 15:33:29 +0100 |
| parent | 3005:c49be80767ee |
| child | 3377:9328179c9c76 |
comparison
equal
deleted
inserted
replaced
| 3005:c49be80767ee | 3006:a3580f556c27 |
|---|---|
| 239 else | 239 else |
| 240 origin.send(st.error_reply(stanza, "cancel", "service-unavailable")); | 240 origin.send(st.error_reply(stanza, "cancel", "service-unavailable")); |
| 241 return true; | 241 return true; |
| 242 end | 242 end |
| 243 elseif stanza.name == "iq" and type == "set" then | 243 elseif stanza.name == "iq" and type == "set" then |
| 244 module:log("debug", "Received activation request from %s", stanza.attr.from); | |
| 244 local reply, from, to, sid = set_activation(stanza); | 245 local reply, from, to, sid = set_activation(stanza); |
| 245 if reply ~= nil and from ~= nil and to ~= nil and sid ~= nil then | 246 if reply ~= nil and from ~= nil and to ~= nil and sid ~= nil then |
| 246 local sha = sha1(sid .. from .. to, true); | 247 local sha = sha1(sid .. from .. to, true); |
| 247 if transfers[sha] == nil then | 248 if transfers[sha] == nil then |
| 248 module:log("error", "transfers[sha]: nil"); | 249 module:log("error", "transfers[sha]: nil"); |
| 249 elseif(transfers[sha] ~= nil and transfers[sha].initiator ~= nil and transfers[sha].target ~= nil) then | 250 elseif(transfers[sha] ~= nil and transfers[sha].initiator ~= nil and transfers[sha].target ~= nil) then |
| 250 origin.send(reply); | 251 origin.send(reply); |
| 251 transfers[sha].activated = true; | 252 transfers[sha].activated = true; |
| 252 transfers[sha].target:lock_read(false); | 253 transfers[sha].target:lock_read(false); |
| 253 transfers[sha].initiator:lock_read(false); | 254 transfers[sha].initiator:lock_read(false); |
| 255 else | |
| 256 module:log("debug", "Both parties were not yet connected"); | |
| 257 local message = "Neither party is connected to the proxy"; | |
| 258 if transfers[sha].initiator then | |
| 259 message = "The recipient is not connected to the proxy"; | |
| 260 elseif transfers[sha].target then | |
| 261 message = "The sender (you) is not connected to the proxy"; | |
| 262 end | |
| 263 origin.send(st.error_reply(stanza, "cancel", "not-allowed", message)); | |
| 254 end | 264 end |
| 255 else | 265 else |
| 256 module:log("error", "activation failed: sid: %s, initiator: %s, target: %s", tostring(sid), tostring(from), tostring(to)); | 266 module:log("error", "activation failed: sid: %s, initiator: %s, target: %s", tostring(sid), tostring(from), tostring(to)); |
| 257 end | 267 end |
| 258 end | 268 end |