Project

General

Profile

Bug #9111

Updated by Toomas Soome over 4 years ago

https://svnweb.freebsd.org/base?view=revision&revision=329264 
    
 
    
     readip() doesn't, at the moment, properly indicate to callers that it has    
     timed out. One can tell that it's timed out if errno == EAGAIN when it    
     returns, but this is not ideal. Restructure it a little bit to explicitly 
     set errno to ETIMEDOUT if we've exhausted tleft. 
    
 
    
     I found two places that care about where it timed out or not: sendrecv in 
     net.c and sendrecv_tftp. Both are structured to pass smaller timeout values 
     to readip while tracking a larger timeout. Neither of them were able to do 
     this properly with readip not indicating ETIMEDOUT, so fix it. 
    
 
    
     While here, straighten out the time (t/t1) usage in sendrecv_tftp. 
    
 
    
     This would have manifested itself in periodic failures to NFS/TFTP boot for 
     no apparent reason because MINTMO/MAXTMO were not actually being respected 
     properly. Problems were not reported with NFS, only TFTP.

Back