summaryrefslogtreecommitdiff
path: root/src/ejabberd_service.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2016-09-24 14:17:21 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2016-09-24 14:17:21 +0300
commit58969fb854207637e8c3548c1b2a6a0c865dfe7e (patch)
tree4ac174a5806a1ef965e255392579405465a1193c /src/ejabberd_service.erl
parentAdd tests for s2s code (diff)
Improve namespace handling
Diffstat (limited to 'src/ejabberd_service.erl')
-rw-r--r--src/ejabberd_service.erl16
1 files changed, 2 insertions, 14 deletions
diff --git a/src/ejabberd_service.erl b/src/ejabberd_service.erl
index 46d32e4f..b1a4b433 100644
--- a/src/ejabberd_service.erl
+++ b/src/ejabberd_service.erl
@@ -308,7 +308,7 @@ send_text(StateData, Text) ->
-spec send_element(state(), xmpp_element()) -> ok.
send_element(StateData, El) ->
- El1 = fix_ns(xmpp:encode(El)),
+ El1 = xmpp:encode(El, ?NS_COMPONENT),
send_text(StateData, fxml:element_to_binary(El1)).
-spec send_error(state(), xmlel() | stanza(), stanza_error()) -> ok.
@@ -334,21 +334,9 @@ send_header(StateData, Host) ->
send_trailer(StateData) ->
send_text(StateData, <<"</stream:stream>">>).
--spec fix_ns(xmlel()) -> xmlel().
-fix_ns(#xmlel{name = Name} = El) when Name == <<"message">>;
- Name == <<"iq">>;
- Name == <<"presence">> ->
- Attrs = lists:filter(
- fun({<<"xmlns">>, _}) -> false;
- (_) -> true
- end, El#xmlel.attrs),
- El#xmlel{attrs = Attrs};
-fix_ns(El) ->
- El.
-
-spec decode_element(xmlel(), state_name(), state()) -> fsm_transition().
decode_element(#xmlel{} = El, StateName, StateData) ->
- try xmpp:decode(El, [ignore_els]) of
+ try xmpp:decode(El, ?NS_COMPONENT, [ignore_els]) of
Pkt -> ?MODULE:StateName(Pkt, StateData)
catch error:{xmpp_codec, Why} ->
case xmpp:is_stanza(El) of