Software /
code /
prosody
Comparison
core/stanza_router.lua @ 2624:99b60dc15174
stanza_router: Fire /self events for stanzas users send to their own bare JID.
author | Waqas Hussain <waqas20@gmail.com> |
---|---|
date | Sat, 13 Feb 2010 02:55:24 +0500 |
parent | 2530:26c1f27eb35d |
child | 2685:f9bc95aadc26 |
comparison
equal
deleted
inserted
replaced
2623:1d34b45dec15 | 2624:99b60dc15174 |
---|---|
122 function core_post_stanza(origin, stanza, preevents) | 122 function core_post_stanza(origin, stanza, preevents) |
123 local to = stanza.attr.to; | 123 local to = stanza.attr.to; |
124 local node, host, resource = jid_split(to); | 124 local node, host, resource = jid_split(to); |
125 local to_bare = node and (node.."@"..host) or host; -- bare JID | 125 local to_bare = node and (node.."@"..host) or host; -- bare JID |
126 | 126 |
127 local to_type; | 127 local to_type, to_self; |
128 if node then | 128 if node then |
129 if resource then | 129 if resource then |
130 to_type = '/full'; | 130 to_type = '/full'; |
131 else | 131 else |
132 to_type = '/bare'; | 132 to_type = '/bare'; |
133 if node == origin.username and host == origin.host then | 133 if node == origin.username and host == origin.host then |
134 stanza.attr.to = nil; | 134 stanza.attr.to = nil; |
135 to_self = true; | |
135 end | 136 end |
136 end | 137 end |
137 else | 138 else |
138 if host then | 139 if host then |
139 to_type = '/host'; | 140 to_type = '/host'; |
147 if hosts[origin.host].events.fire_event('pre-'..stanza.name..to_type, event_data) then return; end -- do preprocessing | 148 if hosts[origin.host].events.fire_event('pre-'..stanza.name..to_type, event_data) then return; end -- do preprocessing |
148 end | 149 end |
149 local h = hosts[to_bare] or hosts[host or origin.host]; | 150 local h = hosts[to_bare] or hosts[host or origin.host]; |
150 if h then | 151 if h then |
151 if h.events.fire_event(stanza.name..to_type, event_data) then return; end -- do processing | 152 if h.events.fire_event(stanza.name..to_type, event_data) then return; end -- do processing |
153 if to_self and h.events.fire_event(stanza.name..'/self', event_data) then return; end -- do processing | |
152 | 154 |
153 if h.type == "component" then | 155 if h.type == "component" then |
154 component_handle_stanza(origin, stanza); | 156 component_handle_stanza(origin, stanza); |
155 return; | 157 return; |
156 end | 158 end |