?

Log in

No account? Create an account
DJabberd Status: bug fixes, and roster flesh-out - brad's life [entries|archive|friends|userinfo]
Brad Fitzpatrick

[ website | bradfitz.com ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

DJabberd Status: bug fixes, and roster flesh-out [Apr. 8th, 2006|07:27 pm]
Brad Fitzpatrick
[Tags|, ]

Lest you thought I'd forgotten about it, I'm back to hacking on DJabberd. But without Artur today.

Today:
-- SSL fixed. I'd broken it during earlier refactoring.
-- iChat support fixed. it sends whitespace where other clients don't, and I was using the wrong method which wasn't skipping whitespace.
-- Roster Add(/Update)/Delete -- but only the place where I call the hooks. haven't updated the SQLite plugin to respond yet. also haven't done global roster pushes yet, which requires a hook phase for inter-node communication. should write a reference implementation of that using Spread.

Actually, that's not much. I'd hoped to finish more, but kept getting distracted. There was also some re-reading of the specs and code to catch back up.

Plan:
-- finish roster hooks/APIs to the point where I can finish presence, which is largely untouched, but some of which kinda works already because we route messages around between users, even if we can't understand their magic.
-- get it all documented
-- make sure it works on a single node easily
-- run it on my own server, start testing it
-- use it in the office, with LDAP auth and roster support. (all of the company is on roster by default)
-- finish SASL
-- work more on LJ-specific internode communication and offline storage (not using SQLite! :))
-- ESN delivery to Jabber.
-- Jabber/LJ integration.
-- World Domination.
LinkReply

Comments:
[User Picture]From: crschmidt
2006-04-09 02:41 am (UTC)
s/World Domination/-- ???\n--Profit!/
(Reply) (Thread)
From: (Anonymous)
2006-04-09 03:16 am (UTC)
s/-- //
(Reply) (Parent) (Thread)
From: evan
2006-04-09 04:30 am (UTC)
first_element v first_child: I can guess what that does. Man XML is such a pain.
(Reply) (Thread)
[User Picture]From: brad
2006-04-09 07:32 am (UTC)
It's worse: I had to write my own XML DOM classes because all the stuff on CPAN was so terrible incompatible and inconsistent and plain didn't work. I seriously tried out around 20 modules, only to finally give up and say, "fuck it, going 'standard' doesn't buy me anything here." and rolled my own:

http://code.sixapart.com/svn/djabberd/trunk/lib/DJabberd/XMLElement.pm

Not much code in exchange for so much more sanity and exactly what I need. It's probably missing a ton, but I don't need it.

So in all fairness, the first_element vs. first_child is totally my bug. I chose the internal representation, but I kinda like it.
(Reply) (Parent) (Thread)
From: evan
2006-04-09 09:45 am (UTC)
return grep { ref $_ } @{ $self->{children} };
Does that work? At least in the XML parsers I've seen, there are elements other than text and "real" XML, like comments. See, uh, xmlElementType in libxml.

(Reply) (Parent) (Thread)
[User Picture]From: brad
2006-04-09 01:27 pm (UTC)
It works because it's my own class for exactly what I need, and Jabber/XMPP uses a reduced version of XML that doesn't have comments, PIs, entities, etc. Well, maybe comments are allowed, but I throw them away in the SAX Handler before I instantiate these DOM-like nodes. So my nodes are either scalars (text nodes) or not (ref) in which case they're "real" XML elements.
(Reply) (Parent) (Thread)