OpenVMS UCXAV_E13033 VAX and Alpha DEC TCP/IP V3.3 ECO Summary
NOTE: An OpenVMS saveset or PCSI installation file is stored
on the Internet in a self-expanding compressed file.
The name of the compressed file will be kit_name-dcx_vaxexe
for OpenVMS VAX or kit_name-dcx_axpexe for OpenVMS Alpha.
Once the file is copied to your system, it can be expanded
by typing RUN compressed_file. The resultant file will
be the OpenVMS saveset or PCSI installation file which
can be used to install the ECO.
Copyright (c) Digital Equipment Corporation 1995, 1996. All rights reserved.
PRODUCT: DEC TCP/IP Services V3.3 for OpenVMS VAX
DEC TCP/IP Services V3.3 for OpenVMS AXP
OP/SYS: OpenVMS VAX
OpenVMS Alpha
SOURCE: Digital Equipment Corporation
ECO INFORMATION:
ECO Kit Name: UCXAV_E13033
ECO Kits Superseded by This ECO Kit: UCXAV_E10033
UCXECO9-033 (UCXECO)
UCXECO7-033
UCXECO6-033
UCXECO5-033
UCXECO4-033
(ECO 4, ECO 5 and ECO 6
Were Never Officially
Released Into TIMA)
ECO Kit Approximate Size: 29,345 Blocks
Kit Applies To: DEC TCP/IP Services V3.3 for OpenVMS
VAX V5.5-2, V6.0, V6.1, V6.2
DEC TCP/IP Services V3.3 for OpenVMS
AXP V6.1, V6.2
System/Cluster Reboot Necessary: Yes
ECO KIT SUMMARY:
An ECO kit exists for DEC TCP/IP Services V3.3 for OpenVMS VAX and
OpenVMS Alpha. This kit addresses the following problems:
---------------------------------------------------------------------------
Fixes for DEC TCP/IP Services V3.3 Kernel Images
---------------------------------------------------------------------------
ECO 1 updates:
--------------
ECO A 9-June-1995 Alpha and VAX
Note: This ECO is a forward retrofit of ECO J for V3.2.
Images:
UCX$BGDRIVER.EXE UCX V3.3-7A (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7A
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7A
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7A
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7A
UCX$INETACP.EXE UCX V3.3-7A
Problems:
1. A crash occurs in SBDROP which calls PANIC due to what
appears to be an inconsistent receive socket buffer.
2. A crash occurs in PWIP, in adjTCPwindow, with an access
violation due to referencing a stale UCB.
Solutions:
Both of these crashes may be triggered when the PWIP application
chooses to close a connection before it has deallocated all the
MBUFs that have been passed to it. Both of these problems can
be corrected by redesigning the mechanism used to handle the
deferred TCP window adjustment for PWIP. Formerly, two UCB
fields, UCB$L_BG_SO_CC and UCB$L_BG_SO_MBCNT, were used to keep
track of the SO_CC and SO_MBCNT values associated with MBUFs
passed up to PATHWORKS or DECnet/OSI. The redesigned mechanism
makes use of a new structure, the DWAB (Deferred Window
Adjustment Block), to keep track of these quantities.
This redesign goes with PWIP changes to PWIPDRIVER_READ.C and
PWIP_DRIVER_SUPP.C. It is imperative to install both changes
(i.e., NET and PWIP) simultaneously.
References:
CFS.26962, CFS.27049, CFS.26447, CFS.27437, CFS.26903,
CFS.27472
ECO B 21-Jun-1995 Alpha and VAX
27-Jun-1995
Images:
UCX$BGDRIVER.EXE UCX V3.3-7B (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7B
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7B
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7B
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7B
UCX$INETACP.EXE UCX V3.3-7B
Problems:
1. When an ICMP_NETMASK_REQUEST is issued by a host whose address
is 0.0.0.0, it is expected that an ICMP_NETMASK_REPLY will be
broadcast in response, providing such a feature is enabled.
An initial problem exists in that ICMP_INPUT() does not enable
broadcasts (via the flag, IP_ALLOWBROADCAST) when it replies
through IP_OUTPUT(). As a result, the error EACCESS is returned
by the interface code.
The user is supposed to be able to set the option to have an
ICMP_NETMASK_REPLY broadcast in response to an
ICMP_NETMASK_REQUEST. However, no facility currently exists
to directly control such a feature. A guideline is that only
gateways tend to generate such replies. (Although a specific
host could be so enabled, this is not expected to be common.)
Therefore, this feature will only be enabled for gateways.
To turn on the feature, issue the command:
UCX SET PROTOCOL ICMP /UNREACHABLE
2. A case of incorrect synchronization in the UCX$INETACP can
leave the system hung with the UCX$INETACP in RWAST state
waiting for I/O to run down on a BG device that the ACP has
tried to deassign. Also, a crash occurs in
INETACP_SERV_ACCEPT_CLOSE due to a non-zero value in the
REQCB$W_CHAN_2 field which indicated that a valid channel
existed and that the corresponding REQCB$L_UCB_2 was valid.
3. A crash occurs in INET_SLIP_OPEN when trying to initialize
compression.
4. A system crash occurs in INET_SEL_READ_ALL with a zero
pointer to the temporary space allocated for select.
Solutions:
1. Change IP_ICMP_VMS.C to include OpenVMS conditional code
which senses the "IPGATEWAY" flag (set by the above
command), and calls ip_output() with the IF_ALLOWBROADCAST
flag. When "IPGATEWAY" is set to FALSE, it results in
disallowed broadcasts; requests from 0.0.0.0 are rejected
by the UCX Ethernet layer which returns EACCES.
2. First, the synchronization error arose because we tried to
execute substantive code in an AST thread in the
UCX$INETACP. The AST thread was triggered by a Read ATTN
completion. We should never execute anything but code to
queue a REQCB in the context of the AST. The fix is to do
just that in routine INETACP_USER_INFO_AST and to move the
substantive code to INETACP_USER_INFO_AST_CONT.
Second, the interpretation of the REQCB_W_CHAN_2 field is
modified to take into account that this field is overlaid
with the REQCB$W_PROTO field. Given that this latter field
can only take the values 0 and 1, and given that valid
channel numbers are 10, 20, 30, etc. (all in hex), we now
interpret a non-zero number with the low bit clear as a
valid channel and anything else (e.g., 1) as a non-channel.
3. The problem is that an allocation failure was unrecognized,
and we used the SS$_xxx status code in R0 as if it were an
address. The fix is to change the calling sequence to
INIT_INET_COMPRESSION (in INET_COMPRESS.MAR and called from
INET_SLIP.MAR) so it can recognize when it fails. From now
on, the routine returns a status in R0 and the pointer to
the allocated structure in R1. We also fixed a
typographical error in INETACP_SLIP.MAR, in routine
DETACH_VIRTUAL_TERMINAL, where a movl should have been a
movw.
4. Upon entry to INET_SELECT, we no longer clear the field that
holds the pointer to the temporary space until after we have
rechecked it. When the caller passes a bad parameter or
calls to select an already selected device, we erase the
pointer to the temporary space allocated for a previous
select call.
References:
1. CFS.24959, CFS.28452
2. CFS.29320
ECO C 7-July-1995 Alpha and VAX
Images:
UCX$BGDRIVER.EXE UCX V3.3-7C (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7C
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7C
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7C
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7C
UCX$INETACP.EXE UCX V3.3-7C
Problem:
A system crash occurs at INETACP_USER_INFO_AST_CONT in the
UCX$INET_ACP process, due to a corrupted SERV$L_REXEC_FLNK
queue.
Solution:
In the code introduced for ECO B, in the solution for problem 2,
a problem was introduced that corrupted the SERV$L_REXEC_FLNK
queue. In an attempt to remove all substantive code from routine
INETACP_USER_INFO_AST, it was forgotten that when the routine is
called, the REQCB is already queued on the SERV$L_REXEC_FLNK
queue. Then when the same, already queued REQCB is queued to
the AQB, the former queue becomes corrupted. The solution is to
REMQUE the REQCB while still in AST context and before INSQUEing
again.
Reference:
CFS.29197
ECO D 12-July-1995 Alpha and VAX
Images:
UCX$BGDRIVER.EXE UCX V3.3-7D (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7D
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7D
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7D
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7D
UCX$INETACP.EXE UCX V3.3-7D
Problem:
A system crash occurs in UCX$INET_ACP process with KRNLSTAKNV.
Solution:
The source of this problem is that the UCX$INET_ACP process is
calling UCX$ACCESS_SHR routines from kernel mode. These
routines result in calls to RMS which does not support being
called from kernel mode.
The solution is to introduce a mechanism that allows the ACP to
essentially continue a thread begun in kernel mode into user
mode and then back to kernel mode. The implementation includes
reorganizing the ACP's use of its kernel mode stack. From now
on, the ACP switches to a private kernel mode stack as soon as
it enters kernel mode. When it wants to continue a thread into
user mode, it calls routine INETACP_CONTINUE_IN_USER_MODE, which
wraps up its current private stack context, switches back to
the normal kernel stack, and returns back to user mode, where
the request is processed. When the user mode request is
finished, we call back to kernel mode at routine
INETACP_CONTINUE_KERNEL, pick up the context left on the private
stack, and continue.
References:
CFS.27841, CFS.28514, CFS.29394, CFS.30262
ECO E 25-July-1995 Alpha and VAX
Images:
UCX$BGDRIVER.EXE UCX V3.3-7E (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7E
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7E
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7E
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7E
UCX$INETACP.EXE UCX V3.3-7E
Problems:
1. A system crash occurs in INET_GET_SINGLE_DATA due to an
impossibly large value in SO$L_USER_OFFSET.
2. A system crash occurs in P_DOOPTIONS (IP_INPUT_VMS.C) in a
movc3 instruction with R0 containing 0.
Solutions:
1. The crash is due to structure skew (INPCB structure) between
MACRO and C modules (on VAX only). The solution is to
introduce a fill variable into the IN_PCB.H module to align
subsequent fields and thereby eliminate the skew. After the
correction to the declaration, we recompile all the C
modules that use the INPCB, which are: IN_PCB_VMS.C,
IP_OUTPUT_VMS.C, TCP_INPUT_VMS.C, TCP_OUTPUT_VMS.C,
TCP_SUBR_VMS.C, TCP_TIMER_VMS.C, TCP_USRREQ_VMS.C, and
UDP_USRREQ_VMS.C.
2. We called routine IFPTOIA and did not check the validity of
the returned value. The solution is to check the returned
value for the value NULL and reject it instead of using it.
Reference:
CFS.30118
ECO F 01-Aug-1995 Alpha and VAX
Images:
UCX$INETACP.EXE UCX V3.3-7F
Problem:
A system crash occurs in INETACP_FORMAT_REMOTE due to processing
of an invalid UCB. It most probably occurs when a TELNET session
is being terminated during closure of devices.
Solution:
The crash is most likely due to a timing issue when the INET_ACP
tries to close a device to which a channel has already been
deassigned. In trying to do so, since the UCB in question is no
longer valid, we try to use this UCB and cause a crash due to
incorrect information. This was found upon analysis of the crash
dump when we looked at the UCB that was being used to close the
device.
In INETACP_TN_CLOSE we ensure that the device being closed is
actually still open by the INET_ACP. Using $GETDVI, we get the
device unit number and compare it to the unit in the device UCB.
If the channel is invalid or the unit numbers are different, we
do not attempt to continue closing the device. If for any reason
(timing?) the device is already closed, we avoid using the
invalid UCB to process things further, thus avoiding a system
crash.
Reference:
CFS.30627
ECO G 16-Aug-1995 Alpha and VAX
Image:
UCX$INETACP.EXE UCX V3.3-7G
Problem:
Previous fix (ECO D/E) had the side-effect of causing incorrect
offset data to be returned by IO$_ACPCONTROL QIOs in which a
HOSTENT_OFFSET or NETENT_OFFSET structure was requested.
Solution:
Update the offsets in the copy of the buffer that will be
returned, not in the original buffer written by UCX$ACCESS_GET.
Reference:
None; discovered during internal testing. This problem prevented
the NFS client from operating properly.
ECO 2 Updates:
--------------
ECO H 07-Sep-1995 Alpha and VAX
Image:
UCX$INETACP.EXE UCX V3.3-7H
Problem:
The REXEC server should return the first byte of acknowledgment
correctly. A zero should be returned if there were no problems
in creating/authenticating the process and a 1 (or a positive
number) should be returned if there was an error.
Typically from a user's point of view the problem would be seen
if the rexec command (from a U*ix machine) or rsh command (with
username and password) were issued to an OpenVMS host with
either the username and/or password being correct. In such a
case, the host issuing the command would receive a first byte of
zero indicating success when it was actually a failure to
execute the remote command. Subsequently the REXEC server would
return a 1 and the failure message, but for certain applications
this might be too late.
Solution:
Rexec service should send an ASCII zero as the first byte only
when there is no error in creating/authenticating the server
process. We always sent a 'null' byte on the output port,
following it up with a '1' later if there was an error. Instead,
we now send this positive acknowledgment in the driver when we
are writing out the first few bytes as output. In the case of an
error, we clear the ccl bit in the UCB so that there is no
carriage control associated with the with the output. Thus, the
positive acknowledgment that is sent with carriage control
enabled is completely avoided.
References:
CFS.22776, CFS.30992
ECO 3 Updates:
--------------
ECO I 23-Sept-1995 Alpha and VAX
Images:
UCX$BGDRIVER.EXE UCX V3.3-7I (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7I
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7I
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7I
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7I
UCX$INETACP.EXE UCX V3.3-7I
Problem:
System crash in UCX$INET_ROUTED process immediately after
deleting the SLIP interface.
Analysis:
The crash is due to a window between the deallocation of the
VCIB for the SLIP interface and the deallocation of the IF_UCB
structure for this same interface. During this time there is a
possibility for code to reference the deallocated VCIB, which
results in the crash.
Solution:
In INET_SLIP_CLOSE, in the INET_SLIP.MAR module, we now clear
the IF_UCB$L_VCIB_IP field as soon as we deallocate the VCIB.
Reference:
CFS.30062
ECO K 28-Sept-1995 Alpha and VAX
Images:
UCX$BGDRIVER.EXE UCX V3.3-7K (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7K
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7K
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7K
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7K
Problem:
Multiple pseudo-interfaces sharing a physical interface cannot
all communicate across a wide-area network unless IP forwarding
is enabled.
Solution:
In INET_SOURCE_CHECK, loop through the list of all pseudo
interfaces before disallowing a packet which does not at
first appear to be local.
Reference:
CFS.30905
ECO L 29-Sept-1995 Alpha and VAX
Images:
UCX$BGDRIVER.EXE UCX V3.3-7L (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7L
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7L
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7L
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7L
UCX$INETACP.EXE UCX V3.3-7L
Problem:
Carriage control problems (incorrect printing of CCL characters)
during RSH/REXEC execution.
Solution:
Incorporate carriage control for writes by the RSH/REXEC server.
It now emulates the carriage control functions for a terminal
driver. Only when the DEV$V_CCL bit in the UCB is set, we use P4
to determine the carriage control behavior desired. The
specifications for the carriage control functions are the same
as that documented for the terminal driver under the section
"Write Function Carriage Control". Since only the RSH/REXEC
server use the DEV$V_CCL bit, P4 will act as a carriage control
modifier only for this server. P4 for any other writes will
still behave as before (i.e., the current support of P4 as a
flag to specify NBIO, MSG_PEEK and OOB still holds good).
Reference:
CFS.30821
ECO M 5-Oct-1995 Alpha and VAX
Images:
UCX$BGDRIVER.EXE UCX V3.3-7M (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7M
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7M
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7M
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7M
UCX$INETACP.EXE UCX V3.3-7M
Problem:
System pool fills up with VCRPs, exhausting pool, causing a
CLUEXIT.
Solution:
Problem is essentially the same as the one that caused us to
invent adjTCPwindow, for deferred TCP window adjustment, but in
this case it is for UDP. Basically, UDP datagrams are received
by the BGDRIVER and passed up to PWIP, but although they are not
consumed immediately, in the BGDRIVER we update the socket
buffer counters as though they had been consumed. The result is
that a flood of datagrams can then be received. The solution is
to defer the accounting in the socket buffer until the datagrams
are consumed by the PWIP client.
Note that this fix entails changes to both PWIPDRIVER and to the
NET facility.
Reference:
CFS.31492
ECO 5 Updates:
--------------
ECO N 18-Oct-1995 Alpha and VAX
Images:
UCX$BGDRIVER.EXE UCX V3.3-7N (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7N
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7N
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7N
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7N
UCX$INETACP.EXE UCX V3.3-7N
Problem:
System crashes during shutdown, due to deleting an interface
that has contradictory data in its IF structure. Namely, the IF
is for a SLIP device (i.e., SLx) but the IF$B_IFTYPE field
indicates an Ethernet device.
Solution:
The problem is a flaw in the logic that creates pseudo
interfaces. Creating a pseudo interface on an existing SLIP
interface produced the inconsistent data structures that led to
the crash. This can be fixed in one of two ways; namely by
prohibiting the creation of pseudo interfaces on SLIP lines or
by adding logic to create them in a consistent manner. Analysis
of the problem reveals that it would require a substantial
investment of time to add the functionality to allow pseudo
interfaces on SLIP lines and the benefit of this proposed
functionality seems marginal. Therefore, we have opted to prevent
this from occurring.
Reference:
CFS.33896
ECO 6 Updates:
--------------
ECO O 30-Oct-1995 Alpha and VAX
Images:
UCX$BGDRIVER.EXE UCX V3.3-7O (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7O
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7O
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7O
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7O
Problem:
TCP packets arriving out-of-order (as a result of intervening
segments being dropped by the network, for example) could cause
the low water mark to remain set upon completion of a READ
operation using the IO$M_LOCKBUF modifier. If the following
READ specifies a smaller buffer size, then it might never
complete due to the lingering effects of the one which was
satisfied with re-ordered packets.
Solution:
Always zero the low water mark upon completion of any READ
operation where IO$M_LOCKBUF was specified.
Reference:
CFS.33932
ECO P 8-Nov-1995 Alpha and VAX
Images:
UCX$BGDRIVER.EXE UCX V3.3-7P (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7P
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7P
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7P
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7P
UCX$INETACP.EXE UCX V3.3-7P
Problem:
Inadequate ARP table causes too many ARP messages to be
broadcast. Also, correct counting of ARP messages to properly
account for which ones are broadcast and which are not
(INET_IF_VCI.MAR)
Solution:
Allow for dynamic allocation of ARP table at UCX startup. Note
that this is an interim fix that will require UCP support in a
future release.
Reference:
CFS.33563
ECO Q 17-Nov-1995 Alpha and VAX
Images:
UCX$BGDRIVER.EXE UCX V3.3-7Q (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7Q
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7Q
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7Q
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7Q
UCX$INETACP.EXE UCX V3.3-7Q
Problem:
System crash in security driver when using the local interface.
Solution:
In INET_IPINTR (INET_IN_OUT.MAR), in security driver conditional
code, check for zero pointer to IF_UCB, and if so, use the Local
interface.
Reference:
Internal report
ECO R 6-Dec-1995 Alpha and VAX
Images:
UCX$BGDRIVER.EXE UCX V3.3-7R (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7R
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7R
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7R
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7R
UCX$INETACP.EXE UCX V3.3-7R
Problems:
1. Synchronization crashes in PWIP.
2. The enhancement to allow >64KB transfers broke some older
applications that make use of the P5 vectored write
mechanism.
3. Crash (Alpha only) after having deallocated the SLIP
structure to the INETCB free list where it was re-allocated
and corrupted.
Solutions:
1. Along with PWIP changes done in PWIP ECO F, we clear the
UCB$L_BG_TEL_UCB field when we deassign a BG UCB.
2. Go back to accepting only 16 bits of transfer length.
3. Dispatching for the REQCB$C_DEACTIVATE_SLIP function was
inexplicably left out of the Alpha specific dispatch table.
As a result, a SLIP structure, queued as an REQCB to the AQB
was prematurely deallocated, reallocated, and then trashed.
The fix is to add dispatching for this function to the
table.
References:
1. Internal report
2. CFS.35548
3. CFS.35206
ECO 7 Updates:
--------------
ECO S 14-Dec-1995 Alpha and VAX
Images:
UCX$BGDRIVER.EXE UCX V3.3-7S (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7S
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7S
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7S
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7S
UCX$INETACP.EXE UCX V3.3-7S
Problem:
Second attempt at fixing following problem. System pool fills up
with VCRPs, exhausting pool, causing a CLUEXIT.
Solution:
This problem arises when we receive many duplicate TCP packets
each only containing a FIN and also containing a sequence number
one higher than the one we are expecting. As a result, we queue
these redundant packets until all pool is consumed with them.
The problem is that we do not recognize them as redundant.
With the addition of a logic, we will recognize the redundant
packets and deallocate them immediately.
Reference:
CFS.34368
ECO T 28-Dec-1995 Alpha and VAX
Images:
UCX$BGDRIVER.EXE UCX V3.3-7T (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7T
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7T
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7T
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7T
UCX$INETACP.EXE UCX V3.3-7T
Problem:
System crash, INVEXCEPTN, due to VCRP$L_DEALLOC_RTN field being
zero.
Solution:
The solution is to test for the error and then to skip the
deallocation in this case.
Reference:
CFS.36199
ECO U 28-Dec-1995 Alpha and VAX
Images:
UCX$BGDRIVER.EXE UCX V3.3-7U
UCX$INTERNET_SERVICES.EXE UCX V3.3-7U
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7U
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7U
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7U
Problems:
After urgent TCP data (OOB data) arrives and is read, the socket
is still considered to be in OOB state until non-OOB data
arrives. The select() call, however, was returning immediately
in this case due to the OOB state, even when no OOB data was
available.
Solutions:
Do not return from select() with an exception flag if the
receive buffer is empty.
Reference:
CFS.36143
ECO V 4-Jan-1996 Alpha and VAX
Images:
UCX$BGDRIVER.EXE UCX V3.3-7V (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7V
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7V
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7V
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7V
UCX$INETACP.EXE UCX V3.3-7V
Problem:
If 2 processes are sharing a socket and process A calls $DASSGN
on that shared BG device, I/O queued to the device by process B
is also canceled.
Solution:
In INET$CANCEL, initialize two new fields in the UCB so that
later on, downstream, we can determine that this is NOT the last
deassign of this device, and in this case we selectively cancel
only the I/Os that belong to the process doing the $DASSGN.
References:
CFS.33352, CFS.26480
ECO W 11-Jan-1996 - 29-Jan-1996 Alpha and VAX
Images:
UCX$BGDRIVER.EXE UCX V3.3-7W (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7W
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7W
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7W
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7W
UCX$INETACP.EXE UCX V3.3-7W
Problems:
1. Applications such as the PATHWORKS mail server, which
disable carriage control (CCL) after being invoked through
RSH or REXEC, were preventing the initial NULL byte from
ever being sent.
2. System crash in TNDRIVER with INVEXCEPTN due to continuing
sporadic synchronization problems.
3. System enters a high IPL loop repeatedly calling
COM$FLUSHATTNS from INET_FLUSH_ALL_AST.
4. System crash in EXE_STD$PRIMITIVE_FORK, trying to deliver
what is supposed to be an Attention AST, but is really a
pointer to a the PWIPDRIVER receive socket call back
routine.
5. When the UCX TELNET server accepted a connection from a host
with a 12-digit IP address, that host's name was not
correctly resolved. Instead, the IP address was shown.
6. Automatically configuring SLIP interfaces using the "UCX SET
CONFIG INTERFACE" command, fails while hand configuring of the
same interface succeeds.
7. System crash in data link driver, when we return to the data
link driver after its having called us back from a
SYNCH_JSB invocation. At the time we return to the data
link R4 contains a zero, and the VCIB has been deallocated.
Solutions:
1. Allow the DCL procedure which starts RSH and REXEC
connections to perform the first output, guaranteeing
inclusion of the NULL. Also, do not add a leading LF
character before the first output, since this is unnecessary
and produces an extra blank line.
2. The main part of this fix is to introduce more extensive
validation code in the TNDRIVER. However some of the data
to be validated comes from the BGDRIVER and is most
conveniently passed to the TNDRIVER in the INETCB structure.
Therefore, we create a new field in the INETCB, the
INETCB$L_BG_UCB_SIZE_TYPE_FLCK field, and initialize it in
INETACP_INIT.MAR, in routine, INETACP_INIT_INETCB. The data
is referred to in the TNDRIVER in module
UCX$TN_SERVER_MAIN.MAR, in routines TN$START_COMMON and
TN_UCB_TO_BG_UCB.
The INETACP code additions are benign and can coexist with
previous TNDRIVER versions, however the new TNDRIVER
requires the new INETACP.
3. This problem was introduced by ECO V. The problem arises in
a loop where we call COM$FLUSHATTNS. The solution is to
only traverse the loop once when doing selective cancel
I/O.
4. This problem is a synchronization problem between PWIP and
the the BGDRIVER (or UCX$INTERNET_SERVICES for VAX). At the
time of the crash we have a SOCKET structure that points to
a UCB but the corresponding UCB does not point back to the
SOCKET. This apparently occurs when we are tearing down a
connection in PWIP and some data comes into the SOCKET. The
fix for this requires changes in NET and in PWIP. In NET,
we define two new bits: UCB$X_BG_PWIP in the UCB$W_BG_FLAGS
word and SOCKBUF$X_PWIP in the SOCKBUF$L_FLAGS field. In
NET, these bits are only looked at in INET_MAIN.MAR. Both
of these bits are set and cleared in PWIP. Also,
previously PWIP only set the UCB$X_BG_SELECT bit in the
UCB$W_BG_FLAGS word instead of the first of these new bits.
This led to some confusion in INET_MAIN.MAR.
Now we unambiguously label PWIP devices. Note that the
SOCKBUF$L_FLAGS field is declared in INET_NPGD.SDL for macro
code and a corresponding SB_FLAGS field is declared in
SOCKETVAR.H for the C code. For consistency's sake, we also
declare a new bit, SB_PWIP, to correspond to SOCKBUF$X_PWIP
even though it is not referred to in the C code.
5. Do not add a trailing space character to the ASCII form of
the IP address. This extra character caused the address to
exceed the legal length, in the case of a 12-digit address,
and prevent translation.
6. When the configuration database contains an automatic SET
INTERFACE for a SLIP interface, the UCP implicitly performs
a UCX SET INTERFACE command that includes the /BROADCAST
mask parameter. Since SLIP interfaces do not support
broadcasting, this causes us to reject the interface. The
solution is to introduce code in INETACP_SLIP, in routine,
CREATE_P5_BUFFER, to explicitly ignore the command to set a
broadcast address on the interface.
7. The normal flow on VCI port management calls to the data
link is we issue a ASYNCH_JSB (which returns to our
caller); VCI calls us back when the port management
function is initiated; VCI calls us back after the port
management event associated with the completion of the
function occurs.
The bug was that if the VCI callback indicated an error, we
assumed that they would not make the second callback and
that therefore we should perform cleanup at the time of the
first callback. The result was that we cleaned up things
that the data link still had need of.
The fix is to always assume that the second callback will
occur, and use a timeout mechanism to get us going for
cleanup if they do not give us the second callback. In that
way, we do not perform the cleanup prematurely.
References:
1. Reported informally via the PATHWORKS group
2. CFS.36056
3. Internal testing
4. CFS.33756
5. CFS.27194
6. Internal reports
7. CFS.37081
Notes:
1. To constitute a complete fix for the PATHWORKS mail server
problem, this new ECO must be used in conjunction with the
new startup files (UCX$RSHD_STARTUP.COM and
UCX$REXECD_STARTUP.COM) from the INSTALL component.
2. The INETACP code additions are benign and can coexist with
previous TNDRIVER versions, however the new TNDRIVER
requires the new INETACP.
3. These code additions require the corresponding new
PWIPDRIVER, if one is running PWIP.
ECO 8 Updates:
--------------
ECO X 14-Feb-1996 Alpha and VAX
Images:
UCX$BGDRIVER.EXE UCX V3.3-7X (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7X
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7X
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7X
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7X
UCX$INETACP.EXE UCX V3.3-7X
ECO Y 27-Feb-1996 Alpha and VAX
Images:
UCX$BGDRIVER.EXE UCX V3.3-7Y (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7Y
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7Y
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7Y
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7Y
UCX$INETACP.EXE UCX V3.3-7Y
Problem:
1. On VAX systems, when SLIP is enabled on a terminal line, the
UCB for the terminal has an unrelocated value for its FDT.
This might result in a crash.
2. Problems with shared sockets. First the selective cancel
I/O functionality introduced in ECO D and refined in ECO E
still did not properly select I/Os to be canceled. Second,
when I/Os were selectively canceled, if the active IRP on a
queue was canceled, the queue was left in limbo, with no
mechanism for getting it restarted. Third, a day one design
flaw was found in the code that implements the basic
mechanism that manages the read, write and miscellaneous
queues on a BG device. This flaw effectively precluded true
shared sockets and manifested itself in the following way.
When a queued operation completed, the next operation on the
queue was then handled in the context of the process that
handled the first operation, even when the new operation did
not belong to this process. The result was corruption of
the address space of the process within whose context the
erroneous I/O was handled.
3. The maximum socket listener backlog of 5 was too small for
modern applications.
Solution:
1. In INET_SLIP_OPEN in INET_SLIP.MAR, we were already
relocating the class driver vector table. At the same time
we now relocate the DDT$L_FDT field.
2. The first problem problem was solved by tightening the
selection criteria in the INET_SHUTDOWN_FLUSH_*
(INET_ACCESS.MAR) family of routines so as to properly
select the I/Os to be canceled and to then re-construct the
queues. The second problem, restarting stalled queues was
solved by introducing a new routine, QUEUE_INET_KAST, in
INET_MAIN.MAR, which is a simplified version of
INET_IRP_UP_1, and whose purpose is to restart queues in the
context of a particular process.
The third problem, where I/O request were being serviced in
the wrong context, was solved by introducing a test for the
proper context into the main queue dispatching routine,
INET_ENQ_IO_RESTART, in INET_RCV_XMT.MAR. When a mis-match
is found, the queue is now left dormant, but a call is made
to the new routine, QUEUE_INET_KAST, to restart the queue
in the proper process context.
3. Increase the backlog to 32 (up to 512, for privileged
processes).
References:
1. Security report
2. Internal report of hung processes, in RWAST state,
running WWW server
ECO Z 29-Feb-1996 Alpha and VAX
Images:
UCX$BGDRIVER.EXE UCX V3.3-7Z (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7Z
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7Z
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7Z
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7Z
UCX$INETACP.EXE UCX V3.3-7Z
Problem:
Code review of the ECO G (V4.0) fix turned up a very subtle and
unlikely to occur problem in the code that should be corrected
for shared sockets. The problem has to do with the INET_KAST
mechanism that delivers an AST to the process that owns an IRP
that needs to be "resumed". In the unlikely event that two IRPs
on the same UCB, belonging to different processes, need to be
"resumed" simultaneously, then the second of these IRPs will be
processed in the context of the wrong process. The reason that
this appears to be so unlikely is that for this to happen, there
would have to be ongoing I/O on at least two of the queues of
one UCB, with the active IRPs belonging to different processes,
and the I/Os would need "resumption" within a very small window.
Solution:
The solution to this is to add a test in INET_KAST, in
INET_MAIN.MAR, just before we "resume" an IRP. At that point we
test that we are executing in the context of the process that
owns the IRP. If we are then we just proceed. If we are not,
we then queue the ACB to the process that owns the IRP, and we
exit from the current AST running in the context of the wrong
process. This will in effect cause us to re-enter the routine
we are currently executing in, INET_KAST, but in the context of
the correct process. We will then continue correctly.
Reference:
Internal code review
ECO AA 1-Apr-1996 Alpha and VAX
Images:
UCX$BGDRIVER.EXE UCX V3.3-7AA (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7AA
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7AA
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7AA
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7AA
UCX$INETACP.EXE UCX V3.3-7AA
Problems:
1. With the CASE_INSENSITIVE flag enabled, proxies were not
being correctly found in the communication proxy cache.
2. System crash in INET_SOCONNECT due to the fact that
UCB$L_BG_SOCKET contains the value zero.
Solution:
1. Correct and simplify the sequential proxy lookup routine.
2. After picking up the contents of UCB$L_BG_SOCKET, validate
its contents, and if invalid terminate the I/O request with
the SS$_BADPARAM status.
Reference:
1. Internal report
2. CFS.40207
ECO 9 Updates:
--------------
ECO B 23-APR-1996 Alpha and VAX
Images:
UCX$BGDRIVER.EXE UCX V3.3-7AB (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7AB
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7AB
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7AB
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7AB
UCX$INETACP.EXE UCX V3.3-7AB
Problems:
System crash in INET_SOACCEPT due to the fact that
contains the value zero. This happened at UCX shutdown.
Solutions:
After picking up the contents of INET$GL_PTR_INETCB, validate
its contents by making sure that it is a system address.
If it is invalid terminate the I/O request with the
SS$_DEVNOTMOUNT status.
Reference:
CFS.39581
ECO AC 1-MAY-1996 Alpha and VAX
Equivalent to V4.0 ECO L.
Images:
UCX$BGDRIVER.EXE UCX V3.3-7AC (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7AC
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7AC
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7AC
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7AC
UCX$INETACP.EXE UCX V3.3-7AC
Problems:
System crash in INET_SELECT_UNBUILD_LIST due to a corrupt
select list.
Solutions:
Apparently in fixing the problems associated with shared sockets
(ECOs Y and Z above) we changed the behavior slightly so that we
failed to ALWAYS remove a UCB from a select list before
deassigning and deallocating the UCB. As a result it was
possible to have a deallocated UCB remaining on a select list.
In INET$CANCEL_COMMON we now call a new routine,
INET_SELECT_REMOVE_UCB, that unconditionally removes an about to
be deallocated UCB from any select list that it might be on.
Reference:
Internal report
ECO AD 2-MAY-1996 Alpha and VAX
Image:
UCX$BGDRIVER.EXE UCX V3.3-7AD (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7AD
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7AD
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7AD
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7AD
UCX$INETACP.EXE UCX V3.3-7AD
Problems:
System crash AT TNDRIVER+2C6 due to corruption at TNDRIVER+2CC.
Solutions:
The problem arises because of the overlaying of UCB$L_PDT by the
UCX defined field UCB$L_ACP_LINK in both BG and TN UCBs. In UCX
shutdown, under certain conditions, the TTDRIVER will
misinterpret the UCB$L_PDT field and use it as a pointer into
what it thinks is another UCB. The TTDRIVER will then clear a
longword at an offset from the pointer. Since in our case we
have a pointer into the TNDRIVER at UCB$L_PDT, we wind up with
the TTDRIVER clearing a longword of code in the TNDRIVER,
leading to a subsequent crash when UCX is re-started.
References:
Internal reports
ECO AE 15-MAY-1996 Alpha and VAX
Equivalent to V4.0 ECO O.
Image:
UCX$BGDRIVER.EXE UCX V3.3-7AE (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7AE
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7AE
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7AE
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7AE
UCX$INETACP.EXE UCX V3.3-7AE
Problem:
System crash at IP_FORWARD+1F8, after bringing UCX down and then
restarting it.
Solution:
Initialize the IPFORWARD_RT cache to eliminate the possibility
that we will try to forward a packet using a stale IF pointer.
Reference:
CFS.40260
ECO 10 Updates:
--------------
ECO AF 12-JUL-1996 Alpha and VAX
Images:
UCX$BGDRIVER.EXE UCX V3.3-7AF
UCX$INTERNET_SERVICES.EXE UCX V3.3-7AF
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7AF
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7AF
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7AF
UCX$INETACP.EXE UCX V3.3-7AF
Problem:
1. When the originating and target usernames match in an
incoming request, but do not match in the proxy database,
the proxy is not properly located.
2. The routing table gets filled with entries that all have
the RTF_UP flag bit cleared, but have a non-zero reference
count.
Solution:
1. Change the way matching usernames are handled during proxy
lookup.
2. In routine rtalloc, in ROUTE_VMS.C, prevent overwriting of
the ro->ro_rt field before calling rtfree for this rtentry.
This prevents the orphaning of old entries with an outstanding
refcount.
Reference:
CFS.42195
ECO AG 13-JUL-1996 Alpha and VAX
Images:
UCX$BGDRIVER.EXE UCX V3.3-7AG
UCX$INTERNET_SERVICES.EXE UCX V3.3-7AG
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7AG
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7AG
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7AG
UCX$INETACP.EXE UCX V3.3-7AG
Problems:
Fix number 2, in the above ECO may have a curious side effect.
It was observed that the default route is not created properly.
Solutions:
Until the above behavior can be verified, fix number 2, of ECO
AF is removed, and the previous version of ROUTE_VMS.C has been
restored.
Reference:
Internal testing.
ECO 11 Updates:
--------------
ECO AH 6-AUG-1996 Alpha and VAX
Images:
UCX$BGDRIVER.EXE UCX V3.3-7AH (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7AH
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7AH
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7AH
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7AH
UCX$INETACP.EXE UCX V3.3-7AH
Problems:
1. The continuing saga of the routing table getting filled
with entries that all have the RTF_UP flag bit cleared,
but have a non-zero reference count.
2. System crash in routine ip_output due to INP_ROUTE.RO_RT
pointing at deallocated rtentry.
Solutions:
1. First we reinstate the fix mentioned in ECO AF but withdrawn
in ECO AG. The problem noted there was a build problem only.
Also, in routine ip_output, in IP_OUTPUT_VMS.C we were
overwriting the static global route structure, 'iproute',
without first doing an RTFREE of the rtentry associated with
the route. The result is an rtentry whose refcnt is
permanently increased by 1, and which therefore will never go
away. The solution is to do the RTFREE.
2. In routine rtpurge, an incorrect call to rtfree has the
possibility of deallocating an rtentry while leaving an
INP_ROUTE.RO_RT field still pointing at it. This is the
exact situation cited above. The solution is to remove the
call to rtfree.
References:
CFS.43319, CFS.42499
ECO 12 Updates:
---------------
ECO 10-Sept-1996 Alpha and VAX
Images:
UCX$BGDRIVER.EXE UCX V3.3-7AI (Alpha)
UCX$INTERNET_SERVICES.EXE UCX V3.3-7AI
UCX$INTERNET_SERVICES_V6.EXE UCX V3.3-7AI
UCX$INTERNET_SERVICES_SEC.EXE UCX V3.3-7AI
UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.3-7AI
UCX$INETACP.EXE UCX V3.3-7AI
Problem:
Continuing occurrences of problem reported in ECO M. System
pool fills up with VCRPs, exhausting pool, causing a CLUEXIT.
Solution:
This problem is really not a UCX problem, but rather a datalink
driver problem. However, we in UCX can add a small amount of
code and prevent the problem from crashing the system. The
problem is triggered by a broadcast storm, from an errant
Windows NT node, that produces thousands and thousands of
broadcast datagrams so quickly that all pool is overrun even
before we get to look at the first of them. Normally UCX
accepts a datagram from the datalink driver and forks on it
(i.e. queues it for later processing) so that control can be
immediately passed back to the datalink driver. When the
datalink finishes its tasks, we go to process the datagrams on
our queue. In the case here, the datalink receives so many
datagrams that it does not finish with its tasks until the
queued datagrams occupy all of pool. The fix that we put in
artificially limits the number of such datagrams that we will
queue to ourselves. When the number of unprocessed queued
datagrams passes a threshold value (1000 for now) we begin
deallocating all datagrams above this threshold. This in effect
prevents the datalink from overrunning pool since each new
received datagram can use the deallocated space.
References:
CFS.44630, CFS.31492
ECO 13 Updates:
--------------
Note:
The ECO 12 problem with the MTHRTL ID is fixed.
---------------------------------------------------------------------------
Fixes for DEC TCP/IP Services V3.3 UCX$INETDRIVER.EXE
---------------------------------------------------------------------------
ECO 1 Updates:
--------------
ECO A 20-Jun-1995 Alpha and VAX
Images:
UCX$INETDRIVER.EXE UCX V3.3-7A
Problem:
The system hangs when a process running in a Kernel AST thread
tries to reacquire the I/O Database Mutex that it already owns.
Solution:
The INET_CANCEL routine, which calls EXE$CANCELN, explicitly
releases the I/O Database Mutex before calling EXE$CANCELN and
explicitly reacquires it after return from EXE$CANCELN. This is
done because EXE$CANCELN lowers IPL to 0, thereby leaving the
possibility of being interrupted by an AST that might try to
reacquire the Mutex.
INET_CANCEL routine reorganized.
Reference:
CFS.29258
Problem:
Thread startup fails to initialize OP_R_FLAGS. This can
lead to problems with asynchrony and I/O completion.
Solution:
When initializing the thread, clear OP_R_FLAGS to ensure that
the initial context is clear.
References:
CFS.29331
CFS.29334
ECO 8 updates:
---------------
ECO B 20-Feb-1996 Alpha and VAX
Images:
UCX$INETDRIVER.EXE UCX V3.3-7B
Problem:
Multi-processor system crashes with CPUSPINWAIT bugcheck.
Solution:
The I/O completion inserts the IRP into the CPU-specific
I/O completion queue and posts an interrupt to the CPU's
I/O completion routine. This code executed at IPL 0 and,
if the process was rescheduled onto another processor, it
is possible that the INSQUE instruction was attempting to
insert the IRP onto the last processor's I/O completion
queue. This could cause corruption in the IRP/ACB as
INSQUE is not interlocked between multiple processors.
The correction elevates IPL to IPL$_SCHED to prevent the
rescheduling of the process during this critical set of
instructions.
Reference:
CFS.34601
---------------------------------------------------------------------------
Fixes for DEC TCP/IP Services V3.3 PWIP images
---------------------------------------------------------------------------
ECO 1 updates:
---------------
ECO A 9-June-1995 Alpha and VAX
Note: This ECO is a forward retrofit of ECOs C and D for V3.2.
Images:
UCX$PWIPDRIVER.EXE UCX V3.3-7A
Problems:
1. A system crash occurs in PANIC (in UCX$INTERNET_SERVICES or
UCX$BGDRIVER) called from SBDROP, due to an inconsistent
receive socket buffer showing non-zero CC (Character Count)
with no MBUFs hanging off the socket buffer.
2. A system crash occurs in adjTCPwindow when doing arithmetic
on fields of a stale UCB.
Solutions:
1. The problem is due to premature clearing of the
UCB$M_BG_Defer_WinAdj flag in routine
PWIP_HANDSHAKE_TRANSPORT in PWIPDRIVER_SUPP.C. The fix
eliminates clearing this bit in this routine.
2. This problem is triggered by an upstream MBUF being freed
after the connection has been closed. Previously, MBUFs
that passed upstream had a pointer to the UCB and if the
MBUF was not deallocated before the connection disappeared,
there was a risk of using a stale UCB.
The solution to this is to create a new structure, the DWAB
(Deferred Window Adjustment Block) which is guaranteed to
persist until the last MBUF is returned. We now point the
MBUFs to the DWAB instead of to the UCB.
Note that this fix involves changes to both PWIPDRIVER and
to the NET facility (UCX$INTERNET_SERVICES.EXE for VAX and
UCX$BGDRIVER.EXE for Alpha).
Reference:
CFS.26962
ECO 3 Updates:
--------------
ECO B 22-Sep-1995 Alpha and VAX
Images:
UCX$PWIPACP.EXE UCX V3.3-7B
Problems:
IO$_SETMODE to set socket option SO_REUSEADDR is failing.
Also set TCP option, TCP_NODELAY.
Solutions:
Fixed.
Reference:
CFS.32670
ECO C 5-Oct-1995 Alpha and VAX
Images:
UCX$PWIPDRIVER.EXE UCX V3.3-7C
Problems:
1. System pool fills up with VCRPs, exhausting pool, causing a
CLUEXIT.
2. Receipt of SS$_UNREACHABLE causes connections to disappear.
Solution:
1. Problem is essentially the same as the one that caused us to
invent adjTCPwindow, for deferred TCP window adjustment, but
in this case it is for UDP. Basically, UDP datagrams are
received by the BGDRIVER and passed up to PWIP, but although
they are not consumed immediately, in the BGDRIVER we update
the socket buffer counters as though they had been consumed.
The result is that a flood of datagrams can then be
received. The solution is to defer the accounting in the
socket buffer until the datagrams are consumed by the PWIP
client.
2. In PWIP_READ, in PWIP_READ.C, when the return status
from the call to UCX_RECEIVE is SS$_UNREACHABLE, then we
retry the call.
Note that this fix entails changes to both PWIPDRIVER and to the
NET facility (UCX$INTERNET_SERVICES.EXE for VAX and
UCX$BGDRIVER.EXE for ALPHA).
Reference:
CFS.31492, CFS.29873
ECO 5 Updates:
--------------
ECO D 24-Oct-1995 Alpha and VAX
Images:
UCX$PWIPACP.EXE UCX V3.3-7D
Problem:
Crash in PWIP ACP due to invalid kernel stack
Solution:
In PWIPACP.C, call MMG$EXPKSTK() to extend kernel stack by 4
pages. This must be done in kernel mode so call via
SYS$CMKRNL(). This is conditionalized to VAX only.
Reference:
CFS.33625
ECO 6 Updates:
--------------
ECO E 20-Nov-1995 Alpha and VAX
Note, this ECO is a backward retrofit of a fix for V4.0.
Images:
UCX$PWIPDRIVER.EXE UCX V3.3-7E
Problem:
System crash due to pool corruption. We typically see the
pattern:
00000000 00000000 xxxxxxxx yyyy0002
where xxxxxxxx is one of the IP addresses of the crashing
system, overwriting valid data in pool.
Solution:
The problem was found in routine BUILD_ADDR_ACK, in module
PWIPDRIVER_ACK.C, where we allocate and fill in an MBLK with
data. The last part of the data is an array of SOCKADDR_IN
structures, which are filled in with the IP address(es) of the
local system. When the local system is multi-homed (i.e., it
has more than one IP address) this array has more than one
entry. The problem was in the calculation for the address of
the second and subsequent entries in this array. The calculation
in error used the following "C" instruction:
sockaddr = sockaddr+sizeof(struct sockaddr_in);
Since sockaddr was declared:
struct sockaddr_in *sockaddr;
the result of the calculation was to add the SQUARE of the
length of an entry to sockaddr, rather than the length of one
entry. This is because "C" considers each unit to be an entry
structure length. The correct calculation is to replace the
offending line with:
sockaddr = sockaddr + 1;
The crash resulted from the calculation giving an address well
beyond the end of the structure, falling into some other
structure in pool. When pool checking is NOT on, this error may
well go unnoticed for long periods of time since it is very
likely that the corrupted memory is currently unallocated.
Reference:
CFS.34737
ECO F 4-Dec-1995 Alpha and VAX
Note, this ECO is a backward retrofit of a fix for V4.0.
Images:
UCX$PWIPDRIVER.EXE UCX V3.3-7F
Problem:
Various crashes in PWIP due to synchronization problems. For
example, one of the problems is due to the arrival of a
downstream write after an upstream disconnect has arrived.
Solution:
One of the sources of the lack of synchronization was that
in several places in the code we were deassigning a BG device
without having first done a QIO IO$_DEACCESS on the device.
For normal UCX devices this is allowed, but for kernel
interface access devices, as are all PWIP BG devices, this
is not allowed. Therefore, the solution was to add explicit
IO$_DEACCESS|IO$M_SHUTDOWN QIO requests prior to deassigning
the BG devices. These changes were point into several
routines in module PWIPACP_UCX.C.
Another source of problem was the failure to verify that a
connection was in the midst of being torn down. To solve
this we introduced two specific verification steps, one
in PWIP_RAST (in PWIPDRIVER_READ.C) and the other in
PWIP_WRITE (in PWIPDRIVER_WRITE.C). Specifically, we
verify in each case, whether the PDCB and the BG UCB mutually
point at each other. If not, we conclude that the connection
is in the process of being torn down and we act accordingly.
Reference:
Internal testing
ECO 7 Updates:
--------------
ECO G 16-Jan-1996 Alpha and VAX
This corresponds to ECO B for V4.0
Images:
UCX$PWIPDRIVER.EXE UCX V3.3-7G
Problem:
System crash in EXE_STD$PRIMITIVE_FORK, trying to deliver what
is supposed to be an Attention AST, but is really a pointer to a
the PWIPDRIVER receive socket call back routine.
Solution:
This problem is a synchronization problem between PWIP and the
the BGDRIVER (or UCX$INTERNET_SERVICES for VAX). At the time of
the crash we have a SOCKET structure that points to a UCB but
the corresponding UCB does not point back to the SOCKET. This
apparently occurs when we are tearing down a connection in PWIP
and some data comes into the SOCKET. The fix for this requires
changes in NET and in PWIP. In PWIP, we eliminate the
BG_KERNEL_AST_HOOK bit (defined in PWIPDRIVER_UCX.H as
equivalent to UCB$X_BG_SELECT) and define the new BG_PWIP
(equivalent to the new NET bit UCB$X_BG_PWIP) and use it instead
of BG_KERNEL_AST_HOOK. In a small change in routine
PWIP_HANDRELEASE_TRANSPORT, we no longer always clear this bit.
Now we only clear it if the UCB points to a SOCKET. This change
corresponds to a change in INET_MAIN.MAR (in
INET_DELIVER_ATTNAST) that will eliminate the cause of the
crash.
We also set the new SOCKBUF$x_PWIP bit in the RCV and XMT socket
buffers in routine PWIP_HANDSHAKE_TRANSPORT and we clear them in
routine PWIP_HANDRELEASE_TRANSPORT.
Note that for the ECO stream, PWIPDRIVER_UCX.H explicitly
defines SOCKBUF$M_PWIP as 0x20. For the normal stream, this
definition will be picked up from NET.
Reference:
CFS.33756
Note:
These code additions require the corresponding new
BGDRIVER/INTERNET_SERVICES.
ECO 8 Updates:
--------------
ECO H 15-Feb-1996 Alpha and VAX
This corresponds to ECO C for V4.0
Images:
UCX$PWIPDRIVER.EXE UCX V3.3-7H
Problem:
System crash in PWIP_HANDRELEASE_TRANSPORT, called from
CLOSE_DEV, with the alleged BG UCB argument not really a BG UCB.
Solution:
This problem is apparently another PWIP synchronization bug.
We were handed a PDCB from upstream and we took the UCB pointer
from it. In order to alleviate the problem we will now verify
that the purported UCB is still pointing back to the PDCB
before writing into the UCB.
Reference:
CFS.33756
ECO 10 Updates:
--------------
ECO I 14-June-1996 Alpha and VAX
This corresponds to ECO D for V4.0
Images:
UCX$PWIPDRIVER.EXE UCX V3.3-7I
Problem:
Improper deallocation of multi MBUF UDP datagrams.
Solution:
Create a new, simple deallocation routine,
adjUDPaccounting_single, and pass its address on the call to
allocate the MBLK/DBLK for EACH MBUF in a UDP datagram, not only
the first. This routine detaches the given MBUF from the
possible chain and deallocates it by calling the older
adjUDPaccounting. This latter routine deallocates an entire
chain, but since we are only passing it a single detached MBUF,
it will deallocate just that.
Reference:
CFS.40812
---------------------------------------------------------------------------
Fixes for DEC TCP/IP Services V3.3 BIND Services.
---------------------------------------------------------------------------
ECO 6 Updates:
--------------
ECO C 20-Nov-1995 Alpha and VAX
Images:
UCX$ACCESS_SHR.EXE UCX V3.3-7C
Problem:
On the local host issuing "UCX SHOW MX" local host just returned
the local record, but filtered all the remaining MX records.
Solution:
An invalid filter routine filtered MX records for the localhost
affecting SMTP mail.
Reference:
CFS.33206
ECO 7 Updates:
--------------
ECO D 02-Jan-1996 Alpha and VAX
Images:
UCX$ACCESS_SHR.EXE UCX V3.3-7D
Problem:
SHOW MX does not show a local host as a gateway.
Solution:
Stop the local MX lookup AFTER the local host was shown.
Reference:
CFS.35888
---------------------------------------------------------------------------
Fixes for DEC TCP/IP Services V3.3 DNS Name Service.
---------------------------------------------------------------------------
ECO 7 Updates:
--------------
ECO A 18-Jan-1996 Alpha and VAX
Images:
UCX$BIND_SERVER.EXE UCX V3.3-7A
Problem:
DNS name server, when configured as a secondary would report
that its database (DB files) had expired records based on the
preset expiration time, and would hence not perform "zone
transfer" for updating its records from the primary. "UCX SHO
HOST" would still display the stale records in the secondary.
Besides, the log file would display "repetitive" annoying
message to the DNS admin/user indicating the expiration of the
"DB files", with every request for "zone transfer" or via
"UCX SHO HOST". The log file would tend to grow over a period
of time.
The workaround available to the customer was to either delete
the "backup copies" of the database files relevant to the
secondary name server, and restart the name server (only to see
it happening again after the expiration time) or to increase
the "serial #" of the SOA record in the primary server. Both
these workarounds called for repeated user intervention.
Solution:
With the expiration of the time (as set in the SOA record),
momentarily lower the "serial number" in the "SOA" record
that has been read via db_load routine to "zero" thus causing
the secondary name server to have a lower serial number
compared to the "serial number" in the SOA record of the
"primary". This would force the "zone transfer" to take place
The fix is in sync with the DNS community.
A validating routine was added in NS_FORW.C to display the
error/warning message related to the expired zone (display
just once and remove duplicate messages)
Reference:
CFS.35882
ECO B 26-Jan-1996 Alpha and VAX
Images:
UCX$BIND_SERVER.EXE UCX V3.3-7B
Problem:
An annoying information message, that would spit out BIND server
information message to "syslog file" for every failed "recvfrom"
calls on port 53 for invalid packet length has been fixed. The
reason for the "connect refused/rejected" is that it contained
an explicit check:
if ((n == -1) && (errno == EWOULDBLOCK)) break;
The break caused it to skip over the line that logged the error.
Reference:
CFS.35882
---------------------------------------------------------------------------
Fixes for DEC TCP/IP Services V3.3 UCX$TELNET.EXE
---------------------------------------------------------------------------
ECO 1 Updates:
--------------
ECO A 01-Jun-1995 Alpha and VAX
Images:
UCX$TELNET.EXE UCX V3.3-7A
Problem:
The following commands do not parse properly:
SET AYT
SET ECHO
SET ERASE
SET ESCAPE
SET FLUSHOUTPUT
SET INTERRUPT
SET KILL
SET MODE (*1)
SET QUIT
Solution:
Changes to the parameter's name causes the routine GET_SPECIAL()
to return the incorrect string. It returns TRUE P1, not label
P1. Instead, pass the name of the parameter to get_special().
*1) Pass "P2" instead of "P1" to CLI_GET_VALUE().
Problem:
The /TERMINAL_TYPE qualifier of the TELNET command does not
apply the setting as the default for the image execution, as it
should.
Solution:
Store the terminal type in the default type buffer instead of in
a temporary buffer.
ECO 3 Updates:
--------------
ECO B 18-Sept-1995 Alpha and VAX
Images:
UCX$TNDRIVER.EXE UCX V3.3-7B
Problem:
System crash with invalid R9 in checking code that verifies
registers after fork.
Solution:
Use PRESERVE_REG and PUSH_REG/POP_REG and PUSHR_FULL/POPR_FULL
to ensure that full 64-bit registers are preserved.
ECO C 21-Sept-1995 Alpha and VAX
Images:
UCX$TNDRIVER.EXE UCX V3.3-7C
Problem:
Virtual terminals do not work for incoming sessions.
Solution:
Ensure that the TT2$M_DISCONNECT bit is set when virtual
terminals are enabled (UCX SET COMM /REMOTE=VIRTUAL).
Reference:
CFS.32412
ECO D 11-Oct-1995 Alpha and VAX
Images:
UCX$TNDRIVER.EXE UCX V3.3-7D
Problem:
Following closely-spaced logins/logouts involving TNA devices,
the TNDRIVER enters a state wherein additional devices are no
longer being deleted, but remain in existence until the next
system reboot.
Processes which generate a lot of output during execution of an
exit handler and image rundown would hang following breakage of
the TCP/IP network link, rather than being able to finish their
output and terminate.
Executing a UCX STOP COMMUNICATION command while active TNDRIVER
terminal sessions existed could cause a crash.
Solution:
Initialize the appropriate timer queue fields upon UCB
creation.
Remove the limit on the number of output operations which are
permitted following forced closure of a terminal session.
Validate the AQB before utilizing it.
Reference:
Numerous customer problem reports
ECO 4 Updates:
--------------
ECO E 11-OCT-1995 Alpha and VAX
Images:
UCX$TELNET.EXE UCX V3.3-7E
Problem:
When using IBM-3278-4 [R] model terminals, if the user is
entering some data when at the same time unsolicited data comes
from the IBM host, data is lost.
In the SNA version we return error status to the IBM host, if we
are in a state that does not expect incoming data from the IBM
host. The IBM host can handle the error on the out-of-band
channel and sync up with the terminal emulator. With TN3270
there is only one channel and the TN3270 server on the host does
not deal with the error messages well.
Solution:
If the terminal emulator receives an unexpected message from the
host, do not reject it as in the past. We now set the response
status to 0 in the state table and act on the incoming message
as if it were expected. Because we use different buffers for
incoming and outgoing data, no data will be lost.
Reference:
CFS.29514, CFS.23060, CFS.27550
ECO 5 Updates:
--------------
ECO G 01-Nov-1995 Alpha and VAX
Images:
UCX$TELNET.EXE UCX V3.3-7G
Problem:
Most terminal settings appear to be lost when TELNET sets up an
interactive session with the remote host.
Solution:
TELNET honors the terminal's settings, but it sets the terminal
PASTHRU characteristic which causes the client's terminal driver
to ignore those settings.
The correction involves recoding the client's terminal driver
interface to use the appropriate set of QIOs and library calls
so that the PASTHRU setting is not required.
Reference:
CFS.32095, CFS.33818
ECO 6 Updates:
--------------
ECO H 14-Nov-1995 Alpha and VAX
Images:
UCX$TNDRIVER.EXE UCX V3.3-7H
Problem:
System crash TN$ABORT due to synchronization error whereby the
TN UCB is pointing at a stale BG UCB.
Solution:
In several places in the TNDRIVER, the code tests for the
validity of the pointer to the BG UCB by verifying that it is a
system address. In order to minimize the likelihood of this
problem, we introduce a more rigorous validation of the address
of the BG UCB. In particular, if the address is a system
address, then we verify that this BG UCB is also pointing to the
TN UCB at offset UCB$L_BG_TEL_UCB. If not, we essentially
determine that the address is not valid and refuse to use it.
Reference:
CFS.34783
ECO I 20-Nov-1995 Alpha and VAX
Images:
UCX$TELNET.EXE UCX V3.3-7I
Problem:
When the user specifies the /NOINTERACTIVE TELNET command
qualifier two different problems could arise:
1. If no node name was specified, the user was given the
interactive prompt TELNET>. Since the user specified
/NOINTERACTIVE on the command line, this behavior was not
desired.
2. The TELNET keypad key "FIND" allowed the user to spawn
commands off to DCL. If the /NOINTERACTIVE TELNET command
qualifier was specified, allowing the user to spawn commands
off to DCL created a security leak. The TELNET keypad key
"FIND" was disabled if the command qualifier /NOINTERACTIVE
was specified.
Solution:
Support for the /NOINTERACTIVE command qualifier.
Reference:
Internal problem report
ECO J 29-Nov-1995 Alpha and VAX
Images:
UCX$TELNET.EXE UCX V3.3-7J
Problem:
ECO G created a problem obtaining and providing the terminal
type consistently to the remote host.
The order of the terminal type determination was not consistent
because the TTType() routine was being called from three places.
The order should be:
1. The default terminal type of SYS$OUTPUT,
2. Any SET TERMINAL/DEVICE setting from the TELNET.INI
(initialization) file,
3. The value of the qualifier /TERMINAL_TYPE from the
TELNET command line.
Solution:
Modified the mainline code to obtain the default terminal type
of SYS$OUTPUT, invoke the startup procedure, then use the value
from the /TERMINAL_TYPE qualifier.
Reference:
CFS.33818
Problem:
Exiting TN3270 using Crtl/Z leaves Crtl/T and Crtl/Y disabled.
Solution:
When the STE$HIBER() routine returns, assume a link disconnect
and set the session's NT_STATUS to SS$_LINKDISCON. This will
cause the exit path to clean up properly.
Reference:
CFS.34668
ECO 7 Updates:
--------------
ECO K 11-Jan-1996 Alpha and VAX
Images:
UCX$TNDRIVER.EXE UCX V3.3-7K
Problem:
Continuing system crashes due to synchronization errors whereby
the TN UCB is pointing at a stale BG UCB.
Solution:
Expand the validity tests introduced in ECO H above and make
them more extensive. In addition, add a new test to validate
the link between a supposed BG UCB and a SOCKET.
In expanding the validity tests, we now use data passed from the
BGDRIVER (in the INETCB). This means that this ECO of the
TNDRIVER requires at least ECO W of the NET facility.
In addition, as a build note, in order to properly link the
TNDRIVER with the reference to a new INETCB field, it is
necessary to temporarily copy the INET.MLB from the OBJ_PAT
directories to the relevant OBJ directories.
Reference:
CFS.36056
ECO L 17-Jan-1996 Alpha and VAX
Images:
UCX$TELNET.EXE UCX V3.3-7L
Problem:
On AXP system, the TN3270 emulator does not load the customized
EBCDIC/DMCS Translation table, and fails with the error message
%UCX-E-TRALOAFAI, failed to load translation tables from
SYS$SYSROOT:[SYSLIB]TN3270DEF.TBL
Solution:
The image header format has changed. A new alias code has been
defined for Alpha and the location of the number of header disk
blocks has also been moved. This requires that a new LOAD_xxx
routine be developed. This routine has the name LOAD_AXP.
Reference:
CFS.33698
ECO M 18-Jan-1996 Alpha and VAX
Images:
UCX$TELNET.EXE UCX V3.3-7M
Problem:
ECO G and ECO J created a problem providing the terminal type
consistently to the remote host from the TELNET prompt. This
is now corrected (again).
Solution:
Modify the CONNECT/OPEN code to default the terminal type buffer
to that obtained using the ECO J algorithm. If P3 of the
command is specified, it will be used instead of the default
value.
ECO 8 Updates:
--------------
ECO N 6-Feb-1996 Alpha and VAX
Note: This is the analog of ECO F for V4.0.
Images:
UCX$TNDRIVER.EXE UCX V3.3-7N
Problem:
System crash due to corrupted memory. Specifically the area
in a TN UCB beyond the UCB$T_TEL_TTY_NAME, for approximately
64KB, may have been destroyed.
Solution:
The problem is an ineffective length calculation for a MOVC3
instruction. Apparently we calculate a negative length in some
circumstances, and then we did a compare (that was NOT unsigned)
that permitted a very large effective length to be used.
The solution is to insure that is within bounds.
Reference:
CFS.37455
ECO O 25-Mar-1996 Alpha and VAX
Images:
UCX$TELNET.EXE UCX V3.3-7O
Problem:
Entering an escape sequence while in character mode results in
the transmission of multiple segments to the server. This
causes problems when poorly-coded servers expect escape
sequences to appear in a single input segment.
This correction is a courtesy.
Solution:
Enable escape sequence recognition and, when in character mode,
remove the limitation of one character for the input buffer.
Reference:
CFS.38533
ECO 9 Updates:
--------------
ECO P 4-May-1996 Alpha and VAX
Images:
UCX$TNDRIVER.EXE UCX V3.3-7P
Problem:
System crash AT TNDRIVER+2C6 due to corruption at TNDRIVER+2CC.
Solution:
The problem arises because of the overlaying of UCB$L_PDT by the
UCX defined field UCB$L_ACP_LINK in both BG and TN UCBs. In UCX
shutdown, under certain conditions, the TTDRIVER (i.e., Terminal
Class Driver) will misinterpret the UCB$L_PDT field and use it
as a pointer into what it thinks is another UCB. The TTDRIVER
will then clear a longword at an offset from the pointer. Since
in our case we have a pointer into the TNDRIVER at UCB$L_PDT, we
wind up with the TTDRIVER clearing a longword of code in the
TNDRIVER, leading to a subsequent crash when UCX is re-started.
The solution is part of a coordinated change that also has NET
component changes. See the ECO L description in the NET
'redeem' for V4.0 for a full description of the changes.
References:
Internal reports
ECO 10 Updates:
--------------
ECO Q 19-Jun-1996 Alpha and VAX
Images:
UCX$TELNET.EXE UCX V3.3-7Q
UCX$TNDRIVER.EXE UCX V3.3-7Q
Problem:
When creating an outbound session, the TNDRIVER automatically
sends WILL-DO-ECHO and WILL-DO-SGA in the output stream. This
creates problems from some TELNET clients/devices on the remote
host.
Solution:
In TELNET client, add the /OPTIONS qualifier to accept ECHO and
SGA (and others) as options keywords which will be passed to the
INETACP at session creation.
In TNDRIVER, add code to sense that this is an outbound session
and, to negotiate ECHO and SGA if the user has selected the
options from the TELNET client.
Reference:
CFS.41867
Problem:
The TELNET CREATE_SESSION command does not accept more than four
digits for the port number parameter.
Solution:
Increase the size of the buffer used to read the port number
from DCL. This correction was also applied to
CREATE_INCOMING_SESSION and ATTACH.
Reference:
CFS.42159
ECO R 8-July-1996 Alpha and VAX
Images:
UCX$TNDRIVER.EXE UCX V3.3-7R
Problem:
Incoming TELNET sessions hang.
Solution:
Problem is caused by previous fix. An incorrect branch
destination caused us to skip part of normal negotiation for
inbound sessions. In UCX$TN_SERVER_TELNET.MAR, we modify the
branch destination of a newly introduced instruction so that
previous behavior for inbound sessions is retained.
Reference:
CFS.0895
ECO S 15-July-1996 Alpha and VAX
Images:
UCX$TELNET.EXE UCX V3.3-7S
Problem:
The TELNET DELETE_SESSION command returns a false error message.
Solution:
Correct the status check on the $ASSIGN() to the network device.
Reference:
Local testing.
---------------------------------------------------------------------------
Fixes for DEC TCP/IP Services V3.3 Management Control Program (UCP)
---------------------------------------------------------------------------
ECO 1 Updates:
--------------
ECO A 16-Jun-1995 Alpha and VAX
Images:
UCX$UCP.EXE UCX V3.3-7A
Problem:
The /HOLD qualifier is not supported in UCX ANALYZE MAIL/REPAIR
even though it is documented.
Solution:
Provide parser support in UCP for the /HOLD qualifier.
The other part of this fix is in SMTP (and is included
in ECO A for SMTP images) to provide the rest of the
support to place entries on hold after an ANALYZE MAIL
/REPAIR has been executed.
References:
CFS.23288, CFS.23828
ECO 5 Updates:
--------------
ECO B 01-Nov-1995 Alpha and VAX
Image:
UCX$UCP.EXE UCX V3.3-7B
Problem:
UCP crash with the SET CONFIGURATION INTERFACE command when
an invalid broadcast mask is specified.
Solution:
Validate the broadcast mask string.
Reference:
CFS.32916
ECO 6 Updates:
--------------
ECO C 12-Dec-1995 Alpha and VAX
Image:
UCX$UCP.EXE UCX V3.3-7C
Problem:
Permanently defined CLUSTER_TIMER is lost after restart of UCX.
Solution:
Send CLUSTER_TIMER to INET_ACP along with all other communication
parameters.
Reference:
CFS.29886
ECO 7 Updates:
--------------
ECO D 29-JAN-1996 Alpha and VAX
Images:
UCX$PING.EXE UCX V3.3-7D
Problem:
PING always returns $STATUS=1 when used with qualifiers.
Solution:
The finish() fixed to return UCX$_LOOP[IN]ACT status codes.
Reference:
CFS.37154
ECO 8 Updates:
--------------
ECO E 27-FEB-1996 Alpha and VAX
Image:
PING.EXE UCX V3.3-7E
Problem:
Ping would not resolve hostnames that start with "X" correctly.
Solution:
Relink UCX$PING.EXE against updated UCX$IPC_SHR.
Reference:
CFS.37910
ECO 10 Updates:
--------------
ECO F 8-JUN-1996 Alpha and VAX
Image:
UCX$UCP.EXE UCX V3.3-7F
Problem:
Probe and drop timer are not propagated upon UCX startup if
drop timer is lower than the default probe timer (75 seconds).
Solution:
Reverse order of probe and drop timer settings upon startup
so that new (lower) probe timer value is already set by the
time of setting drop timer value.
Reference:
CFS.40000
Problem:
In SHOW PROXY display, if the last record is both NFS and
communication, only its NFS part is displayed.
Solution:
Make proper "end of file" situation handling.
Reference:
CFS.41660
---------------------------------------------------------------------------
Fixes for DEC TCP/IP Services V3.3 UCX$IPC_SHR.EXE
---------------------------------------------------------------------------
ECO 1 Updates:
--------------
ECO A 14-June-1995 Alpha and VAX
Image:
UCX$IPC_SHR.EXE UCX V3.3-7A
Problem:
When one thread blocked I/O in a multithreaded environment,
other threads were also intermittently blocked.
Solution:
The DECthreads environment does not always correctly handle the
case where threads are sharing an event flag, each waiting for
it to be set.
Modify the UCX socket library so that a new event flag is
allocated for each operation, rather than using the same event
flag over and over.
Reference:
CFS.28055
ECO 6 Updates:
--------------
ECO B 1-Dec-1995 Alpha and VAX
Images:
UCX$IPC_SHR.EXE UCX V3.3-7B
Problem:
Due to a typo in the previous ECO, the select() call
intermittently returned an incorrect status.
Solution:
Fix the typo -- R1 should have been R8.
ECO 8 Updates:
--------------
ECO C 25-Dec-1996 Alpha and VAX
Images:
UCX$IPC_SHR.EXE UCX V3.3-7C
Problem:
The INET_ADDR does not resolve hex and octal prefix correctly.
Hex addr must have a prefix 0x and octals must have 0 in front.
Routine should return -1 for all unresolved addresses.
Solution:
Routine now checks for '0' as the first char and the following
'x'. Also checks for trailing characters at the end.
Reference:
CFS.37910
ECO D 28-Feb-1996
Images:
UCX$IPC_SHR.EXE UCX V3.3-7D
Problem:
In UCX$CLOSE, we performed an IO$_DEACCESS operation. When
sockets are shared between multiple processes, this means that
one process closing a socket would prevent other processes from
continuing to use it.
Solution:
If the reference count on the affected device socket is greater
than 1, skip the IO$_DEACCESS.
Reference:
Internal report
---------------------------------------------------------------------------
Fixes for DEC TCP/IP Services V3.3 SNMP_ AGENT
---------------------------------------------------------------------------
---------------------------------------------------------------------------
Fixes for DEC TCP/IP Services V3.3 UCX$BOOTP.EXE
---------------------------------------------------------------------------
ECO 1 Updates:
--------------
ECO A 7-Aug-1995 Alpha and VAX
Images:
UCX$BOOTP.EXE UCX V3.3-09
Problems:
1. Boot replies are not properly sent to BOOTP relay servers
(wrong port).
2. Cannot run interactively for testing.
3. ACCVIO when BOOTP client name is not defined.
4. Cannot find client load file.
5. No client host name in boot reply.
6. Omit file version number in load file name.
7. Obtain all local IP addresses from kernel, and send proper
one for each client.
8. There are references to "gateway" when "relay" is the proper
term.
Solutions:
1. Fix check for relay agent address in GIADDR for BOOTREQUEST,
not BOOTREPLY op code. Send replies to relay ("gateway")
servers' ServerPort. Use the terms "ClientPort" and
"ServerPort to be consistent with RFC951.
2. Fix socket()/bind() problem so we can run the BOOTP server
interactively.
3. Fix BootRequest() to handle clients that have no host name;
this caused an ACCVIO.
4. Fix GetFileSize() to properly handle file name construction
when there is no host name.
5. Fix VendHost() to handle null or abbreviated host name.
6. Move file name to BOOTP response in GetFileName and leave
off the file version number.
7. Instead of trusting that GETHOSTNAME() returns the host name
that points to ALL interfaces, read the IFNET structure from
the kernel, and build a table of known local IP addresses
for outgoing responses to use in GIADDR. Match subnet masks
to select the appropriate address to send. Put the server
name in the response packet, according to the the name
associated with the interface, i.e., GETHOSTBYADDR().
8. Have the Trace routines refer to the relay as a relay, not a
"gateway."
Reference:
CFS.22665
ECO 4 Updates:
--------------
ECO B 20-Oct-1995 Alpha and VAX
Images:
UCX$BOOTP.EXE UCX V3.3-07B
Problem:
Send BOOTP relay responses to relay host, not client.
Fix socket()/bind() problem so BOOTP can be run interactively.
Fix ACCVIO caused when client has no host name.
Fix file name construction when there is no Host name.
Put fully qualified domain name for client in response, if it
fits.
Do not trust GETHOSTNAME()/GETHOSTBYNAME() to return all
possible IP addresses; use SENSEMODE QIOs to build full
list and scan routing table to identify appropriate IP
address to include in response to client.
Put the server name in the response options area.
Put Gateway(s) in response options area.
Handle nonexistent boot file properly.
Solution:
Fix check for relay agent address in GIADDR for BOOTREQUEST, not
BOOTREPLY opcode. Send replies to relay ('gateway') servers'
ServerPort. Use the terms 'ClientPort' and 'ServerPort' to be
consistent with RFC951.
Fix socket()/bind() problem so we can run BOOTP server
interactively.
Fix BootRequest() to handle clients that have no host name -
this caused an ACCVIO.
Fix GetFileSize() to properly handle file name construction when
there is no HostName.
Fix VendHost() to handle null or abbreviated HostName.
Move file name to BOOTP response in GetFileName, and leave off
the file version number.
Instead of trusting that GETHOSTNAME() returns the host name
that points to ALL interfaces, read the IFNET structure from
the kernel, and build a table of known local IP addresses for
outgoing responses to use in GIADDR. Match subnet masks to
select the appropriate address to send.
Put the server name in the response packet, according to the
the name associated with the interface, i.e. GETHOSTBYADDR()
Have the Trace routines refer to the relay as a relay, not a
'gateway'. The semantics are confusing enough (thanks to RFC
951). It's a relay, not a gateway.
In SUBNET_MATCH, fix for() loop to test correctly (n < ifnum).
Remove one-line function NET_MATCH(), and in GET_IPROUTE() use
an AND to compare a network route to a target address.
In GET_IPROUTE(), initialize variable route to NULL, and if no
route to the client is found, ignore the request.
In TraceReply(), check to see if the file exists, and if not
say so, instead of printing "-1 Blocks" and no file name.
A small optimization:
In INIT(), check for only one interface. If only one
interface exists, do not allocate the RTABLE because it will
not be needed.
In BootReply, if only one interface exists, do not scan
the route table to try to match interface addresses.
In BootRequest, handle non-existent file correctly (ignore the
request unless the client specified a file, in which case we
return a null file string).
In GET_ROUTABLE(), use MAXROUTECOUNT, not ROUTECOUNT (which
is not yet defined) when specifying the size of RTABLE in the QIO.
In INIT(), print a message when UCX$TFTP_ROOT does not exist, so
it is clear why BOOTP exits instead of running.
References:
CFS.22665, CFS.32366, CFS.3247, CFS.31249
ECO 6 Updates:
--------------
ECO C 29-Nov-1995 Alpha and VAX
Images:
UCX$TFTP.EXE UCX V3.3-7C
Problem:
Endless loop when client NAKs a DATA packet on RRQ
Random insertion of 0D (CRs) into binary RRQ DATA
Solution:
In proper checking for NAK (ERROR) response and drop
transfer in progress.When checking for duplicate requests,
if I/O is pending on the existing (first) transfer, kill it
anyway and cancel the I/O.
Corrected typo in if statement that checked for ASCII mode
and caused 0Ds to be inserted.
References:
CFS.33938
Images:
UCX$BOOTP.EXE UCX V3.3-7C
Problem:
If client supplies file name but the file does not exist,
BOOTP drops request. It should respond with a null file
name field.
Solution:
If file does not exist, zero file name field in response
and send it.
Also, for debugging purposes, add check for ARP record
to see if client is already known. This allows BOOTP
client test program to send test requests with an
arbitrary hardware address (i.e. 01-02-03-04-05-06)
---------------------------------------------------------------------------
Fixes for DEC TCP/IP Services V3.3 R Commands.
---------------------------------------------------------------------------
ECO 3 Updates:
--------------
ECO A 03-Oct-1995 Alpha and VAX
Images:
UCX$RSH.EXE UCX V3.3-7A
Problem:
Problem using /SYSERROR in RSH command
Solution:
Alter the order in which create/bind/connect sockets
in SETUP_NETWORK_ENVIRONMENT(). When diagnostics/error
messages need to be sent to a different device other than
STDOUT, we need to execute code such that SOCK_1 gets
created/bound/connected first before we work with SOCK_2.
No new code added, just changed the order of execution.
Reference:
CFS.31263
Procedure:
RSH.CLD
Problem:
RSH did not work with /user or /password alone but worked for
the combination.
Solution:
Fix the code in RSH.CLD so that /user and /password can be used
individually.
Reference:
CFS.32208
ECO 4 Updates:
--------------
ECO B 16-Oct-1995 Alpha and VAX
Images:
UCX$RSH.EXE UCX V3.3-7B
Problem:
Fix a problem introduced in ECO A (3.3) where the RSH
command was failing with a bind() error on STDOUT on
execution.
Solution:
Had inadvertently missed using an initial address of 0
to bind the socket for STDOUT.
References:
CFS.31263, CFS.33663, CFS.32208
ECO 7 Updates:
--------------
ECO C 16-Nov-1995 Alpha and VAX
Images:
UCX$RSH.EXE UCX V3.3-7C
Problem:
Output from RSH is not correct both in leading and ending
new lines. The output log file is missing blank lines. The output
is prematurely truncated (not being flushed).
Solution:
Sense the device type of SYS$OUTPUT and modify routine
WRITE_OUTPUT() to generate the proper output. Ensure that the
buffer is flushed.
Reference:
Internal reports
ECO D 31-Jan-1996 Alpha and VAX
Images:
UCX$RSH.EXE UCX V3.3-7D
Problem:
Command lines not enclosed in quotes are converted to lower case.
Solution:
Parse the command line appropriately.
References:
Internal reports
Problem:
Fragments of the output stream are lost if it contains NULL
character(s).
Solution:
Fixed.
Reference:
Internal report
ECO 10 Updates:
--------------
ECO E 17-Jun-1996 Alpha and VAX
Images:
UCX$RSH.EXE UCX V3.3-7E
Problems:
1. Customer would like the ability to enable TCP KEEPALIVE
similar to FTP and TELNET clients.
2. Interactive mode does not work properly.
3. Output of RSH/REXEC is slow (300 baud).
4. Output of RSH/REXEC generates lines of single characters
when output is directed to a non-terminal.
Solutions:
Fixed.
References:
1. CFS.33696
2. CFS.38608
3. CFS.40055
4. CFS.40513
---------------------------------------------------------------------------
Fixes for DEC TCP/IP Services V3.3 REMOTE COPY Command.
---------------------------------------------------------------------------
ECO 3 Updates:
--------------
ECO A 15-Jun-1995 Alpha and VAX
Images:
UCX$RCP.EXE UCX V3.3-7A
Problem:
Error setting privileges.
Solution:
Alter the order of steps to set privileges. Do privilege
check/sets only in RRESVPORT().
Problem:
Exit with proper status after execution of RCP command.
Solution:
Though RCP has its own message facility, we were not exiting
with a proper status indicating success/failure. Changed all the
relevant routines to do this. Limitation : On a remote-remote
copy since we use RSH to execute the RCP command remotely, exit
status always indicates success due to the inability of RSH to
return anything else.
Reference:
Internal reports
ECO 4 Updates:
--------------
ECO B 17-Oct-1995 Alpha and VAX
Images:
UCX$RCP.EXE UCX V3.3-7B
Problem:
RCP client waiting for acknowledgment message
Solution:
RCP server needs to send a single byte of acknowledgment due
to changes in the RSH/REXEC server code.
---------------------------------------------------------------------------
Fixes for DEC TCP/IP Services V3.3 NFS Server
---------------------------------------------------------------------------
ECO 2 Updates:
--------------
ECO A 07-Sep-1995 Alpha and VAX
Images:
UCX$CFS_SHR.EXE UCX V3.3-7A
Problem:
Reading a fixed, sequential file which has an incomplete last
record resulted in the loss of the partial record.
Solution:
This fix removes the application of a previous fix from V3.2 ECO
A as it pertains to sequential files containing fixed length
records.
Reference:
CFS.27713
ECO 3 Updates:
--------------
ECO B 11-Oct-1995 Alpha and VAX
Images:
UCX$CFS_SHR.EXE UCX V3.2-7B
Problem:
Call to BFS$$SLEEP had one extra digit of 0 in its argument,
thus sleeping for 5 seconds instead of a half second when cache
buffers are depleted. This causes a sparse write to take much
longer than necessary.
Solution:
Eliminate extra 0 digit.
Reference:
CFS.31281
Problem:
The thread synchronization routines could leave ASTs disabled
on internal calls. This results in a kernel mode loop within
ASTDEL attempting to deliver ASTs to executive mode while ASTs
are disabled.
Solution:
Clear the AST context bits when the thread goes asynchronous.
Reference:
CFS.30672
ECO 7 Updates:
--------------
ECO E 26-Dec-1995 Alpha and VAX
Images:
UCX$CFS_SHR UCX V3.3-7E
Problem:
Server returns null in the $ADF$ file for unknown or missing
version limit. It should be %X7FFF. This confuses the client
into purging when it should not.
Solution:
Substitute %X7FFF for null in the VMS_VERLIMIT filed of
the RDCB extension.
Reference:
CFS.33538
ECO 8 Updates:
--------------
ECO F 16-Feb-1996 Alpha and VAX
Images:
UCX$CFS_SHR.EXE
Problem:
Device, volume and file protections, and ACLs are not
supported properly.
Solution:
Sense V6+ of OpenVMS, add support for the volume ORB
and the new protection mask formats, and add support
for ACLs using VM variable allocations.
Reference:
CFS.22201
Problem:
Renaming directory files on file systems which are
exported with the TYPELESS_DIRECTORIES option require
that the file type .DIR is specified on the from and
to file names.
Solution:
The file type .DIR should be enforced (if provided)
and defaulted to .DIR;1 if absent.
Reference:
CFS.37981
ECO G 20-Feb-1996 Alpha and VAX
Images:
UCX$CFS_SHR.EXE V3.3-7G
Problem:
When the export option NODATA_CONVERSION is selected for
a file system, STREAMCR files are converted to STREAMLF
format.
Solution:
Change the file system code to return the data in its raw
state when NODATA_CONVERSION is set, and convert from
STREAMCR to STREAMLF otherwise.
Reference:
CFS.38128
ECO H 24-Mar-1996 Alpha and VAX
Images:
UCX$CFS_SHR.EXE UCX V3.3-7H
Problem:
When installing ECO A onto a non-V5 system, a protection
error (NOPRIV) is generated when performing the device
protection check.
Solution:
Change the system version check condition from an AND to
an OR in the NEQL check.
Reference:
CFS.38128
ECO 9 Updates:
--------------
ECO I 09-May-1996 Alpha and VAX
Images:
UCX$CFS_SHR.EXE UCX V3.3-7I
Problem:
The ECO F code can attempt to move a larger ACL area into
a smaller area, causing an ACCVIO or corruption.
Solution:
Change the size of the move to the exact ACL size, not the
size of the initially allocated ACL area.
Reference:
Internal testing
ECO 10 Updates:
--------------
ECO J 15-May-1996 Alpha and VAX
Images:
UCX$CFS_SHR.EXE UCX V3.3-10J
Problem:
ECO I does not take into consideration when the preallocated
ACL buffer (512) is smaller than the actual ACL (> 512).
Solution:
Use the MIN(.RDCB_PTR[RDCB$L_ACL_SIZE],.ACL_LENGTH) when
moving the ACL.
Reference:
Internal report
ECO K 19-JUN-1996 Alpha and VAX
Images:
UCX$CFS_SHR.EXE
Problem:
ECO D does not work for bound volume sets. The directory
record has a null FIB$B_FID_RVN if the file is on the same
member volume as the directory.
Solution:
If FIB$B_FID_RVN is null, replace it with the one from the
file handle.
Reference:
CFS.35040
ECO L 9-JUL-1996 Alpha and VAX
Images:
UCX$CFS_SHR.EXE UCX V3.3-10L
Problem:
If NODATA_CONVERSION is in effect, the server uses ";"
instead of "." as the version number delimiter.
Solution:
Add a pair of parentheses to the test for name conversion.
Reference:
CFS.42549
---------------------------------------------------------------------------
Fixes for DEC TCP/IP Services V3.3 NFS Client
---------------------------------------------------------------------------
ECO 1 Updates:
--------------
ECO A 3-Mar-1995 Alpha and VAX
Images:
UCX$DNFSACP*.EXE
Problem:
Directory updates made locally at the server are delayed
in becoming visible to the client, even with small values
for the directory cache and attributes cache timeouts.
Solution:
Zero the finfo->last_read time if the directory cache has
timed out. (This forces CHECK_ACCESS to do a real GETATTR.)
Reference:
CFS.25032
ECO A 1-Jun-1995 Alpha and VAX
Images:
UCX$DNFSACP*.EXE
Problem:
GRPPRV privilege was required to get access to a file
owned by a same-group user with group access allowed.
Solution:
Fixed code to allow access to users in the same group.
Reference:
CFS.27193
ECO A 28-Jun-1995 Alpha and VAX
Images:
UCX$DNFSACP*.EXE
Problem:
Normally, directories do not need and do not have ADF
files. However, SET DIR /VERSION_LIMIT creates an ADF file.
This causes a problem when deleting the directory, as the
RMDIR command is used on both the directory and the ADF, and
the ADF deletion fails.
Solution:
A new parameter has been added to the calling sequence of the
FREMOVE_INIT routine to specify whether a directory or a
regular file is being deleted.
Reference:
Internal report
ECO 7 Updates:
--------------
ECO B 29-Dec-1995 Alpha and VAX
Images:
UCX$DNFSACP.EXE UCX V3.3-7B
Problem:
An untranslatable hostname in a proxy record causes a
premature halt to the loading of the proxy database.
Solution:
Test return status from the hostname translation without
loading the status variable.
Reference:
CFS.34570
ECO 8 Updates:
--------------
ECO C 31-Jan-1996 Alpha and VAX
Images:
UCX$DNFSACP.EXE UCX V3.3-7C
Problem:
Happens only with Windows NT Intergraph server. On trying to
create a file in a directory allowing no write access, the
client loops many times retrying and finally dismounts the DFNS
device. In this case, Intergraph returns NFSERR_PERM instead of
NFSERR_ACCES.
Solution:
Fix incorrect parentheses in C statement checking status.
Reference:
CFS.36516
ECO 10 Updates:
--------------
ECO D 12-JUN-1996 Alpha and VAX
Images:
UCX$DNFSACP*.EXE UCX V3.3-7D
Problem:
PGFIPLHI system crash can happen in UCX$DNFSACP when
accessing the argument stack.
Solution:
Preload the addresses of arguments into registers before
raising IPL.
Reference:
CFS.41981
---------------------------------------------------------------------------
Fixes for DEC TCP/IP Services V3.3 UCXPCNFSD.EXE.
---------------------------------------------------------------------------
ECO 8 Updates:
--------------
ECO A 20-Mar-1996 Alpha and VAX
Images:
UCX$PCNFSD.EXE UCX V3.3-7A
Problem:
Incorrect brackets prevent authentication from ever
working with V1 protocol.
Solution:
Move misplaced bracket.
Reference:
CFS.38231
---------------------------------------------------------------------------
Fixes for DEC TCP/IP Services V3.3 UCX$NTPD.EXE.
---------------------------------------------------------------------------
ECO 1 Updates:
--------------
ECO A 12-Aug-1995 Alpha and VAX
Images:
UCX$NTPD.EXE UCX V3.3-7A
Procedures:
UCX$NTPD_STARTUP.COM
UCX$SHUTDOWN.COM
Problem:
UNIX [R] (OSF/1, ULTRIX) interoperability problem: Time is not
being set properly due to unsupported time zone offset and other
code affecting the internal variable NTS_offset.
Solution:
Support time zone offset; the system logical UCX$NTP_TZ must be
defined manually until we derive and set the time zone offset
with the configuration and installation procedures. UCX$NTP_TZ
for Boston, MA should have the following definition in
SYS$COMMON:[SYSMGR]UCX$NTPD_STARTUP.COM, where it is commented
out:
$ define/system ucx$ntp_tz -040000
You must define it manually for ECO A by replacing -040000 with
the appropriate value for your time zone offset and
uncommenting the DCL define statement. Note that the time zone
offset does not take care of the daylight savings problem, which
will be fixed later using an OpenVMS system service.
Problem:
UCX$SHUTDOWN.COM (in INSTALL) does not shut down the NTP server.
Solution:
SYS$MANAGER:UCX$SHUTDOWN.COM calls SYS$MANAGER:UCX$NTPD_SHUTDOWN.COM.
Problem:
Interoperability problems with NTP V1 hosts.
Solution:
Added a second keyword, "version," to the configuration file
"peer" command:
peer [version ]
For example:
peer 198.115.142.47 version 1
When the server polls the specified peer, it specifies NTP
version 1 in the packet. This is necessary to communicate with a
peer that only supports NTP V1 and when the NTP server is not
listed as a peer on the V1 server. If the V1 server polls the
OpenVMS NTP server first, the version number in the packet is
noted and used later in packets sent to the V1 server. Prior to
this, transmit.c toggled the version number if it received a V1
packet. In the case of versions 2 and 3, NTP alternates versions
in case the peer does not respond.
Problem:
Remove the +/- 20-minute capture limitation. If the offset was
greater than 20 minutes slow or fast, we ignored the packet,
thereby limiting the server to set time within a +/- 20-minute
difference. This was due to lack of time zone support. This is
also dependent on defining UCX$NTP_TZ before UCX$NTPD.EXE
starts; since we know the time zone offset, the 20-minute
limitation can be removed.
Problem:
Process Software code base needs closer conformance to NTP V3,
RFC 1305. (The NTP V1 problem above is another instance of
this.)
Solution:
This is just the beginning; it may eventually look and behave
more like the xntp code base. But for now, three new
configuration file keywords are supported:
1. "Local-master " where stratum must be between 10
and 32, or 0 (to disable local-master).
2. "Master-clock " configures NTP as a master server
at a stratum lower than 10. This is used for hosts that have
special hardware to synchronize its clock.
3. "Server [version ]" -- When another
NTP server is specified with this command, this server will
operate in client mode and the other server in server mode.
In client/server mode, the client will adjust time according
to the server but the server will never synchronize to the
client. As with the peer configuration keyword, you may
specify the server's NTP version.
The intent for supporting master-clock and local-master is that
master-clock is for systems with synchronization hardware and
local-master is for "free-running" hosts without synchronization
hardware. It is possible that we have to refine more parameters
here as more intelligence can be applied to managing clock
precision.
For master-clock and local-master, we generate pseudo-peer
127.127.1.1 and set sys.peer to this pseudo-peer. We also did
some fixes with client mode and changed the "acquire" log
message to differentiate peers and servers.
Miscellaneous changes:
Keyword error checking prints out notification for unrecognized
keywords in the configuration file.
Sample Configuration
--------------------
The following is an example of a highly redundant and robust
configuration with multiple levels of backups.
On the Internet close to your network, there is host a.b.c.1
running at stratum 1 and host d.e.f.2 running at stratum 2. In
house, you have host x.y.z.1 which is synchronized with a WWVB
radio clock, and configured as a stratum 1 master clock.
[a.b.c.1] stratum 1
[d.e.f.2] stratum 2
Internet
====================================
LAN
[x.y.z.1]
master-clock 1 <==> WWVB CLOCK
[x.y.z.2]
local-master 10
server x.y.z.1
server a.b.c.1
server d.e.f.2
peer x.y.z.2
[x.y.z.3]
local-master 12
server x.y.z.1
server a.b.c.1
server d.e.f.2
peer x.y.z.3
Computer Room
------------------------------------
Offices
[x.y.x.*]
server x.y.z.1
server x.y.z.2
server x.y.z.3
As backup servers, two hosts, x.y.z.2 and x.y.z.3 in a climate-
controlled room, are chosen and one is configured at stratum 10
and the others at stratum 12. All other workstations on the
floor are pointing to x.y.z.1 - 3 for their synchronization
source.
When the configured topology is running and "stable," each local
host will be synchronized to x.y.z.1 since it is "closer" than
the stratum 1 host on the Internet, and all machines will be
running at stratum 2.
When x.y.z.1 goes down and if the Internet connection is still
up, either a.b.c.1 or d.e.f.2 are selected depending on their
availability, and x.y.z.2 and x.y.z.3 will run at stratum 2 or
3. Other hosts in the offices will synch off x.y.z.2 or x.y.z.3
at stratum 3 or 4.
When the Internet connection is lost or all the known servers
become unavailable, x.y.z.2 will free run at stratum 10 as it
was configured as a "local-master." It will become the highest
stratum available in the network and all other hosts (including
x.y.z.3) will be synchronized to x.y.z.2 at stratum 11.
If x.y.z.2 goes down, x.y.z.3 will run at stratum 12 and all
other hosts will synchronize at stratum 13. It is important to
set the stratum of x.y.z.3. If it is only one value apart
(i.e., 10 and 11), it may have problems synchronizing to x.y.z.2
because it will try to synchronize at stratum 11 off the clock
on x.y.z.2, and then find itself having a stratum 11 clock
locally and will synchronize to it instead. However, making
that value two stratums apart will result in synchronization
with x.y.z.2.
References:
CFS.29029, CFS.30950
ECO 2 Updates:
--------------
ECO B 11-Sep-1995 Alpha and VAX
Images:
UCX$NTPD.EXE UCX V3.3-7B
Problem:
Solution:
Change heuristics for supporting timezone differential factor
(via logicals) Support VMS V6.x SYS$TIMEZONE_DIFFERENTIAL
logical. Tolerate invalid definition and no definition of TDF
(timezone differential factor). Fix the 7 min 7 sec problem.
References:
CFS.29029, CFS.30950
ECO 3 Updates:
--------------
ECO C 20-Sep-1995 Alpha and VAX
Images:
UCX$NTPD.EXE UCX V3.3-7C
Problem:
NTS_offset may be incorrect due to not "borrowing" when doing
64-bit arithmetic.
Solution:
Borrow from the most-significant (high-order) 32-bits if
necessary when calculating NTS_offset. This could also result
in a 7 min 9 sec skew as observed in ECO B above.
References:
CFS.29029, CFS.30950
ECO 8 Updates:
--------------
ECO D 22-Feb-1996 Alpha and VAX
Images:
UCX$NTPD.EXE UCX V3.3-7D
Problem:
Memory leak caused by not freeing the request packet in
respond(); this occurs for client requests (e.g., "NTP "
from ULTRIX).
Solution:
Added free() the request packet before transmitting the response
PDU.
Reference:
CFS.37655
---------------------------------------------------------------------------
Fixes for DEC TCP/IP Services V3.3 UCX$FTP.EXE.
---------------------------------------------------------------------------
ECO 1 Updates:
--------------
ECO A 07-Jun-1995 Alpha and VAX
Images:
UCX$FTP.EXE
Problem:
DISABLE PORT (sendport) does not work.
Solution:
Wrong port used, no REUSEADDR, and needed retries for CONNECT().
Many changes (wrong port used, REUSEADDR and retries needed) in
INITCONN(). Also changed a test of sendport == -1 to sendport ==
1. Sendport cannot be -1.
Reference:
CFS.26307
Problem:
Attempting an operation on a nonexistent file returns the
WARNING message FTP$_NOSUCHFILE. This does NOT cause FTP to
exit as expected.
Solution:
Change the severity of FTP$_NOSUCHFILE to an ERROR.
Reference:
Internal report
Problem:
MPUT/PUT commands with a specified version returns an error.
Solution:
Remove the version number check which causes the file to be sent
using STOU instead of STOR. This was a carry-over from V1.0.
Reference:
Internal report
Problem:
APPEND command does not work properly.
Solution:
Do not let VMS-Plus mode place the connection into IMAGE mode.
Reference:
UCXBUGS #241
Problem:
MPUT/PUT commands leave the connection in IMAGE mode.
Solution:
Allow VMS-Plus mode to set IMAGE as needed, and to restore the
state when done.
Reference:
Internal report
Problem:
Messages are not generated by ENABLE and DISABLE commands, nor
by the sendport command.
Solution:
Display the current state of the option in the same way as the
ULTRIX command.
Reference:
Internal report
ECO B 26-Jun-1995 Alpha and VAX
Images:
UCX$FTP.EXE
Problem:
EOF of an /INPUT command file enters a loop.
Solution:
Sense the status FTP$_EXIT on calls to FTP$PROMPT().
Reference:
CFS.29248
ECO C 25-Jul-1995 Alpha and VAX
Image:
UCX$FTP.EXE
Problem:
V3.3 PUT/FDL command fails to specify the correct .FDL file name
on remote systems.
Solution:
In the routine FDLGENERATE, we updated some of the FAB fields to
reflect the corrected .FDL name just before calling the
FDL$GENERATE system service.
Reference:
CFS.29957
ECO D 25-Jul-1995 Alpha and VAX
Images:
UCX$FTP.EXE
Problem:
Whenever disk allocation errors such "device full" or "exceeded
disk quota" are detected by the server process, the client
process does not handle the error correctly; it simply issues a
%SYSTEM-F-LINKDISCON error message and exits.
Solution:
Remove the LIB$SIGNAL calls in routines: SEND_ASCII,
SEND_NORMAL_BIN, SEND_VMS_PLUS_BIN.
Reference:
CFS.29873
ECO E 16-Aug-1995 Alpha and VAX
Images:
UCX$FTP.EXE UCX V3.3-7E
Problem:
Issuing a get command to an IBM MVS system transfers the file
and then hangs until the IBM side times out and closes the link.
Solution:
Before issuing a GETREPLY in routine RECV_DATA, we check the
status of the data socket and close it if it is not set to a -1.
References:
CFS.30453, CFS.31372
ECO 2 Updates:
--------------
ECO F 07-Sep-1995 Alpha and VAX
Images:
UCX$FTP.EXE UCX V3.3-7F
Problem:
Using /ULTRIX switch no longer allows the use of mixed-case
filenames without the use of quotes.
Solution:
Bypassed some code which always lowercased the filenames
in routine CLI_GET_VALUE and also changed the parameter type
for the GET verb in the .CLD file (no longer $QUOTED_STRING)
Reference:
CFS.32191
ECO 4 Updates:
--------------
ECO G 15-Sep-1995 Alpha and VAX
Images:
UCX$FTP.EXE UCX V3.3-7G
Problem:
FTP does not appear to recognize when certain logical names
are defined - specifically UCX$FTP_KEEPALIVE, UCX$FTP_STREAMLF,
and UCX$FTP_RAW_BINARY.
Solution:
Fixed routines GET_XFER_MODE, GETKEEPALIVE, and
GET_ASCII_STRUCT, so that when those logicals are translated,
the routines check for 'TRUE', 'YES', 'true', 'yes', or '1'
instead of just '1'.
Reference:
Internal report
Problem:
Some problems with lowercase filenames on PUT/GET
Solution:
Fixed routine FTP$GET so that when we get the value of P1,
we no longer check for FTP$_QUOTES_STRIPPED; instead we
see if the file is a valid file specification by using SYS$PARSE.
In routine FTP$PUT, we copy the local filename to the
remote filename if in ULTRIX mode and a remote filename was
not specified initially.
Reference:
CFS.32610
Problem:
Unable to specify port number when using FTP in ULTRIX mode
(FTP :== UCX$FTP/ULTRIX)
Solution:
Fixed routine FTP$CONNECT so that it works in ULTRIX mode in
conjunction with a new parsing function (ParseRemote).
Reference:
CFS.32599
ECO H 16-Oct-1995 Alpha and VAX
Images:
UCX$FTP.EXE UCX V3.3-7H
Problem:
Problem with using /INPUT and /USER together
on the same command line.
Solution:
Fixed routine LOGIN_PROMPT. Also fixed MAIN so that 'FTP_STDIN'
is opened before calling CMD_LINE_LOGIN.
References:
CFS.29352, CFS.32234
Problem:
Put command failing to HP3000.
Solution:
Bypassed code in routine SEND_DATA dealing with version number
processing (searching for semi-colon, dot, etc.); this was
causing problems when attempting to send a remote filename
containing a semi-colon.
Reference:
CFS.32825
Problem:
Wild-card processing is ignoring certain RMS errors.
Solution:
In routine WLDCRD_PUT_PROCESS, added a flag check so the
appropriate RMS error message is returned instead of
FTP$_NORMAL (in this case, file-not-found).
ECO I 17-Oct-1995 Alpha and VAX
Images:
UCX$FTP.EXE UCX V3.3-7I
Problem:
COPY/FTP and DIR/FTP no longer work.
Solution:
DIR/FTP and COPY/FTP stopped working when we stopped lowercasing
everything; now strings coming back from DCL (which by default
are uppercased) are simply compared.
Reference:
CFS.33803
ECO 7 Updates:
--------------
ECO K 19-Dec-1995 Alpha and VAX
Images:
UCX$FTP.EXE
Problem:
FTP client not handling search lists and rooted logical names
correctly.
Solution:
Extensive changes to a number of routines to fix problems
dealing with rooted logicals and search lists; added new
functions 'RMScheck', 'GetLogicalName', and 'VerifySearchList'
to help with correctly parsing logical names in addition to new
routines 'RestoreDefaults', 'SaveDefaults' and
'SetLocalDefault'.
References:
CFS.35314, CFS.35351
Problem:
Username/Password prompting is inconsistent when using an input
file.
Solution:
Reworked 'LOGIN_PROMPT' so that if an input file is specified
AND either username or password is missing, we prompt for the
missing argument; if both username and password are missing
from the command line, then assume it's in the input file.
ECO L 05-Jan-1996 Alpha and VAX
Images:
UCX$FTP.EXE
Problem:
FTP Append operation not working correctly when dealing with
remote filenames containing uppercase characters.
Solution:
Removed forced lowercasing on remote filename, which was
something left over from earlier implementations; also needed
to change default FAB fields for RMS processing.
Reference:
CFS.35833
ECO M 25-Jan-1996 Alpha and VAX
Images:
UCX$FTP.EXE UCX V3.3-7M
Problem:
RMS-F-DNF error when our default directory is set to a
multi-device, rooted logical.
Solution:
In FTP$PUT, removed SYS$DISK:[]*.*; from RMS default name
field 'fab.fab$l_dna'.
Problem:
Inconsistent behavior when setting current working directory;
also initial working directory not being restored upon exit.
Solution:
Added new routines 'SetLocalDefault', 'RestoreDefaults' and
'SaveDefaults', in which we now use SYS$SETDDIR and
LIB$SET_LOGICAL, in place of C library routines 'CHDIR' and
'GETCWD'.
Problem:
When files with non-standard filenames are specified on GET
operations they get renamed to FILE.TXT if no output filename is
specified.
Solution:
Using new routine 'ConvertFileNameToVMS' in FTP$GET, where an
attempt is made to convert a non-VMS filename to something more
meaningful; it will resort to FILE.TXT if it still can not be
parsed.
Problem:
Inconsistent behavior when input file is specified along with
either username or password; when either argument is missing no
prompting for the missing argument.
Solution:
Reworked routine 'LOGIN_PROMPT' so that if an input file is
specified AND either username or password is missing, we prompt
for the missing argument; if both username and password are
missing from the command line, then assume it's in the input
file.
Problem:
Mixed-case filenames can only be used if specified within quotes
or if FTP is setup as a foreign command with /ULTRIX.
Solution:
Ensure that in routine 'FIX_CMD' case is preserved regardless of
mode.
References:
CFS.35314, CFS.35351
Note:
Some of the above may be duplicates from previous ECOs with
additional modifications.
ECO 8 Updates:
--------------
ECO N 29-Jan-1996 Alpha and VAX
Images:
UCX$FTP.EXE
Problem:
Maximum record size field not being set correctly
when doing a PUT
Solution:
Modified 'FDLGENERATE' to retrieve 'XAB$W_LRL' so that
we can set 'FAB$W_MRS' before generating an FDL file
Reference:
CFS.36380
ECO O 05-Feb-1996 Alpha and VAX
Images:
UCX$FTP.EXE
Problem:
Upon exiting FTP, the user's SYS$DISK logical is set
incorrectly.
Solution:
Fixed bug in 'RestoreDefaults' routine where string length was
being incorrectly set prior to calling run-time library routine.
ECO P 06-Mar-1996 Alpha and VAX
Images:
UCX$FTP.EXE UCX V3.3-7P
Problem:
RMS error when using a 64K window size
Solution:
Make 'xfr_len' a long instead of short
ECO 9 Updates:
--------------
ECO Q 07-May-1996
Images:
UCX$FTP.EXE UCX V3.3-7Q
Problem:
Maximum value for window size set incorrectly.
Solution:
Make new value 64k-2 and ensure that transfer length used in
QIOs are a multiple of 512.
ECO R 15-May-1996 Alpha and VAX
Images:
UCX$FTP.EXE UCX V3.3-7R
Problem:
FTP client 'sunique' command no longer works.
Solution:
Restored 'version' check in 'SEND_DATA' routine which
was inadvertently left out
Reference:
CFS.40617
Problem:
Record mode transfer not working correctly.
Solution:
Fixed bug in 'SEND_ASCII'.
Reference:
CFS.29927
ECO 10 Updates:
--------------
ECO S 19-Jun-1996 Alpha and VAX
Images:
UCX$FTP.EXE UCX V3.3-7S
Problem:
Put command failing to HP3000 (old problem cropping up again)
Solution:
Fixed bug in 'SEND_DATA' where I needed to use '&&' instead
of '||' when checking for valid character that might indicate
a version number. ( *(v+1) >= '0') && ( *(v+1) <= '9')
References:
Internal reports
---------------------------------------------------------------------------
Fixes for DEC TCP/IP Services V3.3 UCX$FTPC.EXE and UCX$FTPD.EXE
---------------------------------------------------------------------------
ECO 1 Updates:
--------------
ECO A 27-Apr-1995 Alpha and VAX
Images:
UCX$FTPD.EXE UCX V3.3-7A
UCX$FTPC.EXE UCX V3.3-7A
Problem:
Cannot use exclamation marks (!) in server announcements or
anonymous welcome messages.
Solution:
Change the way FTP$SERVER_ANONYMOUSD.C is called and
SEND_SERVER_MESSAGE calls SENDREPLY.
Change the way FTP$SERVER_ANONYMOUSC.C is called and
SEND_CLIENT_MESSAGE calls POSTREPLY.
Reference:
Internal report
Problem:
Angle brackets '<' and '>' do not work for directory specs.
Solution:
Change STOR not to checkdir_access if angle brackets are
present.
Reference:
CFS.27084
Problem:
DISABLE PORT (sendport) does not work.
Solution:
Many changes (wrong port used, REUSEADDR and retries needed) in
INITCONN. Also changed a test of sendport == -1 to sendport ==
1. Sendport cannot be -1.
Reference:
CFS.26307
ECO B 03-Aug-1995 Alpha and VAX
Images:
UCX$FTPC
Problem:
Disk allocation errors ("device full" and "exceeded disk quota")
are not handled correctly.
Solution:
Fix all the modules that call SYS$CREATE and check for RMS$_FUL
and for RMS$_CRE in conjunction with SS$_EXDISKQUOTA.
Reference:
CFS.29873
ECO C 07-Aug-1995 Alpha and VAX
Images:
UCX$FTPC.EXE UCX V3.3-7C
Problem:
When doing a PUT of an indexed file, the client receives an
error message "RMS WRITE failure" when, in fact, the file
had been correctly copied over.
Solution:
Check the RMS field rab.rab$l_sts for a status of RMS$_EOF
after doing a SYS$WRITE.
Reference:
CFS.29248
ECO 4 Updates:
--------------
ECO D 06-Oct-1995 Alpha and VAX
Images:
UCX$FTPC.EXE UCX V3.3-7D
Problem:
Files and directories created are always owned by the
FTP user instead of by the owner of the parent directory
Solution:
In routine 'MKD' changed the call to LIB$CREATE_DIR, leaving out
the optional 'owner-UIC' argument, thereby allowing for newly
created files and/or directories to be owned by the parent
directory IF the user has the right privileges. Prior to this,
with or without privileges, they would all be created with that
user's UIC.
Reference:
CFS.33341
ECO 8 Updates:
--------------
ECO G 25-Jan-1996 VAX and Alpha
Images:
UCX$FTPC.EXE
Problem:
Maximum record size field not being set correctly when doing a
GET.
Solution:
Modified 'FDLGENERATE_IN_MEM' to retrieve 'XAB$W_LRL' so that we
can set 'FAB$W_MRS' before generating an FDL file.
Reference:
CFS.36380
ECO H 09-Feb-1996 VAX and Alpha
Images:
UCX$FTPC.EXE UCX V3.3-7H
Problem:
Number of misc. problems associated with using Anonymous,
such as, logical name translation (especially with use of
the UCX$FTP_ANONYMOUS_DIRECTORY logical, allowing access
beyond those defined, etc.
Also, server child process goes into resource wait state
occasionally.
Solution:
New routines include 'CheckAnonymousAccess' and 'ParseName',
making obsolete most of the functions in
FTP$SERVER_ANONYMOUSC.C.
When a system-wide logical is defined ("UCX$FTP_SERVER_DBG"),
Resource Wait mode is disabled; this allows for system
services to report any error status in its log file.
ECO I 22-Feb-1996 Alpha and VAX
Images:
UCX$FTPC.EXE
Problem:
The 'cd' command no longer works without '[]'.
Solution:
Add appropriate checks in 'CWD' routine in server.
Reference:
CFS.38258
ECO J 05-Mar-1996 Alpha and VAX
Images:
UCX$FTPC.EXE UCX V3.3-7J
UCX$FTPD.EXE UCX V3.3-7J
Problem:
Problems using 'cd' with ANONYMOUS account
Solution:
Fix bug in 'DirectoryCheck'; bug with flag 'user_anonymous' not
being reset properly; allow for <> and .. in directory commands.
Reference:
CFS.38258
ECO 9 Updates:
--------------
ECO K 29-Apr-1996 Alpha and VAX
Images:
UCX$FTPC.EXE UCX V3.3-7K
Problem:
'MGET' operations from V3.3 server result in client's
getting filenames which include full VMS directory path
Solution:
Fixed 'nlist' code where it prefaced the full directory
path when the default working directory is a rooted
logical (like SYS$HELP).
Reference:
CFS.40440
ECO L 15-May-1996 Alpha and VAX
Images:
UCX$FTPC.EXE UCX V3.3-7L
Problem:
FTP server no longer recognizes UCX$FTP_NO_VERSION
system logical.
Solution:
Restore 'noversion' check in 'nlist' routine which was
inadvertently left out when that routine was re-written
Reference:
CFS.40617
ECO 10 Updates:
--------------
ECO M 24-May-1996 Alpha and VAX
Images:
UCX$FTPC.EXE
Problem:
Current working directory remains set to an invalid directory
when a 'cd' is done to that directory.
Solution:
Restore current working directory to original directory
when an invalid directory is specified.
Reference:
CFS.41058
ECO N 27-Jun-1996 Alpha and VAX
Images:
UCX$FTPC.EXE UCX V3.3-7N
Problem:
Binary files getting corrupted
Solution:
Needed to make sure that 'xfr_len' was being set to a multiple
of 512.
---------------------------------------------------------------------------
Fixes for DEC TCP/IP Services V3.3 LPD Facility
---------------------------------------------------------------------------
ECO 1 Updates:
--------------
ECO A 24-Aug-1995 Alpha and VAX
Images:
UCX$LPD_SHR.EXE UCX V3.3-7A
UCX$LPD_SMB.EXE UCX V3.3-7A
UCX$LPD_RCV.EXE UCX V3.3-7A
UCX$LPQ.EXE UCX V3.3-7A
UCX$LPRM.EXE UCX V3.3-7A
UCX$LPRSETUP.EXE UCX V3.3-7A
UCX$TELNETSYM.EXE UCX V3.3-7A
Problem:
If the LPQ or LPRM command is submitted in a .COM file or if a
DEFINE/USER of SYS$OUTPUT is pointing output to a file, then
output is extended across multiple lines of the .LOG/output
file.
Solution: Fixed.
Problem:
In the conversion between network file name (e.g.,
cFA123host.domain.com) and OpenVMS legal file name (e.g.,
cFA123host_domain.com), the file name is truncated to 32
characters. This is not a problem. However, if the first
character after the truncated file name is a hyphen (-), this
yields an RMS-F-SYN, file specification syntax error.
Solution:
Trap for this special case and substitute an underscore
(_) for the hyphen (-).
Reference:
CFS.24196
Problem:
LPRSETUP sometimes issues the message "Can't unlink spool
directory, %RMS-F-SYN, file specification error" when trying to
delete a printcap entry.
Solution: Fixed.
Reference:
Internal report
Problem:
It is necessary to create separate OpenVMS print queues, each
with its own print forms if you want to use print forms for
jobs sent to the UCX LPD server.
Solution:
UCX LPD now supports a new printcap field for local printcap
entries that gives the name of the OpenVMS print form with which
the job should be submitted. The field is "fm". This makes it
unnecessary to create multiple OpenVMS print queues for multiple
OpenVMS print forms. Now all you need to do is create multiple
LPD printcap entries with different values for the "fm" field
and point the "lp" value to the same local printer.
The following two example printcap entries illustrate this:
BOGUS_P_FORM1|bogus_p_form1:\
:lf=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_FORM1.LOG:\
:lp=SOME_PRINTER:\
:fm=FORM1:\
:sd=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_FORM1:
BOGUS_P_FORM2|bogus_p_form2:\
:lf=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_FORM2.LOG:\
:lp=SOME_PRINTER:\
:fm=FORM2:\
:sd=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_FORM2:
Jobs sent to printer "BOGUS_P_FORM1" will be printed with FORM1
to OpenVMS queue SOME_PRINTER. Jobs sent to printer
"BOGUS_P_FORM2" will be printed with FORM2 to OpenVMS queue
SOME_PRINTER. Note that the printcap key fields differ so that
these printers appear to the LPD client as two printers.
However, since they share the same value in their "lp" fields
there is only one OpenVMS print queue: SOME_PRINTER.
UCX LPD now supports a similar printcap field which says that a
job is to be submitted as /PASSALL. This field is the "pa" field
and has no value. Its presence in the printcap entry tells the
symbiont to submit it /PASSALL. For example:
BOGUS_P_FORM2_PA|bogus_p_form2_pa:\
:lf=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_FORM2_PA.LOG:\
:lp=SOME_PRINTER:\
:pa:\
:fm=FORM2:\
:sd=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_FORM2_PA:
Jobs printed to this printer are submitted to OpenVMS printer
SOME_PRINTER with /FORM=FORM2 /PASSALL.
Note: UCX LPD does not verify the value of the "fm" printcap
field. If it is in error, the job gets an error in the final
destination print queue.
Reference:
Internal report
Problem:
LPD clients that do not support the Digital PrintServer LPD
Protocol Extensions cannot use the OpenVMS print capabilities
provided by PRINT/PARAMETER when printing jobs to the UCX LPD
server.
Solution:
Eight new printcap fields, one for each of the eight available
/PARAMETER slots, are now supported for local printcap entries.
The fields are p1 through p8 and work in a similar fashion to
the new "fm" and "pa" fields. For each one that you enter, the
corresponding PRINT/PARAMETER is assigned that value. For
example, consider the following printcap entry:
BOGUS_P_LAND|bogus_p_land:\
:lf=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_LAND.LOG:\
:lp=SOME_PRINTER:\
:p1=data=postscript:\
:p2=page_o=landscape:\
:sd=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_LAND:
In this example, all inbound LPD print jobs for printer
BOGUS_P_LAND are submitted as:
$PRINT file/PARAM=(data=postscript,page_o=landscape)/QUE=SOME_PRINTER
The maximum number of characters for any one of these fields is
255.
Since the symbiont matches the slot of the printcap field with
the corresponding /PARAM value, you can use this to your
advantage when printing to queues that are sensitive to having
certain data in specific /PARAMETER slots. For example:
BOGUS_P_HUH|bogus_p_huh:\
:lf=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_HUH.LOG:\
:lp=SOME_PRINTER:\
:p1=data=postscript:\
:p2=page_o=landscape:\
:p8=huh:\
:sd=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_HUH:
In this example, all inbound LPD print jobs for printer
BOGUS_P_LAND are submitted as:
$PRINT file/PARAM=(data=postscript,page_o=landscape,,,,,,huh)-
$_ /QUE=SOME_PRINTER
Note: UCX LPD does not parse the values in these fields. If they
are in error, the job gets an error in the final destination
print queue.
Reference:
Internal report
Problem:
The UCX LPD retry mechanism sometimes leaves jobs in the
"Holding" state rather than in the "Holding until..." state.
Solution: Fixed.
References:
CFS.28580, CFS.29350, CFS.28232
Problem:
The value that the UCX$TELNETSYM uses for the PSM$PRINT BUFSIZ
parameter is fixed at 256. There is no way to configure the
TELNETSYM to use a different value for optimization in the same
way as LATSYM.
Solution:
The TELNET symbiont now supports a range of values with a new
logical: UCX$TELNETSYM_BUFSIZ. Define this system logical to
any value from 1 to 2048 and the value you specify will be sent
to the PSM$PRINT routine in the BUFSIZ argument. For more
information about this, read the chapter on PSM$ routines in
the "OpenVMS Utility Routines Manual."
Problem:
UCX TELNETSYM resets the link idle timer when data comes in from
the printer/terminal server. If the TELNET implementation in the
printer/ terminal server keeps sending data, the link will never
be released.
Solution:
Do not reset the link idle timer for incoming data; only reset
it for outgoing data.
Reference:
CFS.25814
Problem:
When printing with the TELNET symbiont with /HEADER, the Page 1
header is not printed.
Solution: Fixed.
Reference:
CFS.26894
Problem:
LPD symbiont could get an ACCVIO when a job is submitted by a
user with an OpenVMS 12-character-maximum user name.
Solution: Fixed.
Problem:
On some error conditions where the LPD symbiont was retrying
jobs, a 0 length control file in the spooler directory could not
be deleted because it was locked by the symbiont.
Solution: Fixed.
Reference:
CFS.30948
Problem:
When a PC user copies a file from the PATHWORKS Common File
Service to the PATHWORKS printer service that is pointing to an
outbound LPD queue, the print file created by PATHWORKS has the
following RMS attributes:
File Organization: Sequential
Record Format: Variable length, maximum 128 bytes
Record Attributes: None
PATHWORKS prints the file with /PASSALL. The problem is that,
with this combination of /PASSALL, record format and records
attribute cause the UCX LPD temporary file (an intermediate file
created by UCX LPD) to be created with an undefined record
format. This, in turn, causes the entire file to be sent down
the line with no LFs. This large single block of data is
problematic for some printers.
Solution:
If the UCX$LPD_STREAM_PASSALL logical is defined, this forces
the LPD tamp file for all PASSALL prints to be stream LF.
ECO 8 Updates:
--------------
ECO B 29-Feb-1996 VAX and Alpha
Images:
UCX$LPD_SHR.EXE UCX V3.3-7B
Problem:
When printing to remote LPD queue with /SETUP multiple line
setup (for example, PS setup module) is all sent as a single
line with no line separators.
Solution:
After every setup module line read from the device control
library add LF to the stream.
Note: This change will not be available in UCX V4.0 until 4.0
ECO 2.
Reference:
CFS.36714
ECO C 02-Apr-1996 VAX and Alpha
Images:
UCX$LPD_SHR.EXE UCX V3.3-7C
UCX$LPD_SMB.EXE UCX V3.3-7C
UCX$LPD_RCV.EXE UCX V3.3-7C
UCX$LPQ.EXE UCX V3.3-7C
UCX$LPRM.EXE UCX V3.3-7C
UCX$LPRSETUP.EXE UCX V3.3-7C
UCX$TELNETSYM.EXE UCX V3.3-7C
Problem:
If a null character appeared in a setup module then UCX LPD
would only send the characters preceding it, skipping any
following it.
Solution:
Fixed.
Reference:
CFS.31834
Problem:
When running on a system with Word Perfect queues that have not
been de-integrated symbiont has problems.
Solution:
Spot the problem and signal in the log and on the OPCOM that
Word Perfect queues must be de-integrated in order for UCX LPD
to run.
Reference:
CFS.34311
Problem:
With inbound LPD jobs the /DELETE that the LPD symbiont uses
when it submits the job to the target print queue causes
problems if that print queue expects the file not to be printed
/DELETE. For example, one customer had a custom symbiont running
in the target queue that passed the file on to another queue.
Solution:
Add new "nd" flag field to printcap. If "nd" field is present
for a printcap entry then UCX$LPD_QUEUE will submit the job
without the /DELETE qualifier. The "nd" field is a boolean field
(like the "pa" field) in that it has no value. If you want
inbound jobs for a particular printcap entry to be submitted as
/NODELETE use the "nd" field as in this example:
BOGUS_P_ND|bogus_p_nd:\
:lf=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_ND.LOG:\
:lp=SOME_PRINTER:\
:nd:\
:sd=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_ND:
If you want inbound jobs for a particular printcap entry to be
submitted the "normal" way (i.e., /DELETE) there should be no
"nd" field in the printcap entry. For example:
BOGUS_P_ND|bogus_p_nd:\
:lf=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_ND.LOG:\
:lp=SOME_PRINTER:\
:sd=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_ND:
LPRSETUP will create by default a printcap entry with no "nd"
field the default is /DELETE.
Problem:
No support for inbound LPD jobs with 'v' (Raster file) control
card.
Solution:
Handle it like an 'x' (i.e., binary file).
Reference:
CFS.35679
Problem:
One PC LPD client implementation "probes" the LPD server to
validate the remote printer when the PC user configures their
LPD client printer . When the printer is configured the LPD
client connects to the LPD server and issues a "print a job"
command to the server for the LPD queue. If the server replies
successfully the LPD client sends an "abort job" command and
waits for the ACK before releasing the link. The UCX LPD server
was not ACKing the "abort job" command; it was simply
disconnecting the link. This was causing the PC LPD client to
fail the LPD configuration for the user.
Solution:
Handle the abort job like a NOOP. ACK it but keep link up and
wait for other side to disconnect or send another command.
Reference:
CFS.36109
Problem:
The temporary file created by UCX$TELNETSYM.EXE when using it to
relay a job to an LPD queue is not deleted.
Solution:
Create the relay Q tamp file with the file owner UIC matching
the UIC of the user that started the print job.
Note: This change will not be available in UCX V4.0 until 4.0
ECO 2.
Reference:
CFS.36997, CFS.39480
ECO 10 Updates:
--------------
ECO F 19-Jun-1996 VAX and Alpha
Images:
UCX$LPD_SMB.EXE UCX V3.3-7F
Problem:
LPD job is requeued in "holding" state for ever, as it
should be going through the "holding until ..." state.
Some of them directly fail in "Retained on error" status
with the error message.
Solution:
This fix is based on the assumption that a second message is
coming into the symbiont after the one we expect (i.e., the one
with the stop_condition set to JBC$_JOBREQUEUE).
Reference:
CFS.39020
---------------------------------------------------------------------------
Fixes for DEC TCP/IP Services V3.3 SMTP Mail Facility
---------------------------------------------------------------------------
ECO 1 Updates:
--------------
ECO A 25-Aug-1995 VAX and Alpha
Images:
UCX$SMTP_MAILSHR.EXE UCX V3.3-7A
UCX$SMTP_RECEIVER.EXE UCX V3.3-7A
UCX$SMTP_SYMBIONT.EXE UCX V3.3-7A
UCX$SMTP_PARSESHR_TV.EXE UCX V3.3-7A
UCX$UUENCODE.EXE UCX V3.3-7A
UCX$UUDECODE.EXE UCX V3.3-7A
Problem:
When many inbound SMTP connections are made at the same time,
UCX SMTP sometimes creates control file names that are identical
for more than one mail message. This causes UCX SMTP to deliver
one of the versions of the control file multiple times and not
to deliver the rest at all.
Solution:
Make UCX SMTP sensitive to the file version number so that files
with the same name are properly handled.
Reference:
CFS.25185
Problem:
It is impossible to send a file using UCX SMTP with lines
greater than 512 characters and less than 1000 characters. UCX
SMTP inserts . The SMTP RFC allows up to 1000 characters.
Solution:
Increase buffer size to 1000 (inclusive of ). Note that
this fix applies to outbound mail. For mail received from SMTP
and delivered locally via OpenVMS mail, we must still add line
breaks () every 255 characters because this size is an
OpenVMS mail limit.
Reference:
CFS.21858
Problem:
If SYS$SCRATCH is defined to a bad value for the SMTP symbiont
process (that is, a directory where a file cannot be created for
some reason), UCX SMTP symbiont cannot deliver any local mail.
Solution:
Use RMS Parse call to check SYS$SCRATCH directory validity in
main line of SMTP symbiont. If invalid, redefine SYS$SCRATCH to
point to the postmaster directory.
Reference:
CFS.26331
Problem:
SMTP addresses placed in SMTP mailing list files cannot contain
comments. (This applies to the mailing lists in
SYS$SPECIFIC:[UCX_SMTP] which contain SMTP addresses and are
processed by the SMTP symbiont. This does not apply to OpenVMS
mail distribution lists that contain SMTP addresses in the
SMTP%"..." format.)
Solution: Fixed.
Problem:
Cannot use SET FORWARD/USER=username SMTP%"..." to send to
multiple SMTP addresses.
Solution:
You can now use SET FORWARD/USER=username SMTP%"..." to forward
mail to multiple recipients. For example, if the following
forward is defined on host xyz.com:
MAIL> SET FORWARD/USER=HOTLINE SMTP%"""kim@xyz.com, joe@abc.xyz.com"""
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
More than one name here -->--->------->-----+
This causes mail sent to the user HOTLINE to be sent via SMTP to
kim@xyz.com and to joe@abc.xyz.com. If you are sending mail to
HOTLINE from the host on which the forwarding has been defined,
you can send to that user name directly like this:
MAIL> send
To: HOTLINE
...
If you are on another host, you can send to hotline@xyz.com and
UCX SMTP on host xyz will expand the mail to go to kim@xyz.com
and to joe@abc.xyz.com. Note that this is limited by maximum
length of an OpenVMS mail command line, 256 characters.
Problems:
1. On Alpha systems, ANALYZE MAIL/REPAIR terminates with
"%SYSTEM-F-IVLOGNAM, invalid logical name" message
frequently.
2. Mail directories that are specified with "<",">" instead of
"[","]" (for example dka0:) are not handled
correctly, resulting in an access violation.
3. User names that are 12 characters long are not handled
correctly, resulting in the following error message in
ANALYZE MAIL/REPAIR :
%UCX-W-ANA_QUEACC, queue access failure
-JBC-F-INVPARLEN, invalid parameter length
.....
Solution: Fixed.
References:
CFS.23288, CFS.23828
Problem:
There is a control file error when mail is sent from a user
whose mail directory is obtained from a concealed logical
name.
Solution: Fixed.
Reference:
CFS.26881
Problem:
ANALYZE MAIL/DELETE submits 0 block control files to the
symbiont rather than just deleting them.
Solution:
Control files that are 0 blocks and more than 12 hours old are
deleted.
Problem:
If a user account exists but the mail directory does not, there
is no need to signal a warning/error message. Do not display any
error message if a mail directory is not found. This has been
suppressed to avoid any unnecessary concerns that may be raised
when a message such as this is seen :" .. directory cannot be
accessed", "... bad parameter error"
Solution: Fixed.
Problem:
Various ANALYZE MAIL/DELETE problems.
Solution:
Fixed. Note that /DELETE will delete control files as long as
they are not already queued up. If they are queued, they will be
released and the message will be processed. Also ensured that
when /DELETE and /REPAIR are specified together, they work
properly for all cases.
Problem:
The "Received:" RFC header created by UCX SMTP is missing a
required semi-colon (;) before the date field.
Solution: Fixed.
Reference:
CFS.29374
Problem:
SMTP symbiont would sometimes ACCVIO on address FFFFFFFF.
Solution: Fixed
ECO 8 Updates:
--------------
ECO B 3-Apr-1996 Alpha and VAX
Images:
UCX$SMTP_MAILSHR.EXE UCX V3.3-7B
UCX$SMTP_RECEIVER.EXE UCX V3.3-7B
UCX$SMTP_SYMBIONT.EXE UCX V3.3-7B
UCX$SMTP_PARSESHR_TV.EXE UCX V3.3-7B
UCX$UUENCODE.EXE UCX V3.3-7B
UCX$UUDECODE.EXE UCX V3.3-7B
Problem:
ANAL MAIL would not find the files for any of the queue entries
and so it would delete the queue entries one by one. Later, on
the pass where it is looking for orphaned control files, it
would find all the files that belonged to the queue entries that
is just deleted and submit them. If it had not deleted the jobs
in the first place it would not have had to requeue them.
Problem only happened where user disks were defined as concealed
logical names.
Solution:
Fixed.
References:
CFS.34311, CFS.33772
Problem:
Garbage in one particular message in the log.
Solution:
Fixed.
References:
CFS.34311, CFS.33772
Problem:
Mysteriously ANAL MAIL/DELETE would select some files to delete
and some not to regardless of the value of the BEFORE= time. Saw
cases where files created almost at the same time were processed
and one was deleted and another was not. The creation dates on
the files were both well after the time in the /BEFORE.
Solution:
Fix a bug in the VMS date comparison routine.
References:
CFS.34311, CFS.33772
Problem:
Sometimes ANAL MAIL would submit a new entry for every entry
that was already in the queue. Now we have two entries for each
file.
Solution:
Clean up GETQUIW system service context at beginning of each
ANAL MAIL command with call to GETQUIW with a CANCEL_OPERATION
function code.
Problem:
When ANAL MAIL is run on a system with much SMTP activity it
often does the wrong thing with files/queue entries created when
the ANAL MAIL command is processing. Sometimes it would
mistakenly think that it had an orphaned control file (i.e., a
control file with no matching queue entry) and so would submit
the control file to the queue. The result would be the same
control file submitted to the queue twice. Other times it would
think it found a queue entry with no corresponding control file
and so would delete the queue entry when in fact there *was* a
corresponding control file. The result would be an orphaned
control file.
Solution:
Fixed
Reference:
CFS.34311
Problem:
When ANAL MAIL deletes a control file the corresponding TEXT
file (if any) is not deleted.
Solution:
Fixed
Reference:
CFS.34311
Problem:
If a file with the extension .UCX_NODENAME (where "nodename" is
the system's SCSNODENAME) appears in a users mail directory ANAL
MAIL will take it be a control file even if it is not.
Solution:
Make search string that we use trap for
%%%%%%%%%%%%%%_*.UCX_NODENAME rather than just *.UCX_NODENAME
Reference:
CFS.34311
Problem:
Double spacing of lines in SMTP logs.
Solution:
Fixed.
Problem:
When running on a system with Word Perfect queues that have not
been de-integrated symbiont has problems.
Solution:
Spot the problem and signal in the log and on the OPCOM that
Word Perfect queues must be de-integrated in order for UCX SMTP
to run.
Reference:
CFS.34311
Problem:
When bouncing a mail because a mail loop is detected (i.e.,
maximum hop count exceeded) the symbiont leaves the control file
for the mail being bounced as a stray.
Solution:
Fixed
Reference:
CFS.32922
Problem:
A bounced mail message coming into a UCX SMTP system (i.e., a
local user sends a mail to a remote system which can not deliver
it and so bounces it back) is sometimes undeliverable because
the SMTP symbiont thinks it has too many RFC Received: headers.
The symbiont signals that the maximum number of hops is
exceeded. Routine in receiver to parse out headers on the
incoming mail sometimes mistakes the Received: RFC headers from
the "Text of unsent message" section of the incoming bounced
mail for RFC headers of the bounced mail itself. If the sum of
the headers for the incoming bounced mail and those that
appeared in the text of the bounced mail exceeded the maximum
hop count then the problem occurred.
Solution:
Fix bug in receiver where it can sometimes miss the blank line
at the end of the RFC headers of the mail and start looking into
the text of the mail for Received headers.
Reference:
CFS.32922
Problem:
Diagnosing receiver and symbiont problems that occur
periodically but are not reproducable at will requires that we
turn on full diagnostics for the component being looked at
(receiver or symbiont). This causes the log file(s) to grow huge
and slows down everything with all the extra time spent writing
to the log files.
Solution:
The new "snapshot" logging capability for the receiver and
symbiont allows you to run with full diagnostics turned on but
only write the diagnostics to the log file if an error is
signaled. This saves disk space and allows the receiver and/or
symbiont to run at a normal speed. As each line of diagnostic
text is generated it is saved in an internal "snapshot" buffer
of a size specified by a snapshot logical rather than to the
disk. The buffer is "circular" in that once it fills up, new
lines of text simply start to overwrite the old data already
there. This provides an up to date snapshot of the last so many
lines of diagnostic text.
There are two logicals to turn this feature on. One for the
receiver and one for the symbiont. They are
UCX$SMTP_SYMB_SNAPSHOT_BLOCKS and UCX$SMTP_RECV_SNAPSHOT_BLOCKS.
The value of these logicals is the size of the snapshot buffer
in VMS blocks (1 block being 512 bytes). When turning this
feature on you are still required to define the other SMTP
diagnostic logicals that tell UCX SMTP what types of logging you
want. (For the symbiont, you still want to define
UCX$SMTP_LOG_LEVEL to 5.) Here are two examples of setting up
symbiont and receiver snapshot logicals.
This sets log level to 5 and turns on snapshot logging for the
SMTP symbiont with a snapshot buffer of 200 blocks.
$ DEFINE/SYSTEM UCX$SMTP_LOG_LEVEL 5
$ DEFINE/SYSTEM UCX$SMTP_SYMB_SNAPSHOT_BLOCKS 200
This sets all of the receiver diagnostics on and turns on
snapshot logging for the receiver with a snapshot buffer of 200
blocks.
$ DEFINE/SYSTEM UCX$SMTP_RECV_DEBUG 1
$ DEFINE/SYSTEM UCX$SMTP_RECV_TRACE 1
$ DEFINE/SYSTEM UCX$SMTP_RECV_SNAPSHOT_BLOCKS 200
Problem:
Bounced mail generated by the UCX SMTP symbiont does not have a
To: RFC header
Solution:
Fixed.
Problem:
If the symbiont cannot deliver a mail and cannot bounce it
either it leaves the bounced mail control file as a stray
control file.
Solution:
If we can neither deliver nor bounce a mail then deliver the
mail to the local postmaster account - UCX_SMTP. Only if we
cannot even deliver the mail to the local postmaster account do
we leave a stray control file.
Reference:
CFS.32922
Problem:
When bouncing a mail because we have not been able to send it
and have requeued it repeatedly and can no longer requeue it
because the SMTP configuration maximum interval for the mail has
expired the symbiont leaves the control file for the mail being
bounced as a stray.
Solution:
Fixed.
Reference:
CFS.32922
Problem:
If the symbiont encountered a network error sending an outbound
mail after it sent the MAIL FROM: command but before it sent the
RCPT TO: command all remaining outbound mail would cause an
ACCVIO in the symbiont and would fail.
Solution:
Fixed.
Reference:
CFS.32922
Problem:
The UCX SMTP queue watcher program, UCX$RESTART_SMTPQ.COM, does
not support multiple execution queue setups.
Solution:
UCX$RESTART_SMTPQ.COM now supports multiple execution queue
setups up to nine execution queues (i.e., UCX SET CONFIG
/QUEUE=9.)
Reference:
CFS.34311
Problem:
Symbiont code has mechanisms to find memory leaks but no
mechanism to find event flag leaks.
Solution:
Symbiont has diagnostics to dump the number of spare event flags
(as returned by LIB$GET_EF) at certain key points in the code to
help find event flag leaks. To turn them on do
$ DEFINE/SYSTEM UCX$SMTP_LOG_EFS 1
$ UCX STOP MAIL
$ UCX START MAIL
Numerous customers were reporting an insufficient event flags
(INSEF) error being signaled in their symbiont logs after which
time no inbound mail could be delivered. This was the reason for
creating the new event flag leak diagnostics. As it turns out
the problem was due to the fact that the users on these systems
had their mail forwarded to PCSA% addresses and there is an
event flag leak in the PCSA MAIL$PROTOCOL code. The bug is
*NOT* a UCX bug. The problem has been reported to engineering
responsible for the PCSA MAIL$PROTOCOL code.
Problem:
Users with 8 bit ASCII characters in their username see the
characters changed by UCX SMTP before they get sent out to their
final destination. The UCX SMTP code sets the high order bit to
0 even if the SMTP CONFIG /OPTION=EIGHT is set.
Solution:
Now UCX SMTP will not truncate 8 bit ASCII characters in the
personal name if the SMTP CONFIG/OPTION=EIGHT is set.
References:
Internal reports
Problem:
UCX SMTP does not work right on multi-homed hosts.
Solution:
Fixed. Bind to INADDR_ANY rather than to a particular one of the
local addresses we get in to hostent structure for our local
host.
References:
Internal reports
Note: The remaining changes will not be available in UCX V4.0
until 4.0 ECO 2.
Problem:
Sometimes local addresses in SMTP distribution files are not
recognized as such.
Solution:
Fixed.
Problem:
On clusters SMTP distribution files must be duplicated in each
SYS$SPECIFIC:[UCX_SMTP] directory making for a maintenance
headache.
Solution:
New UCX$SMTP_DIS_DIRECTORY system logical points to the
directory where SMTP will look for its .DIS files. To get all of
your UCX SMTP cluster nodes to look in the same place define the
logical to point to a directory visible to all the nodes.
If UCX$SMTP_DIS_DIRECTORY is not defined then UCX SMTP will
still look in SYS$SPECIFIC:[UCX_SMTP].
This logical may be a search list. You may wish to have UCX SMTP
look at the clusterwide directory first and
SYS$SPECIFIC:[UCX_SMTP] second. For example:
$ DEFINE/SYSTEM UCX$SMTP_DIS_DIRECTORY WORKDISK:[SMTP_DIS], -
SYS$SPECIFIC:[UCX_SMTP]
This files must be world readable or owned by UCX_SMTP.
Reference:
CFS.37284
Problem:
The conventional exclamation point to start a comment is not
supported in SMTP distribution files.
Solution:
A "!" can now be used for a comment in an SMTP distribution file
with the restriction that it must be the first character of the
line. No leading white space is allowed.
Reference:
Internal report
---------------------------------------------------------------------------
Fixes for DEC TCP/IP Services V3.3 RPC and XDR routines
---------------------------------------------------------------------------
ECO 1 Updates:
--------------
ECO A 30-Jun-1995 Alpha and VAX
Images:
UCX$RPCXDR_SHR.EXE UCX V3.3-7A
Problem:
An error in the XDR routine "xdr_float()" caused an assignment
instead of a test when decoding an IEEE float (from the network)
into a local F_Float value.
Solution:
Correct the typographical error.
Reference:
CFS.26484
INSTALLATION NOTES:
In order for the corrections in this kit to take effect, the system
must be rebooted. If the system is a member of a VMScluster,
the entire cluster should be rebooted.
References:
IBM is a registered trademark of International Business Machines
Corporation.
UNIX is a registered trademark in the United States and other countries,
licensed exclusively through X/Open Company Ltd.
Hewlitt-Packard is a registered trademark of Hewlitt-Packard Company.
This patch can be found at any of these sites:
Colorado Site
Georgia Site
Files on this server are as follows:
ucxav_e10033.README
ucxav_e13033.CHKSUM
ucxav_e13033.CVRLET_TXT
ucxav_e13033.a-dcx_axpexe
ucxav_e13033.a-dcx_vaxexe
|