Skip to content

Commit

Permalink
lib: abort if submitting transfer fails, don't deadlock when cancelli…
Browse files Browse the repository at this point in the history
…ng fails

Signed-off-by: Steve Markgraf <[email protected]>
  • Loading branch information
steve-m committed Jan 3, 2014
1 parent 3ab6fff commit d683b12
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions src/librtlsdr.c
Original file line number Diff line number Diff line change
Expand Up @@ -1760,7 +1760,12 @@ int rtlsdr_read_async(rtlsdr_dev_t *dev, rtlsdr_read_async_cb_t cb, void *ctx,
(void *)dev,
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) {
Expand All @@ -1784,7 +1789,10 @@ int rtlsdr_read_async(rtlsdr_dev_t *dev, rtlsdr_read_async_cb_t cb, void *ctx,

if (LIBUSB_TRANSFER_CANCELLED !=
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;
}
}
Expand Down

0 comments on commit d683b12

Please sign in to comment.