diff options
author | Evgeniy Khramtsov <xramtsov@gmail.com> | 2010-02-03 11:25:03 +0000 |
---|---|---|
committer | Evgeniy Khramtsov <xramtsov@gmail.com> | 2010-02-03 11:25:03 +0000 |
commit | 9d84caebdb80b3f2fce14843516cbc5e6445bdbc (patch) | |
tree | 2fccdec250927645d958b72f30b9755821ad2f6a | |
parent | avoid 'invalid' value in #iq{} record (diff) |
avoid resending <stream:error> stanzas on terminate (EJAB-1180)
SVN Revision: 2955
-rw-r--r-- | src/web/ejabberd_http_poll.erl | 15 |
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. |