Hi, More tidying - this time in rlm_pap. In chunks, it's at https://github.com/mcnewton/freeradius-server/commits/rlm_pap_tidy I've submitted a pull request; details for any comments below: faa17a14 - removed the 'encryption_scheme' option entirely, together with the worthless switch() at the bottom. a9d0b282 - the first update in getting rid of the spaghetti gotos. moves the crypt auth check into a separate function. patch looks messier than it is, as there's a lot of indentation changes. d71b7e3b - the main update - move each auth test into a separate small function, to drastically reduce the size of pap_authenticate() and get rid of all the gotos. (I'm not against gotos, but when they jump in and out of ifs and switch()s, it's really hard to follow the code path!) df48421a - previous introduced an few if()s inside the main attribute check loop, and returned within the loop. this tidies that up and moves that outside. also removes the reliance on RLM_MODULE_INVALID as a loop end test, which I wasn't keen on. 52b68318 - moves header-like stuff into rlm_pap.h It now uses a function pointers to select the right auth function depending on the config attribute found. I was slightly worried that calling functions on this might slow things down a bit. However, running 1000 auths in a tight loop (non-threaded server, debug off) shows essentially no difference on my system - over three runs, old code avg 23.516s, new code avg 23.464s. Cheers, Matthew -- Matthew Newton, Ph.D. <mcn4@le.ac.uk> Systems Architect (UNIX and Networks), Network Services, I.T. Services, University of Leicester, Leicester LE1 7RH, United Kingdom For IT help contact helpdesk extn. 2253, <ithelp@le.ac.uk>