Dear SCO Customer, Support Level Supplement (SLS) PTF7013E, the UnixWare 7 libsocket Patch, contains a modified socket library and sockmod driver which corrects problems with TCP and UNIX domain sockets, UDP performance, and compilation of programs that link libsocket when profiling has been turned on. The following list further describes these problems and how this SLS resolves them: - When a TCP socket is set as non-blocking with the O_NDELAY flag, a write to the socket (using write(2), send(3sock), sendto(3sock), or sendmsg(3sock)) returns the actual number of bytes requested even if the socket is blocked and unable to transmit the data. This SLS modifies the sockets implementation to return only the number of bytes actually transmitted when writing to a TCP socket on which O_NDELAY has been set. A value of 0 is returned if no bytes could be transmitted because the socket was blocked. The behavior of setting O_NONBLOCK on a TCP socket is unaffected. In this case, a value of -1 is returned and EWOULDBLOCK is set in errno if no bytes could be transmitted because the socket was blocked. - When one side of a TCP socket connection performs a write followed by a shutdown(3sock), the other side performing a read may incorrectly fail with the error EPROTO. This SLS modifies the sockets implementation to prevent this behavior. - Data sent by a client immediately before it calls shutdown(3sock) may not be received by the server. This SLS modifies the sockets implementation so that outstanding data can be read from a socket if the remote side has shut down the connection. - If a socket library call such as select(3sock) is interrupted by a signal such as SIGCHLD for which a restartable handler routine has been declared, it may incorrectly fail with the error EPROTO. This SLS modifies the sockets implementation so that restartable signals are handled correctly within socket routines. - A TCP socket connection that makes heavy use of both send(3sock) and recv(3sock)-type calls may incorrectly fail with the error EPROTO. This SLS modifies the sockets implementation so that heavy use of send- and recv-type calls does not cause this error. - A UNIX domain socket, on which FASYNC has been set in order to use signal-driven I/O, does not generate SIGPOLL when the other end of the socket is closed. This SLS modifies the sockets implementation so that SIGPOLL is generated. - Occasional "broken pipe" errors are experienced by a web browser when it loses its connection to cgi-bin programs that are being run on a remote web server. This SLS modifies the sockets implementation to prevent these errors. - This SLS modifies the sockets implementation to prevent a panic that could occur on a multiprocessor system when using TCP sockets over PPP connections. - The TCP stack does not handle out-of-band (MSG_OOB) data correctly. A TCP application, such as the telnetd(1Mtcp) server, that uses out-of-band data to handle user interrupts (for example, those generated by pressing in the telnet client) will hang. This SLS corrects this behavior. - The performance of UDP, which had degraded when compared to previous releases, has been improved. - Applications written in C that use the socket library dump core when executed if they have been compiled with profiling turned on. This SLS corrects this behavior. SLS PTF7013E contains these files: /etc/conf/pack.d/sockmod/Driver_atup.o /etc/conf/pack.d/sockmod/Driver_mp.o /etc/conf/pack.d/sockmod/space.c /usr/lib/libsocket.so /usr/lib/libsocket.so.1 /usr/lib/libsocket.so.2 Notes on the fixes included in this SLS can be found on the FTP server or, after its installation, in: /var/sadm/pkg/ptf7013/install/ptf7013.txt Software Notes and Recommendations ---------------------------------- SLS PTF7013E should only be installed on: UnixWare 7 with the UnixWare 7 Release Supplement (uw7rs) applied To find out what release your system is running, use the command: uname -sv The command will return "UnixWare 7" if this release is installed. To determine if the SCO UnixWare 7 Release Supplement is installed, run the command: pkginfo | grep uw7rs If the Release Supplement is installed, this command will return "patch uw7rs uw7rs - SCO UnixWare 7 Release Supplement." Testing of the modified software contained in this SLS has been conducted only to the extent necessary to confirm that it resolves the problem(s) stated above. Such testing consists of re-creating the problem conditions (typically in an SCO test laboratory) and verifying that the problem no longer occurs. No other testing of this software has been done. Hardware Notes and Recommendations ---------------------------------- This SLS is intended for i486, Pentium, Pentium Pro, Pentium II, and compatible CPUs. Installation Instructions ------------------------- 1. Download the ptf7013e.Z and ptf7013e.txt files to the /tmp directory on your machine. 2. As root, uncompress the file and add the SLS to your system using these commands: $ su # uncompress /tmp/ptf7013e.Z # pkgadd -d /tmp/ptf7013e 3. Shut down and reboot the system after installing this SLS. Note: A system reboot is required following installation of this SLS for the kernel sections to take effect. However, if you have not already installed any other SLS that you need, you should do so before rebooting. Removal Instructions -------------------- 1. As root, remove the SLS using these commands: # pkgrm ptf7013 2. Shut down and reboot the system after removing this SLS. If you have questions regarding this SLS, or the product on which it is installed, please contact your software supplier. We appreciate your business. SCO Support Services