Date: Sat, 19 Jul 1997 16:28:26 +1000 From: Bruce Evans <bde@zeta.org.au> To: bde@zeta.org.au, davidn@labs.usn.blaze.net.au Cc: cvs-all@FreeBSD.ORG, cvs-committers@FreeBSD.ORG, cvs-lib@FreeBSD.ORG, davidn@FreeBSD.ORG Subject: Re: cvs commit: src/lib/libutil login_auth.c Message-ID: <199707190628.QAA29484@godzilla.zeta.org.au>
index | next in thread | raw e-mail
>> > Modified files: >> > lib/libutil login_auth.c >> > Log: >> > sleep() after sending 'nologin' file to ensure output is drained before >> > disconnect. >> >> This should use tcdrain(3). > >Well, no, it doesn't appear to be an operating system issue. The >sleep() is done after the close(). The problem occurs when DCD >on a serial port is lowered before the *modem* has sent all of >its data, and I can easily reproduce the problem on a telnet What modem? Output might be connected to the console, and then an unnecessary sleep is very annoying. >connection as well (due to telnet's usual misfeature of quitting >early). tcdrain() before the close() has no effect - I tried that >before I understood the problem. This might be caused by driver bugs. Draining didn't work right in sio before rev.1.152 (1996/11/30), and corresponding fixes haven't been made in any other serial drivers :-(. Telnet seems to work right here. I tried a 75K file for /etc/nologin. It's hard handle the modem hanging up before sending all the data that has been sent to it. A naive calculation like sleeptime = howmany(filesize, DTEspeed / 10); is very wrong if the effective line speed is much smaller than the DTE speed or the file size is much smaller than the modem buffer size. Brucehome | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199707190628.QAA29484>
