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);