dab@BERSERKLY.CRAY.COM (David Borman) (09/16/90)
Archive-name: bsd-telnet/14-Sep-90 Original-posting-by: dab@BERSERKLY.CRAY.COM (David Borman) Original-subject: Telnet/telnet release Archive-site: ucbarpa.berkeley.edu [128.32.130.11] Archive-directory: /pub Reposted-by: emv@math.lsa.umich.edu (Edward Vielmetti) A new BSD version of telnet and telnetd are now available for anonymous ftp from ucbarpa.berkeley.edu. There are two files: pub/telnet.90.09.14.tar.Z All the sources pub/telnet.90.09.14.diff.Z Diffs from telnet.90.06.28 This release contains mostly bugfixes, and some POSIX changes. If you are using one of my earlier version of telnet/telnetd, you'll probably want to get this new version. My list of changes started out pretty small, but then as time went by, more and more little problems were discovered. There are no major functionality changes with this release. If you have to make changes to get this code running on your machine, please send me the changes and I'll try to get them into the next release. -David Borman, dab@cray.com This list was extraced from the README giving more detail as to what is changed with this release: Switch the client to use getopt() for parsing the argument list. The 4.3Reno getopt.c is included for systems that don't have getopt(). Use the posix _POSIX_VDISABLE value for what value to use when disabling special characters. If this is undefined, it defaults to 0x3ff. For non-termio systems, TIOCSETP was being used to change the state of the terminal. This causes the input queue to be flushed, which we don't want. This is now changed to TIOCSETN. Take out the "#ifdef notdef" around the code in the server that generates a "sync" when the pty oputput is flushed. The potential problem is that some older telnet clients may go into an infinate loop when they receive a "sync", if so, the server can be compiled with "NO_URGENT" defined. Fix the client where it was setting/clearing the OPOST bit in the c_lflag field, not the c_oflag field. Fix the client where it was setting/clearing the ISTRIP bit in the c_lflag field, not the c_iflag field. (On 4.3Reno, this is the ECHOPRT bit in the c_lflag field.) The client also had its interpretation of WILL BINARY and DO BINARY reversed. Fix a bug in client that would cause a core dump when attempting to remove the last environment variable. In the client, there were a few places were switch() was being passed a character, and if it was a negative value, it could get sign extended, and not match the 8 bit case statements. The fix is to and the switch value with 0xff. Add a couple more printoption() calls in the client, I don't think there are any more places were a telnet command can be received and not printed out when "options" is on. A new flag has been added to the client, "-a". Currently, this just causes the USER name to be sent across, in the future this may be used to signify that automatic authentication is requested. The USER variable is now only sent by the client if the "-a" or "-l user" options are explicity used, or if the user explicitly asks for the "USER" environment variable to be exported. In the server, if it receives the "USER" environment variable, it won't print out the banner message, so that only "Password:" will be printed. This makes the symantics more like rlogin, and should be more familiar to the user. (People are not used to getting a banner message, and then getting just a "Password:" prompt.) Re-vamp the code for starting up the child login process. The code was getting ugly, and it was hard to tell what was really going on. What we do now is after the fork(), in the child: 1) make sure we have no controlling tty 2) open and initialize the tty 3) do a setsid()/setpgrp() 4) makes the tty our controlling tty. On some systems, #2 makes the tty our controlling tty, and #4 is a no-op. The parent process does a gets rid of any controlling tty after the child is fork()ed. Use the strdup() library routine in telnet, instead of the local savestr() routine. If you don't have strdup(), you need to define NO_STRDUP. Add support for ^T (SIGINFO/VSTATUS), found in the 4.3Reno distribution. This maps to the AYT character. The client is now smarter when setting the telnet escape character; it only sets it to one of VEOL and VEOL2 if one of them is undefined, and the other one is not already defined to the telnet escape character. Handle TERMIOS systems that have seperate input and output line speed settings imbedded in the flags. Many other minor bug fixes.