summaryrefslogtreecommitdiff
path: root/lib/Handle.cc
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Handle.cc')
-rw-r--r--lib/Handle.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/Handle.cc b/lib/Handle.cc
index 4124231..253ddbf 100644
--- a/lib/Handle.cc
+++ b/lib/Handle.cc
@@ -26,7 +26,7 @@ ssize_t Handle::write(const void *buf, size_t count) throw (GeneralException) {
done = true;
errno = 0;
if ((r = ::write(h, buf, count)) < 0) {
- if ((!errno) || (errno = EAGAIN)) {
+ if ((!errno) || (errno == EAGAIN) || (errno == EINTR)) {
// Avant de déclarer une erreur, on vérifie si ce n'est pas un
// problème lié au fait qu'il n'y a plus de place libre. Cela peut
// arriver si l'on agit sur un pipe ou un handle. Nous
@@ -61,7 +61,7 @@ ssize_t Handle::read(void *buf, size_t count) throw (GeneralException) {
errno = 0;
if ((r = ::read(h, buf, count)) < 0) {
- if ((!errno) || (errno = EAGAIN)) {
+ if ((!errno) || (errno == EAGAIN) || (errno == EINTR)) {
// Avant de déclarer une erreur, on vérifie si ce n'est pas un
// problème lié au fait qu'il n'y a plus d'octets.
throw IOAgain();
@@ -133,6 +133,8 @@ void Handle::close() {
::close(h);
}
+ h = -1;
+
closed = 1;
}