5.2.23
09/22/2023

[#167] Registration::createAccount() fails against openfire
Summary Registration::createAccount() fails against openfire
Queue gloox
Queue Version 1.0
Type Bug
State Accepted
Priority 2. Medium
Owners js (at) camaya (dot) net
Requester srosset (at) gmail (dot) com
Created 12/19/2009 (5025 days ago)
Due
Updated 07/22/2013 (3714 days ago)
Assigned 12/19/2009 (5025 days ago)
Resolved

History
07/22/2013 01:16:28 PM Jakob Schröter Comment #2
State ⇒ Accepted
Reply to this comment
Thanks for the report and sorry for the long time it took me to reply. ;)
I wouldn't call this a bug. It's rather an unlucky coincidence of 
gloox 1.0 doing SASL Anonymous and then trying to register. If you 
remove the SASL anonymous mechanism by calling j->setSASLMechanisms( 
SaslMechAll ^ SaslMechAnonymous ) then registration will work. 
However, it does not work when disabling SASL completely, so this 
needs some looking-into.
12/19/2009 08:22:25 AM Jakob Schröter State ⇒ Assigned
Assigned to Jakob Schröter
 
12/19/2009 12:25:01 AM srosset (at) gmail (dot) com Comment #1
State ⇒ Unconfirmed
Priority ⇒ 2. Medium
Type ⇒ Bug
Summary ⇒ Registration::createAccount() fails against openfire
Queue ⇒ gloox
Reply to this comment
Registration::createAccount() fails with "bad-request" when using 
gloox version 1.0, but the same call works fine when using gloox 
0.9.9.12.

I am not sure if this is a gloox regression issue or if this is an 
Openfire problem.

Perform the following steps:
1) Install Openfire version 3.6.4. Configure Openfire to allow 
creation of new accounts anonymously
2) Using a jabber client (such as Spark), verify a new account can be created
3) Using the gloox 1.0 library, write a small program to create a new 
account, as described in the gloox/registration.h file
4) Run the program ==> Openfire fails to create the account. The 
response sent back to gloox states "bad-request"
5) Now adapt the same program to work with gloox 0.9.9.12. Launch the 
program to create a new account ==> account registration is successful.

The program uses something very basic as described in the documentation:
m_client = new Client( "a.b.c.d" );
m_client->disableRoster();
m_client->registerConnectionListener( this );
m_reg = new Registration( m_client );
m_reg->registerRegistrationHandler( this );
m_client->connect();