per-module per-thread constructors and destructors 
    Alan DeKok 
    aland at ox.org
       
    Tue Aug 30 23:22:16 CEST 2005
    
    
  
Frank Cusack <fcusack at fcusack.com> wrote:
> I need to add a thread local variable to rlm_otp.
  I'm very, very, very, leery of adding thread-specific code to
modules.  It usually makes things much more complicated.
> The other program may return bar first, and even if it returned results
> in the order received, because both threads are blocked in read(), either
> might pick up the result for the other.  An fd per thread fixes this.
> It also fixes the problem that writes() might interleave (atomic writes
> are only guaranteed in certain cases which won't be met here), but that
> is just icing for the cake.
  You could try using a connection pool, like LDAP & SQL.  On
initialization, open one connection.  When the module is called, it
looks for a free connection, and if none exists, creates one.
  As a larger problem, though, multiple modules need those kinds of
pools, which means that the code should be abstracted into the server
core.
  Alan DeKok.
    
    
More information about the Freeradius-Devel
mailing list