diff options
-rw-r--r-- | src/server/channelmanager.py | 4 | ||||
-rw-r--r-- | src/server/conn.py | 9 |
2 files changed, 9 insertions, 4 deletions
diff --git a/src/server/channelmanager.py b/src/server/channelmanager.py index 6e24e88..9fecb7c 100644 --- a/src/server/channelmanager.py +++ b/src/server/channelmanager.py @@ -63,12 +63,12 @@ class ChannelManager(object): requested = props[CHANNEL_INTERFACE + '.Requested'] target_handle_type = \ - props.get(CHANNEL_INTERFACE + '.TargetHandleType', HANDLE_TYPE_NONE) + int(props.get(CHANNEL_INTERFACE + '.TargetHandleType', HANDLE_TYPE_NONE)) if target_handle_type == HANDLE_TYPE_NONE: handle = NoneHandle() else: - target_handle = props[CHANNEL_INTERFACE + '.TargetHandle'] + target_handle = int(props[CHANNEL_INTERFACE + '.TargetHandle']) handle = self._conn._handles[target_handle_type, target_handle] return (type, requested, handle) diff --git a/src/server/conn.py b/src/server/conn.py index 4e6e895..f48057c 100644 --- a/src/server/conn.py +++ b/src/server/conn.py @@ -172,6 +172,9 @@ class Connection(_Connection, DBusProperties): self._client_handles[sender] = set([(handle.get_type(), handle)]) def get_handle_by_id(self, handle_type, handle_id): + # Strip off dbus stuff so we can be consistent + handle_type, handle_id = int(handle_type), int(handle_id) + self.check_handle(handle_type, handle_id) return self._handles[handle_type, handle_id] @@ -495,8 +498,10 @@ class ConnectionInterfaceRequests( altered_properties = props.copy() if target_handle_type != HANDLE_TYPE_NONE: - if target_handle == None: - target_handle = self.get_handle_by_name(target_handle_type, target_id).get_id() + if target_handle is None: + handle = self.get_handle_by_name(target_handle_type, target_id) + self.add_client_handle(handle, None) + target_handle = handle.get_id() altered_properties[CHANNEL_INTERFACE + '.TargetHandle'] = \ target_handle else: |