From 00a3cf9630d8376ba0c1351d30da06dc9a5f8660 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Wed, 12 Sep 2012 02:03:47 +0100 Subject: [PATCH] All: Avoid polluting errors reported on device disconnect * 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 | 3 ++- libusb/os/windows_usb.c | 2 +- libusb/version_nano.h | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/libusb/io.c b/libusb/io.c index 8a8bc67..1338981 100644 --- a/libusb/io.c +++ b/libusb/io.c @@ -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 diff --git a/libusb/os/windows_usb.c b/libusb/os/windows_usb.c index 3b751a5..946c71f 100644 --- a/libusb/os/windows_usb.c +++ b/libusb/os/windows_usb.c @@ -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; } diff --git a/libusb/version_nano.h b/libusb/version_nano.h index f5bc1ae..e645bd3 100644 --- a/libusb/version_nano.h +++ b/libusb/version_nano.h @@ -1 +1 @@ -#define LIBUSB_NANO 10560 +#define LIBUSB_NANO 10561 -- 2.7.4