Skip to content

Commit

Permalink
re-use the same exception handling code in server source: move the fu…
Browse files Browse the repository at this point in the history
…nction to dbus_common module

git-svn-id: https://xpra.org/svn/Xpra/trunk@14386 3bb7dfac-3a0b-4e04-842a-767bc560f471
  • Loading branch information
totaam committed Nov 3, 2016
1 parent ad6524f commit 081361f
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 15 deletions.
21 changes: 21 additions & 0 deletions src/xpra/server/dbus/dbus_common.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/usr/bin/env python
# This file is part of Xpra.
# Copyright (C) 2016 Antoine Martin <antoine@devloop.org.uk>
# Xpra is released under the terms of the GNU GPL v2, or, at your option, any
# later version. See the file COPYING for details.

from xpra.log import Logger
log = Logger("dbus")

def dbus_exception_wrap(fn, info="setting up server dbus instance"):
try:
v = fn()
log("dbus_exception_wrap() %s()=%s", fn, v)
return v
except Exception as e:
if str(e).find("org.freedesktop.DBus.Error.NoServer")<0:
log.error("dbus server error", exc_info=True)
log.error("Error %s:", info)
for x in str(e).split(":"):
log.error(" %s", x.strip())
return None
11 changes: 2 additions & 9 deletions src/xpra/server/server_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -654,15 +654,8 @@ def init_dbus_server(self):
dbuslog("init_dbus_server() dbus_control=%s", self.dbus_control)
if not self.dbus_control:
return
try:
self.dbus_server = self.make_dbus_server()
dbuslog("init_dbus_server() dbus_server=%s", self.dbus_server)
except Exception as e:
if str(e).find("org.freedesktop.DBus.Error.NoServer")<0:
dbuslog.error("dbus server error", exc_info=True)
dbuslog.error("Error setting up our dbus server:")
for x in str(e).split(":"):
dbuslog.error(" %s", x.strip())
from xpra.server.dbus.dbus_common import dbus_exception_wrap
self.dbus_server = dbus_exception_wrap(self.make_dbus_server, "setting up server dbus instance")

def make_dbus_server(self):
from xpra.server.dbus.dbus_server import DBUS_Server
Expand Down
11 changes: 5 additions & 6 deletions src/xpra/server/source.py
Original file line number Diff line number Diff line change
Expand Up @@ -350,13 +350,12 @@ def __init__(self, protocol, disconnect_cb, idle_add, timeout_add, source_remove
self.encode_thread = start_thread(self.encode_loop, "encode")
#dbus:
if self.dbus_control:
try:
from xpra.server.dbus.dbus_common import dbus_exception_wrap
def make_dbus_server():
from xpra.server.dbus.dbus_source import DBUS_Source
self.dbus_server = DBUS_Source(self, os.environ.get("DISPLAY", "").lstrip(":"))
dbuslog("Source DBUS_Server=%s", self.dbus_server)
except Exception as e:
dbuslog.error("Error setting up the source's DBUS server:")
dbuslog.error(" %s", e)
return DBUS_Source(self, os.environ.get("DISPLAY", "").lstrip(":"))
self.dbus_server = dbus_exception_wrap(make_dbus_server, "setting up client dbus instance")


def __repr__(self):
return "%s(%i : %s)" % (type(self).__name__, self.counter, self.protocol)
Expand Down

0 comments on commit 081361f

Please sign in to comment.