On Mon, Apr 23, 2007 at 04:39:22PM +0200, Alan DeKok wrote:
> Kostas Zorbadelos wrote:
> > If I do 
> > 
> > ./configure --prefix=/opt/freeradius
> > 
> > the build scripts presume that --enable-developer is true.
> 
>   That may be an issue only in 1.1.6.  You should be able to change it
> by doing --disable-developer.
> 

This is exactly what I did. The reason I mention it is because I think
the default should be sane in future releases of freeradius (that is
developer options switched off by default).

> > This has
> > the effect that -DNDEBUG is not defined in CFLAGS during compilation,
> > among other things, so the rad_assert() function can abort freeradius
> > operation in production environments.
> 
>   Which is not necessarily a bad thing.  Yes, it's bad for your RADIUS
> server to go down.  It's arguably worse for the RADIUS server to keep
> running, and doing... something... after it notices that internal sanity
> checks have failed.
> 

I disagree with you on this one Alan. I discovered all these issues I
mention the hard way, after our radius server stopped running in
random times (after a failure in rad_assert() in request_list.c around
the section 

... 
static int refresh_request(REQUEST *request, void *data)
...

        /*
         *  If the request is marked as a delayed reject, AND it's
         *  time to send the reject, then do so now.
         */
        if (request->finished &&
            ((request->options & RAD_REQUEST_OPTION_DELAYED_REJECT) != 0)) {
-------->       rad_assert(request->child_pid == NO_SUCH_CHILD_PID);
...)


In production environments the server should be able to at least
report the errors it encounters and continue operations. Service
availability is the most important.

In our case, after I recompiled freeradius with -DNDEBUG option set,
we noticed no further noticable problems in our radius service.  


> > I believe that by default, --enable-developer should be false unless
> > explicitly set during configure. 
> > Let me know if you need anything else to trace the issue.
> 
>   It's just a couple of lines of shell scripting in configure.in.
>

As far as I can tell, the following minor patch should take care of the
issue of having developer flags switched off be default:

--- configure.in.orig   Tue Apr 24 12:02:13 2007
+++ configure.in        Tue Apr 24 12:02:40 2007
@@ -278,11 +278,11 @@
 AC_ARG_ENABLE(developer,
 [  --enable-developer               Enables features of interest to 
developers.],
 [ case "$enableval" in
-    no)
-       developer=no
+    yes)
+       developer=yes
        ;;
     *)
-       developer=yes
+       developer=no
   esac ]
 )


> > Moreover, in a Solaris 9 environment
> > --enable-developer or --disable-developer seem to be ignored and
> > someone should define CFLAGS explicitly in the configure command to
> > define -NDEBUG macro.
> > 
 
I didn't manage to undestand however why in a Solaris environment,
--disable-developer seems to be ignored. Even if I set
--disable-developer in configure, the -DNDEBUG macro is not passed in
compilation options.
Find attached (a gzipped) BUILD log in my environment.

Thanks,

Kostas Zorbadelos



>   Alan DeKok.
> --
>   http://deployingradius.com       - The web site of the book
>   http://deployingradius.com/blog/ - The blog
> - 
> List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html
> 

Attachment: BUILD.solaris-disable-developer.log.gz
Description: Binary data

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

Reply via email to