Patch from Robert Vogelgesang:
authorPaul Mackerras <paulus@samba.org>
Thu, 28 Oct 2004 00:24:40 +0000 (00:24 +0000)
committerPaul Mackerras <paulus@samba.org>
Thu, 28 Oct 2004 00:24:40 +0000 (00:24 +0000)
commitcbb598e017f8808949953dc57e42c8cf4e9aeb92
treed659196da1e16aab8cca8f4eaa59f135695d8dff
parentefc4e8025a12a2337b6f0116cce491d38323f2f0
Patch from Robert Vogelgesang:
This patch does two things:
o It adds some debugging messages.
o "cleanup()" will no longer be added to the link_down_notifier
chain.
The debugging messages are obvious.
The problem with cleanup() in the link_down_notifier chain is only
half-way that there could be cases where the link would go up again
and without a further authentication -- I just don't know if this
can happen.  But this part of the patch is a work-around for a
_real_ problem/bug in the radius plugin (not the radattr plugin):

The radius plugin calls functions registered via the
radius_attributes_hook after each PAP authentication (which is
correct), but only after the _first_ successful CHAP authentication
during a session.  Subsequent CHAP authentications are performed,
but the radius_attributes_hook will not be processed again.

This can happen in a setup where pppd is used as a back-end
        by a L2TP daemon, in case the PPP session at the other side
        of the L2TP tunnel reconnects, but the L2TP daemon at that
        side just reuses the old L2TP tunnel instead of creating a
        new one.  In such situations, an incomming follow-up session
via an existing T2TP tunnel would re-use the same instance of
pppd; the incomming CHAP authentication would first tear down
the old session, which in turn would call the link_down_notifier.
When the _subsequent_ CHAP authentication succeeds, there is
currently no call to the function assigned to
radius_attributes_hook (here: print_attributes(); THIS BUG
REMAINS AND NEEDS TO BE FIXED).
To summarize: The radius plugin calls the function registered
via the radius_attributes_hook after _each_ successful PAP
authentication, but only after the _first_ successful CHAP
authentication; radius_attributes_hook _should_ be processed
after _each_ successful CHAP authentication.

I have currently no patch for this bug; furthermore, I should
first contact the author of the radius plugin and ask him,
_why_ he has programmed a special handling of subsequent
CHAP authentications.

With the following patch, the follow-up session can re-use the
radattr-file left over from the previous session, which is OK
in our application, but may cause problems in others.
Note: This is only a problem when CHAP is used; subsequent
sessions authenticated with PAP are OK, with and without this
patch.
pppd/plugins/radius/radattr.c