mod_iq_vcard.c.patch [plain text]
--- /tmp/jabberd-2.1.24.1/sm/mod_iq_vcard.c 2008-04-27 02:57:18.000000000 -0700
+++ ./jabberd2/sm/mod_iq_vcard.c 2008-11-24 14:21:54.000000000 -0800
@@ -30,7 +30,7 @@
#define uri_VCARD "vcard-temp"
static int ns_VCARD = 0;
-#define VCARD_MAX_FIELD_SIZE (16384)
+#define VCARD_MAX_FIELD_SIZE (32768)
/**
* these are the vcard attributes that gabber supports. they're also
@@ -191,6 +191,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:
@@ -228,6 +231,10 @@ static mod_ret_t _iq_vcard_in_sess(mod_i
}
os = _iq_vcard_to_object(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);
@@ -321,6 +328,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: