Subject: Re: email, race condition
To: [email-masked]
Cc: [email-masked]

--text follows this line--
Sorry for taking so long to respond.

The quoted text:

In Cambridge the MIT group found a more significant flaw. The
dialogue between a newly arrived virus and one that was already
established would necessarily end in disaster because the
interval set aside for one virus to listen was not always long
enough. Known as a "race condition" to computer scientists it is
a situation where you first check to make sure it's alright to
do
something, and then go to do it, but between the time you check
and the time you actually do it, things have changed. 

>>The
>>listening program would not always listen long enough and thus
>>would miss the arrival of a new infection. 
	It wasn't exactly that it wouldn't listen long enough, but
that it wouldn't 

Therefore because
each
program thought it was alone on the computer the electronic coin
toss would never take place. This was a major error. It made it
inevitable that the program would clog the network. 

An outline of what the code did (based on looking at the disassembly):

1. Roll the dice in the range 0 to 6. If 3 comes up, stay alive.
2. Create a stream socket listener. If this fails (due to lack of
system resources), stay alive.
3. connect the socket to port 0x5b3d. If it fails, stay alive.
4. try the exchange. if anything fails, stay alive, but if you lose
the exchange, die.
5. sleep 5 seconds.
6. create new socket, and bind it to listen (reusable), and listen