{
GString *key, *value;
guint cur_shift = *shift;
- guint i;
+ guint i, klen;
struct rspamd_fuzzy_cmd *cmd;
if (io_cmd->is_shingle) {
cmd = &io_cmd->cmd.shingle.basic;
-
- if (cmd->cmd == FUZZY_WRITE) {
-
- }
}
else {
cmd = &io_cmd->cmd.normal;
*/
/* HSET */
- key = g_string_new (session->backend->redis_object);
+ klen = strlen (session->backend->redis_object) +
+ sizeof (cmd->digest) + 1;
+ key = g_string_sized_new (klen);
+ g_string_append (key, session->backend->redis_object);
g_string_append_len (key, cmd->digest, sizeof (cmd->digest));
- value = g_string_sized_new (32);
+ value = g_string_sized_new (30);
rspamd_printf_gstring (value, "%d", cmd->flag);
session->argv[cur_shift] = g_strdup ("HSET");
session->argv_lens[cur_shift++] = sizeof ("HSET") - 1;
}
/* HINCRBY */
- key = g_string_new (session->backend->redis_object);
+ key = g_string_sized_new (klen);
+ g_string_append (key, session->backend->redis_object);
g_string_append_len (key, cmd->digest, sizeof (cmd->digest));
- value = g_string_sized_new (32);
+ value = g_string_sized_new (30);
rspamd_printf_gstring (value, "%d", cmd->value);
session->argv[cur_shift] = g_strdup ("HINCRBY");
session->argv_lens[cur_shift++] = sizeof ("HINCRBY") - 1;
}
/* EXPIRE */
- key = g_string_new (session->backend->redis_object);
+ key = g_string_sized_new (klen);
+ g_string_append (key, session->backend->redis_object);
g_string_append_len (key, cmd->digest, sizeof (cmd->digest));
- value = g_string_sized_new (32);
+ value = g_string_sized_new (30);
rspamd_printf_gstring (value, "%d",
(gint)rspamd_fuzzy_backend_get_expire (bk));
session->argv[cur_shift] = g_strdup ("EXPIRE");
}
/* INCR */
- key = g_string_new (session->backend->redis_object);
+ key = g_string_sized_new (klen);
+ g_string_append (key, session->backend->redis_object);
g_string_append (key, "_count");
session->argv[cur_shift] = g_strdup ("INCR");
session->argv_lens[cur_shift++] = sizeof ("INCR") - 1;
}
else if (cmd->cmd == FUZZY_DEL) {
/* DEL */
- key = g_string_new (session->backend->redis_object);
+ klen = strlen (session->backend->redis_object) +
+ sizeof (cmd->digest) + 1;
+
+ key = g_string_sized_new (klen);
+ g_string_append (key, session->backend->redis_object);
g_string_append_len (key, cmd->digest, sizeof (cmd->digest));
session->argv[cur_shift] = g_strdup ("DEL");
session->argv_lens[cur_shift++] = sizeof ("DEL") - 1;
}
/* DECR */
- key = g_string_new (session->backend->redis_object);
+ key = g_string_sized_new (klen);
+ g_string_append (key, session->backend->redis_object);
g_string_append (key, "_count");
session->argv[cur_shift] = g_strdup ("DECR");
session->argv_lens[cur_shift++] = sizeof ("DECR") - 1;
}
if (io_cmd->is_shingle) {
-
-
if (cmd->cmd == FUZZY_WRITE) {
+ klen = strlen (session->backend->redis_object) +
+ 64 + 1;
+
for (i = 0; i < RSPAMD_SHINGLE_SIZE; i ++) {
guchar *hval;
/*
*/
/* SETEX */
- key = g_string_new (session->backend->redis_object);
- rspamd_printf_gstring (key, "_%d_%uL", i,
+ key = g_string_sized_new (klen);
+ rspamd_printf_gstring (key, "%s_%d_%uL",
+ session->backend->redis_object,
+ i,
io_cmd->cmd.shingle.sgl.hashes[i]);
- value = g_string_sized_new (32);
+ value = g_string_sized_new (30);
rspamd_printf_gstring (value, "%d",
(gint)rspamd_fuzzy_backend_get_expire (bk));
hval = g_malloc (sizeof (io_cmd->cmd.shingle.basic.digest));
}
}
else if (cmd->cmd == FUZZY_DEL) {
+ klen = strlen (session->backend->redis_object) +
+ 64 + 1;
+
for (i = 0; i < RSPAMD_SHINGLE_SIZE; i ++) {
- key = g_string_new (session->backend->redis_object);
- rspamd_printf_gstring (key, "_%d_%uL", i,
+ key = g_string_sized_new (klen);
+ rspamd_printf_gstring (key, "%s_%d_%uL",
+ session->backend->redis_object,
+ i,
io_cmd->cmd.shingle.sgl.hashes[i]);
session->argv[cur_shift] = g_strdup ("DEL");
session->argv_lens[cur_shift++] = sizeof ("DEL") - 1;