Xref: utzoo comp.sources.bugs:1244 comp.sys.amiga:22822 comp.sys.ibm.pc:19157 Path: utzoo!attcan!uunet!wyse!vsi1!ames!mailrus!cornell!rochester!ritcv!cci632!ccicpg!arnold!dave From: dave@arnold.UUCP (Dave Arnold) Newsgroups: comp.sources.bugs,comp.sys.amiga,comp.sys.ibm.pc Subject: Here are the bugs in dcp/uupc Message-ID: <180@arnold.UUCP> Date: 15 Sep 88 14:52:25 GMT Organization: Home, Mission Viejo, Ca Lines: 41 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