Got the unsolicited roster pushes working.
authorArt Cancro <ajc@citadel.org>
Mon, 3 Dec 2007 04:10:27 +0000 (04:10 +0000)
committerArt Cancro <ajc@citadel.org>
Mon, 3 Dec 2007 04:10:27 +0000 (04: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 1932a6dd7b49add6c9363ecee288ced5493020ee..cc7eba8736b5eea636c6dc4e26c0998586b6a56c 100644 (file)
@@ -320,6 +320,7 @@ void xmpp_greeting(void) {
        strcpy(CC->cs_clientname, "Jabber session");
        CC->session_specific_data = malloc(sizeof(struct citxmpp));
        memset(XMPP, 0, sizeof(struct citxmpp));
+       XMPP->last_event_processed = queue_event_seq;
 
        /* XMPP does not use a greeting, but we still have to initialize some things. */
 
index 39030c8b714ed3c8396cc1a80cec91b3ea114028..fac8d3731931cc1283b211ca8ebd5b4c448541c0 100644 (file)
@@ -35,6 +35,7 @@ struct xmpp_event {
 };
 
 extern struct xmpp_event *xmpp_queue;
+extern int queue_event_seq;
 
 enum {
        XMPP_EVT_LOGIN,
index bfb9776bfca7275c54c5c41bdbf5a1b9462c379c..9cdbf4e7a05dfb6223f5cfaf41239764a64211db 100644 (file)
@@ -53,7 +53,7 @@
  */
 void jabber_wholist_presence_dump(void)
 {
-       struct CitContext *cptr;
+       struct CitContext *cptr = NULL;
        int aide = (CC->user.axlevel >= 6);
 
        for (cptr = ContextList; cptr != NULL; cptr = cptr->next) {
@@ -81,7 +81,7 @@ void xmpp_presence_notify(char *presence_jid, char *presence_type) {
        if (IsEmptyStr(presence_jid)) return;
        lprintf(CTDL_DEBUG, "Sending presence info about <%s> to session %d\n", presence_jid, CC->cs_pid);
 
-       /* Transmit an unsolicited roster update 
+       /* Transmit an unsolicited roster update */
        for (cptr = ContextList; cptr != NULL; cptr = cptr->next) {
                if (!strcasecmp(cptr->cs_inet_email, presence_jid)) {
                        cprintf("<iq id=\"unsolicited_%x\" type=\"result\">", ++unsolicited_id);
@@ -90,11 +90,10 @@ void xmpp_presence_notify(char *presence_jid, char *presence_type) {
                        cprintf("</query>"
                                "</iq>");
                }
-       } */
+       }
 
-       /* Now transmit unsolicited presence information
+       /* Now transmit unsolicited presence information */
        cprintf("<presence type=\"%s\" from=\"%s\"></presence>", presence_type, presence_jid);
-       */
 }
 
 
index 8a0e79554d6d60c535c63d85a962ee2823f4bff6..b78f762ee92a891166dfcc29e55683e65af8f630 100644 (file)
 #include <expat.h>
 #include "serv_xmpp.h"
 
-
+int queue_event_seq = 0;
 
 void xmpp_queue_event(int event_type, char *email_addr) {
 
-       static int seq = 0;
        struct xmpp_event *xptr = NULL;
        struct xmpp_event *new_event = NULL;
        struct xmpp_event *last = NULL;
@@ -79,7 +78,7 @@ void xmpp_queue_event(int event_type, char *email_addr) {
        new_event = (struct xmpp_event *) malloc(sizeof(struct xmpp_event));
        new_event->next = NULL;
        new_event->event_time = time(NULL);
-       new_event->event_seq = ++seq;
+       new_event->event_seq = ++queue_event_seq;
        new_event->event_type = event_type;
        new_event->session_which_generated_this_event = CC->cs_pid;
        safestrncpy(new_event->event_jid, email_addr, sizeof new_event->event_jid);