Alan DeKok aland at deployingradius.com
Thu Aug 17 23:43:25 CEST 2006

Peter Nixon <listuser at peternixon.net> wrote:
> Heh. Thanks. It fits in nicely with the rest of my plan to take over the
> world :-)

  Sounds good to me.

> We have the this code in production and it seems to be solid so far. 

  Comments: over-writing data->pool_name, even with a mutex lock, is a
bad idea.  Get rid of the mutex lock, and when decoding 'P', do:

  case 'P':
	  const char *x = data->pool_name;
	  VALUE_PAIR *vp = pairfind(request->config_items, PW_POOL_NAME);
	  if (vp) x = data->strvalue;
	  strNcpy(q, x, freespace);
	  q + strlen(q);

  That *should* work, once you add "REQUEST *request" to the function

  Other than that, I've poked it to build in the CVS head, and
committed it there.  It's untested, though.

  Some comments: add a "user key" field to the table, which is a
unique per-use key.  e.g. MAC address, username, etc.  When
allocating, do a SELECT on the key first, and an entry exists that's
marked unused, allocate it.

  The key will also help for accounting packets, too.

  Alan DeKok.
  http://deployingradius.com       - The web site of the book
  http://deployingradius.com/blog/ - The blog

More information about the Freeradius-Devel mailing list