|  | @@ -5252,19 +5252,20 @@ static void send_file_data(struct mg_connection *conn,
 | 
	
		
			
				|  |  |  			ssize_t sf_sent;
 | 
	
		
			
				|  |  |  			int sf_file = fileno(filep->fp);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  			do {
 | 
	
		
			
				|  |  | -				/* 2147479552 (0x7FFFF000) is a limit found by experiment on 64 bit Linux */
 | 
	
		
			
				|  |  | -				ssize_t sf_tosend = (size_t) ((len<0x7FFFF000) ? len : 0x7FFFF000);
 | 
	
		
			
				|  |  | -				sf_sent = sendfile(
 | 
	
		
			
				|  |  | -				    conn->client.sock, sf_file, &sf_offs, sf_tosend);
 | 
	
		
			
				|  |  | -				if (sf_sent>0) {
 | 
	
		
			
				|  |  | +				/* 2147479552 (0x7FFFF000) is a limit found by experiment on 64
 | 
	
		
			
				|  |  | +				 * bit Linux (2^31 minus one memory page of 4k?). */
 | 
	
		
			
				|  |  | +				ssize_t sf_tosend =
 | 
	
		
			
				|  |  | +				    (size_t)((len < 0x7FFFF000) ? len : 0x7FFFF000);
 | 
	
		
			
				|  |  | +				sf_sent =
 | 
	
		
			
				|  |  | +				    sendfile(conn->client.sock, sf_file, &sf_offs, sf_tosend);
 | 
	
		
			
				|  |  | +				if (sf_sent > 0) {
 | 
	
		
			
				|  |  |  					conn->num_bytes_sent += sf_sent;
 | 
	
		
			
				|  |  |  					len -= sf_sent;
 | 
	
		
			
				|  |  |  					offset += sf_sent;
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -			} while ((len>0) && (sf_sent>=0));
 | 
	
		
			
				|  |  | +			} while ((len > 0) && (sf_sent >= 0));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  			if (sf_sent > 0) {
 | 
	
		
			
				|  |  |  				return; /* OK */
 |