Move clientSetUser() to acl.c, rename vecFindIndexOf to vecIndexOf

Move clientSetUser() from a static inline in server.h to a regular
function in acl.c alongside other user-management functions. The
function has side-effect logic and is expected to grow;

Rename vecFindIndexOf() to vecIndexOf() for brevity and consistency
with standard container APIs.
This commit is contained in:
Hristo Staykov 2026-05-26 13:59:15 +03:00
parent cadce84439
commit 52fed302ca
5 changed files with 25 additions and 21 deletions

View file

@ -523,6 +523,14 @@ void ACLCopyUser(user *dst, user *src) {
}
}
/* Set the user for a client, performing any necessary bookkeeping such as
* updating broadcast tracking state for the user switch. */
void clientSetUser(client *c, user *new_user) {
user *old = c->user;
c->user = new_user;
trackingBroadcastPostUserSwitch(c, old);
}
/* Given a command ID, this function set by reference 'word' and 'bit'
* so that user->allowed_commands[word] will address the right word
* where the corresponding bit for the provided ID is stored, and

View file

@ -3362,11 +3362,7 @@ uint64_t trackingGetTotalKeys(void);
uint64_t trackingGetTotalPrefixes(void);
void trackingBroadcastInvalidationMessages(void);
void trackingBroadcastPostUserSwitch(client *c, user *old_user);
static inline void clientSetUser(client *c, user *new_user) {
user *old = c->user;
c->user = new_user;
trackingBroadcastPostUserSwitch(c, old);
}
void clientSetUser(client *c, user *new_user);
int checkPrefixCollisionsOrReply(client *c, robj **prefix, size_t numprefix);
/* List data type */

View file

@ -67,7 +67,7 @@ void disableTracking(client *c) {
(unsigned char*)&c->user, sizeof(c->user),
(void**)&user_clients);
serverAssert(found);
ssize_t idx = vecFindIndexOf(user_clients, c);
ssize_t idx = vecIndexOf(user_clients, c);
serverAssert(idx >= 0);
vecSwapRemoveAt(user_clients, idx);
if (vecSize(user_clients) == 0) {
@ -181,7 +181,7 @@ static void enableBcastTrackingForPrefix(client *c, char *prefix, size_t plen) {
user_clients, NULL);
}
if (vecFindIndexOf(user_clients, c) < 0) {
if (vecIndexOf(user_clients, c) < 0) {
vecPush(user_clients, c);
if (c->client_tracking_prefixes == NULL)
c->client_tracking_prefixes = raxNew();
@ -714,7 +714,7 @@ static void trackingBcastMoveClient(client *c, user *old_user) {
(unsigned char*)&old_user, sizeof(old_user),
(void**)&from_clients);
serverAssert(found);
ssize_t idx = vecFindIndexOf(from_clients, c);
ssize_t idx = vecIndexOf(from_clients, c);
serverAssert(idx >= 0);
vecSwapRemoveAt(from_clients, idx);
if (vecSize(from_clients) == 0) {

View file

@ -101,7 +101,7 @@ void vecPush(vec *v, void *value) {
}
/* Return the index of the first occurrence of 'elem', or -1 if not found. */
ssize_t vecFindIndexOf(const vec *v, void *elem) {
ssize_t vecIndexOf(const vec *v, void *elem) {
for (size_t i = 0; i < v->size; i++) {
if (v->data[i] == elem) return (ssize_t)i;
}
@ -236,21 +236,21 @@ int vectorTest(int argc, char **argv, int flags)
vecRelease(&v);
test_cond("vecRelease() free method is a no-op on empty vector",
vecTestFreeCalls == 0);
/* vecFindIndexOf tests */
/* vecIndexOf tests */
vecInit(&v, NULL, 0);
test_cond("vecFindIndexOf() returns -1 on empty vector",
vecFindIndexOf(&v, &one) == -1);
test_cond("vecIndexOf() returns -1 on empty vector",
vecIndexOf(&v, &one) == -1);
vecPush(&v, &one);
vecPush(&v, &two);
vecPush(&v, &three);
test_cond("vecFindIndexOf() finds first element",
vecFindIndexOf(&v, &one) == 0);
test_cond("vecFindIndexOf() finds middle element",
vecFindIndexOf(&v, &two) == 1);
test_cond("vecFindIndexOf() finds last element",
vecFindIndexOf(&v, &three) == 2);
test_cond("vecFindIndexOf() returns -1 for missing element",
vecFindIndexOf(&v, &four) == -1);
test_cond("vecIndexOf() finds first element",
vecIndexOf(&v, &one) == 0);
test_cond("vecIndexOf() finds middle element",
vecIndexOf(&v, &two) == 1);
test_cond("vecIndexOf() finds last element",
vecIndexOf(&v, &three) == 2);
test_cond("vecIndexOf() returns -1 for missing element",
vecIndexOf(&v, &four) == -1);
vecRelease(&v);
/* vecSwapRemoveAt tests */

View file

@ -98,7 +98,7 @@ void vecReserve(vec *v, size_t mincap);
void vecPush(vec *v, void *value);
/* Return the index of the first occurrence of 'elem', or -1 if not found. */
ssize_t vecFindIndexOf(const vec *v, void *elem);
ssize_t vecIndexOf(const vec *v, void *elem);
/* Remove the element at 'index' by swapping with the last element.
* Does not invoke the free callback. Requires index < vecSize(v). */