All: Avoid polluting errors reported on device disconnect
authorHans de Goede <hdegoede@redhat.com>
Wed, 12 Sep 2012 01:03:47 +0000 (02:03 +0100)
committerPete Batard <pete@akeo.ie>
Wed, 12 Sep 2012 23:46:40 +0000 (00:46 +0100)
* Makes libusb_cancel_transfer not log an error when the cancel fails
  with LIBUSB_ERROR_NO_DEVICE, so that apps can properly clean things
  up on device disconnect without flooding the console with these errors.
* Also, some devices (Cypress FX) may switch VID:PID on the fly during
  firmware upload => reduce severity of the Windows message when that happens.

libusb/io.c
libusb/os/windows_usb.c
libusb/version_nano.h

index 8a8bc67..1338981 100644 (file)
@@ -1417,7 +1417,8 @@ int API_EXPORTED libusb_cancel_transfer(struct libusb_transfer *transfer)
        usbi_mutex_lock(&itransfer->lock);
        r = usbi_backend->cancel_transfer(itransfer);
        if (r < 0) {
-               if (r != LIBUSB_ERROR_NOT_FOUND)
+               if (r != LIBUSB_ERROR_NOT_FOUND &&
+                   r != LIBUSB_ERROR_NO_DEVICE)
                        usbi_err(TRANSFER_CTX(transfer),
                                "cancel transfer failed error %d", r);
                else
index 3b751a5..946c71f 100644 (file)
@@ -2877,7 +2877,7 @@ static int winusbx_submit_control_transfer(int sub_api, struct usbi_transfer *it
        } else {
                if (!WinUSBX[sub_api].ControlTransfer(wfd.handle, *setup, transfer->buffer + LIBUSB_CONTROL_SETUP_SIZE, size, NULL, wfd.overlapped)) {
                        if(GetLastError() != ERROR_IO_PENDING) {
-                               usbi_err(ctx, "ControlTransfer failed: %s", windows_error_str(0));
+                               usbi_warn(ctx, "ControlTransfer failed: %s", windows_error_str(0));
                                usbi_free_fd(wfd.fd);
                                return LIBUSB_ERROR_IO;
                        }
index f5bc1ae..e645bd3 100644 (file)
@@ -1 +1 @@
-#define LIBUSB_NANO 10560
+#define LIBUSB_NANO 10561