mod_iq_vcard.c.patch [plain text]
--- /tmp/jabberd-2.2.14/sm/mod_iq_vcard.c 2011-05-31 15:11:37.000000000 -0700
+++ ./jabberd2/sm/mod_iq_vcard.c 2011-06-22 20:13:00.000000000 -0700
@@ -208,6 +208,9 @@ static mod_ret_t _iq_vcard_in_sess(mod_i
/* get */
if(pkt->type == pkt_IQ) {
+ if (storage_rate_limit(sess->user->sm->st, jid_user(sess->jid)) == st_RATELIMITED)
+ return -stanza_err_RESOURCE_CONSTRAINT;
+
ret = storage_get(sess->user->sm->st, "vcard", jid_user(sess->jid), NULL, &os);
switch(ret) {
case st_FAILED:
@@ -245,6 +248,10 @@ static mod_ret_t _iq_vcard_in_sess(mod_i
}
os = _iq_vcard_to_object(mi, pkt);
+
+ if (storage_rate_limit(sess->user->sm->st, jid_user(sess->jid)) == st_RATELIMITED)
+ return -stanza_err_RESOURCE_CONSTRAINT;
+
ret = storage_replace(sess->user->sm->st, "vcard", jid_user(sess->jid), NULL, os);
os_free(os);
@@ -338,6 +345,9 @@ static mod_ret_t _iq_vcard_pkt_user(mod_
if(pkt->type == pkt_IQ_SET)
return -stanza_err_FORBIDDEN;
+ if (storage_rate_limit(user->sm->st, pkt->from) == st_RATELIMITED)
+ return -stanza_err_RESOURCE_CONSTRAINT;
+
ret = storage_get(user->sm->st, "vcard", jid_user(user->jid), NULL, &os);
switch(ret) {
case st_FAILED: