mirror of
https://github.com/rtlsdrblog/rtl-sdr-blog.git
synced 2025-03-26 21:45:29 +01:00
lib: abort if submitting transfer fails, don't deadlock when cancelling fails
Signed-off-by: Steve Markgraf <steve@steve-m.de>
This commit is contained in:
parent
3ab6fffbdd
commit
d683b128f9
@ -1760,7 +1760,12 @@ int rtlsdr_read_async(rtlsdr_dev_t *dev, rtlsdr_read_async_cb_t cb, void *ctx,
|
|||||||
(void *)dev,
|
(void *)dev,
|
||||||
BULK_TIMEOUT);
|
BULK_TIMEOUT);
|
||||||
|
|
||||||
libusb_submit_transfer(dev->xfer[i]);
|
r = libusb_submit_transfer(dev->xfer[i]);
|
||||||
|
if (r < 0) {
|
||||||
|
fprintf(stderr, "Failed to submit transfer %i!\n", i);
|
||||||
|
dev->async_status = RTLSDR_CANCELING;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
while (RTLSDR_INACTIVE != dev->async_status) {
|
while (RTLSDR_INACTIVE != dev->async_status) {
|
||||||
@ -1784,7 +1789,10 @@ int rtlsdr_read_async(rtlsdr_dev_t *dev, rtlsdr_read_async_cb_t cb, void *ctx,
|
|||||||
|
|
||||||
if (LIBUSB_TRANSFER_CANCELLED !=
|
if (LIBUSB_TRANSFER_CANCELLED !=
|
||||||
dev->xfer[i]->status) {
|
dev->xfer[i]->status) {
|
||||||
libusb_cancel_transfer(dev->xfer[i]);
|
r = libusb_cancel_transfer(dev->xfer[i]);
|
||||||
|
if (r < 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
next_status = RTLSDR_CANCELING;
|
next_status = RTLSDR_CANCELING;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user