From babfcaa0f3e4f3d83fd7ac9707a37db12431ec80 Mon Sep 17 00:00:00 2001 From: "martin.holst@gmail.com" Date: Sun, 1 Sep 2013 18:46:55 +0000 Subject: [PATCH] Patch by jonor, fixes so uart_receive does not block when data is continuosly received. See http://www.proxmark.org/forum/viewtopic.php?id=1735 --- client/uart.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/client/uart.c b/client/uart.c index 041186c7..f7c5e35c 100644 --- a/client/uart.c +++ b/client/uart.c @@ -266,7 +266,7 @@ bool uart_receive(const serial_port sp, byte_t* pbtRx, size_t* pszRxLen) { if (res < 0) { return false; } - + // Read time-out if (res == 0) { if (*pszRxLen == 0) { @@ -277,21 +277,24 @@ bool uart_receive(const serial_port sp, byte_t* pbtRx, size_t* pszRxLen) { return true; } } - + // Retrieve the count of the incoming bytes res = ioctl(((serial_port_unix*)sp)->fd, FIONREAD, &byteCount); if (res < 0) return false; - + // There is something available, read the data res = read(((serial_port_unix*)sp)->fd,pbtRx+(*pszRxLen),byteCount); - + // Stop if the OS has some troubles reading the data if (res <= 0) return false; - + *pszRxLen += res; + + if(res==byteCount) + return true; } while (byteCount); - + return true; } -- 2.39.2