diff options
| -rw-r--r-- | changes/bug_segfault_signal | 2 | ||||
| -rw-r--r-- | src/leap/crypto/srpregister.py | 14 | ||||
| -rw-r--r-- | src/leap/gui/mainwindow.py | 4 | ||||
| -rw-r--r-- | src/leap/gui/wizard.py | 4 | ||||
| -rw-r--r-- | src/leap/util/request_helpers.py | 2 | 
5 files changed, 17 insertions, 9 deletions
| diff --git a/changes/bug_segfault_signal b/changes/bug_segfault_signal new file mode 100644 index 00000000..39d9c910 --- /dev/null +++ b/changes/bug_segfault_signal @@ -0,0 +1,2 @@ +  o Workaround a segmentation fault when emitting a signal with its +    last parameter being None. Fixes #3083.
\ No newline at end of file diff --git a/src/leap/crypto/srpregister.py b/src/leap/crypto/srpregister.py index 24f73504..de1978b5 100644 --- a/src/leap/crypto/srpregister.py +++ b/src/leap/crypto/srpregister.py @@ -124,7 +124,12 @@ class SRPRegister(QtCore.QObject):          logger.debug('Post to uri: %s' % uri)          logger.debug("Will try to register user = %s" % (username,)) -        ok = None +        ok = False +        # This should be None, but we don't like when PySide segfaults, +        # so it something else. +        # To reproduce it, just do: +        # self.registration_finished.emit(False, None) +        req = []          try:              req = self._session.post(uri,                                       data=user_data, @@ -132,12 +137,13 @@ class SRPRegister(QtCore.QObject):                                       verify=self._provider_config.                                       get_ca_cert_path()) -        except requests.exceptions.SSLError as exc: -            logger.error("SSLError: %s" % exc.message) -            req = None +        except (requests.exceptions.SSLError, +                requests.exceptions.ConnectionError) as exc: +            logger.error(exc.message)              ok = False          else:              ok = req.ok +          self.registration_finished.emit(ok, req)          return ok diff --git a/src/leap/gui/mainwindow.py b/src/leap/gui/mainwindow.py index 6ee8b028..6fe3e72d 100644 --- a/src/leap/gui/mainwindow.py +++ b/src/leap/gui/mainwindow.py @@ -321,7 +321,7 @@ class MainWindow(QtGui.QMainWindow):          # Refer to http://www.themacaque.com/?p=1067 for funny details.          self._wizard.show()          if IS_MAC: -            self._wizard._raise() +            self._wizard.raise_()          self._wizard.finished.connect(self._wizard_finished)      def _wizard_finished(self): @@ -1304,7 +1304,7 @@ class MainWindow(QtGui.QMainWindow):          self.setWindowFlags(self.windowFlags() & ~TOPFLAG)          self.show()          if IS_MAC: -            self._raise() +            self.raise_()      def _cleanup_pidfiles(self):          """ diff --git a/src/leap/gui/wizard.py b/src/leap/gui/wizard.py index 5333edeb..2b48fc81 100644 --- a/src/leap/gui/wizard.py +++ b/src/leap/gui/wizard.py @@ -309,8 +309,8 @@ class Wizard(QtGui.QWizard):                  error_msg = json_content.get("errors").get("login")[0]                  if not error_msg.istitle():                      error_msg = "%s %s" % (old_username, error_msg) -            except: -                logger.error("Unknown error: %r" % (req.content,)) +            except Exception as e: +                logger.error("Unknown error: %r" % (e,))              self._set_register_status(error_msg, error=True)              self.ui.btnRegister.setEnabled(True) diff --git a/src/leap/util/request_helpers.py b/src/leap/util/request_helpers.py index 350abfbd..74aaa06b 100644 --- a/src/leap/util/request_helpers.py +++ b/src/leap/util/request_helpers.py @@ -41,7 +41,7 @@ def get_content(request):      contents = ""      mtime = None -    if request.content and request.json: +    if request and request.content and request.json:          if callable(request.json):              contents = json.dumps(request.json())          else: | 
