Patch Name: PHNE_6190 Patch Description: s700_800 10.X ocd(1M) cumulative patch Creation Date: 96/07/31 Post Date: 96/07/24 Hardware Platforms - OS Releases: s700: 10.00 10.01 10.10 10.20 s800: 10.00 10.01 10.10 10.20 Products: N/A Filesets: InternetSrvcs.INETSVCS-DTC Automatic Reboot?: No Status: General Release Critical: No (superseded patches were critical) PHNE_5447: CORRUPTION The /usr/spool/lp/outputq file can become corrupt when using printers attached to terminal servers accessed by DDFA. Path Name: /hp-ux_patches/s700_800/10.X/PHNE_6190 Symptoms: PHNE_6190: The following symptoms correspond to the descriptions in the defect descriptions field for PHNE_6190: 1. The ocd(1M) daemon does not continue to try to connect to a printer after the first connection attempt fails and instead disables the printer. 2. The ocd(1M) daemon does not perform its binary mode data transfer correctly and thus treats some data as non-binary data when in binary mode. Such data includes the new-line (0x0A) character. 3. The ocd(1M) daemon does not recognize a status reply of 0x36 from a P405 printer and, thus, gives a log message of: (215) ERROR: Unknown status reply 54 It then waits the length of the status timer before resending a status request to the printer. 4. The ocdebug(1M) daemon does not handle a second SIGUSR1 (16) signal sent to it in order to toggle the debug flags, but instead allows the default action for SIGUSR1 to be performed (which is to exit). 5. The ocdebug(1M) daemon does not always give coherent debug output. PHNE_5558: The following symptoms correspond to the descriptions in the defect descriptions field for PHNE_5558: 1. The ocd(1M) daemon holds a connection to a printer open indefinitely after a cancel(1) is performed on a print request sent to that printer. 2. The ocd(1M) daemon waits 30 seconds between opening a connection to a device and starting to send data to that device when using the status request feature. PHNE_5447: The following symptoms correspond to the descriptions in the defect descriptions field for PHNE_5447: 1. The 'stty exta' statement is not trapped by ocd(1M) and, therefore, no timing mark is sent to the remote server even if that statement is in a printer interface script. 2. The ocd(1M) daemon causes the disable(1) command (which it calls) to corrupt /usr/spool/lp/outputq by allowing the command to write error messages into it. Defect Description: PHNE_6190: The following defect descriptions are for PHNE_6190: 1. The problem is that the ocd(1M) daemon does not save the errno set during the connect(2) system call before attempting to use it and, clearly, intermediate system calls can and do reset that variable. This causes the ocd(1M) daemon to stop trying to connect to a printer based on an invalid errno. 2. The problem is that the ocd(1M) daemon does not set its pty characteristics for binary mode until after it has successfully completed the binary mode negotiation with the remote server. Thus, any data sent by the application to the remote server after opening the pty (pseudonym) and before the successful completion of the binary mode negotiation is treated as non-binary data. 3. The problem is that the ocd(1M) daemon does not handle a status reply of 0x36 from a P405 printer in a way that is acceptable. 4. The problem is that the ocdebug(1M) daemon does not reinstate the signal handler for SIGUSR1 (16) after the initial handling of that signal. 5. The problem is that the ocdebug(1M) daemon does not have a defined organization for its debug output in terms of data display and process flow tracing. PHNE_5558: The following defect descriptions are for PHNE_5558: 1. The problem is that the ocd(1M) daemon does not properly check whether its pty contains data intended for its associated printer before setting the close timer alarm. If the pty still contains data, then any movement of that data resets the close timer alarm, which consequently leaves the connection to the printer open indefinitely. The pty may still contain data when the connection to the printer is "full" and, thus, ocd(1M) cannot push data from the pty through the connection immediately. 2. The problem is that the ocd(1M) daemon has an unnecessary check for data received from the network just prior to performing a status request. Since the likelihood of receiving data from the network at that time is small, the result is usually a 30 second delay while waiting for the select(2) call to timeout. Furthermore, any data received at that time can be received and processed as a status request is being processed. PHNE_5447: The following defect descriptions are for PHNE_5447: 1. The problem is that ocd(1M) does not trap all the applicable ioctl requests. In particular, it traps the TCSETAW request, but does not trap the TCSETATTRD request. This causes the 'stty exta' statement to be ignored by ocd(1M) because (at 10.0) stty uses TCSETATTRD (instead of TCSETAW) to pass data. 2. The problem occurs when ocd(1M) calls disable(1) on an already disabled printer, compounded by the fact that the ocd(1M)s of the customer (at times) do not have file descriptor 2 open. This means that when disable(1) is called, it writes an error message to outputq, because disable(1) has inherited the file descriptors of ocd(1M), and thus opens outputq with the first free file descriptor (that being 2 or stderr). Note that the printer may have already been disabled either by actions external to ocd(1M) or by ocd(1M) itself (where it calls disable(1) twice in a row when it should not). SR: 5003318220 1653165134 1653157677 5003283655 5003263376 1653131201 4701291856 4701289108 5003249144 Patch Files: /usr/sbin/ocd /usr/sbin/ocdebug what(1) Output: /usr/sbin/ocd: ocd.c $Revision: 1.2.110.18 $ $Date: 96/07/24 13:00: 52 $ PHNE_6190 /usr/sbin/ocdebug: $Debug version $ ocd.c $Revision: 1.2.110.18 $ $Date: 96/07/24 13:00: 52 $ PHNE_6190 cksum(1) Output: 3033038300 57344 /usr/sbin/ocd 941371895 73728 /usr/sbin/ocdebug Patch Conflicts: None Patch Dependencies: None Hardware Dependencies: None Other Dependencies: None Supersedes: PHNE_5447 PHNE_5558 Equivalent Patches: PHNE_7596: s700: 9.01 9.03 9.05 9.07 s800: 9.00 9.04 Patch Package Size: 190 Kbytes Installation Instructions: Please review all instructions and the Hewlett-Packard SupportLine User Guide or your Hewlett-Packard support terms and conditions for precautions, scope of license, restrictions, and, limitation of liability and warranties, before installing this patch. ------------------------------------------------------------ 1. Back up your system before installing a patch. 2. Login as root. 3. Copy the patch to the /tmp directory. 4. Move to the /tmp directory and unshar the patch: cd /tmp sh PHNE_6190 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHNE_6190.depot 5b. For a homogeneous NFS Diskless cluster run swcluster on the server to install the patch on the server and the clients: swcluster -i -b This will invoke swcluster in the interactive mode and force all clients to be shut down. WARNING: All cluster clients must be shut down prior to the patch installation. Installing the patch while the clients are booted is unsupported and can lead to serious problems. The swcluster command will invoke an swinstall session in which you must specify: alternate root path - default is /export/shared_root/OS_700 source depot path - /tmp/PHNE_6190.depot To complete the installation, select the patch by choosing "Actions -> Match What Target Has" and then "Actions -> Install" from the Menubar. 5c. For a heterogeneous NFS Diskless cluster: - run swinstall on the server as in step 5a to install the patch on the cluster server. - run swcluster on the server as in step 5b to install the patch on the cluster clients. By default swinstall will archive the original software in /var/adm/sw/patch/PHNE_6190. If you do not wish to retain a copy of the original software, you can create an empty file named /var/adm/sw/patch/PATCH_NOSAVE. Warning: If this file exists when a patch is installed, the patch cannot be deinstalled. Please be careful when using this feature. It is recommended that you move the PHNE_6190.text file to /var/adm/sw/patch for future reference. To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHNE_6190.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: Each ocd(1M) must be restarted after installing this patch.