Software / code / prosody
Comparison
core/xmlhandlers.lua @ 899:b95368f199a1
core.xmlhandlers: Filter out default stream namespace from stanzas
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Sat, 21 Mar 2009 21:43:50 +0000 |
| parent | 896:2c0b9e3c11c3 |
| child | 1003:afae75e37ceb |
comparison
equal
deleted
inserted
replaced
| 898:8176d224208a | 899:b95368f199a1 |
|---|---|
| 46 local cb_streamclosed = stream_callbacks.streamclosed; | 46 local cb_streamclosed = stream_callbacks.streamclosed; |
| 47 local cb_error = stream_callbacks.error or function (session, e) error("XML stream error: "..tostring(e)); end; | 47 local cb_error = stream_callbacks.error or function (session, e) error("XML stream error: "..tostring(e)); end; |
| 48 local cb_handlestanza = stream_callbacks.handlestanza; | 48 local cb_handlestanza = stream_callbacks.handlestanza; |
| 49 | 49 |
| 50 local stream_tag = stream_callbacks.stream_tag; | 50 local stream_tag = stream_callbacks.stream_tag; |
| 51 local stream_default_ns = stream_callbacks.default_ns; | |
| 51 | 52 |
| 52 local stanza | 53 local stanza |
| 53 function xml_handlers:StartElement(tagname, attr) | 54 function xml_handlers:StartElement(tagname, attr) |
| 54 if stanza and #chardata > 0 then | 55 if stanza and #chardata > 0 then |
| 55 -- We have some character data in the buffer | 56 -- We have some character data in the buffer |
| 56 stanza:text(t_concat(chardata)); | 57 stanza:text(t_concat(chardata)); |
| 57 chardata = {}; | 58 chardata = {}; |
| 58 end | 59 end |
| 59 local curr_ns,name = tagname:match("^(.+)|([%w%-]+)$"); | 60 local curr_ns,name = tagname:match("^(.+)|([%w%-]+)$"); |
| 60 if curr_ns ~= "jabber:server" then | 61 if curr_ns ~= stream_default_ns then |
| 61 attr.xmlns = curr_ns; | 62 attr.xmlns = curr_ns; |
| 62 end | 63 end |
| 63 | 64 |
| 64 -- FIXME !!!!! | 65 -- FIXME !!!!! |
| 65 for i, k in ipairs(attr) do | 66 for i, k in ipairs(attr) do |
| 94 | 95 |
| 95 stanza = st.stanza(name, attr); | 96 stanza = st.stanza(name, attr); |
| 96 curr_tag = stanza; | 97 curr_tag = stanza; |
| 97 else -- we are inside a stanza, so add a tag | 98 else -- we are inside a stanza, so add a tag |
| 98 attr.xmlns = nil; | 99 attr.xmlns = nil; |
| 99 if curr_ns ~= "jabber:server" and curr_ns ~= "jabber:client" then | 100 if curr_ns ~= stream_default_ns then |
| 100 attr.xmlns = curr_ns; | 101 attr.xmlns = curr_ns; |
| 101 end | 102 end |
| 102 stanza:tag(name, attr); | 103 stanza:tag(name, attr); |
| 103 end | 104 end |
| 104 end | 105 end |