|
4 | 4 | from stem.descriptor.networkstatus import RouterStatusEntryV3 |
5 | 5 |
|
6 | 6 | from twisted.internet import defer |
7 | | -from twisted.web.client import readBody |
8 | 7 |
|
9 | 8 | from bwscanner.logger import log |
10 | 9 | from bwscanner.attacher import SOCKSClientStreamAttacher |
11 | 10 | from bwscanner.circuit import TwoHop |
12 | | -from bwscanner.fetcher import OnionRoutedAgent |
| 11 | +from bwscanner.fetcher import OnionRoutedAgent, hashingReadBody |
13 | 12 | from bwscanner.writer import ResultSink |
14 | 13 |
|
15 | 14 | # defer.setDebugging(True) |
@@ -112,12 +111,13 @@ def fetch(self, path): |
112 | 111 | log.info("Downloading file '{file_size}' over [{relay_fp}, {exit_fp}].", |
113 | 112 | file_size=url.split('/')[-1], relay_fp=path[0].id_hex, exit_fp=path[-1].id_hex) |
114 | 113 | file_size = self.choose_file_size(path) # File size in MB |
| 114 | + file_hash = self.bw_files[file_size][1] |
115 | 115 | time_start = self.now() |
116 | 116 |
|
117 | 117 | @defer.inlineCallbacks |
118 | 118 | def get_circuit_bw(result): |
119 | 119 | time_end = self.now() |
120 | | - if len(result) != file_size * 1024: |
| 120 | + if result != file_hash: |
121 | 121 | raise DownloadIncomplete |
122 | 122 | report = dict() |
123 | 123 | report['time_end'] = time_end |
@@ -164,7 +164,7 @@ def gotResult(result): |
164 | 164 |
|
165 | 165 | agent = OnionRoutedAgent(self.clock, path=path, state=self.state) |
166 | 166 | request = agent.request("GET", url) |
167 | | - request.addCallback(readBody) |
| 167 | + request.addCallback(hashingReadBody) # returns a readBody Deferred |
168 | 168 | timeoutDeferred(request, self.request_timeout) |
169 | 169 | request.addCallbacks(get_circuit_bw) |
170 | 170 | request.addErrback(circ_failure) |
|
0 commit comments