Module: xenomai-abe
Branch: analogy
Commit: 34234ca456a898cee2e31e133e0d87766f9cafe1
URL:    
http://git.xenomai.org/?p=xenomai-abe.git;a=commit;h=34234ca456a898cee2e31e133e0d87766f9cafe1

Author: Jan Kiszka <jan.kis...@siemens.com>
Date:   Fri Oct  2 11:18:25 2009 +0200

POSIX: Fix error reporting of __real_accept

The return values of __real_accept must not be processed via set_errno
as errno is already set correctly at this point.

Signed-off-by: Jan Kiszka <jan.kis...@siemens.com>

---

 src/skins/posix/rtdm.c |   13 ++++++++-----
 1 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/skins/posix/rtdm.c b/src/skins/posix/rtdm.c
index 6e347fb..4e6685f 100644
--- a/src/skins/posix/rtdm.c
+++ b/src/skins/posix/rtdm.c
@@ -404,18 +404,21 @@ int __wrap_accept(int fd, struct sockaddr *addr, 
socklen_t * addrlen)
 
                pthread_setcanceltype(oldtype, NULL);
 
-               if (fd >= 0)
-                       fd += __rtdm_fd_start;
+               if (fd < 0)
+                       return set_errno(fd);
+
+               return fd + __rtdm_fd_start;
        } else {
                fd = __real_accept(fd, addr, addrlen);
 
                if (fd >= __rtdm_fd_start) {
                        __real_close(fd);
-                       fd = -EMFILE;
+                       errno = EMFILE;
+                       fd = -1;
                }
-       }
 
-       return set_errno(fd);
+               return fd;
+       }
 }
 
 int __wrap_getsockname(int fd, struct sockaddr *name, socklen_t * namelen)


_______________________________________________
Xenomai-git mailing list
Xenomai-git@gna.org
https://mail.gna.org/listinfo/xenomai-git

Reply via email to