Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock
Dear release team, I like to get clearance for uploading python-nbxmpp 4.2.2-2 to unstable, to get it into bookworm. 4.2.2-1 is already uploaded to experimental. The package has extensive autopkgtests. debdiff attached. Upstream release text: > * HTTP: Reset attributes on redirect (#141) > * HTTP: Make sure streams are closed only once (#139) Thanks in advance & Cheers
diff -Nru python-nbxmpp-4.2.0/ChangeLog python-nbxmpp-4.2.2/ChangeLog --- python-nbxmpp-4.2.0/ChangeLog 2023-02-05 16:23:56.000000000 +0000 +++ python-nbxmpp-4.2.2/ChangeLog 2023-03-25 16:33:26.000000000 +0000 @@ -1,3 +1,15 @@ +nbxmpp 4.2.2 (25 Mar 2023) + + Bug Fixes + + * HTTP: Reset attributes on redirect (#141) + +nbxmpp 4.2.1 (18 Mar 2023) + + Bug Fixes + + * HTTP: Make sure streams are closed only once (#139) + nbxmpp 4.2.0 (05 Feb 2023) New diff -Nru python-nbxmpp-4.2.0/debian/changelog python-nbxmpp-4.2.2/debian/changelog --- python-nbxmpp-4.2.0/debian/changelog 2023-02-06 19:54:25.000000000 +0000 +++ python-nbxmpp-4.2.2/debian/changelog 2023-04-05 07:26:16.000000000 +0000 @@ -1,3 +1,9 @@ +python-nbxmpp (4.2.2-1) experimental; urgency=medium + + * New upstream bug fix release (solves HTTP issues) + + -- Martin <deba...@debian.org> Wed, 05 Apr 2023 07:26:16 +0000 + python-nbxmpp (4.2.0-1) unstable; urgency=medium * New upstream release diff -Nru python-nbxmpp-4.2.0/nbxmpp/__init__.py python-nbxmpp-4.2.2/nbxmpp/__init__.py --- python-nbxmpp-4.2.0/nbxmpp/__init__.py 2023-02-05 16:23:56.000000000 +0000 +++ python-nbxmpp-4.2.2/nbxmpp/__init__.py 2023-03-25 16:33:26.000000000 +0000 @@ -3,4 +3,4 @@ from .protocol import * # pylint: disable=wrong-import-position -__version__: str = '4.2.0' +__version__: str = '4.2.2' diff -Nru python-nbxmpp-4.2.0/nbxmpp/http.py python-nbxmpp-4.2.2/nbxmpp/http.py --- python-nbxmpp-4.2.0/nbxmpp/http.py 2023-02-05 16:23:56.000000000 +0000 +++ python-nbxmpp-4.2.2/nbxmpp/http.py 2023-03-25 16:33:26.000000000 +0000 @@ -276,6 +276,7 @@ self._message.connect('content-sniffed', self._on_content_sniffed) self._message.connect('got-body', self._on_got_body) + self._message.connect('restarted', self._on_restarted) self._message.connect('finished', self._on_finished) soup_session = self._session.get_soup_session() @@ -431,6 +432,12 @@ self._log.info('Body received') self._body_received = True + def _on_restarted(self, _message: Soup.Message) -> None: + self._log.info('Restarted') + self._body_received = False + self._response_content_type = '' + self._response_content_length = 0 + def _on_finished(self, _message: Soup.Message) -> None: self._log.info('Message finished') if not self._body_received: @@ -483,13 +490,24 @@ self._cleanup() def _close_all_streams(self) -> None: - if self._input_stream is not None: - if not self._input_stream.is_closed(): - self._input_stream.close(None) - - if self._output_stream is not None: - if not self._output_stream.is_closed(): - self._output_stream.close(None) + # stream.close() will invoke signals on the Message object + # which in turn can lead to this method called again in the + # same Mainloop iteration. This means is_closed() will not + # return True and we get an GLib.IOError.PENDING error. + + input_stream = self._input_stream + output_stream = self._output_stream + + self._input_stream = None + self._output_stream = None + + if input_stream is not None: + if not input_stream.is_closed(): + input_stream.close(None) + + if output_stream is not None: + if not output_stream.is_closed(): + output_stream.close(None) def _cleanup(self) -> None: self._log.info('Run cleanup') @@ -501,9 +519,6 @@ del self._session del self._user_data - self._input_stream = None - self._output_stream = None - if self._timeout_id is not None: GLib.source_remove(self._timeout_id) self._timeout_id = None