diff --git a/debian/patches/series b/debian/patches/series index d362e03a2..3e3f2eef2 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -42,3 +42,4 @@ sipwise/rtpengine-play-media.patch sipwise/registrar_add_path.patch upstream/limit_the_execution_of_dialplan_reload.patch sipwise/db_redis_fix_scan_usage.patch +sipwise/db_redis_skip_not_eq_type_keys.patch diff --git a/debian/patches/sipwise/db_redis_skip_not_eq_type_keys.patch b/debian/patches/sipwise/db_redis_skip_not_eq_type_keys.patch new file mode 100644 index 000000000..58745a7be --- /dev/null +++ b/debian/patches/sipwise/db_redis_skip_not_eq_type_keys.patch @@ -0,0 +1,64 @@ +--- a/src/modules/db_redis/redis_dbase.c ++++ b/src/modules/db_redis/redis_dbase.c +@@ -279,7 +279,7 @@ + } + + static int db_redis_find_query_key(redis_key_t *key, const str *table_name, +- str *type_name, const db_key_t *_k, const db_val_t *_v, const int _n, ++ str *type_name, const db_key_t *_k, const db_val_t *_v, const db_op_t *_op, const int _n, + str *key_name, int *key_found) { + + unsigned int len; +@@ -297,11 +297,16 @@ + for (i = 0; i < _n; ++i) { + const db_key_t k = _k[i]; + const db_val_t v = _v[i]; ++ const db_op_t op = _op ? _op[i] : NULL; + + if (VAL_NULL(&v)) { + LM_DBG("Skipping null value for given key '%.*s'\n", + k->len, k->s); + break; ++ } else if (op && strcmp(op, OP_EQ)) { ++ LM_DBG("Skipping non-EQ op (%s) for given key '%.*s'\n", ++ op, k->len, k->s); ++ break; + } else if (!str_strcmp(&key->key, (str*)k)) { + LM_DBG("found key in entry key\n"); + if (db_redis_val2str(&v, &val) != 0) goto err; +@@ -389,7 +394,7 @@ + } + table = (redis_table_t*)table_e->u.p; + key = table->entry_keys; +- if (db_redis_find_query_key(key, table_name, &type_name, _k, _v, _n, &keyname, &key_found) != 0) { ++ if (db_redis_find_query_key(key, table_name, &type_name, _k, _v, NULL, _n, &keyname, &key_found) != 0) { + goto err; + } + if (key_found) { +@@ -479,7 +484,7 @@ + str keyname = {NULL, 0}; + key = type->keys; + +- if (db_redis_find_query_key(key, table_name, &type->type, _k, _v, _n, &keyname, &key_found) != 0) { ++ if (db_redis_find_query_key(key, table_name, &type->type, _k, _v, NULL, _n, &keyname, &key_found) != 0) { + goto err; + } + if (key_found) { +@@ -536,7 +541,7 @@ + keyname.len = 0; + key = table->entry_keys; + +- if (db_redis_find_query_key(key, table_name, &typename, _k, _v, _n, &keyname, &key_found) != 0) { ++ if (db_redis_find_query_key(key, table_name, &typename, _k, _v, _op, _n, &keyname, &key_found) != 0) { + goto err; + } + if (key_found) { +@@ -554,7 +559,7 @@ + for (type = table->types; type; type = type->next) { + key = type->keys; + LM_DBG("checking type '%.*s'\n", type->type.len, type->type.s); +- if (db_redis_find_query_key(key, table_name, &type->type, _k, _v, _n, &keyname, &key_found) != 0) { ++ if (db_redis_find_query_key(key, table_name, &type->type, _k, _v, _op, _n, &keyname, &key_found) != 0) { + goto err; + } + if (key_found) {