avoid resending <stream:error> stanzas on terminate (EJAB-1180)
authorEvgeniy Khramtsov <xramtsov@gmail.com>
Wed, 3 Feb 2010 11:25:03 +0000 (11:25 +0000)
committerEvgeniy Khramtsov <xramtsov@gmail.com>
Wed, 3 Feb 2010 11:25:03 +0000 (11:25 +0000)
SVN Revision: 2955

src/web/ejabberd_http_poll.erl

index c05470f3a6f5cec8cc419432dbdef65fcf6f9442..bd7b8bd0ebbfd7fe6500cc90047e9f6e5348ed19 100644 (file)
@@ -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.