Subject: | AnyEvent::XMPP::Ext::Registration protocol bug with unregister and password change |
Date: | Sun, 9 Jan 2011 20:31:10 -0500 |
To: | bug-AnyEvent-XMPP [...] rt.cpan.org |
From: | Shawn Kohlsmith <skohlsmith [...] gmail.com> |
AnyEvent::XMPP v0.51
Inband registration works fine, but to unregister or change your
password, the message needs to be sent to the server,
not to an empty to: field.
For example, 0.51 code has a blank to: field, which (according to my
jabberd14 server output) means it gets sent to
the originating client:
send<< me@myserver.org/test
<deb>
<iq id="4" type="set">
<query xmlns="jabber:iq:register">
<remove/>
</query>
</iq>
</deb>
Show quoted text
recv>> me@myserver.org/test
<deb>
<iq from="me@myserver.org" id="4" to="me@myserver.org/test"
type="error" xml:lang="en">
<query xmlns="jabber:iq:register">
<remove/>
</query>
<error code="404" type="wait">
<recipient-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
<text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">Recipient Is
Unavailable</text>
</error>
</iq>
</deb>
By modifying AnyEvent::XMPP::Ext::Registration::send_unregistration_request()
to tack on an
explicit to=>'myserver.org' in send_iq()'s %attrs, I get valid output
(and the server actually
unregistered the account).
send<< me@myserver.org/testclient
<deb>
<iq id="4" to="myserver.org" type="set">
<query xmlns="jabber:iq:register">
<remove/>
</query>
</iq>
</deb>
Show quoted textrecv>> me@myserver.org/testclient
<deb>
<iq from="myserver.org" id="4" to="me@myserver.org/testclient"
type="result" xml:lang="en"/>
</deb>
Similar output and the same fix for
AnyEvent::XMPP::Ext::Registration::send_password_change_request().
I'm sure there's an easy built-in way to access the host portion of
the jid, but I haven't found it yet.
.Shawn