struct usbi_transfer *cur;
struct timeval *timeout = &transfer->timeout;
struct libusb_context *ctx = ITRANSFER_CTX(transfer);
- int r = 0;
+ int r;
int first = 1;
+ r = calculate_timeout(transfer);
+ if (r)
+ return r;
+
/* if we have no other flying transfers, start the list with this one */
if (list_empty(&ctx->flying_transfers)) {
list_add(&transfer->list, &ctx->flying_transfers);
itransfer->transferred = 0;
itransfer->state_flags = 0;
itransfer->timeout_flags = 0;
- r = calculate_timeout(itransfer);
- if (r < 0) {
- usbi_mutex_unlock(&ctx->flying_transfers_lock);
- usbi_mutex_unlock(&itransfer->lock);
- return LIBUSB_ERROR_OTHER;
- }
-
r = add_to_flying_list(itransfer);
if (r) {
usbi_mutex_unlock(&ctx->flying_transfers_lock);