#include <freeradius-devel/rad_assert.h>
-static void cleanup(RADIUS_PACKET *packet)
+static void cleanup(RADIUS_PACKET **packet)
{
- if (!packet) return;
- if (packet->sockfd >= 0) close(packet->sockfd);
- rad_free(&packet);
+ if (!packet || !*packet) return;
+ if ((*packet)->sockfd >= 0) close((*packet)->sockfd);
+ rad_free(packet);
}
/*
pool = NULL;
RDEBUG2("ERROR: Cannot replicate unknown packet code %d",
request->packet->code);
- cleanup(packet);
+ cleanup(&packet);
rcode = RLM_MODULE_FAIL;
break;
packet->sockfd = fr_socket(&home->src_ipaddr, 0);
if (packet->sockfd < 0) {
RDEBUG("ERROR: Failed opening socket: %s", fr_strerror());
- cleanup(packet);
+ cleanup(&packet);
rcode = RLM_MODULE_FAIL;
break;
}
packet->vps = paircopy(request->packet->vps);
if (!packet->vps) {
RDEBUG("ERROR: Out of memory!");
- cleanup(packet);
+ cleanup(&packet);
rcode = RLM_MODULE_FAIL;
break;
}
if (rad_send(packet, NULL, home->secret) < 0) {
RDEBUG("ERROR: Failed replicating packet: %s",
fr_strerror());
- cleanup(packet);
+ cleanup(&packet);
rcode = RLM_MODULE_FAIL;
break;
}
rcode = RLM_MODULE_OK;
}
- cleanup(packet);
+ cleanup(&packet);
rad_free(&request->proxy);
return rcode;