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