Philipp Hörist pushed to branch master at gajim / python-nbxmpp

Commits:

2 changed files:

Changes:

  • nbxmpp/const.py
    ... ... @@ -462,6 +462,9 @@ class HTTPRequestError(IntEnum):
    462 462
         CONTENT_OVERFLOW = 4
    
    463 463
         TIMEOUT = 5
    
    464 464
     
    
    465
    +    def __str__(self) -> str:
    
    466
    +        return self.name
    
    467
    +
    
    465 468
     
    
    466 469
     MOODS = [
    
    467 470
         'afraid',
    

  • nbxmpp/http.py
    ... ... @@ -305,6 +305,8 @@ class HTTPRequest(GObject.GObject):
    305 305
     
    
    306 306
         def _on_timeout(self) -> None:
    
    307 307
             self._timeout_reached = True
    
    308
    +        self._timeout_id = None
    
    309
    +        self._set_error(HTTPRequestError.TIMEOUT)
    
    308 310
             self.cancel()
    
    309 311
     
    
    310 312
         def _on_response(self,
    
    ... ... @@ -312,9 +314,6 @@ class HTTPRequest(GObject.GObject):
    312 314
                          result: Gio.AsyncResult
    
    313 315
                          ) -> None:
    
    314 316
     
    
    315
    -        if self._is_finished:
    
    316
    -            return
    
    317
    -
    
    318 317
             self._log.info('Request response received')
    
    319 318
             try:
    
    320 319
                 self._input_stream = session.send_finish(result)
    
    ... ... @@ -351,9 +350,6 @@ class HTTPRequest(GObject.GObject):
    351 350
                                   input_stream: Gio.InputStream,
    
    352 351
                                   result: Gio.AsyncResult) -> None:
    
    353 352
     
    
    354
    -        if self._is_finished:
    
    355
    -            return
    
    356
    -
    
    357 353
             try:
    
    358 354
                 data = input_stream.read_bytes_finish(result)
    
    359 355
             except GLib.Error as error:
    
    ... ... @@ -463,7 +459,8 @@ class HTTPRequest(GObject.GObject):
    463 459
     
    
    464 460
         def _check_content_overflow(self) -> None:
    
    465 461
             if self._received_size > self._response_content_length:
    
    466
    -            self._finish_read(HTTPRequestError.CONTENT_OVERFLOW)
    
    462
    +            self._set_error(HTTPRequestError.CONTENT_OVERFLOW)
    
    463
    +            self.cancel()
    
    467 464
     
    
    468 465
         def _on_restarted(self, _message: Soup.Message) -> None:
    
    469 466
             self._log.info('Restarted')
    
    ... ... @@ -503,14 +500,16 @@ class HTTPRequest(GObject.GObject):
    503 500
     
    
    504 501
             self._set_complete()
    
    505 502
     
    
    503
    +    def _set_error(self, error: HTTPRequestError) -> None:
    
    504
    +        self._log.info('Set Error: %s', error)
    
    505
    +        self._error = error
    
    506
    +
    
    506 507
         def _set_failed(self, error: HTTPRequestError) -> None:
    
    507 508
             self._log.info('Set Failed: %s', error)
    
    508 509
             self._is_finished = True
    
    509
    -        if self._timeout_reached:
    
    510
    -            self._timeout_id = None
    
    511
    -            self._error = HTTPRequestError.TIMEOUT
    
    512
    -        else:
    
    513
    -            self._error = error
    
    510
    +
    
    511
    +        if self._error is None:
    
    512
    +            self._set_error(error)
    
    514 513
     
    
    515 514
             self._close_all_streams()
    
    516 515
             self.emit('finished')