mod_smacks: Bounce unhandled stanzas from local origin (fix #1759)
Sending stanzas with a remote session as origin when the stanzas have a
local JID in the from attribute trips validation in core.stanza_router,
leading to warnings:
> Received a stanza claiming to be from remote.example, over a stream authed for localhost.example
Using module:send() uses the local host as origin, which is fine here.
local enum error_type
"auth"
"cancel"
"continue"
"modify"
"wait"
end
local enum error_condition
"bad-request"
"conflict"
"feature-not-implemented"
"forbidden"
"gone"
"internal-server-error"
"item-not-found"
"jid-malformed"
"not-acceptable"
"not-allowed"
"not-authorized"
"policy-violation"
"recipient-unavailable"
"redirect"
"registration-required"
"remote-server-not-found"
"remote-server-timeout"
"resource-constraint"
"service-unavailable"
"subscription-required"
"undefined-condition"
"unexpected-request"
end
local record protoerror
type : error_type
condition : error_condition
text : string
code : integer
end
local record error
type : error_type
condition : error_condition
text : string
code : integer
context : { any : any }
source : string
end
local type compact_registry_item = { string, string, string, string }
local type compact_registry = { compact_registry_item }
local type registry = { string : protoerror }
local type context = { string : any }
local record error_registry_wrapper
source : string
registry : registry
new : function (string, context) : error
coerce : function (any, string) : any, error
wrap : function (error) : error
wrap : function (string, context) : error
is_error : function (any) : boolean
end
local record lib
record configure_opt
auto_inject_traceback : boolean
end
new : function (protoerror, context, { string : protoerror }, string) : error
init : function (string, string, registry | compact_registry) : error_registry_wrapper
init : function (string, registry | compact_registry) : error_registry_wrapper
is_error : function (any) : boolean
coerce : function (any, string) : any, error
from_stanza : function (table, context, string) : error
configure : function
end
return lib