# Challenge QV6 bittorrent

**URL:** <https://forum.codecrafters.io/t/challenge-qv6-bittorrent/15649>\
**Category:** Challenges\
**Tags:** challenge:bittorrent\
**Created:** [December 11, 2025, 2:10pm UTC](https://forum.codecrafters.io/t/challenge-qv6-bittorrent/15649 "2025-12-11T14:10:26Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![yashraizb](https://yyz1.discourse-cdn.com/flex003/user_avatar/forum.codecrafters.io/yashraizb/32/19643_2.png) [@yashraizb](https://forum.codecrafters.io/u/yashraizb)\
**Post date:** [December 11, 2025, 2:10pm UTC](https://forum.codecrafters.io/t/challenge-qv6-bittorrent/15649/1 "2025-12-11T14:10:26Z")

</div>

My code is getting timed out after downloading 5 to 6 blocks of a piece using a magnet link.

this is my commit of github [https://github.com/yashraizb/codecrafters-bittorrent-python/commit/2cb968d587327a701d310ca3b6fd762ab46008b3](https://github.com/yashraizb/codecrafters-bittorrent-python/commit/2cb968d587327a701d310ca3b6fd762ab46008b3)

logs:

[tester::#QV6] Running tests for Stage #QV6 (Magnet Links - Download a piece)  
[tester::#QV6] Running ./your\_bittorrent.sh magnet\_download\_piece -o /tmp/torrents516250549/piece-1 “magnet:?xt=urn:btih:ad42ce8109f54c99613ce38f9b4d87e70f24a165&dn=magnet1.gif&tr=http%3A%2F%[2Fbittorrent-test-tracker.codecrafters.io](http://2Fbittorrent-test-tracker.codecrafters.io)%2Fannounce” 1  
[your\_program] Logs from your program will appear here!  
[your\_program] Requested data received. Proceeding to download piece index 1  
[your\_program] Bitfield: b’\x05\xe0’  
[your\_program] Unchoke: b’\x01’  
[your\_program] sent request for block 1 / 16 for piece 1  
[your\_program] Response b’\x07\x00\x00\x00\x01\x00\x00\x00\x00’  
[your\_program] Received block 1/16 for piece 1  
[your\_program] sent request for block 2 / 16 for piece 1  
[your\_program] Response b’\x07\x00\x00\x00\x01\x00\x00@\x00’  
[your\_program] Received block 2/16 for piece 1  
[your\_program] sent request for block 3 / 16 for piece 1  
[your\_program] Response b’\x07\x00\x00\x00\x01\x00\x00\x80\x00’  
[your\_program] Received block 3/16 for piece 1  
[your\_program] sent request for block 4 / 16 for piece 1  
[your\_program] Response b’\x07\x00\x00\x00\x01\x00\x00\xc0\x00’  
[your\_program] Received block 4/16 for piece 1  
[your\_program] sent request for block 5 / 16 for piece 1  
[your\_program] Response b’\x07\x00\x00\x00\x01\x00\x01\x00\x00’  
[your\_program] Received block 5/16 for piece 1  
[your\_program] sent request for block 6 / 16 for piece 1  
[your\_program] Response b’\x07\x00\x00\x00\x01\x00\x01@\x00’  
[your\_program] Received block 6/16 for piece 1  
[your\_program] sent request for block 7 / 16 for piece 1  
[your\_program] Response b’\x07\x00\x00\x00\x01\x00\x01\x80\x00’  
[your\_program] Received block 7/16 for piece 1  
[your\_program] sent request for block 8 / 16 for piece 1  
[your\_program] Response b’\x07\x00\x00\x00\x01\x00\x01\xc0\x00’  
[your\_program] Received block 8/16 for piece 1  
[your\_program] sent request for block 9 / 16 for piece 1  
[your\_program] Response b’\x07\x00\x00\x00\x01\x00\x02\x00\x00’  
[your\_program] Received block 9/16 for piece 1  
[your\_program] sent request for block 10 / 16 for piece 1  
[your\_program] Response b’\x07\x00\x00\x00\x01\x00\x02@\x00’  
[your\_program] Received block 10/16 for piece 1  
[your\_program] sent request for block 11 / 16 for piece 1  
[your\_program] Response b’\x07\x00\x00\x00\x01\x00\x02\x80\x00’  
[your\_program] Received block 11/16 for piece 1  
[your\_program] sent request for block 12 / 16 for piece 1  
[your\_program] Response b’\x07\x00\x00\x00\x01\x00\x02\xc0\x00’  
[your\_program] Received block 12/16 for piece 1  
[your\_program] sent request for block 13 / 16 for piece 1  
[your\_program] Response b’\x07\x00\x00\x00\x01\x00\x03\x00\x00’  
[your\_program] Received block 13/16 for piece 1  
[your\_program] sent request for block 14 / 16 for piece 1  
[your\_program] Response b’\x07\x00\x00\x00\x01\x00\x03@\x00’  
[your\_program] Received block 14/16 for piece 1  
[your\_program] sent request for block 15 / 16 for piece 1  
[your\_program] Response b’\x07\x00\x00\x00\x01\x00\x03\x80\x00’  
[your\_program] Received block 15/16 for piece 1  
[your\_program] sent request for block 16 / 16 for piece 1  
[your\_program] Response b’\x07\x00\x00\x00\x01\x00\x03\xc0\x00’  
[your\_program] Received block 16/16 for piece 1  
[your\_program] Piece 1 verified successfully.  
[tester::#QV6] ✓ Piece size is correct.  
[tester::#QV6] ✓ Piece SHA-1 is correct.  
[tester::#QV6] Running ./your\_bittorrent.sh magnet\_download\_piece -o /tmp/torrents516250549/piece-2 “magnet:?xt=urn:btih:ad42ce8109f54c99613ce38f9b4d87e70f24a165&dn=magnet1.gif&tr=http%3A%2F%[2Fbittorrent-test-tracker.codecrafters.io](http://2Fbittorrent-test-tracker.codecrafters.io)%2Fannounce” 2  
[your\_program] Logs from your program will appear here!  
[your\_program] Requested data received. Proceeding to download piece index 2  
[your\_program] Bitfield: b’\x05\xe0’  
[your\_program] Unchoke: b’\x01’  
[your\_program] sent request for block 1 / 16 for piece 2  
[your\_program] Response b’\x07\x00\x00\x00\x02\x00\x00\x00\x00’  
[your\_program] Received block 1/16 for piece 2  
[your\_program] sent request for block 2 / 16 for piece 2  
[your\_program] Response b’\x07\x00\x00\x00\x02\x00\x00@\x00’  
[your\_program] Received block 2/16 for piece 2  
[your\_program] sent request for block 3 / 16 for piece 2  
[your\_program] Response b’\x07\x00\x00\x00\x02\x00\x00\x80\x00’  
[your\_program] Received block 3/16 for piece 2  
[your\_program] sent request for block 4 / 16 for piece 2  
[your\_program] Response b’\x07\x00\x00\x00\x02\x00\x00\xc0\x00’  
[your\_program] Received block 4/16 for piece 2  
[your\_program] sent request for block 5 / 16 for piece 2  
[your\_program] Response b’\x07\x00\x00\x00\x02\x00\x01\x00\x00’  
[your\_program] Received block 5/16 for piece 2  
[your\_program] sent request for block 6 / 16 for piece 2  
[your\_program] Response b’\x07\x00\x00\x00\x02\x00\x01@\x00’  
[your\_program] Received block 6/16 for piece 2  
[your\_program] sent request for block 7 / 16 for piece 2  
[tester::#QV6] timed out, test exceeded 10 seconds  
[tester::#QV6] Test failed

---

<div class="post-metadata">

**Author:** ![andy1li](https://yyz1.discourse-cdn.com/flex003/user_avatar/forum.codecrafters.io/andy1li/32/10_2.png) [@andy1li](https://forum.codecrafters.io/u/andy1li)\
**Post date:** [December 13, 2025, 8:52am UTC](https://forum.codecrafters.io/t/challenge-qv6-bittorrent/15649/4 "2025-12-13T08:52:04Z")

</div>

Hey @yashraizb, looks like the bug is coming from this line:

 ![image](https://canada1.discourse-cdn.com/flex003/uploads/codecrafters/original/3X/4/5/452e1a39fe521870ad04ef5b0ee5458f47a1ec81.png)

The `pieces` field contains multiple 20-byte hashes, so it’s incorrect to use the length of those raw bytes directly:

 ![image](https://canada1.discourse-cdn.com/flex003/uploads/codecrafters/original/3X/2/c/2cb3a47a6ba8be922c2598d608caa76116e1a2aa.png)

Let me know if you’d like any further clarification!

---

<div class="post-metadata">

**Author:** ![yashraizb](https://yyz1.discourse-cdn.com/flex003/user_avatar/forum.codecrafters.io/yashraizb/32/19643_2.png) [@yashraizb](https://forum.codecrafters.io/u/yashraizb)\
**Post date:** [December 14, 2025, 7:45am UTC](https://forum.codecrafters.io/t/challenge-qv6-bittorrent/15649/6 "2025-12-14T07:45:45Z")

</div>

Thank you for highlighting this. I have corrected the code, and it is working fine now.

---

<div class="post-metadata">

**Author:** ![system](https://canada1.discourse-cdn.com/flex003/uploads/codecrafters/original/3X/7/0/700657133935c15703e22c7c8870394f6e6dc27d.svg) [@system](https://forum.codecrafters.io/u/system)\
**Post date:** [December 19, 2025, 7:46am UTC](https://forum.codecrafters.io/t/challenge-qv6-bittorrent/15649/7 "2025-12-19T07:46:22Z")

</div>

This topic was automatically closed 5 days after the last reply. New replies are no longer allowed.
