Philipp Hörist pushed to branch master at gajim / python-nbxmpp
Commits: 84742678 by Philipp Hörist at 2023-05-28T14:47:44+02:00 fix: HTTP: Abort correctly on content overflow
- - - - -
2 changed files:
- nbxmpp/http.py - test/unit/test_http.py
Changes:
===================================== nbxmpp/http.py ===================================== @@ -373,7 +373,8 @@ class HTTPRequest(GObject.GObject): return
self._received_size += len(bytes_) - self._check_content_overflow() + if self._check_content_overflow(): + return
if self._output_stream is None: self._response_body_data += bytes_ @@ -447,9 +448,11 @@ class HTTPRequest(GObject.GObject): self.emit('response-progress', self._received_size / self._response_content_length)
- def _check_content_overflow(self) -> None: + def _check_content_overflow(self) -> bool: if self._received_size > self._response_content_length: self._finish_read(HTTPRequestError.CONTENT_OVERFLOW) + return True + return False
def _on_restarted(self, _message: Soup.Message) -> None: self._log.info('Restarted')
===================================== test/unit/test_http.py ===================================== @@ -236,6 +236,30 @@ class HTTP(unittest.TestCase): self.assertTrue(request4.is_finished()) self.assertTrue(request4.is_complete())
+ def test_content_overflow(self): + + mainloop = GLib.MainLoop() + + session = HTTPSession() + request = session.create_request() + + + def _on_starting(req) -> None: + req._received_size = 100000000000 + + callback_mock = Mock() + request.connect('starting-response-body', _on_starting) + request.connect('finished', callback_mock.finished) + request.connect('destroy', lambda *args: mainloop.quit()) + request.send('GET', SMALL_FILE_URL, timeout=10) + + mainloop.run() + + self.assertTrue(request.is_finished()) + self.assertFalse(request.is_complete()) + self.assertEqual(request.get_error(), HTTPRequestError.CONTENT_OVERFLOW) + + callback_mock.finished.assert_called()
if __name__ == '__main__': unittest.main()
View it on GitLab: https://dev.gajim.org/gajim/python-nbxmpp/-/commit/84742678227a6153120393366...