aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <xramtsov@gmail.com>2010-02-03 11:25:03 +0000
committerEvgeniy Khramtsov <xramtsov@gmail.com>2010-02-03 11:25:03 +0000
commit9d84caebdb80b3f2fce14843516cbc5e6445bdbc (patch)
tree2fccdec250927645d958b72f30b9755821ad2f6a /src
parentavoid 'invalid' value in #iq{} record (diff)
avoid resending <stream:error> stanzas on terminate (EJAB-1180)
SVN Revision: 2955
Diffstat (limited to 'src')
-rw-r--r--src/web/ejabberd_http_poll.erl15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/web/ejabberd_http_poll.erl b/src/web/ejabberd_http_poll.erl
index c05470f3a..bd7b8bd0e 100644
--- a/src/web/ejabberd_http_poll.erl
+++ b/src/web/ejabberd_http_poll.erl
@@ -426,11 +426,16 @@ resend_messages(Messages) ->
%% This function is used to resend messages that have been polled but not
%% delivered.
resend_message(Packet) ->
- ParsedPacket = xml_stream:parse_element(Packet),
- From = get_jid("from", ParsedPacket),
- To = get_jid("to", ParsedPacket),
- ?DEBUG("Resend ~p ~p ~p~n",[From,To, ParsedPacket]),
- ejabberd_router:route(From, To, ParsedPacket).
+ {xmlelement, Name, _, _} = ParsedPacket = xml_stream:parse_element(Packet),
+ %% Avoid sending <stream:error>
+ if Name == "iq"; Name == "message"; Name == "presence" ->
+ From = get_jid("from", ParsedPacket),
+ To = get_jid("to", ParsedPacket),
+ ?DEBUG("Resend ~p ~p ~p~n",[From,To, ParsedPacket]),
+ ejabberd_router:route(From, To, ParsedPacket);
+ true ->
+ ok
+ end.
%% Type can be "from" or "to"
%% Parsed packet is a parsed Jabber packet.