I'm looking for a BOSH client to test ejabberd 2.1.11 with. I am currently trying to use Pidgin, but the behavior I am getting seems very, very odd. In particular, I can send data over TCP (monitoring in the clear using WireShark) and it can literally take a couple of minutes before the message is actually sent.
I'm tailing the ejabberd logs using
{code}tail -f ./ejabberd.log | grep TEST{code}
and I can send the message over BOSH and have it take minutes to reach a client running native XMPP connection (5222). However, when I send from the native XMPP 5222 connection to the BOSH client connected on 5280, it is instant. Now, I'm confident that pidgin is sending the request, but what I'm not confident of is the state of the connection. Pidgin is reconnecting at regular intervals due to ping timeout, where in the ejabberd logs I get:
{code}
=INFO REPORT==== 2012-09-06 07:43:11 ===
D(<0.267.0>:mod_filter:39) : filtering packet...
From: {jid,"hvi_xmpp_inform","centora",[],"hvi_xmpp_inform","centora",[]}
To: {jid,"hvi_xmpp_inform","centora","pidgin","hvi_xmpp_inform","centora",
"pidgin"}
Packet: {xmlelement,"iq",
[{"type","error"},{"id","purple85b21561"}],
[{xmlelement,"ping",[{"xmlns","urn:xmpp:ping"}],[]},
{xmlelement,"error",
[{"code","503"},{"type","cancel"}],
[{xmlelement,"service-unavailable",
[{"xmlns","urn:ietf:params:xml:ns:xmpp-stanzas"}],
[]}]}]}
Result: {{jid,"hvi_xmpp_inform","centora",[],"hvi_xmpp_inform","centora",[]},
{jid,"hvi_xmpp_inform","centora","pidgin","hvi_xmpp_inform",
"centora","pidgin"},
{xmlelement,"iq",
[{"type","error"},{"id","purple85b21561"}],
[{xmlelement,"ping",[{"xmlns","urn:xmpp:ping"}],[]},
{xmlelement,"error",
[{"code","503"},{"type","cancel"}],
[{xmlelement,"service-unavailable",
[{"xmlns","urn:ietf:params:xml:ns:xmpp-stanzas"}],
[]}]}]}}
{code}
I think the ping failure may be leaving me in some kind of a broken state. Is there something I need to turn on, or does someone know of another client I can use that doesn't rely on ping to satisfy its state checking.
Well, I had exactly your
Well, I had exactly your problem. And as it happens, for some reason, requests from pidgin don't reach the correct http handlers in ejabberd's http_bind module. I tried with strophe.js and the situation is exactly the same. When I tried with Gajim though, everything works as expected. I will be investigating this further, as my ultimate goal is to be able to use Strophe... I'll keep you updated.