[comp.sys.amiga] Here are the bugs in dcp/uupc

dave@arnold.UUCP (Dave Arnold) (09/15/88)

Okay, there seems to be enough interest---So here are the bugs I found
in dcp.  Sorry I am posting the bugs this way.  I am running a little
short on time.

Bugs:

1) dcp uses strcpy and strncpy to copy data in and out of buffers, it
never makes use of block copies like memcpy.  This means that using
dcp to transfer binary files will never work.

2) in the function gmachine, I believe it improperly handles RJ
control packets, or NAK's.  In this segment of code:


	CASE NAK:
		nerr++;
		acktmr = naktmr = 0; /* stop ack/nak timer */
		printmsg( 5, "**got NAK %d", rack );
nloop:
		if (between(swl, rack, swu)) { /* resend
rack->(swu-1) */
			i1 = rack;
			gspack(DATA, rwl, rack, outlen[i1], outbuf[i1]);
			printmsg( 5, "***resent %d", rack );
			ftimer[i1] = time(&ttmp);
			rack = (1 + rack) % MAXSEQ;
			goto nloop;
		}

Upon receipt of a RJ, the yyy(rack) field of the control packet
contains the last good packet received, this section of code will
resend all packets in the send window starting at yyy---It should
start at yyy + 1 % MAXSEQ.  This caused my version to hang
sometimes---Never sending the correct packet that the other
receiver expected.

That's all for now.  I will try and post anything else I find.
Hope this helps somebody.
-- 
Dave Arnold
dave@arnold.UUCP	{cci632|uunet}!ccicpg!arnold!dave