mod_roster.c.patch   [plain text]


--- /tmp/jabberd-2.2.13/sm/mod_roster.c	2011-02-23 08:24:34.000000000 -0800
+++ ./jabberd2/sm/mod_roster.c	2011-02-24 16:25:21.000000000 -0800
@@ -243,6 +243,9 @@ static mod_ret_t _roster_in_sess_s10n(mo
         pres_roster(sess, item);
     }
 
+    if (storage_rate_limit(sess->user->sm->st, jid_user(sess->user->jid)) == st_RATELIMITED)
+        return -stanza_err_RESOURCE_CONSTRAINT;
+
     /* save changes */
     _roster_save_item(sess->user, item);
     
@@ -456,6 +459,9 @@ static void _roster_set_item(pkt_t pkt, 
 
     log_debug(ZONE, "added %s to roster (to %d from %d ask %d name %s ngroups %d)", jid_full(item->jid), item->to, item->from, item->ask, item->name, item->ngroups);
 
+    if (storage_rate_limit(sess->user->sm->st, jid_user(sess->user->jid)) == st_RATELIMITED)
+        return -stanza_err_RESOURCE_CONSTRAINT;
+
     /* save changes */
     _roster_save_item(sess->user, item);
 
@@ -701,6 +707,9 @@ static mod_ret_t _roster_pkt_user(mod_in
             item->ask = 0;
     }
 
+    if (storage_rate_limit(user->sm->st, pkt->from) == st_RATELIMITED)
+        return -stanza_err_RESOURCE_CONSTRAINT;
+
     /* save changes */
     _roster_save_item(user, item);