viewers: Always clean up tunnel FDs when closing viewer

We were basically leaking a lot of FDs. They were still being tracked
but they were stranded and never dealt with.
This commit is contained in:
Cole Robinson 2015-04-11 22:30:07 -04:00
parent e2cdfd651c
commit aec851f73a
2 changed files with 9 additions and 15 deletions

View File

@ -783,7 +783,7 @@ class vmmConsolePages(vmmGObjectUI):
def _viewer_disconnected(self, ignore):
errout = ""
if self._viewer:
errout = self._viewer.console_reset_tunnels()
errout = self._viewer.console_get_err_output()
self.widget("console-pages").set_current_page(
self.CONSOLE_PAGE_UNAVAILABLE)

View File

@ -81,7 +81,7 @@ class Viewer(vmmGObject):
self._display = None
if self._tunnels:
self._reset_tunnels()
self._tunnels.close_all()
self._tunnels = None
@ -116,12 +116,6 @@ class Viewer(vmmGObject):
# Generic internal APIs #
#########################
def _reset_tunnels(self):
errout = self._tunnels.get_err_output()
self._tunnels.close_all()
self._tunnels = None
return errout
def _grab_focus(self):
if self._display:
self._display.grab_focus()
@ -229,8 +223,8 @@ class Viewer(vmmGObject):
def console_send_keys(self, keys):
return self._send_keys(keys)
def console_reset_tunnels(self):
return self._reset_tunnels()
def console_get_err_output(self):
return self._tunnels.get_err_output()
def console_get_grab_keys(self):
return self._get_grab_keys()
@ -348,11 +342,10 @@ class VNCViewer(Viewer):
def close(self):
self._display.close()
if not self._sockfd:
return
self._sockfd.close()
self._sockfd = None
if self._sockfd:
self._sockfd.close()
self._sockfd = None
self._tunnels.close_all()
def _is_open(self):
return self._display.is_open()
@ -600,6 +593,7 @@ class SpiceViewer(Viewer):
self._close_main_channel()
self._usbdev_manager = None
self._tunnels.close_all()
def _is_open(self):
return self._spice_session is not None