summaryrefslogtreecommitdiff
blob: 7b472d0aaf6b6b58345669881a6241c6077d8baf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
From 8f6c59829bb84edc66ce0edb0a4d5b7335a941c6 Mon Sep 17 00:00:00 2001
From: Josef Fruehwirth <fruehwirth@gmail.com>
Date: Sat, 18 Aug 2012 14:07:04 +0200
Subject: [PATCH] Retry m_port->Read(..) if an EINTR errror occurs instead of
 closing the connection.

---
 src/lib/adapter/Pulse-Eight/USBCECAdapterCommunication.cpp |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/lib/adapter/Pulse-Eight/USBCECAdapterCommunication.cpp b/src/lib/adapter/Pulse-Eight/USBCECAdapterCommunication.cpp
index 70e45ac..3fc05eb 100644
--- a/src/lib/adapter/Pulse-Eight/USBCECAdapterCommunication.cpp
+++ b/src/lib/adapter/Pulse-Eight/USBCECAdapterCommunication.cpp
@@ -393,7 +393,11 @@ bool CUSBCECAdapterCommunication::ReadFromDevice(uint32_t iTimeout, size_t iSize
     if (!IsOpen())
       return false;
 
-    iBytesRead = m_port->Read(buff, sizeof(uint8_t) * iSize, iTimeout);
+    do {
+      /* retry Read() if it was interrupted */
+      iBytesRead = m_port->Read(buff, sizeof(uint8_t) * iSize, iTimeout);
+    } while(m_port->GetErrorNumber() == EINTR);
+
 
     if (m_port->GetErrorNumber())
     {
-- 
1.7.10