#include <freeradius-devel/radiusd.h>
#include <freeradius-devel/modules.h>
+#include <freeradius-devel/rad_assert.h>
static void cleanup(RADIUS_PACKET *packet)
instance = instance; /* -Wunused */
last = request->config_items;
+ rad_assert(request->proxy == NULL);
/*
* Send as many packets as necessary to different
RDEBUG2("ERROR: Cannot replicate unknown packet code %d",
request->packet->code);
cleanup(packet);
- return RLM_MODULE_FAIL;
+ rcode = RLM_MODULE_FAIL;
+ break;
case PW_AUTHENTICATION_REQUEST:
pool = realm->auth_pool;
if (!packet) {
packet = rad_alloc(1);
- if (!packet) return RLM_MODULE_FAIL;
+ if (!packet) {
+ rcode = RLM_MODULE_FAIL;
+ break;
+ }
packet->sockfd = -1;
packet->code = request->packet->code;
packet->id = fr_rand() & 0xff;
if (packet->sockfd < 0) {
RDEBUG("ERROR: Failed opening socket: %s", fr_strerror());
cleanup(packet);
- return RLM_MODULE_FAIL;
+ rcode = RLM_MODULE_FAIL;
+ break;
}
packet->vps = paircopy(request->packet->vps);
if (!packet->vps) {
RDEBUG("ERROR: Out of memory!");
cleanup(packet);
- return RLM_MODULE_FAIL;
+ rcode = RLM_MODULE_FAIL;
+ break;
}
/*
RDEBUG("ERROR: Failed replicating packet: %s",
fr_strerror());
cleanup(packet);
- return RLM_MODULE_FAIL;
+ rcode = RLM_MODULE_FAIL;
+ break;
}
/*
}
cleanup(packet);
+ rad_free(&request->proxy);
+
return rcode;
}