summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcliechti <cliechti@f19166aa-fa4f-0410-85c2-fa1106f25c8a>2004-11-13 03:27:39 +0000
committercliechti <cliechti@f19166aa-fa4f-0410-85c2-fa1106f25c8a>2004-11-13 03:27:39 +0000
commit5d4d0bdd01317bd158329afab39439fea89bdc35 (patch)
treee242b67bcc5120228bb04245ac50a4b1cdeabebe
parent0276f5e57fe7c17ae1f07b8f3b480aa7b5809b56 (diff)
downloadpyserial-git-5d4d0bdd01317bd158329afab39439fea89bdc35.tar.gz
- [Patch 1043436] Fix for [Bug 1043420] (OSError: EAGAIN)
-rw-r--r--pyserial/serial/serialposix.py28
1 files changed, 16 insertions, 12 deletions
diff --git a/pyserial/serial/serialposix.py b/pyserial/serial/serialposix.py
index 9e17068..22a0336 100644
--- a/pyserial/serial/serialposix.py
+++ b/pyserial/serial/serialposix.py
@@ -13,7 +13,7 @@
import sys, os, fcntl, termios, struct, select
from serialutil import *
-VERSION = "$Revision: 1.23 $".split()[1] #extract CVS version
+VERSION = "$Revision: 1.24 $".split()[1] #extract CVS version
#Do check the Python version as some constants have moved.
if (sys.hexversion < 0x020100f0):
@@ -281,17 +281,21 @@ class Serial(SerialBase):
t = len(data)
d = data
while t > 0:
- if self._writeTimeout is not None and self._writeTimeout > 0:
- _,ready,_ = select.select([],[self.fd],[], self._writeTimeout)
- if not ready:
- raise writeTimeoutError
- n = os.write(self.fd, d)
- if self._writeTimeout is not None and self._writeTimeout > 0:
- _,ready,_ = select.select([],[self.fd],[], self._writeTimeout)
- if not ready:
- raise writeTimeoutError
- d = d[n:]
- t = t - n
+ try:
+ if self._writeTimeout is not None and self._writeTimeout > 0:
+ _,ready,_ = select.select([],[self.fd],[], self._writeTimeout)
+ if not ready:
+ raise writeTimeoutError
+ n = os.write(self.fd, d)
+ if self._writeTimeout is not None and self._writeTimeout > 0:
+ _,ready,_ = select.select([],[self.fd],[], self._writeTimeout)
+ if not ready:
+ raise writeTimeoutError
+ d = d[n:]
+ t = t - n
+ except OSError,v:
+ if v.errno != errno.EAGAIN:
+ raise
def flush(self):
"""Flush of file like objects. In this case, wait until all data