From owner-svn-src-all@FreeBSD.ORG Wed Jun 15 22:08:19 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 08706106566B; Wed, 15 Jun 2011 22:08:19 +0000 (UTC) (envelope-from rodrigc@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id EC7DF8FC27; Wed, 15 Jun 2011 22:08:18 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5FM8Imq000304; Wed, 15 Jun 2011 22:08:18 GMT (envelope-from rodrigc@svn.freebsd.org) Received: (from rodrigc@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5FM8IcR000302; Wed, 15 Jun 2011 22:08:18 GMT (envelope-from rodrigc@svn.freebsd.org) Message-Id: <201106152208.p5FM8IcR000302@svn.freebsd.org> From: Craig Rodrigues Date: Wed, 15 Jun 2011 22:08:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223123 - head/lib/libstand X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2011 22:08:19 -0000 Author: rodrigc Date: Wed Jun 15 22:08:18 2011 New Revision: 223123 URL: http://svn.freebsd.org/changeset/base/223123 Log: Currently tftp code in the loader retransmits the previous packet if it receives any unwanted packet(non-tftp). Change this to retransmit the packet(request or ack) only after a timeout. Obtained from: Juniper Networks Fixed by: Santhanakrishnan Balraj Modified: head/lib/libstand/tftp.c Modified: head/lib/libstand/tftp.c ============================================================================== --- head/lib/libstand/tftp.c Wed Jun 15 22:04:14 2011 (r223122) +++ head/lib/libstand/tftp.c Wed Jun 15 22:08:18 2011 (r223123) @@ -443,11 +443,15 @@ sendrecv_tftp(d, sproc, sbuf, ssize, rpr continue; } +recvnext: /* Try to get a packet and process it. */ cc = (*rproc)(d, rbuf, rsize, tleft); /* Return on data, EOF or real error. */ if (cc != -1 || errno != 0) return (cc); + if ((getsecs() - t1) < tleft) { + goto recvnext; + } /* Timed out or didn't get the packet we're waiting for */ tleft += MINTMO;