summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2014-05-21 18:45:28 +0200
committerBadlop <badlop@process-one.net>2014-05-21 18:45:28 +0200
commit735bd956591ad437bc49d01468753616ddf9c56c (patch)
treeafd767aa64379c91542be44af64c110171cdf275
parentMerge pull request #217 from weiss/fix-extauth-cache-usage (diff)
parentXEP-0198: Check whether routed packets are stanzas (diff)
Merge branch 'check-packet-type' of git://github.com/weiss/ejabberd into weiss-check-packet-type
Conflicts: src/ejabberd_c2s.erl
-rw-r--r--src/ejabberd_c2s.erl25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl
index f3201ed0..5d0cc9c0 100644
--- a/src/ejabberd_c2s.erl
+++ b/src/ejabberd_c2s.erl
@@ -1208,13 +1208,7 @@ session_established2(El, StateData) ->
_ ->
Err = jlib:make_error_reply(NewEl,
?ERR_JID_MALFORMED),
- case is_stanza(Err) of
- true ->
- send_stanza(NewStateData, Err);
- false ->
- send_element(NewStateData, Err),
- NewStateData
- end
+ send_packet(NewStateData, Err)
end;
_ ->
case Name of
@@ -1647,7 +1641,7 @@ handle_info({route, From, To,
jlib:replace_from_to_attrs(jlib:jid_to_string(From),
jlib:jid_to_string(To), NewAttrs),
FixedPacket = #xmlel{name = Name, attrs = Attrs2, children = Els},
- SentStateData = send_stanza(NewState, FixedPacket),
+ SentStateData = send_packet(NewState, FixedPacket),
ejabberd_hooks:run(user_receive_packet,
SentStateData#state.server,
[SentStateData#state.jid, From, To, FixedPacket]),
@@ -1838,6 +1832,19 @@ send_stanza(StateData, Stanza) ->
send_element(StateData, Stanza),
StateData.
+send_packet(StateData, Packet) when StateData#state.mgmt_state == active;
+ StateData#state.mgmt_state == pending ->
+ case is_stanza(Packet) of
+ true ->
+ send_stanza(StateData, Packet);
+ false ->
+ send_element(StateData, Packet),
+ StateData
+ end;
+send_packet(StateData, Stanza) ->
+ send_element(StateData, Stanza),
+ StateData.
+
send_header(StateData, Server, Version, Lang)
when StateData#state.xml_socket ->
VersionAttr = case Version of
@@ -2344,7 +2351,7 @@ resend_subscription_requests(#state{user = User,
ejabberd_hooks:run_fold(resend_subscription_requests_hook,
Server, [], [User, Server]),
lists:foldl(fun (XMLPacket, AccStateData) ->
- send_stanza(AccStateData, XMLPacket)
+ send_packet(AccStateData, XMLPacket)
end,
StateData,
PendingSubscriptions).