Problem while disconnecting in xl2tpd
I am using xl2tpd as L2TP server for testing L2TP/IPSec. The client used is built-in L2TP client in Windows XP. I am able to establish the tunnel. But if I disconnect the client after keeping it idle for some time, the 'pppd' process running on server side goes into an Uniterruptible Sleep (D) state and then doesn't get killed at that instant. The system all that time waits in the 'waitpid()' function in xl2tpd source code. Eventually when the process somehow gets removed, the signal to drop IPSec tunnel is not going and IPSec tunnel is still present. If I disconnect the client instantaneously, am not seeing this problem.
As an experiment I tried by establishing only L2TP tunnel (without IPSec) and reproduced the same issue. The problem lies somewhere in xl2tpd code.
Can anybody provide any suggestions on this ??????