mod_privacy.c.patch   [plain text]


--- jabberd-2.1.24.1/sm/mod_privacy.c	2008-04-27 02:57:18.000000000 -0700
+++ mod_privacy.c.new	2009-11-12 19:13:18.000000000 -0800
@@ -623,6 +623,10 @@
                 if(scan->next != NULL)
                     scan->next->prev = scan->prev;
             }
+
+            if (zlist->last == scan)
+                zlist->last = scan->prev;
+
             /* and from the storage */
             sprintf(filter, "(&(type=3:jid)(value=%i:%s)(deny=1)", strlen(jid_full(scan->jid)), jid_full(scan->jid));
             storage_delete(st, "privacy-items", jid_user(user->jid), filter);
@@ -849,7 +853,7 @@
             if(push) {
                 for(sscan = sess->user->sessions; sscan != NULL; sscan = sscan->next) {
                     /* don't push to us or to anyone who hasn't requested blocklist */
-                    if(sscan->module_data[mod->index] == NULL || ((privacy_t) sscan->module_data[mod->index])->blocklist == 0)
+                    if(sscan == sess || sscan->module_data[mod->index] == NULL || ((privacy_t) sscan->module_data[mod->index])->blocklist == 0)
                         continue;
 
                     result = pkt_dup(pkt, jid_full(sscan->jid), NULL);