Hi Stefano, I just want to give you an update on my trouble shooting effort today.
I found out that the execution of '/etc/network/if-up.d/' is not reliable all the time. From one boot to another boot I get different result. Practically I have 3 interfaces, lo, eth00, and eth10. On some boot, I get '/etc/network/if-up.d/' 3x on each those interfaces. On other boot, I only get 1x. Most of the boot, I get 2x on eth00 & eth10 (some times the order is the other way around). Obviously at boot ubuntu may combine the execution of '/etc/network/if-up.d/' if multiple network interface is up very close. Now, when I have multiple execution of '/etc/network/if-up.d/', I can see that some times I have race condition (if the '/etc/network/if- up.d/cntlm' are executed too close with each other) that the start-stop- daemon fail to detect the start of the previous instance. Giving me 2 instances of cntlm trying to start at the same time. Due to all this process happens pretty much in parallel, I even have the following sequence: - eth00 up event executes '/etc/network/if-up.d/cntlm' - eth10 up event executes '/etc/network/if-up.d/cntlm' - '/etc/init.d/cntlm' is executed via '/etc/rc2.d/S20cntlm' - '/etc/init.d/cntlm' is executed by '/etc/network/if-up.d/cntlm' due to eth00 is up This some times cause the 2nd instance of cntlm to be started if it's executed too close with the above. - '/etc/init.d/cntlm' is executed by '/etc/network/if-up.d/cntlm' due to eth10 is up So I ends up putting the following in my '/etc/network/if-up.d/cntlm': # Check whether cntlm is enabled in this runlevel, if so restart it. level="unknown" while [ "$level" = "unknown" ]; do level=`runlevel | cut -d" " -f2` done if [ -e /etc/rc${level}.d/S??cntlm -a "$IFACE" != "lo" ]; then logger -f /var/log/syslog -t $IFACE Restarting cntlm in $(($$ % 10)) s. sleep $(($$ % 10)) # invoke-rc.d --quiet cntlm restart >/dev/null 2>&1 || true fi And by putting random sleep, I managed to avoid race condition at most of the time. But, the cntlm STILL failed in forwarding the request from the client. Even I take away the '/etc/network/if-up.d/cntlm', I still get exact same result on both Config 1 & 2. After putting '-v' when I start the cntlm in '/etc/init.d/cntlm', I get extra prints and get the following failure: direct_request() -> host_connect()> so_resolv(). with error code that the destination is temporarily not available. Now the strange thing is I always managed to ping the destination server by name when the cntlm error situation occurs. Since the so_resolve() is only a wrapper to gethostbyname(), then it should work. Putting delay upto 10 sec. inside '/etc/init.d/cntlm' just before calling start-stop-daemon in start case, didn't help. I literally *always* have to restart the cntlm manually to make it work. Any thought??? Cheers //Edo -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/825593 Title: cntlm does not work at reboot To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/cntlm/+bug/825593/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs