]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
send the whole request, not just the virtual server
authorMatthew Newton <matthew-git@newtoncomputing.co.uk>
Sat, 29 May 2021 14:43:21 +0000 (15:43 +0100)
committerAlan T. DeKok <aland@freeradius.org>
Mon, 31 May 2021 12:27:09 +0000 (08:27 -0400)
src/main/state.c

index 58b3f49c8e3b56a10af06a4bd6b2b3651d04884f..732cf89deab2a9d6e8fed368b08da3b4928bf696 100644 (file)
@@ -185,7 +185,7 @@ void fr_state_delete(fr_state_t *state)
 /*
  *     Create a new entry.  Called with the mutex held.
  */
-static state_entry_t *fr_state_create(fr_state_t *state, const char *server, RADIUS_PACKET *packet, state_entry_t *old)
+static state_entry_t *fr_state_create(fr_state_t *state, REQUEST *request, RADIUS_PACKET *packet, state_entry_t *old)
 {
        size_t i;
        uint32_t x;
@@ -319,7 +319,7 @@ static state_entry_t *fr_state_create(fr_state_t *state, const char *server, RAD
 
        /*      Make unique for different virtual servers handling same request
         */
-       if (server) *((uint32_t *)(&entry->state[4])) ^= fr_hash_string(server);
+       if (request->server) *((uint32_t *)(&entry->state[4])) ^= fr_hash_string(request->server);
 
        if (!rbtree_insert(state->tree, entry)) {
                talloc_free(entry);
@@ -521,7 +521,7 @@ bool fr_state_put_vps(REQUEST *request, RADIUS_PACKET *original, RADIUS_PACKET *
                old = NULL;
        }
 
-       entry = fr_state_create(state, request->server, packet, old);
+       entry = fr_state_create(state, request, packet, old);
        if (!entry) {
                PTHREAD_MUTEX_UNLOCK(&state->mutex);
                return false;
@@ -610,7 +610,7 @@ bool fr_state_put_data(fr_state_t *state, REQUEST *request, RADIUS_PACKET *origi
                old = NULL;
        }
 
-       entry = fr_state_create(state, request->server, packet, old);
+       entry = fr_state_create(state, request, packet, old);
        if (!entry) {
                PTHREAD_MUTEX_UNLOCK(&state->mutex);
                return false;