diff options
author | cliechti <cliechti@f19166aa-fa4f-0410-85c2-fa1106f25c8a> | 2004-11-13 03:27:39 +0000 |
---|---|---|
committer | cliechti <cliechti@f19166aa-fa4f-0410-85c2-fa1106f25c8a> | 2004-11-13 03:27:39 +0000 |
commit | 5d4d0bdd01317bd158329afab39439fea89bdc35 (patch) | |
tree | e242b67bcc5120228bb04245ac50a4b1cdeabebe | |
parent | 0276f5e57fe7c17ae1f07b8f3b480aa7b5809b56 (diff) | |
download | pyserial-git-5d4d0bdd01317bd158329afab39439fea89bdc35.tar.gz |
- [Patch 1043436] Fix for [Bug 1043420] (OSError: EAGAIN)
-rw-r--r-- | pyserial/serial/serialposix.py | 28 |
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 |