mod_roster.c.patch   [plain text]


--- /tmp/jabberd-2.2.14/sm/mod_roster.c	2011-05-31 15:11:37.000000000 -0700
+++ ./jabberd2/sm/mod_roster.c	2011-06-22 20:13:00.000000000 -0700
@@ -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);