error code='400' type='modify' jid-malformed... can't see what I am doing wrong...

fedora core 4, compiled tar.gz of latest erlang otp and ejabberd
tried 3 different clients on Mac - Psi, Fire and JabberFoX (XML from JabberFoX)
same error as in the title and the XML below.

Am supposed to have this running for another project, thanks to anyone for any help

Incoming XML: ~: = lt and :~ = gt because it looks like the posting process eats them

~:?xml version='1.0'?:~~:stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='681632226' from='ejd.mydomain.com' xml:lang='en':~~:iq from='ejd.mydomain.com' id='aad4' type='error':~~:query xmlns='jabber:iq:register':~~:username:~xyzabc@ejd.mydomain.com~:/username:~~:password:~xyzabc~:/password:~~:name:~Rob~:/name:~~:email:~xyzabc@ejd.mydomain.com~:/email:~~:/query:~~:error code='400' type='modify':~~:jid-malformed xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/:~~:/error:~~:/iq:~

Outgoing XML:

~:?xml version="1.0" encoding="UTF-8" ?:~~:stream:stream to='ejd.mydomain.com' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams':~~:iq to="ejd.mydomain.com" type="set" id="aad4":~~:query xmlns="jabber:iq:register":~~:username:~xyzabc@ejd.mydomain.com~:/username:~~:password:~xyzabc~:/password:~~:name:~Rob~:/name:~~:email:~xyzabc@ejd.mydomain.com~:/email:~~:/query:~~:/iq:~~:/stream:stream:~

startup:

erl -pa /var/lib/ejabberd/ebin -sname ejabberd -s ejabberd -ejabberd config \"/etc/ejabberd/ejabberd.cfg\" log_path \"/var/log/ejabberd/ejabberd.log\" -sasl sasl_error_logger \{file,\"/var/log/ejabberd/sasl.log\"\} -mnesia dir \"/var/lib/ejabberd/spool\"

ejabberd log:

=INFO REPORT==== 16-Aug-2005::22:46:04 ===
I(<0.214.0>:ejabberd_listener:90): (#Port<0.283>) Accepted connection {{10,2,1,12},50227} -> {{10,2,0,68},5222}

hosts file:

# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
10.2.0.68 ejd ejd.mydomain.com

config:

% $Id: ejabberd.cfg.example 332 2005-04-27 01:08:18Z alexey $

%override_acls.

% Users that have admin access. Add line like one of the following after you
% will be successfully registered on server to get admin access:
{acl, admin, {user, "rob"}}.

% Blocked users:
%{acl, blocked, {user, "test"}}.

% Local users:
{acl, local, {user_regexp, ""}}.

% Another examples of ACLs:
%{acl, jabberorg, {server, "jabber.org"}}.
%{acl, aleksey, {user, "aleksey", "jabber.ru"}}.
%{acl, test, {user_regexp, "^test"}}.
%{acl, test, {user_glob, "test*"}}.

% Only admins can use configuration interface:
{access, configure, [{allow, admin}]}.

% Every username can be registered via in-band registration:
{access, register, [{allow, all}]}.

% After successful registration user will get message with following subject
% and body:
{welcome_message,
{"Welcome!",
"Welcome to the PCC Project Development Jabber Service. "
"For information about Jabber visit http://jabber.org"}}.
% Replace them with 'none' if you don't want to send such message:
%{welcome_message, none}.

% List of people who will get notifications about registered users
{registration_watchers, ["x@mydomain.com",
"y@mydomain.com"]}.

% Only admins can send announcement messages:
{access, announce, [{allow, admin}]}.

% Only non-blocked users can use c2s connections:
{access, c2s, [{deny, blocked},
{allow, all}]}.

% Set shaper with name "normal" to limit traffic speed to 1000B/s
{shaper, normal, {maxrate, 1000}}.

% Set shaper with name "fast" to limit traffic speed to 50000B/s
{shaper, fast, {maxrate, 50000}}.

% For all users except admins used "normal" shaper
{access, c2s_shaper, [{none, admin},
{normal, all}]}.

% For all S2S connections used "fast" shaper
{access, s2s_shaper, [{fast, all}]}.

% Admins of this server are also admins of MUC service:
{access, muc_admin, [{allow, admin}]}.

% All users are allowed to use MUC service:
{access, muc, [{allow, all}]}.

% This rule allows access only for local users:
{access, local, [{allow, local}]}.

% Authentification method. If you want to use internal user base, then use
% this line:
{auth_method, internal}.

% For LDAP authentification use these lines instead of above one:
%{auth_method, ldap}.
%{ldap_servers, ["localhost"]}. % List of LDAP servers
%{ldap_uidattr, "uid"}. % LDAP attribute that holds user ID
%{ldap_base, "dc=example,dc=com"}. % Search base of LDAP directory
%{ldap_rootdn, "dc=example,dc=com"}. % LDAP manager
%{ldap_password, "******"}. % Password to LDAP manager

% For authentification via external script use the following:
%{auth_method, external}.
%{extauth_program, "/path/to/authentification/script"}.

% For authentification via ODBC use the following:
%{auth_method, odbc}.
%{odbc_server, "DSN=ejabberd;UID=ejabberd;PWD=ejabberd"}.

% Host name:
{hosts, ["ejd.mydomain.com"]}.

% Default language for server messages
{language, "en"}.

% Listened ports:
{listen,
[{5222, ejabberd_c2s, [{access, c2s}, {shaper, c2s_shaper},
starttls, {certfile, "/etc/ejabberd/server.pem"}]},
{5223, ejabberd_c2s, [{access, c2s},
tls, {certfile, "/etc/ejabberd/server.pem"}]},
% Use these two lines instead if TLS support is not compiled
%{5222, ejabberd_c2s, [{access, c2s}, {shaper, c2s_shaper}]},
%{5223, ejabberd_c2s, [{access, c2s}, ssl, {certfile, "./ssl.pem"}]},
{5269, ejabberd_s2s_in, [{shaper, s2s_shaper}]},
{5280, ejabberd_http, [http_poll, web_admin]},
{8888, ejabberd_service, [{access, all},
{hosts, ["icq.localhost", "sms.localhost"],
[{password, "secret"}]}]}
]}.

% If SRV lookup fails, then port 5269 is used to communicate with remote server
{outgoing_s2s_port, 5269}.

% Used modules:
{modules,
[
{mod_register, [{access, register}]},
{mod_roster, []},
{mod_privacy, []},
{mod_configure, []},
{mod_configure2, []},
{mod_disco, []},
{mod_stats, []},

% Host name:
{hosts, ["ejd.mydomain.com"]}.

% Default language for server messages
{language, "en"}.

% Listened ports:
{listen,
[{5222, ejabberd_c2s, [{access, c2s}, {shaper, c2s_shaper},
starttls, {certfile, "/etc/ejabberd/server.pem"}]},
{5223, ejabberd_c2s, [{access, c2s},
tls, {certfile, "/etc/ejabberd/server.pem"}]},
% Use these two lines instead if TLS support is not compiled
%{5222, ejabberd_c2s, [{access, c2s}, {shaper, c2s_shaper}]},
%{5223, ejabberd_c2s, [{access, c2s}, ssl, {certfile, "./ssl.pem"}]},
{5269, ejabberd_s2s_in, [{shaper, s2s_shaper}]},
{5280, ejabberd_http, [http_poll, web_admin]},
{8888, ejabberd_service, [{access, all},
{hosts, ["icq.localhost", "sms.localhost"],
[{password, "secret"}]}]}
]}.

% If SRV lookup fails, then port 5269 is used to communicate with remote server
{outgoing_s2s_port, 5269}.

% Used modules:
{modules,
[
{mod_register, [{access, register}]},
{mod_roster, []},
{mod_privacy, []},
{mod_configure, []},
{mod_configure2, []},
{mod_disco, []},
{mod_stats, []},
{mod_vcard, []},
{mod_offline, []},
{mod_announce, [{access, announce}]},
{mod_echo, [{host, "echo.ejd.mydomain.com"}]},
{mod_private, []},
{mod_irc, []},
% Default options for mod_muc:
% host: "conference." ++ ?MYNAME
% access: all
% access_create: all
% access_admin: none (only room creator has owner privileges)
{mod_muc, [{access, muc},
{access_create, muc},
{access_admin, muc_admin}]},
{mod_pubsub, []},
{mod_time, []},
{mod_last, []},
{mod_version, []}
]}.

% Local Variables:
% mode: erlang
% End:

Check your account setup on the client

When the Jabber client wants to authenticate, it should send the username, not the full JID. Psi works perfectly, just make sure to set your account correctly.

Example:

  <query xmlns='jabber:iq:auth'>
    <username>xyzabc</username>
  </query>

Syndicate content