RFC 143 (rfc143) - Page 1 of 4
Regarding proffered official ICP
Alternative Format: Original Text Document
Network Working Group W. Naylor
Request for Comments #143 J. Wong
NIC #6728 C. Kline
Categories: D.1, D.3 J. Postel
Obsoletes: None UCLA - NMC
Updates: 123, 145 3 May 1971
Regarding Proferred Official ICP
We should like to comment on a race condition discovered in the ICP as
proposed in NWG/RFC #123. The problem arises when the server attempts
to initiate a second connection to the user's receive socket and the
first connection is not yet closed. Using a similar notation to that of
NWG/RFC #123 the following table illustrates the sequence of events in
the proferred and proposed ICP. The last two columns indicate which
actions must be completed before the current action may be initiated.
User and Server are third level programs, and UNCP and SNCP are the
users NCP and Servers NCP respectively. Allocates have not been
included since they add nothing to the argument.
Required Predecessors
---------------------
Reference # Action Initiator "Proferred" Proposed
----------- ------ --------- ----------- --------
1 Listen(L,32) Server -- --
2 Init(U,L,32) User -- --
3 RTS(U,L,'l') UNCP 2 2
4 STR(L,U,32) SNCP 1 and 3 1 and 3
5 Send(L,S) Server 4 4
6 SEND('l',S) SNCP 5 5
7 RECEIVE('l',S) UNCP 6 6
8 Receive(U,S) User 7 7
9 Close(L) Server 5 5
10 CLS(L,U) SNCP 9 and 7 9 and 7
11 Close(U) User 8 not used
12 CLS(U,L) UNCP 11 10