Brad Fitzpatrick (brad) wrote,
Brad Fitzpatrick

DJabberd Status Update

Artur and I worked on DJabberd last night after work. We:

-- designed the flow of client-incoming and server-incoming messages:
-- filtering, switching (deciding local processing vs. delivery), and then processing or delivery
-- built out a ton of hookchains for said phases
-- implemented default fallback hooks for said phases, adhering to specs
-- annotated more of the specs, so our must-implement-specs test case has more tests
-- documented another ambiguity in the spec
-- started separting out the "Server" object from the "Vhost" object. (a server HAS 1+ vhosts)

Then we built DJabberd::Delivery::Local

Which just does local delivery. (currently just local vhost, but in future local vhost first, then local server, but injecting the message back through the "almost beginning" of the other vhost's filtering hookchain, just bypassing all XML crap, so that vhost's filtering/routing hooks still run all normally.)

The big accomplishment is that message delivery then works. Both client-incoming and server-incoming messages eventually end up in either server-process or deliver, or client-process or deliver. (so the deliver is shared, once filtering/switching is done)

So we were IMing each other from same node, and from GTalk,, etc.

Now that we have the delivery framework, we need to build DJabberd::Delivery::S2S so we send outgoing messages back to GTalk/ (we'll also be building DJabberd::Delivery::LocalCluster after that to do inter-domain delivery for a load-balanced/HA jabber installation.....) Outgoing S2S will be easy considering we already do outgoing connections for Dialback and such. Just had to build out the delivery framework first before we could even really test it.
Tags: djabberd, perl, tech

  • Happy Birthday!

    Happy 20th Birthday, LiveJournal! 🐐🎂🎉

  • hi

    Posting from the iPhone app. Maybe I'm unblocked now.

  • Why, hello...

    Long time no see. How's my baby doing?

  • Post a new comment


    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 1 comment