Chromium Code Reviews| Index: appengine/third_party/python-adb/adb/common.py |
| diff --git a/appengine/third_party/python-adb/adb/common.py b/appengine/third_party/python-adb/adb/common.py |
| index 167004695378c843ea52b873dfa40bdd820dd76d..26f19e0fae3b0a2708fbe024ee6f94441f920dbf 100644 |
| --- a/appengine/third_party/python-adb/adb/common.py |
| +++ b/appengine/third_party/python-adb/adb/common.py |
| @@ -93,7 +93,7 @@ class UsbHandle(object): |
| sn = self.serial_number |
| except libusb1.USBError: |
| sn = '' |
| - if sn and sn != self._usb_info: |
| + if sn and sn != self._usb_info and self._usb_info: |
| return '%s %s' % (self._usb_info, sn) |
| return self._usb_info |
| @@ -111,36 +111,39 @@ class UsbHandle(object): |
| self.port_path_str, previous[1]) |
| previous[0].Close() |
| - for endpoint in self._setting.iterEndpoints(): |
| - address = endpoint.getAddress() |
| - if address & libusb1.USB_ENDPOINT_DIR_MASK: |
| - self._read_endpoint = address |
| - self._max_read_packet_len = endpoint.getMaxPacketSize() |
| - else: |
| - self._write_endpoint = address |
| - |
| - assert self._read_endpoint is not None |
| - assert self._write_endpoint is not None |
| - |
| - handle = self._device.open() |
| - iface_number = self._setting.getNumber() |
| try: |
| - if handle.kernelDriverActive(iface_number): |
| - handle.detachKernelDriver(iface_number) |
| - except libusb1.USBError as e: |
| - if e.value == libusb1.LIBUSB_ERROR_NOT_FOUND: |
| - _LOG.warning( |
| - '%s.Open(): Kernel driver not found for interface: %s.', |
| - self.port_path_str, iface_number) |
| - else: |
| - raise |
| - handle.claimInterface(iface_number) |
| - self._handle = handle |
| - self._interface_number = iface_number |
| - |
| - stack = ''.join(traceback.format_stack()[:-2]) |
| - with self._HANDLE_CACHE_LOCK: |
| - self._HANDLE_CACHE[port_path] = (self._handle, stack) |
|
ghost stip (do not use)
2015/11/03 18:50:46
that seems wrong, wouldn't you still want to add t
M-A Ruel
2015/11/04 18:39:10
It's wrong too, I'll get rid of this once I figure
|
| + for endpoint in self._setting.iterEndpoints(): |
| + address = endpoint.getAddress() |
| + if address & libusb1.USB_ENDPOINT_DIR_MASK: |
| + self._read_endpoint = address |
| + self._max_read_packet_len = endpoint.getMaxPacketSize() |
| + else: |
| + self._write_endpoint = address |
| + |
| + assert self._read_endpoint is not None |
| + assert self._write_endpoint is not None |
| + |
| + self._handle = self._device.open() |
| + self._interface_number = self._setting.getNumber() |
| + try: |
| + if self._handle.kernelDriverActive(self._interface_number): |
| + self._handle.detachKernelDriver(self._interface_number) |
| + except libusb1.USBError as e: |
| + if e.value == libusb1.LIBUSB_ERROR_NOT_FOUND: |
| + _LOG.warning( |
| + '%s.Open(): Kernel driver not found for interface: %s.', |
| + self.port_path_str, self._interface_number) |
| + self.Close() |
| + else: |
| + raise |
| + self._handle.claimInterface(self._interface_number) |
| + |
| + stack = ''.join(traceback.format_stack()[:-2]) |
| + with self._HANDLE_CACHE_LOCK: |
| + self._HANDLE_CACHE[port_path] = (self, stack) |
| + except Exception as e: |
| + self.Close() |
| + raise |
| @property |
| def is_open(self): |
| @@ -171,7 +174,8 @@ class UsbHandle(object): |
| if self._handle is None: |
| return |
| try: |
| - self._handle.releaseInterface(self._interface_number) |
| + if self._interface_number: |
| + self._handle.releaseInterface(self._interface_number) |
| self._handle.close() |
| except libusb1.USBError as e: |
| _LOG.info('%s.Close(): USBError: %s', self.port_path_str, e) |