X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/hmcfgusb/blobdiff_plain/f77690c303b7bd05a04603e6383613020cfe1ce6..4371275b6337ea3ae513f1c19463f8b4745d89d8:/hmcfgusb.c diff --git a/hmcfgusb.c b/hmcfgusb.c index 9f02480..7ec0714 100644 --- a/hmcfgusb.c +++ b/hmcfgusb.c @@ -225,7 +225,17 @@ static void LIBUSB_CALL hmcfgusb_interrupt(struct libusb_transfer *transfer) if (cb_data && cb_data->cb) { if (debug) hexdump(transfer->buffer, transfer->actual_length, "USB > "); - cb_data->cb(transfer->buffer, transfer->actual_length, cb_data->data); + + if (!cb_data->cb(transfer->buffer, transfer->actual_length, cb_data->data)) { + quit = EIO; + + if (cb_data && cb_data->dev && cb_data->dev->transfer) { + libusb_free_transfer(cb_data->dev->transfer); + cb_data->dev->transfer = NULL; + } + + return; + } } else { hexdump(transfer->buffer, transfer->actual_length, "> "); }