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/84742678227a6153120393366bca6af67f09ac25
--
View it on GitLab:
https://dev.gajim.org/gajim/python-nbxmpp/-/commit/84742678227a6153120393366bca6af67f09ac25
You're receiving this email because of your account on dev.gajim.org.
_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits