I think, this module needs a little patch.
This will prevent uncontrolled situation, when no space left on
device.
At this moment, if there are no space left, then rlm_detail doesn't
return any error, when he cannot flush buffered information to the
file. Client continue sending accounting to the primary server, but
server cannot save it. As a result - accounting info can be lost.
Just meet this problem and it was solved with this code change.
--- rlm_detail.c 2011-05-18 09:37:28.000000000 +0300
+++ rlm_detail.c.new 2011-05-18 09:41:26.000000000 +0300
@@ -185,6 +185,7 @@
int lock_count;
struct timeval tv;
VALUE_PAIR *pair;
+ int fpf;
struct detail_instance *inst = instance;
@@ -463,7 +464,11 @@
RDEBUG2("Released filelock");
}
- fclose(outfp);
+ fpf = fclose(outfp);
+ if (fpf == EOF) {
+ radlog(L_ERR,"rlm_detail: cannot close the file!
(%s)", strerror(errno));
+ return RLM_MODULE_FAIL;
+ }
/*
* And everything is fine.
rlm_detail.patch
Description: Binary data
- List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html

