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.

Attachment: rlm_detail.patch
Description: Binary data

-
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html

Reply via email to