fixed: Cache-full logic was wrong + don't keep reading source when cache is full (fixes #15500)