more xmpp presence stuff
authorArt Cancro <ajc@citadel.org>
Sat, 1 Dec 2007 18:10:54 +0000 (18:10 +0000)
committerArt Cancro <ajc@citadel.org>
Sat, 1 Dec 2007 18:10:54 +0000 (18:10 +0000)
citadel/modules/jabber/serv_xmpp.c
citadel/modules/jabber/serv_xmpp.h
citadel/modules/jabber/xmpp_presence.c
citadel/modules/jabber/xmpp_queue.c

index 4e758c8b1d4dea12225ef5fced4eb7bc40574c77..1932a6dd7b49add6c9363ecee288ced5493020ee 100644 (file)
@@ -399,7 +399,7 @@ CTDL_MODULE_INIT(jabber)
                                        CitadelServiceXMPP);
                CtdlRegisterSessionHook(xmpp_cleanup_function, EVT_STOP);
                 CtdlRegisterSessionHook(xmpp_login_hook, EVT_LOGIN);
-                CtdlRegisterSessionHook(xmpp_login_hook, EVT_LOGOUT);
+                CtdlRegisterSessionHook(xmpp_logout_hook, EVT_LOGOUT);
 
        #else
                lprintf(CTDL_INFO, "This server is missing the Expat XML parser.  Jabber service will be disabled.\n");
index 50e6c609653a211f4f9fe90a932e2e889f5565ee..54bb87ea53dfb3a4a1ee3417c126a6251d0d593f 100644 (file)
@@ -51,3 +51,4 @@ void jabber_wholist_presence_dump(void);
 void jabber_output_incoming_messages(void);
 void xmpp_queue_event(int, char *);
 void xmpp_process_events(void);
+void xmpp_presence_notify(char *, char *);
index 678e399eeabc4c050f16546e308dcac15ea7141f..80e3e709609236bfc4caf6dd6fcbe6166944d35d 100644 (file)
@@ -66,4 +66,11 @@ void jabber_wholist_presence_dump(void)
        }
 }
 
+
+void xmpp_presence_notify(char *presence_jid, char *presence_type) {
+       /* FIXME subject this to the same conditions as above */
+       cprintf("<presence type=\"%s\" from=\"%s\">", presence_type, presence_jid);
+}
+
+
 #endif /* HAVE_EXPAT */
index 744c4ce3fa6803f8e084de0cd4eff400bd1f4f0a..3191cac9dae66a63da0baab8839a2e8d9c8a721e 100644 (file)
@@ -117,7 +117,17 @@ void xmpp_process_events(void) {
        for (xptr=xmpp_queue; xptr!=NULL; xptr=xptr->next) {
                if (xptr->event_seq > XMPP->last_event_processed) {
 
-                       /* FIXME do something */
+                       switch(xptr->event_type) {
+
+                               case XMPP_EVT_LOGIN:
+                                       xmpp_presence_notify(xptr->event_jid, "available");
+                                       break;
+
+                               case XMPP_EVT_LOGOUT:
+                                       xmpp_presence_notify(xptr->event_jid, "unavailable");
+                                       break;
+
+                       }
 
                        if (xptr->event_seq > highest_event) {
                                highest_event = xptr->event_seq;