1
0
Fork 0
mirror of https://github.com/DarkMatterCore/nxdumptool.git synced 2024-11-13 05:56:46 +00:00

Fix fatals.

This commit is contained in:
Pablo Curiel 2020-05-09 13:09:22 -04:00
parent 47297daf3a
commit d629f21e8c

View file

@ -31,7 +31,6 @@
#define USB_SESSION_START_TIMEOUT 10 /* 10 seconds */ #define USB_SESSION_START_TIMEOUT 10 /* 10 seconds */
#define USB_TRANSFER_ALIGNMENT 0x1000 /* 4 KiB */ #define USB_TRANSFER_ALIGNMENT 0x1000 /* 4 KiB */
#define USB_TRANSFER_TIMEOUT 5 /* 5 seconds */
/* Type definitions. */ /* Type definitions. */
@ -192,9 +191,15 @@ bool usbStartSession(void)
while((now - start) < USB_SESSION_START_TIMEOUT) while((now - start) < USB_SESSION_START_TIMEOUT)
{ {
ret = g_usbSessionStarted = (usbIsHostAvailable() && _usbStartSession()); if (usbIsHostAvailable())
if (ret) break; {
/* Once the console has been connected to a host device, there's no need to keep running this loop */
/* usbTransferData() implements its own timeout */
ret = g_usbSessionStarted = _usbStartSession();
break;
}
/* Continuously running usbDsGetState() can potentially hang up the system, so let's add a small sleep */
utilsSleep(1); utilsSleep(1);
now = time(NULL); now = time(NULL);
} }
@ -941,16 +946,9 @@ static bool usbTransferData(void *buf, u64 size, UsbDsEndpoint *endpoint)
} }
/* Wait for the transfer to finish */ /* Wait for the transfer to finish */
rc = eventWait(&(endpoint->CompletionEvent), USB_TRANSFER_TIMEOUT * (u64)1000000000); eventWait(&(endpoint->CompletionEvent), UINT64_MAX);
eventClear(&(endpoint->CompletionEvent)); eventClear(&(endpoint->CompletionEvent));
if (R_FAILED(rc))
{
LOGFILE("USB transfer timed out! (0x%08X)", rc);
usbDsEndpoint_Cancel(endpoint);
return false;
}
rc = usbDsEndpoint_GetReportData(endpoint, &report_data); rc = usbDsEndpoint_GetReportData(endpoint, &report_data);
if (R_FAILED(rc)) if (R_FAILED(rc))
{ {