diff --git a/sabnzbd/nzbstuff.py b/sabnzbd/nzbstuff.py index 19c73cb1e1f..fbe62c368da 100644 --- a/sabnzbd/nzbstuff.py +++ b/sabnzbd/nzbstuff.py @@ -1140,17 +1140,21 @@ def get_extra_blocks(self, setname: str, needed_blocks: int) -> int: block_list.append(nzf) avail_blocks += nzf.blocks - # Sort by smallest blocks last, to be popped first - block_list.sort(key=lambda x: x.blocks, reverse=True) + # Sort the smallest blocks first + block_list.sort(key=lambda x: x.blocks, reverse=False) logging.info("%s blocks available", avail_blocks) # Enough? if avail_blocks >= needed_blocks: added_blocks = 0 - while added_blocks < needed_blocks: - new_nzf = block_list.pop() + for new_nzf in block_list: if self.add_parfile(new_nzf): added_blocks += new_nzf.blocks + if added_blocks >= needed_blocks: + break + else: + # End of block_list reached with insufficient blocks added + return 0 logging.info("Added %s blocks to %s", added_blocks, self.final_name) return added_blocks