I found little bug of jabberCOM.
when server send
<iq type="set"><query xmlns="jabber:iq:roster"><item
jid="..." nick="..."/></query></iq>
In session.pas line 2008
if (cuser = nil) then
cuser := Roster.Add(funame, fnick);
// setup the internal user object...
with cuser do begin
if fsubs = 'both' then Subscription := jstBoth
else if fsubs = 'to' then Subscription := jstTo
else if fsubs = 'from' then Subscription := jstFrom
else if fsubs = 'remove' then Subscription := jstRemove
else Subscription := jstNone;
Ask := fAsk;
JID := fjid;
end;
why you not update nickname?