Mike Frysinger <vap...@gentoo.org> writes: >> Let's look... The code does NetSetHandler(TftpHandler). >> I think NetReceive() calls (*packetHandler)() = TftpHandler and this one >> may call NetStartAgain(). > > but this doesnt call recv(), and NetStartAgain() changes the handler, so i > still dont see recursion with the recv() function. but perhaps your > definition of recursive is different from mine. recv() does not turn around > and call recv(), but recv() may turn around and call other driver functions.
I haven't debugged it yet (is there a way to print a backtrace?) but the first recv() doesn't return from NetReceive(). > the tftp error behavior is to basically discard all pending packets, so in > practice, it shouldnt be a big deal. it would probably be cleaner though if > the packet handler returned an integer indicating errors that NetReceive() > would pass up so that the driver recv knew to stop processing packets right > away. I think so. I'll look at it too. -- Krzysztof Halasa _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot